ΚΕΦΑΛΑΙΟ 1 - Επίλυση Προβλημάτων
Σύνοψη
Στο κεφάλαιο αυτό θα παρουσιαστούν με παραδειγματικές περιπτώσεις οι θεμελιώδεις έννοιες για τον ορισμό ενός προβλήματος και η επίλυσή του μέσω αλγόριθμων αναζήτησης, κατά την οποία μπορεί ένα πρόγραμμα να βρει με εναλλακτικούς τρόπους μια ακολουθία ενεργειών που επιτυγχάνει τους στόχους του προβλήματος. Στη συνέχεια, θα περιγραφούν οι εναλλακτικοί τρόποι αναζήτησης με εμβάθυνση στην αναζήτηση με χώρο καταστάσεων. Τέλος, θα παρουσιαστεί η γενική αλγοριθμική προσέγγιση για τους αλγόριθμους αναζήτησης, θα παρουσιαστούν αναλυτικά οι πιο γνωστοί από αυτούς και θα συγκριθούν τα πλεονεκτήματά και τα μειονεκτήματά τους.
Προαπαιτούμενη γνώση
Δεν υπάρχει προαπαιτούμενη γνώση.
1.1 Προβλήματα και αναζήτηση λύσης
Όταν επιχειρούμε να λύσουμε ένα πρόβλημα, πρέπει πρώτα να το ορίσουμε και ακολούθως να σχεδιάσουμε έναν αλγόριθμο ο οποίος θα το επιλύει έχοντας στη διάθεσή του πολλές άμεσες επιλογές ενεργειών σε κάθε βήμα του και αποφασίζοντας ποια να επιλέξει ή στα τυφλά ή βάσει ενός ποιοτικού κριτηρίου.
Αναζήτηση (search) ονομάζεται η διαδικασία εύρεσης μιας ακολουθίας επιλεγμένων ενεργειών που οδηγεί σε ένα στόχο. Ένας αλγόριθμος αναζήτησης (search algorithm) δέχεται ως είσοδο ένα πρόβλημα και επιστρέφει μια λύση με τη μορφή ακολουθίας ενεργειών. Για να δοθεί ένα πρόβλημα ως είσοδος σε έναν αλγόριθμο αναζήτησης, πρέπει να έχει προηγηθεί μια σαφής διατύπωσή του και βάσει αυτής να γίνει ο ορισμός του με τρόπο κατάλληλο, ώστε να αποτελέσει είσοδο στον αλγόριθμο.
Τα συστήματα της ΤΝ αναζητούν λύσεις μέσα από εναλλακτικές αλγοριθμικές προσεγγίσεις και το κεφάλαιο που ακολουθεί αναφέρεται σε κάποιες από τις ευρέως χρησιμοποιούμενες για το σκοπό αυτόν. Πριν, όμως, αναφερθούμε σε συγκεκριμένους αλγόριθμους, θα πρέπει να μελετήσουμε τους διαφορετικούς τύπους των προς επίλυση προβλημάτων, δεδομένου ότι από αυτούς εξαρτάται άμεσα η καταλληλότητα ενός αλγόριθμου.
1.1.1 Τύποι προβλημάτων
Σε ορισμένα προβλήματα, ο στόχος προς επίτευξη είναι ήδη γνωστός και τα επιμέρους βήματα που θα οδηγήσουν σε αυτόν είτε δεν μας απασχολούν (παράδειγμα: στο τάβλι ο στόχος είναι να κερδίσει ένας από τους δύο παίκτες χωρίς να μας ενδιαφέρει να αποτυπωθεί το πώς το πέτυχε) είτε αποτελούν καίριο ζητούμενο (παράδειγμα: στο πρόβλημα του περιοδεύοντος πωλητή δε μας αρκεί απλώς να καταφέρει να φτάσει ο πωλητής στην πόλη που αποτελεί το στόχο του προβλήματος αλλά μας ενδιαφέρει μετακινούμενος από πόλη σε πόλη μέχρι να φτάσει στη πόλη-στόχο να διανύσει την μικρότερη δυνατή απόσταση). Σε άλλη κατηγορία προβλημάτων, ο στόχος δεν είναι γνωστός και μας ενδιαφέρει το πού μπορεί να καταλήξει η αναζήτηση (σχετικό παράδειγμα είναι το πρόβλημα της διάγνωσης ασθένειας βάσει των συμπτωμάτων του ασθενούς).
Οι αλγόριθμοι με συγκεκριμένη στόχευση έχουν μεγαλύτερες δυνατότητες μεγιστοποίησης της απόδοσής τους από αλγόριθμους χωρίς στόχευση. Ο στόχος ενός προβλήματος μπορεί να αντιστοιχεί είτε σε μία μόνη τελική κατάστασή του (για παράδειγμα, στο πρόβλημα του περιοδεύοντος πωλητή η τελική κατάσταση είναι μια συγκεκριμένη πόλη) είτε σε εναλλακτικές τελικές καταστάσεις του προβλήματος (στο τάβλι ο στόχος είναι το να πάρει όλα του τα πούλια στο χέρι ο ένας από τους δύο παίκτες, αλλά, όταν ο στόχος επιτευχθεί, τα πιόνια του άλλου παίκτη που έχουν απομείνει μπορεί να βρίσκονται σε πολλές εναλλακτικές θέσεις, κάθε πιθανός συνδυασμός των οποίων αποτελεί και μια δεκτή κατάσταση ως τελική).
Οι διαφορετικοί τύποι προβλημάτων είναι εν γένει οι ακόλουθοι:
- Προβλήματα στα οποία είναι πλήρως γνωστά ο στόχος και οι αντίστοιχες εναλλακτικές τελικές καταστάσεις τους και επιδιώκεται να βρει ο αλγόριθμος μία από αυτές: π.χ. προβλήματα σχεδιασμού ενεργειών και προβλήματα πλοήγησης.
- Προβλήματα στα οποία είναι γνωστά ο στόχος και οι αντίστοιχες εναλλακτικές τελικές καταστάσεις τους και επιδιώκεται να βρει ο αλγόριθμος τη βέλτιστη από αυτές: π.χ. προβλήματα βελτιστοποίησης.
- Προβλήματα στα οποία είναι γνωστές μόνο κάποιες ιδιότητες των τελικών καταστάσεων και επιδιώκεται η εύρεση ενός πλήρους στιγμιότυπου τελικής κατάστασης: π.χ. προβλήματα χρονοπρογραμματισμού, γνωστά ως προβλήματα ικανοποίησης περιορισμών.
- Προβλήματα στα οποία ο στόχος δεν είναι γνωστός και επιδιώκεται να βρεθεί μια έγκυρη τελική κατάσταση: π.χ. προβλήματα εξαγωγής συμπερασμάτων.
Στο κεφάλαιο αυτό θα εστιάσουμε μόνο στον τύπο προβλημάτων που ανήκουν στην πρώτη κατηγορία. Ως στόχος προβλήματος (problem goal) μπορεί να οριστεί το σύνολο των καταστάσεων του προβλήματος στις οποίες το ζητούμενο εκπληρώνεται και οι οποίες χαρακτηρίζονται ως τελικές καταστάσεις του προβλήματος. Η διατύπωση του στόχου είναι το πρώτο βήμα για την επίλυση ενός προβλήματος αυτής της κατηγορίας.
Συνήθως, προβλήματα του παραπάνω τύπου μπορούν να επιλυθούν με οποιαδήποτε αλγοριθμική προσέγγιση∙ παράδειγμα, το πρόβλημα των Πύργων του Ανόι (βλέπε Σχήμα 1.8) επιλύεται εύκολα με αναδρομή, χωρίς να μας απασχολούν τα βήματα επίλυσης που οδηγούν στο στόχο. Το μειονέκτημα της προσέγγισης που βασίζεται σε αναδρομή παρόμοιων αλγοριθμικών προσεγγίσεων είναι ότι αφενός δεν αποτυπώνει ρητά την ακολουθία των ενεργειών που κάνει ο αλγόριθμος και αφετέρου δεν έχει δυνατότητες αναζήτησης βάσει ποιοτικών κριτηρίων. Η αντίστοιχη αλγοριθμική προσέγγιση στο χώρο της ΤΝ είναι οι αλγόριθμοι αναζήτησης που, όπως προαναφέραμε, αποτυπώνουν ρητά την ακολουθία των ενεργειών που εκτελούνται κατά την επίλυση.
1.1.2 Προβλήματα που επιλύονται με αναζήτηση
Στην περίπτωση ενός προβλήματος που επιλύεται με αναζήτηση, ο αλγόριθμος αναζήτησης βασίζεται πάντα στην κατάσταση στην οποία βρίσκεται το πρόβλημα∙ στο πρόβλημα του περιοδεύοντος πωλητή όταν γίνεται μια συγκεκριμένη ενέργεια, το αποτέλεσμα μιας ενέργειας μετακίνησης εξαρτάται άμεσα από την τρέχουσα κατάσταση του προβλήματος, δηλαδή από το σε ποια πόλη βρίσκεται ο πωλητής.
Πρωταρχικής σημασίας είναι η έννοια της κατάστασης ενός προβλήματος (problem state) και η έννοια του χώρου καταστάσεων (state space) ο οποίος είναι το σύνολο των έγκυρων καταστάσεων στις οποίες μπορεί να βρεθεί ένα πρόβλημα, συμπεριλαμβανομένων της αρχικής και των πιθανών τελικών καταστάσεών του. Τα προβλήματα που επιλύονται με αναζήτηση χαρακτηρίζονται και ως προβλήματα που επιλύονται με χώρο καταστάσεων.
Σε πολλά από τα προβλήματα που επιλύονται με αναζήτηση μας ενδιαφέρει η εύρεση της καλύτερης ποιοτικά λύσης, δηλαδή η αναζήτηση διαμορφώνεται ως πρόβλημα βελτιστοποίησης∙ στο πρόβλημα του περιοδεύοντος πωλητή απαιτείται να βρεθεί ο συντομότερος δρόμος που οδηγεί στο στόχο του προβλήματος. Η έννοια της καλύτερης λύσης εξαρτάται από το πρόβλημα. Πιθανόν να υπονοείται η μεγιστοποίηση μιας μέτρησης (π.χ. κέρδος) ή η ελαχιστοποίηση κάποιου μεγέθους (π.χ. κόστος). Πολλές φορές, η έννοια του καλύτερου είναι σύνθετη και προκύπτει θετικά από την ποιότητα της τελικής κατάστασης που βρέθηκε και αρνητικά από το κόστος των ενεργειών που έγιναν (κόστος διαδρομής).
Συνολικό κόστος = κόστος (διαδρομής) - κέρδος(κατάστασης στόχου)
Τα προβλήματα που θα ερευνήσουμε ακολούθως ως υποδείγματα θα είναι προσδιοριστικά, δηλαδή οι ενέργειες που καλείται ο αλγόριθμος να κάνει σε κάθε βήμα του προσδιορίζονται επακριβώς από τους εγγενείς περιορισμούς του προβλήματος και όχι από εξωτερικούς παράγοντες. Υπάρχουν ωστόσο και προβλήματα στο πεδίο εφαρμογών της ΤΝ που σχετίζονται με παίξιμο παιχνιδιών (game playing) και στα οποία ο εξωτερικός κόσμος, μέσω των επιλογών του, επιδρά στη διαμόρφωση της τρέχουσας κατάστασης του προβλήματος∙ παράδειγμα είναι τα παιχνίδια δύο παικτών (σκάκι, τάβλι, τρίλιζα κτλ.) όπου ο 1ος παίκτης είναι ο υπολογιστής, αλλά ο 2ος παίκτης είναι φυσικό πρόσωπο. Η παρουσία ενός παίκτη-αντιπάλου αλλάζει δραστικά την αναζήτηση, καθώς τώρα υπάρχει ο ρόλος του ενός παίκτη (του υπολογιστή) υπέρ του οποίου ο αλγόριθμος προσπαθεί να βρει την καλύτερη λύση, δηλαδή να κερδίσει, ενώ ο αντίπαλος προσπαθεί να τον σταματήσει. Στο τάβλι, επιπλέον εξωτερικός παράγοντας είναι η τύχη, η οποία μέσω του τυχαίου αποτελέσματος του ριξίματος των ζαριών διαμορφώνει με μη προσδιοριστικό τρόπο την επόμενη κατάσταση στην οποία θα βρεθεί το πρόβλημα. Όμως, σε κάθε περίπτωση τον αλγόριθμο αναζήτησης απασχολεί η τρέχουσα κατάσταση του προβλήματος. Σε ορισμένα άλλα προβλήματα, για παράδειγμα σε παιχνίδια τράπουλας όπως το μπριτζ, ο παίκτης πρέπει, επιπλέον, να «θυμάται» όλες τις προηγούμενες κινήσεις, είτε δικές του είτε των αντιπάλων του, ώστε να επιλέξει την επόμενη κίνησή του.
Η αλληλεπίδραση με το φυσικό περιβάλλον μπορεί να θεωρηθεί, επίσης, ως μια μορφή παιξίματος παιχνιδιού όπου οι εξωγενείς παράγοντες πολλές φορές δεν είναι καν γνωστοί εκ των προτέρων. Καθώς ο αλγόριθμος προσπαθεί να ενεργήσει στον πραγματικό κόσμο, ανακαλύπτει νέα γνώση και προκύπτουν συνθήκες που μπορούν να υποστηρίξουν ή να εμποδίσουν την προγραμματισμένη διαδικασία.
Το παρόν κεφάλαιο θα αφιερωθεί μόνο στην προσδιοριστική αναζήτηση λύσεων σε χώρο καταστάσεων σε μικρά υποδειγματικά προβλήματα, όπως τα προβλήματα περιορισμένου φυσικού κόσμου, παιγνίων ενός παίκτη και τα κουίζ. Απαραίτητο επόμενο βήμα, για να μπορέσουν να επιλυθούν παρόμοια προβλήματα, είναι να έχουν γίνει κατανοητά, δηλαδή να διατυπωθούν με σαφή τρόπο. Διατύπωση ενός προβλήματος (problem formulation) είναι η διαδικασία με την οποία αποφασίζεται ποιες ενέργειες και καταστάσεις θα πρέπει να εξετάζονται με δεδομένο ένα στόχο.
Στο χώρο της ΤΝ, η αναζήτηση απαιτεί η διατύπωση του προβλήματος να αποτυπώνεται σε έναν σαφή και τυποποιημένο ορισμό.
1.1.3 Ορισμός Προβλήματος
Για να οριστεί ένα πρόβλημα, πρέπει πρώτα να περιγραφεί ο κόσμος του προβλήματος. Ο κόσμος του προβλήματος (problem world) είναι ένα υποσύνολο του πραγματικού κόσμου και περιέχει μόνο τα αντικείμενα που έχουν άμεση σχέση με το πρόβλημα, τις ιδιότητές τους και τις σχέσεις που τα συνδέουν. Για παράδειγμα, στον κόσμο του προβλήματος του περιοδεύοντος πωλητή σε 6 πόλεις, που φαίνεται στο παρακάτω σχήμα 1.1, περιέχονται οι 6 πόλεις που μπορεί να επισκεφτεί ο πωλητής, οι ιδιότητες που έχουν, όσον αφορά την απόσταση κάθε πόλης από καθεμία από τις υπόλοιπες πόλεις και τις σχέσεις που τις συνδέουν, δηλαδή τους υπάρχοντες δρόμους, που σημειώνονται με κόκκινη γραμμή.
Σχήμα 1.1 Γραφική αναπαράσταση του κόσμου του προβλήματος του περιοδεύοντος πωλητή σε 6 πόλεις
Ο κόσμος ενός προβλήματος χαρακτηρίζεται ως:
- κλειστός (closed world), όταν κανένα νέο αντικείμενο, ιδιότητα ή σχέση δεν εισάγεται ή δεν εξάγεται από ή προς τον εξωτερικό κόσμο,
- ανοιχτός (open world), όταν δέχεται επιδράσεις από τον εξωτερικό κόσμο που επιδρούν στην τρέχουσα κατάστασή του∙ αυτό είναι πολύ δύσκολο να το διαχειριστούμε, γιατί καθιστά την εξέλιξη του κόσμου μη προβλέψιμη, όπως αναφέραμε και στην προηγούμενη παράγραφο.
Τα 4 χαρακτηριστικά στοιχεία που προκύπτουν από τη διατύπωση ενός προβλήματος και μπορούν να το ορίσουν τυπικά είναι:
- η αρχική κατάσταση (start state ή input state), από την οποία θα αρχίσει η αναζήτηση.
- ο στόχος (goal), ο οποίος περιλαμβάνει έγκυρες καταστάσεις με συγκεκριμένα επιθυμητά χαρακτηριστικά τις οποίες θέλει να εντοπίσει η αναζήτηση. Μια τέτοια κατάσταση χαρακτηρίζεται ως κατάσταση-στόχος (goal state) του προβλήματος.
- η περιγραφή των ενεργειών που έχει στη διάθεσή του ο αλγόριθμος. Αν δώσουμε το όνομα συνάρτηση διαδόχων (successor function) στη συνάρτηση που καλεί ένα σύνολο ενεργειών οι οποίες εφαρμόζονται σε μια κατάσταση, για να παράγουν διάδοχες καταστάσεις, τότε με δεδομένη μια συγκεκριμένη κατάσταση x του προβλήματος, η συνάρτηση διαδόχων θα επιστρέφει ένα σύνολο διατεταγμένων ζευγών (ενέργεια, διάδοχος), όπου κάθε ενέργεια είναι μία από τις επιτρεπτές ενέργειες στην κατάσταση x και διάδοχος (successor) είναι μια κατάσταση στην οποία μπορούμε να φτάσουμε από την κατάσταση x με την εκτέλεση αυτής της ενέργειας. Οι ενέργειες καλούνται και τελεστές μετάβασης (transition operators) του προβλήματος.
- ο χώρος καταστάσεων (state space) που ορίζεται έμμεσα από την αρχική κατάσταση και τη συνάρτηση διαδόχων. Ο χώρος καταστάσεων απεικονίζεται με ένα γράφημα του οποίου οι κόμβοι είναι καταστάσεις και τα τόξα μεταξύ καταστάσεων είναι ενέργειες (βλέπε Σχήμα 1.3). Σε προβλήματα διάσχισης δρόμου το γράφημα του χώρου καταστάσεων ταυτίζεται με τη γραφική αναπαράσταση του κόσμου του προβλήματος (βλέπε Σχήμα 1.1).
Με βάση τα παραπάνω, μπορούμε να πούμε ότι ένα πρόβλημα (Ρ) ορίζεται ως P=(I,G,T,S), όπου:
Ι: η αρχική κατάσταση,
G: το σύνολο των καταστάσεων που περιλαμβάνει ο στόχος,
T: το σύνολο των τελεστών μετάβασης,
S: ο χώρος των καταστάσεων.
Στα τα προβλήματα όπου μας ενδιαφέρει η ποιότητα της λύσης, επιπλέον στοιχείο αποτελεί η συνάρτηση κόστους διαδρομής (function of path cost), όπως αυτή περιγράφηκε στην προηγούμενη παράγραφο 1.1.2.
Στη συνέχεια, θα παρουσιάσουμε τη λεκτική περιγραφή των κλειστών κόσμων υποδειγματικών προβλημάτων, όπως του προβλήματος των 3 κύβων, του αγρότη με τη βάρκα, των 8 πλακιδίων, των 2 δοχείων κ.ά. Οι τεχνικές αναπαράστασης της γνώσης για ένα πρόβλημα, όπως αυτή προκύπτει μέσω της λεκτικής περιγραφής του, θα εκτεθούν για μερικά από τα παραπάνω προβλήματα στο κεφάλαιο της Αναπαράστασης της Γνώσης (Κεφάλαιο 2).
1.1.4 Παραδείγματα προβλημάτων
Εδώ θα παρουσιάσουμε μερικά από τα γνωστότερα προβλήματα που χρησιμοποιούνται ως παραδείγματα σε εκπαιδευτικά εγχειρίδια, κάνοντας διάκριση μεταξύ των προβλημάτων-παιχνιδιών και των προβλημάτων του πραγματικού κόσμου.
Προβλήματα-παιχνίδια
Το πρώτο παράδειγμα που θα εξετάσουμε είναι αυτό του προβλήματος των 3 κύβων.
Διατύπωση του προβλήματος των 3 κύβων: Τρεις κύβοι βρίσκονται σε μια τυχαία διάταξη πάνω σε ένα τραπέζι. Σκοπός του προβλήματος είναι να μετακινηθούν οι κύβοι, ώστε να σχηματιστεί μια νέα επιθυμητή διάταξη. Ένας κύβος μπορεί να μετακινηθεί, εφόσον έχει ελεύθερη την επάνω έδρα του.
Σχήμα 1.2 Γραφική περιγραφή του κόσμου του προβλήματος των 3 κύβων
- Καταστάσεις: Οι κύβοι βρίσκονται σε οποιαδήποτε δυνατή διάταξη. Επομένως, υπάρχουν 13 έγκυρες καταστάσεις (6 συνδυασμοί κύβων σε διάταξη στήλης, 6 συνδυασμοί κύβων σε διάταξη 2 κύβων σε στήλη και ενός μόνου του και 1 συνδυασμός των τριών κύβων σε διάταξη όλων πάνω στο τραπέζι).
- Αρχική κατάσταση: Οποιαδήποτε κατάσταση μπορεί να οριστεί ως αρχική.
- Τελεστές μετάβασης: Δύο ενέργειες επιτρέπεται να δοκιμαστούν σε κάθε κατάσταση: η μετακίνηση ενός ελεύθερου κύβου πάνω σε έναν άλλον ελεύθερο κύβο (move-to-cube) και η μετακίνηση ενός ελεύθερου κύβου που βρίσκεται στην κορυφή μιας στήλης πάνω στο τραπέζι (move-to-table). Ο πλήρης χώρος καταστάσεων παρουσιάζεται στο σχήμα 1.3.
- Στόχος: Μια οποιαδήποτε διάταξη των κύβων μπορεί να τεθεί ως στόχος.
Το πρόβλημα των 3 κύβων, σε ένα στιγμιότυπό του, θα μπορούσε να περιγραφεί με τη βοήθεια του παρακάτω πίνακα:
Πίνακας 1.1 Η καταγραφή ενός στιγμιότυπου του προβλήματος των 3 κύβων
Οι τελεστές μετάβασης του προβλήματος μπορούν να περιγραφούν ως εξής:
- Move-to-cube: Μετακίνησε έναν κύβο x πάνω σε έναν άλλο κύβο y.
Προϋποθέσεις: Οι κύβοι x & y να είναι ελεύθεροι.
Μοντέλο Μετάβασης: Ο κύβος x βρίσκεται πάνω στον κύβο y, ο κύβος y παύει να είναι ελεύθερος.
- Move-to-table: Μετακίνησε έναν κύβο x στο τραπέζι.
Προϋποθέσεις: Ο κύβος x να είναι ελεύθερος και να βρίσκεται πάνω σε έναν άλλο κύβο y.
Μοντέλο Μετάβασης: Ο κύβος x βρίσκεται πάνω στο τραπέζι, ο κύβος y είναι πλέον ελεύθερος.
Σχήμα 1.3 Ο χώρος καταστάσεων του προβλήματος των 3 κύβων
Στο σχήμα 1.3 απεικονίζεται ο χώρος καταστάσεων του προβλήματος των 3 κύβων, όπου με κόκκινα βέλη απεικονίζεται ο τελεστής move-to-cube και με μαύρα ο τελεστής move-to-table.
Άλλο πρόβλημα-παιχνίδι είναι ο αγρότης με τη βάρκα.
Διατύπωση του προβλήματος του αγρότη με τη βάρκα: Ένας αγρότης (farmer) θέλει να περάσει μια χήνα (goose), ένα σακί σπόρων (seeds) και ένα λύκο (wolf) από τη μία όχθη ενός ποταμιού στην άλλη με τη βοήθεια μιας βάρκας. Η βάρκα μπορεί να μεταφέρει τον αγρότη ή μόνο του ή με κάποιο από τους άλλους 3 συντελεστές του προβλήματος, δηλαδή τη χήνα ή το σακί με τους σπόρους ή το λύκο. Ταυτόχρονα, σε καθεμία από τις όχθες δεν μπορούν να μείνουν μόνα τους τα ζεύγη χήνα-σπόροι και λύκος-χήνα, γιατί το ένα τρώει το άλλο.
Εικόνα 1.1 Γραφική αναπαράσταση ενός στιγμιότυπου του προβλήματος του αγρότη με τη βάρκα
- Καταστάσεις: Οι έγκυρες καταστάσεις στις οποίες μπορεί να βρεθεί το πρόβλημα φαίνονται στο σχήμα 1.4.
- Αρχική κατάσταση: Οποιαδήποτε έγκυρη κατάσταση μπορεί να οριστεί ως αρχική.
- Τελεστές μετάβασης: Όλες οι μετακινήσεις που μπορεί να κάνει ο αγρότης από τη μία όχθη στην απέναντι και είναι 4: μετακίνηση του αγρότη μόνου (f), με τη χήνα (g), με το λύκο (w), με τους σπόρους (s). Οι τελεστές επιτρέπεται να εφαρμοστούν σε μια κατάσταση, εφόσον τηρούνται οι περιορισμοί εφαρμογής τους (βλέπε ιδιότητες ακόλουθου πίνακα 1.2).
- Στόχος: Μια οποιαδήποτε κατάσταση από το χώρο καταστάσεων μπορεί να τεθεί ως στόχος.
Σε ένα στιγμιότυπό του όπου όλοι βρίσκονται στην αριστερή όχθη, το πρόβλημα του αγρότη με τη βάρκα θα μπορούσε να περιγραφεί με τη βοήθεια του παρακάτω πίνακα:
Πίνακας 1.2 Περιγραφή μιας κατάστασης του κόσμου του προβλήματος του αγρότη με τη βάρκα
Οι τελεστές μετάβασης του προβλήματος μπορούν να περιγραφούν ως εξής:
- f: Μετακίνησε τον αγρότη από την όχθη x στην απέναντι y.
Προϋποθέσεις: Ο αγρότης βρίσκεται στην όχθη x. Στην όχθη x δε βρίσκεται η χήνα με το λύκο ή/και το σακί με τους σπόρους.
Μοντέλο Μετάβασης: Ο αγρότης βρίσκεται στην όχθη y.
- g: Μετακίνησε τον αγρότη και τη χήνα από την όχθη x στην απέναντι y.
Προϋποθέσεις: Ο αγρότης και η χήνα βρίσκονται στη όχθη x.
Μοντέλο Μετάβασης: Ο αγρότης και η χήνα βρίσκονται στην όχθη y. .
- w: Μετακίνησε τον αγρότη και το λύκο από την όχθη x στην απέναντι y.
Προϋποθέσεις: Ο αγρότης και ο λύκος βρίσκονται στην όχθη x. Στην όχθη x δε βρίσκεται η χήνα μαζί με τους σπόρους.
Μοντέλο Μετάβασης: Ο αγρότης και ο λύκος βρίσκονται στην όχθη y. .
- s: Μετακίνησε τον αγρότη και το σακί με τους σπόρους από την όχθη x στην απέναντι y.
Προϋποθέσεις: Ο αγρότης και το σακί βρίσκονται στην όχθη x. Στην όχθη x δεν βρίσκεται η χήνα μαζί με το λύκο.
Μοντέλο Μετάβασης: Ο αγρότης και το σακί με τους σπόρους βρίσκονται στην όχθη y. .
Σχήμα 1.4 Ο χώρος καταστάσεων του προβλήματος του αγρότη με τη βάρκα
Επίσης, πολύ γνωστά προβλήματα-παιχνίδια είναι αυτά των 8 πλακιδίων (8 Puzzles), των 2 δοχείων, των 8 Βασιλισσών, των Πύργων του Ανόι κ.ά.
Διατύπωση του προβλήματος των 8 πλακιδίων (8 Puzzles): Ένα πλαίσιο 3x3 περιέχει 8 πλακίδια, αριθμημένα από το 1 έως το 8, και μία θέση κενή χωρίς πλακίδιο. Τα πλακίδια μπορούν να μετακινηθούν σε μια γειτονική θέση, εφόσον αυτή η θέση είναι κενή. Σκοπός είναι να βρεθούν τα πλακίδια αυτά σε μια επιθυμητή διάταξη. Το πρόβλημα μπορεί να γενικευτεί για N πλακίδια.
Σχήμα 1.5 Το πρόβλημα των 8 πλακιδίων
Διατύπωση του προβλήματος των 2 δοχείων: Στο πρόβλημα υπάρχουν δυο δοχεία, που χωράνε 4 λίτρα και 3 λίτρα νερού αντίστοιχα, και μια βρύση που μπορεί να τα γεμίσει πλήρως είτε είναι άδεια είτε μισογεμάτα. Το ζητούμενο είναι να βρεθούν μέσα στο μικρό δοχείο ακριβώς 2 λίτρα νερό. Επιτρεπτές ενέργειες είναι να γεμίσει ένα δοχείο πλήρως από τη βρύση, να αδειάσει τελείως ένα δοχείο από το περιεχόμενό του και να μεταγγιστεί το περιεχόμενο του ενός δοχείου στο άλλο, αν χωράει όλο, αλλιώς το μέρος που χωράει.
Σχήμα 1.6 Το πρόβλημα των 2 δοχείων
Διατύπωση του προβλήματος των 8 βασιλισσών: Το πρόβλημα των 8 βασιλισσών είναι παιχνίδι στρατηγικής, όπου σε μια σκακιέρα πρέπει να τοποθετηθούν 8 βασίλισσες έτσι, ώστε να μην απειλεί η μια την άλλη, δηλαδή καμιά να μη μοιράζεται την ίδια γραμμή, στήλη ή διαγώνιο με τις υπόλοιπες. Μπορεί να λυθεί με αναδρομή και άλλες κλασικές προσεγγίσεις, με αλγόριθμους αναζήτησης, αλλά και με μη παραδοσιακές προσεγγίσεις, όπως οι γενετικοί αλγόριθμοι.
Σχήμα 1.7 Το πρόβλημα των 8 βασιλισσών
Διατύπωση του προβλήματος των Πύργων του Ανόι: Δίνεται ένας αριθμός κρίκων διαφορετικού μεγέθους και τρεις στύλοι. Οι κρίκοι είναι τοποθετημένοι στον πρώτο στύλο με διάταξη από τον μεγαλύτερο χαμηλότερα προς τον μικρότερο στην κορυφή. Από το στύλο όπου βρίσκονται οι κρίκοι πρέπει να μεταφερθούν ένας με ίδια τελική διάταξη στον τρίτο στύλο, με τη βοήθεια του μεσαίου στύλου, χωρίς ποτέ ένας μεγαλύτερος κρίκος να τοποθετηθεί πάνω από έναν μικρότερο. Συνήθως λύνεται με αναδρομή αλλά και με κλασσικές μεθόδους αναζήτησης
Σχήμα 1.8 Σχηματική περιγραφή των Πύργων του Ανόι
Διατύπωση του προβλήματος του ρομπότ: Ένα ρομπότ κινείται κατά μία θέση οριζοντίως ή καθέτως σε ένα χώρο με εμπόδια. Σε διάφορες θέσεις υπάρχουν αντικείμενα τα οποία προσπαθεί να εντοπίσει το ρομπότ. Στόχος είναι το ρομπότ να καταφέρει να εντοπίσει όλα τα αντικείμενα ή κάποια από αυτά. Στην κατηγορία αυτή ανήκει το παιχνίδι του πάκμαν και γενικότερα παιχνίδια που χαρακτηρίζονται ως λαβύρινθοι.
Σχήμα 1.9 Το πρόβλημα του ρομπότ
Προβλήματα πραγματικού κόσμου
Τα προβλήματα πραγματικού κόσμου είναι κατά κανόνα δύσκολο να οριστούν. Κλασικότεροι εκπρόσωποί τους είναι τα προβλήματα περιήγησης, μεταξύ των οποίων συγκαταλέγεται το γνωστό πρόβλημα του περιοδεύοντος πωλητή (travelling salesperson problem-TSP), στο οποίο έχουμε αναφερθεί στην αρχή του Κεφαλαίου (βλέπε Σχήμα 1.1). Άλλα προβλήματα είναι τα προβλήματα διάταξης κυκλώματος, σχεδίασης πρωτεϊνών, κίνησης ρομπότ, αναζήτησης στο διαδίκτυο κτλ.
1.1.5 Λύση προβλήματος
Λύση ενός προβλήματος Ρ, όπου P=(I,G,T,S), είναι μια ακολουθία από τελεστές μετάβασης t1, t1, t2, …, tn, με την ιδιότητα:
G= tn(…(t2(t1(I)))..)
Παράδειγμα: Αν το πρόβλημα του αγρότη οριστεί τυπικά ως ακολούθως:
Ι (input)= Αγρότης-Λύκος-Χήνα-Σακί με σπόρους στην αριστερή όχθη
G (goal)=Αγρότης-Λύκος-Χήνα-Σακί στη δεξιά όχθη
Τ (transitions)={
- F(armer): Μετάφερε τον αγρότη από την όχθη όπου βρίσκεται στην απέναντι.
- W(olf): Μετάφερε τον αγρότη και το λύκο από την όχθη όπου βρίσκονται στην απέναντι.
- G(oose): Μετάφερε τον αγρότη και τη χήνα από την όχθη όπου βρίσκονται στην απέναντι.
- S(eeds): Μετάφερε τον αγρότη και το σακί από την όχθη όπου βρίσκονται στην απέναντι.
- }
Αν ο χώρος καταστάσεων S του προβλήματος είναι αυτός του σχήματος 1.4, τότε, υπάρχουν δύο εναλλακτικές λύσεις που είναι οι ακόλουθες:
G → F → S → G → W → F → G
G → F → W → G → S → F → G
Εναλλακτικός ορισμός είναι ο ακόλουθος:
Λύση ενός προβλήματος είναι μια ακολουθία από καταστάσεις στις οποίες μπορεί να βρεθεί διαδοχικά το πρόβλημα, με αρχή από την αρχική κατάσταση και κατάληξη σε μία από τις επιθυμητές τελικές καταστάσεις.
Ως μερική λύση (partial solution) εννοούμε μια ακολουθία βημάτων επίλυσης που δεν έχουν καταλήξει ακόμα σε επιτυχία ή αποτυχία∙ παράδειγμα, στο πρόβλημα του αγρότη τρεις χρονικά διαδοχικές μερικές λύσεις θεωρούνται οι:
G → F → S
G → F → S → G
G → F → S → G → W
Ένα πρόβλημα μπορεί να έχει πολλές λύσεις που προκύπτουν κατά την αναζήτηση μέσα στο χώρο καταστάσεων. Δοθέντος ενός προβλήματος P = (I, G, T, S), ο χώρος αναζήτησης (search space) είναι το σύνολο όλων των καταστάσεων που είναι προσβάσιμες από την αρχική κατάσταση K. Μια κατάσταση Κi χαρακτηρίζεται ως προσβάσιμη, αν υπάρχει μια ακολουθία τελεστών μετάβασης που οδηγεί από την αρχική κατάσταση K στην κατάσταση Κi.
Ο χώρος αναζήτησης ενός προβλήματος άλλοτε ταυτίζεται με το χώρο καταστάσεων και άλλοτε, για πολύ μεγάλους χώρους καταστάσεων ή για συγκεκριμένου τύπου προβλήματα, περιορίζεται ως υποσύνολό του σε ένα μικρότερο ή μεγαλύτερο μέρος του. Για παράδειγμα, στο πρόβλημα του αγρότη οι δύο χώροι ταυτίζονται, ενώ στην περίπτωση του προβλήματος του πάκμαν, που μπορεί να θεωρηθεί ως παραλλαγή του προβλήματος του ρομπότ, διαφοροποιούνται, αν ο κόσμος του προβλήματος στο αρχικό του στιγμιότυπο είναι αυτός που δίνεται στο σχήμα 1.10 (με γκρι σημειώνονται οι καταστάσεις του χώρου καταστάσεων στις οποίες δεν μπορεί να βρεθεί το πάκμαν κατά την αναζήτηση, δεδομένου ότι δεν μπορεί να τις προσεγγίσει λόγω των εμποδίων).
Σχήμα 1.10 Γραφική απεικόνιση του χώρου αναζήτησης του προβλήματος του πάκμαν
Ένας χώρος αναζήτησης μπορεί να αναπαρασταθεί ως γράφημα με κόμβους τις προσβάσιμες καταστάσεις του γράφου του χώρου καταστάσεων.
1.2 Αναζήτηση λύσης
Όταν ο χώρος καταστάσεων ενός προβλήματος είναι πολύ μεγάλος, τότε κρίνεται αναγκαία η ύπαρξη μιας συστηματικής μεθόδου έρευνάς του, δηλαδή ενός αλγόριθμου αναζήτησης (search algorithm). Με συνδυασμό και επέκταση των κλασικών αλγορίθμων αναζήτησης, τους οποίους και θα παρουσιάσουμε στις επόμενες παραγράφους, μπορούν να προκύψουν πολλοί ακόμα αλγόριθμοι κατάλληλοι για την επίλυση προβλημάτων συγκεκριμένων τύπων. Οι αλγόριθμοι αναζήτησης περιορίζονται στο χώρο αναζήτησης και χαρακτηρίζονται από την πολυπλοκότητα και την αποδοτικότητά τους.
Η αναζήτηση λύσης επιτυγχάνεται σε κύκλους αναζήτησης. Σε κάθε κύκλο επεκτείνεται το σύνολο των μερικών λύσεων που έχουν σχηματιστεί κατά τον προηγούμενο κύκλο. Η επιλογή του τρόπου επέκτασης εξαρτάται από τη στρατηγική αναζήτησης που έχει υιοθετήσει ο αλγόριθμος αναζήτησης.
Κατά τη διαδικασία αναζήτησης, αναπτύσσεται το δέντρο αναζήτησης που περιλαμβάνει μέρος ή το σύνολο των καταστάσεων του χώρου αναζήτησης.
1.2.1 Δένδρο Αναζήτησης
Βασικό εργαλείο για την εφαρμογή ενός αλγορίθμου αναζήτησης μέσα στο χώρο καταστάσεων είναι το δένδρο αναζήτησης (search tree). Το δένδρο αναζήτησης σχηματίζεται δυναμικά, καθώς ο αλγόριθμος ανιχνεύει όλες τις δυνατές να σχηματιστούν ακολουθίες διαδοχικών καταστάσεων που μπορεί να οδηγήσουν σε λύση. Κάθε τέτοια ακολουθία καταστάσεων, η οποία ξεκινά από την αρχική κατάσταση και καταλήγει σε ένα φύλλο του μέχρι εκείνου του σημείου ανεπτυγμένου δένδρου, καλείται μονοπάτι αναζήτησης (search path). Το σύνολο των αποτυπωμένων πάνω σε ένα δένδρο αναζήτησης εναλλακτικών μονοπατιών σε μια συγκεκριμένη στιγμή της εξέλιξης του κόσμου του προβλήματος καλείται ουρά αναζήτησης (search queue ή fringe). Τα μονοπάτια που αποτυπώνονται σε ένα δένδρο μιας μη ολοκληρωμένης αναζήτησης μπορούν να θεωρηθούν μερικές λύσεις του προβλήματος.
Σε ένα δένδρο αναζήτησης που αντιστοιχεί σε ένα λυμένο πρόβλημα, μια λύση του αποτελεί ένα ολοκληρωμένο μονοπάτι που αποδίδεται ως μια ακολουθία διαδοχικών καταστάσεων αρχίζοντας από την αρχική κατάσταση και καταλήγοντας σε μια τελική. Είναι σημαντικό να διαφοροποιηθούν οι έννοιες δέντρο αναζήτησης, χώρος αναζήτησης και χώρος καταστάσεων.
Ένα από τα γνωστότερα προβλήματα στο χώρο της ΤΝ, όπως προαναφέραμε, είναι το πρόβλημα του περιοδεύοντος πωλητή, το οποίο στο κεφάλαιο αυτό θα απλοποιήσουμε, για να καταστεί πρόβλημα-υπόδειγμα για την παρουσίαση των διαφορετικών αλγορίθμων αναζήτησης. Στην απλουστευμένη αυτή εκδοχή, ο πωλητής δεν έχει ως στόχο να επιστρέψει απαραίτητα στην αρχική πόλη, αλλά σε κάποια οποιαδήποτε από τις πόλεις του προβλήματος, χωρίς να απαιτείται να έχει επισκεφθεί όλες τις υπόλοιπες. Το πρόβλημα θεωρείται λυμένο, όταν βρεθεί ένα οποιοδήποτε μονοπάτι που να οδηγεί από την αρχική πόλη στην πόλη-στόχο. Στο παρακάτω σχήμα δίνεται η περιγραφή μιας εκδοχής του χώρου αναζήτησης του περιοδεύοντος πωλητή, όταν στο πρόβλημα υπάρχουν 10 πόλεις που συνδέονται μεταξύ τους με δρόμους διαφορετικού μήκους. Στην περιγραφή αυτή ο κάθε κόμβος αντιστοιχεί σε μια πόλη του προβλήματος και κάθε ακμή μεταξύ των κόμβων στους υπάρχοντες δρόμους. Επιπλέον, σε κάθε ακμή σημειώνεται η απόσταση μεταξύ των πόλεων που συνδέει.
Σχήμα 1.11 Μια εκδοχή του χώρου αναζήτησης του προβλήματος του περιοδεύοντος πωλητή, όταν επισκέπτεται 10 πόλεις
Ο ορισμός του συγκεκριμένου προβλήματος έχει ως εξής:
Ι= Πωλητής σε πόλη Α
G= Πωλητής σε πόλη Κ
Τ={
- Μετάφερε τον Πωλητή από πόλη x σε πόλη y
- }
S= κόμβοι του γραφήματος του σχήματος 1.11
Οι αλγόριθμοι αναζήτησης εξερευνούν γραφήματα όπως αυτόν στο σχήμα 1.11 χρησιμοποιώντας και εμπλουτίζοντας κατά την πορεία προς εύρεση λύσης τις γνώσεις σχετικά με τη δυνατότητα σύνδεσης απομακρυσμένων κόμβων μεταξύ τους και το μήκος των εναλλακτικών μονοπατιών που τις συνδέουν. Στην προκειμένη περίπτωση, ένας τύπος γνώσης που παράγεται βήμα-βήμα είναι αυτή που αφορά την απόσταση κάθε κόμβου από τον κόμβο-ρίζα. Για παράδειγμα, σε ένα στιγμιότυπο της επίλυσης του προβλήματος του πωλητή, όταν αυτός ξεκινά από την πόλη Α, ο αλγόριθμος θα μπορούσε να έχει διανύσει το μονοπάτι Α-Β-Δ-Θ και να έχει αποκτήσει τη γνώση ότι η πόλη Α συνδέεται με τη Θ με μεταξύ τους απόσταση 12,73 χιλ. (βλέπε Σχήμα 1.12).
Σχήμα 1.12 Απόσταση απομακρυσμένων κόμβων ενός γραφήματος
Όταν εκτελείται εξαντλητική αναζήτηση (exhaustive search), δηλαδή ο αλγόριθμος προσπαθεί να βρει όλες τις δυνατές λύσεις του προβλήματος, τότε στο δένδρο που σχηματίζεται αποτυπώνονται όλα τα μονοπάτια που είναι δυνατόν να διανυθούν (μερικά από τα οποία θα αποδειχθούν λύσεις), καθώς και όλη η γνώση που αποκτάται κατά τη διάνυση αυτή (βλέπε Σχήμα 1.13).
Σχήμα 1.13 Το δένδρο της εξαντλητικής αναζήτησης του προβλήματος του περιοδεύοντος πωλητή
1.2.2 Περιγραφή Δένδρων Αναζήτησης
Κάθε κόμβος του δέντρου αναζήτησης αντιστοιχεί σε μια κατάσταση του χώρου καταστάσεων του προβλήματος. Η ρίζα του δένδρου αντιστοιχεί στην αρχική κατάσταση. Ο κόμβος που δημιουργεί ένα συγκεκριμένο κόμβο καλείται πατρικός ή γονικός κόμβος (parent node). Οι κόμβοι που δημιουργούνται από ένα γονικό κόμβο καλούνται διάδοχοι κόμβοι (successor nodes). Η ενέργεια που εφαρμόζεται σε έναν κόμβο, για να καταστεί γονικός κόμβος, προκαλείται από κάποιον από τους τελεστές του προβλήματος και παριστάνεται ως ακμή ή κλαδί του δένδρου που ενώνει το γονικό κόμβο με καθέναν από τους διάδοχους κόμβους που δημιουργεί. Κάθε κόμβος του δένδρου αντιστοιχεί στην κατάσταση στην οποία καταλήγει το μονοπάτι που προκύπτει από την κατά ένα βήμα επέκταση του μονοπατιού που έχει ήδη καθορίσει ο γονικός του κόμβος. Το κόστος του αλγόριθμου, για να διανύσει ένα μονοπάτι, καλείται κόστος μονοπατιού (path cost). Το πλήθος των κόμβων μέσα σε ένα μονοπάτι καλείται βάθος μονοπατιού (path depth). Για παράδειγμα, στο μονοπάτι του σχήματος 1.14 το κόστος είναι 12,73 και το βάθος είναι 4.
Σχήμα 1.14 Μονοπάτι βάθους 4 και κόστους 12,73 για το πρόβλημα του περιοδεύοντος πωλητή
Μέτωπο (fringe ή front) καλείται το διατεταγμένο σύνολο των κόμβων που ο αλγόριθμος έχει αναρτήσει στο δένδρο, αλλά δεν έχει ακόμα επεκτείνει προς διάδοχους κόμβους, δηλαδή τα φύλλα του δένδρου σε κάποιο στιγμιότυπο της εκτέλεσης του αλγόριθμου. Στο μέτωπο δεν περιλαμβάνονται οι κόμβοι που έχουν ήδη γίνει γονικοί κόμβοι, ακόμα και αν αυτοί αποτελούν φύλλα του δένδρου (περίπτωση μονοπατιών των οποίων η επέκταση θα δημιουργούσε κύκλους)∙ για παράδειγμα, η περίπτωση του κόμβου Η στο δένδρο του σχήματος 1.15 καλείται και κατάσταση αδιεξόδου. Στο ίδιο σχήμα, το μέτωπο περιλαμβάνει τους κόμβους Θ, Γ και Ε.
Το σύνολο των κόμβων ενός δένδρου αναζήτησης που ο αλγόριθμος έχει ήδη καταστήσει γονικούς καλείται κλειστό σύνολο (closed set). Στο σχήμα 1.15, το κλειστό σύνολο περιλαμβάνει τους κόμβους Α, Β, Δ, Ζ, Η, δηλαδή όλους τους κόμβους που δεν ανήκουν στο μέτωπο.
Σχήμα 1.15 Το δένδρο αναζήτησης του προβλήματος του περιοδεύοντος πωλητή σε ένα στιγμιότυπο της εξέλιξής του
Όλα όσα αναφέραμε σχετικά με τα δένδρα αναζήτησης έως τώρα αποτυπώνονται συγκεντρωτικά στο σχήμα 1.16:
Σχήμα 1.16 Ανάλυση δένδρου αναζήτησης
1.3 Αλγόριθμοι Αναζήτησης
Για την επίλυση ενός προβλήματος πρέπει να αποφασιστεί ποιος από τους υπάρχοντες αλγόριθμους θα επιλεγεί. Αυτή η απόφαση θα χαρακτηρίσει την πορεία επίλυσης και θα καθορίσει αποφασιστικά την ποιότητα της λύσης ή των λύσεων που θα βρεθούν.
Τα βασικά στοιχεία που χαρακτηρίζουν μια αναζήτηση είναι τα παρακάτω:
- ο αλγόριθμος που χρησιμοποιήθηκε (Α),
- το σύνολο των καταστάσεων που εξετάστηκαν (V),
- το σύνολο των λύσεων που βρέθηκαν (F),
- το σύνολο των τελικών καταστάσεων που εξετάστηκαν (GS).
Βάσει των παραπάνω, η επίλυση ενός προβλήματος Ps (problem solution) μέσω ενός αλγόριθμου αναζήτησης Α μπορεί να παρουσιαστεί αναλυτικά ως ακολούθως:
Ένας αλγόριθμος δεν είναι βέβαιο ότι θα βρει πάντα τη λύση σε ένα πρόβλημα, ακόμα και αν αυτή υπάρχει. Ένας αλγόριθμος καλείται πλήρης (complete), όταν εγγυάται την εύρεση λύσης σε περίπτωση κατά την οποία αυτή υπάρχει. Σε αντίθετη περίπτωση καλείται ατελής (incomplete).
Τα κριτήρια επιλογής ενός αλγορίθμου αναζήτησης είναι τα ακόλουθα:
- η πληρότητα ή ατέλεια,
- η ικανότητα ή μη για εξαντλητική αναζήτηση,
- η ποιότητα των λύσεων που βρίσκει (αν βρίσκει τη βέλτιστη λύση πρώτη),
- η αποδοτικότητά του σε χρόνο,
- η αποδοτικότητά του σε μνήμη,
- η ευκολία υλοποίησής του.
Για να εκτιμήσουμε την αποδοτικότητα ενός αλγορίθμου αναζήτησης, εξετάζουμε:
- το κόστος αναζήτησης (που εξαρτάται από την πολυπλοκότητα) ή και
- το κόστος λύσης (δηλαδή το κόστος σε μνήμη της διαδρομής που βρέθηκε ως λύση)
Σε περίπτωση κατά την οποία μας ενδιαφέρουν και τα δύο, εξετάζουμε το ολικό κόστος. Η βαρύτητα που προσδίδουμε στο κάθε κόστος εξαρτάται από την εφαρμογή. Άλλοτε θέλουμε μια πολύ καλή (ή και τη βέλτιστη) λύση, χωρίς να μας απασχολεί ο χρόνος που θα αφιερώσουμε, για να τη βρούμε, και άλλοτε θέλουμε μια (οποιαδήποτε) λύση που θα βρεθεί γρήγορα.
1.3.1 Γενικός αλγόριθμος αναζήτησης
Για τη γενική διαδικασία αναζήτησης λύσης που εφαρμόζει κάθε αλγόριθμος μπορούμε να σημειώσουμε ότι η αναζήτηση:
- επιτυγχάνεται μέσα στο χώρο καταστάσεων.
- αρχίζει από ένα αρχικό μέτωπο το οποίο περιέχει μια μοναδική κατάσταση, την αρχική.
- αρχίζει με μια μερική λύση, που, όταν περιγράφεται με καταστάσεις, τότε έχει τη μορφή ενός μονοπατιού μήκους 1 που περιέχει μόνο την αρχική κατάσταση.
- ως διαδικασία λειτουργεί σε κύκλους και βασίζεται στη συγκέντρωση των μερικών λύσεων μέσα στην ουρά και την επέκτασή τους.
Πιο αναλυτικά, ο γενικός αλγόριθμος αναζήτησης δομεί το δένδρο αναζήτησης ξεκινώντας από την αρχική κατάσταση του προβλήματος, που αποτελεί τη ρίζα του δένδρου, και καταλήγοντας σε κόμβους-φύλλα, μερικά από τα οποία μπορεί να είναι αδιέξοδα και άλλα να είναι στόχοι.
Καταρχάς, δημιουργείται το αρχικό μονοπάτι ως ένα μονοπάτι μηδενικού μήκους που περιέχει μόνο τη ρίζα του δένδρου (αρχική κατάσταση) και, παράλληλα, δημιουργείται η αρχική ουρά, που περιέχει μόνο το αρχικό μονοπάτι. Στη συνέχεια, δημιουργούνται νέα μονοπάτια στην ουρά, καθώς οι υπάρχοντες κόμβοι γίνονται γονικοί κόμβοι. Το σύνολο των κόμβων στους οποίους καταλήγουν τα μονοπάτια της ουράς, σε ένα δεδομένο στιγμιότυπο της αναζήτησης, δημιουργούν το τρέχον μέτωπο αναζήτησης.
Για να γίνουν πιο κατανοητά τα παραπάνω, θα παρουσιάσουμε πώς θα τα υλοποιούσε οποιοσδήποτε αλγόριθμος αναζήτησης στον πρώτο κύκλο λειτουργίας του κατά την επίλυση του προβλήματος του αγρότη με τις 10 πόλεις (βλέπε Σχήμα 1.11).
Αρχικοποίηση δένδρου αναζήτησης:
Αρχικό μέτωπο: <Α>
Αρχικό μονοπάτι: (Α)
Αρχική ουρά: <(Α)>
Αρχικό κλειστό σύνολο: {}
1ος κύκλος λειτουργίας:
Μέτωπο: <Β, Γ, Ε>
Ουρά: <(Α Β), (Α Γ), (Α Ε)>
Κλειστό: {Α}
όπου τα σύμβολα `<` και `>` χρησιμοποιούνται, για να περιγραφεί ένα διατεταγμένο σύνολο από καταστάσεις ή μονοπάτια και τα `(` και `)` χρησιμοποιούνται, για να περιγραφεί μια ακολουθία από καταστάσεις που περιγράφει ένα μονοπάτι.
Ο τρόπος επέκτασης στον επόμενο 2ο κύκλο διαφέρει από αλγόριθμο σε αλγόριθμο, ανάλογα με τον κόμβο του μετώπου που ο κάθε αλγόριθμος θα επιλέξει ως γονικό κόμβο. Αν η αναζήτηση χρησιμοποιούσε την πρώτα σε βάθος αναζήτηση που θα περιγραφεί σε επόμενη παράγραφο, τότε θα επιλέγετο ως γονικός κόμβος ο Β με διάδοχο κόμβο τον Δ και θα ίσχυαν τα επόμενα:
2ος κύκλος λειτουργίας:
Μέτωπο: <Δ, Γ, Ε>
Ουρά: <(Α Β Δ), (Α Γ), (Α Ε)>
Κλειστό: {Α, Β}
Τα παραπάνω αποτυπώνονται στο σχήμα 1.17 που ακολουθεί.
Σχήμα 1.17 Ανάπτυξη δένδρου αναζήτησης για το πρόβλημα του αγρότη έως τον 2ο κύκλο λειτουργίας
Δείτε κινούμενη εικόνα 1.1 - Ανάπτυξη δένδρου Αναζήτησης σε κύκλους
Η διαδικασία αναζήτησης θα μπορούσε να παρουσιαστεί και ως μια διαδικασία επιλογής γονικού κόμβου από το μέτωπο αναζήτησης και επέκτασης του μονοπατιού που καταλήγει σε αυτόν προς τους διάδοχους κόμβους ή κόμβους-παιδιά. Οι αλγόριθμοι αναζήτησης χαρακτηρίζονται από τις στρατηγικές που εφαρμόζουν, για να επιλέξουν έναν από τους κόμβους του μετώπου ως γονικό κόμβο, αλλά όλοι ακολουθούν ορισμένα κοινά βήματα που συγκροτούν έναν γενικό αλγόριθμο αναζήτησης.
Τα βήματα του γενικού αλγόριθμου αναζήτησης είναι τα ακόλουθα:
Βήματα Γενικού Αλγόριθμου Αναζήτησης
- Βάλε την αρχική κατάσταση στο κενό μέτωπο αναζήτησης.
- Αν το μέτωπο είναι κενό, τότε η αναζήτηση ολοκληρώθηκε ανεπιτυχώς, χωρίς να βρεθεί λύση, ΤΕΛΟΣ.
- Αν ο πρώτος σε σειρά κόμβος του μετώπου είναι στόχος, τότε βρέθηκε λύση, TEΛOΣ.
- Αν ο πρώτος σε σειρά κόμβος του μετώπου ανήκει στο κλειστό σύνολο, τότε Πήγαινε στο βήμα 2.
- Εφάρμοσε τους τελεστές στον πρώτο σε σειρά κόμβο του μετώπου, για να γίνει γονικός κόμβος και να παραχθούν οι διάδοχοι κόμβοι.
- Πρόσθεσε τους διάδοχους κόμβους στο μέτωπο, αφού αφαιρέσεις το γονικό κόμβο, και δημιούργησε το νέο μέτωπο.
- Αν το απαιτεί ο αλγόριθμος αναζήτησης, αναδιάταξε τους κόμβους του μετώπου σύμφωνα με το ποιοτικό κριτήριο που ορίζει η στρατηγική του αλγόριθμου.
- Βάλε το γονικό κόμβο στο κλειστό σύνολο.
- Πήγαινε στο βήμα 2.
Σε κάθε κύκλο λειτουργίας ενός αλγόριθμου αναζήτησης, το βήμα 5 ορίζει τον πρώτο κόμβο του μετώπου ως γονικό, αλλά τα βήματα 6 και 7 όρισαν το ποιος κόμβος θα βρεθεί στην πρώτη θέση .
Ο αλγόριθμος αναζήτησης αναπτύσσεται ως μια συνάρτηση που καλεί επαναληπτικά άλλες συναρτήσεις, για να υλοποιήσει τα παραπάνω βήματα.
Δείτε popup 1.1 - Ψευδοκώδικας Γενικού Αλγόριθμου Αναζήτησης με παρακολούθηση μετώπου
Αν θέλαμε να παρουσιάσουμε πιο αναλυτικά τα βήματα του γενικού αλγόριθμου, παρακολουθώντας τη διαμόρφωση του μετώπου ταυτόχρονα με τη διαμόρφωση της ουράς και χρησιμοποιώντας τον όρο κατάσταση αντί κόμβου, θα είχαμε την ακόλουθη περιγραφή βημάτων:
- Βάλε την αρχική κατάσταση στο κενό μέτωπο αναζήτησης. Βάλε το αρχικό μονοπάτι που περιέχει την αρχική κατάσταση μέσα στην κενή ουρά
- Αν το μέτωπο είναι κενό, τότε η αναζήτηση ολοκληρώθηκε ανεπιτυχώς, χωρίς να βρεθεί λύση, ΤΕΛΟΣ.
- Αν η πρώτη σε σειρά κατάσταση του μετώπου είναι στόχος, τότε επίστρεψε το πρώτο μονοπάτι της ουράς ως λύση, TEΛOΣ.
- Αν η πρώτη σε σειρά κατάσταση του μετώπου ανήκει στο κλειστό σύνολο, τότε Πήγαινε στο βήμα 2.
- Εφάρμοσε τους τελεστές μετάβασης στην πρώτη στη σειρά κατάσταση του μετώπου, για να γίνει κατάσταση-γονέας και να παραχθούν οι διάδοχες καταστάσεις. Δημιούργησε τα αντίστοιχα επεκεκταμένα μονοπάτια που καταλήγουν σε αυτές.
- Πρόσθεσε τις διάδοχες καταστάσεις στο μέτωπο, αφού αφαιρέσεις την κατάσταση-γονέα, και δημιούργησε το νέο μέτωπο. Πρόσθεσε τα επεκεκταμένα μονοπάτια στην ουρά, αφού αφαιρέσεις το μονοπάτι που οδηγούσε στον κόμβο-γονέα, και δημιούργησε τη νέα ουρά.
- Αν το απαιτεί ο αλγόριθμος αναζήτησης, αναδιάταξε τις καταστάσεις του μετώπου σύμφωνα με το ποιοτικό κριτήριο που ορίζει η στρατηγική του αλγόριθμου και πραγματοποίησε την αντίστοιχη αναδιάταξη στα μονοπάτια της ουράς.
- Βάλε την κατάσταση-γονέα στο κλειστό σύνολο.
- Πήγαινε στο βήμα 2.
Η δεύτερη εκδοχή παρουσίασης των βημάτων της διαδικασίας αναζήτησης με παρακολούθηση του μετώπου και ταυτόχρονα της ουράς βασίζεται στην περιγραφή της επέκτασης των μερικών λύσεων που αντιπροσωπεύει η ουρά μονοπατιών.
Δείτε popup 1.2 - Ψευδοκώδικας Γενικού Αλγόριθμου Αναζήτησης με παρακολούθηση μετώπου και ουράς
Οι μέθοδοι αναζήτησης χωρίζονται σε δύο μεγάλες κατηγορίες: στις τυφλές μεθόδους και τις ευρετικές. Οι αλγόριθμοι αναζήτησης των τυφλών μεθόδων τοποθετούν τα μονοπάτια στην ουρά βάσει του χρόνου δημιουργίας τους. Αντίθετα, στους ευρετικούς αλγόριθμους τα μονοπάτια της ουράς αναδιατάσσονται βάσει των ποιοτικών κριτηρίων που τα χαρακτηρίζουν.
Με απλές προσαρμογές, ο γενικός αλγόριθμος αναζήτησης μετατρέπεται εύκολα σε συγκεκριμένο τυφλό ή ευρετικό αλγόριθμο.
1.4 Τυφλές μέθοδοι αναζήτησης
Οι τυφλές μέθοδοι αναζήτησης (blind search methods) εφαρμόζονται σε προβλήματα στα οποία είτε δεν μας ενδιαφέρει να βρεθεί μια ποιοτική λύση είτε δε διαθέτουν πληροφορίες που να επιτρέπουν στον αλγόριθμο αναζήτησης την επιλογή του ποιοτικά καλύτερου κόμβου μέσα από το μέτωπο αναζήτησης, όταν αυτός επιχειρεί να αναπτύξει το δένδρο αναζήτησης.
Με τις τυφλές μεθόδους αναζήτησης, αν υπάρχει λύση, τότε η μέθοδος εγγυάται την εύρεσή της. Η διαφορά τους έγκειται στον τρόπο (τη χρονική σειρά) με τον οποίο αναπτύσσουν τα μονοπάτια μέσα στο δένδρο αναζήτησης.
Γνωστές τυφλές μέθοδοι αναζήτησης είναι οι:
- Πρώτα σε Βάθος Αναζήτηση,
- Πρώτα σε Πλάτος Αναζήτηση,
- Αναζήτηση Επαναληπτικής Εμβάθυνσης,
- Αναζήτηση Διπλής Κατεύθυνσης.
1.4.1. Πρώτα σε Βάθος Αναζήτηση
Δεδομένου ότι σε μια τυφλή μέθοδο αναζήτησης ένα μονοπάτι είναι εξίσου καλό με οποιοδήποτε άλλο, η Πρώτα σε Βάθος Αναζήτηση (Depth-First Search - DFS) επεκτείνει κάθε φορά το αριστερότερο από τα υπάρχοντα μονοπάτια του δένδρου, αρχίζοντας από το μονοπάτι που περιέχει τη ρίζα του δένδρου. Ουσιαστικά, επεκτείνει το μέτωπο αναζήτησης προς αριστερά και προς το βάθος του δένδρου αναζήτησης. Η διαδικασία ολοκληρώνεται, όταν εντοπιστεί ένας κόμβος που αντιστοιχεί σε μια επιθυμητή τελική κατάσταση ή όταν εξαντληθεί η αναζήτηση, δηλαδή όταν όλα τα μονοπάτια καταλήξουν σε κόμβους που δεν μπορούν να επιλεγούν ως γονικοί κόμβοι, γιατί οδηγούν σε κύκλους.
Στο σχήμα 1.18 παρουσιάζεται η πορεία που ακολουθεί η Πρώτα σε Βάθος Αναζήτηση, καθώς σχηματίζει βήμα προς βήμα το δένδρο αναζήτησης του προβλήματος του περιοδεύοντος πωλητή, στην προσπάθειά της να οδηγήσει τον πωλητή από την πόλη Α στην πόλη Κ. Η λύση που βρίσκει ο αλγόριθμος είναι το μονοπάτι Α Β Δ Θ Ι Κ.
Σχήμα 1.18 Η πορεία σχηματισμού του δένδρου αναζήτησης που ακολουθεί η DFS κατά την επίλυση του προβλήματος του περιοδεύοντος πωλητή
Δείτε κινούμενη εικόνα 1.2 - Ανάπτυξη Δένδρου Αναζήτησης με DFS και παράλληλη παρακολούθηση μετώπου
Τα βήματα της Πρώτα σε Βάθος Αναζήτησης με παρακολούθηση μετώπου είναι τα ακόλουθα:
- Βάλε την αρχική κατάσταση στο κενό μέτωπο αναζήτησης.
- Αν το μέτωπο είναι κενό, τότε η αναζήτηση ολοκληρώθηκε ανεπιτυχώς, χωρίς να βρεθεί λύση, ΤΕΛΟΣ.
- Αν ο πρώτος σε σειρά κόμβος του μετώπου είναι στόχος, τότε βρέθηκε λύση, TEΛOΣ.
- Αν ο πρώτος σε σειρά κόμβος του μετώπου ανήκει στο κλειστό σύνολο, τότε Πήγαινε στο βήμα 2.
- Εφάρμοσε τους τελεστές στον πρώτο σε σειρά κόμβο του μετώπου, για να γίνει γονικός κόμβος και να παραχθούν οι διάδοχοι κόμβοι.
- Πρόσθεσε τους διάδοχους κόμβους
Στον παρακάτω πίνακα 1.3 παρουσιάζονται οι πρώτοι έξι κύκλοι ανάπτυξης του δένδρου αναζήτησης της DFS για το πρόβλημα του περιοδεύοντος πωλητή με παρακολούθηση του μετώπου αναζήτησης.
Πίνακας 1.3 Οι έξι πρώτοι κύκλοι λειτουργίας της DFS για το πρόβλημα του περιοδεύοντος πωλητή με μέτωπο αναζήτησης
Η διαφοροποίηση της λειτουργίας της DFS από άλλες τυφλές μεθόδους αναζήτησης βρίσκεται στο βήμα 7, όπου προσδιορίζεται η θέση του μετώπου στην οποία θα τοποθετηθούν οι κόμβοι-παιδιά. Η εξέταση αμέσως προηγουμένων (χρονικά) καταστάσεων, όπως υλοποιείται στο βήμα 4, ονομάζεται χρονική οπισθοδρόμηση (chronological backtracking).
Ακολουθεί ο ψευδοκώδικας του αλγόριθμου της DFS με παρακολούθηση μετώπου και ουράς.
- ΑΡΧΗ
- Βάλε την αρχική κατάσταση στο κενό μέτωπο αναζήτησης. Βάλε το αρχικό μονοπάτι που περιέχει την αρχική κατάσταση μέσα στην κενή ουρά.
- Έως ότου η πρώτη κατάσταση του μετώπου ή το μέτωπο αδειάσει,
- Εφάρμοσε τους τελεστές μετάβασης στην πρώτη στη σειρά κατάσταση του μετώπου, για να γίνει κατάσταση-γονέας και να παραχθούν οι διάδοχες καταστάσεις. Δημιούργησε τα αντίστοιχα επεκεκταμένα μονοπάτια που καταλήγουν σε αυτές.
- Εάν υπάρχουν διάδοχες καταστάσεις,
- Πρόσθεσε τις διάδοχες καταστάσεις στην ΑΡΧΗ του μετώπου, αφού αφαιρέσεις την κατάσταση-γονέα, και δημιούργησε το νέο μέτωπο. Πρόσθεσε τα επεκεκταμένα μονοπάτια στην ΑΡΧΗ της ουράς, αφού αφαιρέσεις το μονοπάτι που οδηγούσε στην κατάσταση-γονέα, και δημιούργησε τη νέα ουρά.
- Τέλος έως ότου
- Εάν το μέτωπο δεν είναι άδειο,
- Παράδωσε το πρώτο μονοπάτι της ουράς ως λύση.
- ΤΕΛΟΣ
Δείτε κινούμενη εικόνα 1.3 - Ανάπτυξη Δένδρου Αναζήτησης με DFS και παράλληλη παρακολούθηση ουράς
Στον παρακάτω πίνακα 1.4 παρουσιάζονται οι πρώτοι έξι κύκλοι ανάπτυξης του δένδρου αναζήτησης της DFS για το πρόβλημα του περιοδεύοντος πωλητή με παρακολούθηση ουράς αναζήτησης.
Πίνακας 1.4 Οι έξι πρώτοι κύκλοι λειτουργίας της DFS για το πρόβλημα του περιοδεύοντος πωλητή με ουρά αναζήτησης
Πλεονεκτήματα της DFS
- Το μέτωπο της αναζήτησης δε μεγαλώνει πάρα πολύ.
- Η DFS εγγυάται πάντα την εύρεση λύσης, αν αυτή υπάρχει, με την προϋπόθεση ότι ο χώρος αναζήτησης είναι πεπερασμένος.
Μειονεκτήματα της DFS
- Δεν εγγυάται ότι η πρώτη λύση που θα βρεθεί είναι η βέλτιστη.
- Θεωρείται μη πλήρης σε μη πεπερασμένους χώρους αναζήτησης.
- Η DFS δεν εγγυάται την εύρεση λύσης, αν ο χώρος αναζήτησης δεν είναι πεπερασμένος.
1.4.2 Η Πρώτα σε Πλάτος Αναζήτηση
Η Πρώτα σε Πλάτος Αναζήτηση (Breadth-First Search - BFS) εξετάζει πρώτα τα μονοπάτια που βρίσκονται στο ίδιο βάθος του δένδρου αναζήτησης. Μόνο όταν τα εξετάσει όλα, αρχίζει την επέκτασή τους στο αμέσως επόμενο επίπεδο. Ουσιαστικά, επεκτείνει το μέτωπο αναζήτησης ανά επίπεδο του δένδρου αναζήτησης. Η διαδικασία ολοκληρώνεται, όταν εντοπιστεί ένας κόμβος που αντιστοιχεί σε μια επιθυμητή τελική κατάσταση ή όταν εξαντληθεί η αναζήτηση, δηλαδή όταν όλα τα μονοπάτια καταλήξουν σε κόμβους που δεν μπορούν να επιλεγούν ως γονικοί κόμβοι, γιατί οδηγούν σε κύκλους.
Στο σχήμα 1.19 παρουσιάζεται η πορεία που ακολουθεί η Πρώτα σε Πλάτος Αναζήτηση, καθώς σχηματίζει βήμα-βήμα το δένδρο αναζήτησης στην προσπάθειά της να επιλύσει το πρόβλημα του περιοδεύοντος πωλητή, δηλαδή να οδηγήσει τον πωλητή από την πόλη Α στην πόλη Κ. Η λύση που θα βρεθεί είναι το μονοπάτι Α Γ Κ.
Σχήμα 1.19 Η πορεία σχηματισμού του δένδρου αναζήτησης που ακολουθεί η Πρώτα σε Πλάτος Αναζήτηση κατά την επίλυση του προβλήματος του περιοδεύοντος πωλητή
Τα βήματα της BFS με παρακολούθηση μετώπου είναι τα ακόλουθα:
- Βάλε την αρχική κατάσταση στο κενό μέτωπο αναζήτησης.
- Αν το μέτωπο είναι κενό, τότε η αναζήτηση ολοκληρώθηκε ανεπιτυχώς, χωρίς να βρεθεί λύση, ΤΕΛΟΣ.
- Αν ο πρώτος σε σειρά κόμβος του μετώπου είναι στόχος, τότε βρέθηκε λύση, TEΛOΣ.
- Αν ο πρώτος σε σειρά κόμβος του μετώπου ανήκει στο κλειστό σύνολο, τότε Πήγαινε στο βήμα 2.
- Εφάρμοσε τους τελεστές στον πρώτο σε σειρά κόμβο του μετώπου, για να γίνει γονικός κόμβος και να παραχθούν οι διάδοχοι κόμβοι.
- Πρόσθεσε τους διάδοχους κόμβους στο τέλος του μετώπου, αφού αφαιρέσεις το γονικό κόμβο, και δημιούργησε το νέο μέτωπο.
- Βάλε το γονικό κόμβο στο κλειστό σύνολο.
- Πήγαινε στο βήμα 2.
Δείτε κινούμενη εικόνα 1.4 - Ανάπτυξη Δένδρου Αναζήτησης με BFS και παράλληλη παρακολούθηση μετώπου
Στον παρακάτω πίνακα 1.5 παρουσιάζεται η ανάπτυξη του δένδρου αναζήτησης της BFS με παρακολούθηση μετώπου αναζήτησης για το πρόβλημα του περιοδεύοντος πωλητή μέχρι την εύρεση στόχου.
Πίνακας 1.5 Οι κύκλοι λειτουργίας της ΒFS για το πρόβλημα του περιοδεύοντος πωλητή με μέτωπο αναζήτησης
Ακολουθεί ο ψευδοκώδικας του αλγόριθμου της BFS με παρακολούθηση μετώπου και ουράς.
- ΑΡΧΗ
- Βάλε την αρχική κατάσταση στο κενό μέτωπο αναζήτησης. Βάλε το αρχικό μονοπάτι που περιέχει την αρχική κατάσταση μέσα στην κενή ουρά.
- Έως ότου η πρώτη κατάσταση του μετώπου ή το μέτωπο αδειάσει,
- Εφάρμοσε τους τελεστές μετάβασης στην πρώτη στη σειρά κατάσταση του μετώπου, για να γίνει κατάσταση-γονέας και να παραχθούν οι διάδοχες καταστάσεις. Δημιούργησε τα αντίστοιχα επεκτεταμένα μονοπάτια που καταλήγουν σε αυτές.
- Εάν υπάρχουν διάδοχες καταστάσεις, πρόσθεσε τις διάδοχες καταστάσεις στο ΤΕΛΟΣ του μετώπου, αφού αφαιρέσεις την κατάσταση-γονέα, και δημιούργησε το νέο μέτωπο. Πρόσθεσε τα επεκτεταμένα μονοπάτια στο ΤΕΛΟΣ της ουράς, αφού αφαιρέσεις το μονοπάτι που οδηγούσε στην κατάσταση-γονέα, και δημιούργησε τη νέα ουρά.
- Τέλος έως ότου
- Εάν το μέτωπο δεν είναι άδειο,
- Παράδωσε το πρώτο μονοπάτι της ουράς ως λύση.
- ΤΕΛΟΣ
Δείτε κινούμενη εικόνα 1.5 - Ανάπτυξη Δένδρου Αναζήτησης με ΒFS και παράλληλη παρακολούθηση ουράς
Στον παρακάτω πίνακα 1.6 παρουσιάζεται η ανάπτυξη του δένδρου αναζήτησης της BFS με παρακολούθηση ουράς για το πρόβλημα του περιοδεύοντος πωλητή μέχρι την εύρεση λύσης.
Πίνακας 1.6 Οι κύκλοι λειτουργίας της BFS για το πρόβλημα του περιοδεύοντος πωλητή με ουρά αναζήτησης
Πλεονεκτήματα της ΒFS
- Και εδώ η αναζήτηση εγγυάται πάντα την εύρεση λύσης, αν αυτή υπάρχει, με την προϋπόθεση ότι ο χώρος αναζήτησης είναι πεπερασμένος.
- Βρίσκει πάντα τη συντομότερη λύση (μικρότερη σε μήκος μονοπατιού).
- Είναι πλήρης.
Μειονεκτήματα της BFS
- Το μέτωπο αναζήτησης μπορεί να γίνεται προοδευτικά πολύ μεγάλο. Αντίστοιχα, οι απαιτήσεις σε μνήμη για την αποθήκευση των μονοπατιών της ουράς μεγαλώνει εκθετικά, όσο βαθαίνει το μέτωπο αναζήτησης.
Το να κρίνουμε ποια από τις 2 τυφλές μεθόδους, DFS και BFS, είναι προσφορότερη εξαρτάται άμεσα από το πρόβλημα προς επίλυση. Γενικά, πρέπει να αποφεύγεται η BFS, όταν είναι γνωστό ότι οι υπάρχουσες λύσεις βρίσκονται σε μεγάλο βάθος. Αντίστοιχα, η χρήση της DFS είναι προτιμότερη, όταν ο στόχος βρίσκεται σε μονοπάτια μεγάλου μήκους.
1.4.3 Αλγόριθμος Αναζήτησης Επαναληπτικής Εμβάθυνσης
Η μέθοδος Αναζήτησης Επαναληπτικής Εμβάθυνσης (Iterative Deepening Search - IDS) αναζητά τη λύση με τη λογική της DFS, αλλά περιορίζει το βάθος της αναζήτησης θέτοντας ένα μικρό βάθος στην αρχή ως όριο, το οποίο σταδιακά αυξάνεται με εμβάθυνση. Αυτό αποτελεί έναν τρόπο αντιμετώπισης του προβλήματος εύρεσης σωστού ορίου για το βάθος αναζήτησης. Συνήθως, η μέθοδος δοκιμάζει όλα τα πιθανά βάθη, αυξάνοντας προοδευτικά το βάθος κατά 1 αρχίζοντας από το βάθος 0, π.χ. 0, 1, 2, κτλ.
Βήματα αλγόριθμου Επαναληπτικής εκβάθυνσης:
- Όρισε το αρχικό βάθος αναζήτησης (συνήθως 0).
- Εφάρμοσε τον αλγόριθμο DFS μέχρι αυτό το βάθος αναζήτησης.
- Αν έχεις βρει λύση, σταμάτησε.
- Αύξησε το βάθος αναζήτησης (συνήθως κατά 1).
- Πήγαινε στο βήμα 2.
Στο παράδειγμα του σχήματος 1.20, ο αλγόριθμος επαναληπτικής εμβάθυνσης θα δημιουργήσει το δένδρο αναζήτησης σε 3 κύκλους.
- 1ος κύκλος: το βάθος αναζήτησης είναι 0 και δημιουργείται μόνο ο κόμβος-ρίζα Α.
- 2ος κύκλος: σε βάθος αναζήτηση με βάθος 1, οπότε δημιουργούνται και ελέγχονται οι κόμβοι Α,Β,Γ,Ε.
- 3ος και τελικός κύκλος: το βάθος αναζήτησης είναι 2 και δημιουργούνται οι κόμβοι Α, Β, Γ, Δ E και στη συνέχεια ο Κ, που είναι ο στόχος. Έτσι η αναζήτηση ολοκληρώνεται.
Σχήμα 1.20 Η πορεία σχηματισμού δένδρου αναζήτησης που ακολουθεί η επαναληπτική εμβάθυνση σε βάθος αναζήτησης n=2
Δείτε κινούμενη εικόνα 1.6 - Υποδειγματική Ανάπτυξη Δένδρου Αναζήτησης με την IDS για το πρόβλημα των 8 πλακιδίων μέχρι βάθους n=2
Πλεονεκτήματα της IDS
- Είναι πλήρης.
- Αν το βάθος αυξάνεται κατά 1 σε κάθε κύκλο και ο αλγόριθμος IDS βρει λύση, τότε αυτή η λύση θα είναι η καλύτερη χρονικά.
- Συνδυάζει τα πλεονεκτήματα των DFS και BFS και έχει αποδειχθεί ότι έχει την ίδια πολυπλοκότητα σε χώρο και χρόνο με αυτούς.
- Δεν κινδυνεύει να χαθεί σε κάποιο κλαδί απείρου μήκους.
Μειονεκτήματα της IDS
- Δεν θυμάται τίποτα από κάθε προηγούμενο κύκλο αναζήτησης.
1.4.4 Μέθοδος Αναζήτησης Διπλής Κατεύθυνσης
Η μέθοδος Αναζήτησης Διπλής Κατεύθυνσης (Βidirectional Search) πραγματοποιεί αναζήτηση ταυτόχρονα από την αρχική κατάσταση προς το στόχο και από το στόχο προς την αρχική κατάσταση. Για να εφαρμοστεί, θα πρέπει οι ενέργειες που πραγματοποιούν οι τελεστές μετάβασης του προβλήματος να είναι αναστρέψιμες (reversible) και να είναι πλήρως γνωστός ο στόχος του προβλήματος. Η αναζήτηση σταματά, όταν οι δύο επιμέρους αναζητήσεις συναντηθούν.
Βασικά βήματα Αλγόριθμου Διπλής Κατεύθυνσης
Άρχισε την αναζήτηση από την αρχική και τελική κατάσταση ταυτόχρονα.
Αν κάποια κατάσταση που επεκτείνεται είναι κοινή, τότε βρέθηκε λύση.
Λύση στην περίπτωση της αναζήτησης του σχήματος 1.21 είναι η ένωση του μονοπατιού που ξεκινά από τον κόμβο Α και καταλήγει στον κοινό κόμβο των δύο αναζητήσεων, δηλαδή το F, και του μονοπατιού που ξεκινά από τον κόμβο-στόχο K και καταλήγει επίσης στο F, δηλαδή λύση είναι το μονοπάτι A, C, F, J, K.
Σχήμα 1.21 Παράδειγμα δένδρων αναζήτησης διπλής κατεύθυνσης
Παρά το ότι η εφαρμογή του αλγόριθμου υπόσχεται σημαντική μείωση του χρόνου αναζήτησης, ένα σύνολο από προβλήματα μπορούν να προκύψουν, όπως τα ακόλουθα:
- Τι σημαίνει αναζήτηση από το στόχο προς τα πίσω στην αρχική κατάσταση;
- Τι γίνεται, όταν έχουμε πολλές πιθανές καταστάσεις στόχου;
- Υπάρχει κίνδυνος να μη συναντηθούν οι δυο αναζητήσεις και σε ποια περίπτωση μπορεί αυτό να συμβεί;
- Μπορούμε να ελέγξουμε αποδοτικά πότε συναντώνται οι δύο αναζητήσεις;
- Τι είδους μέθοδο αναζήτησης επιλέγουμε σε καθεμία αναζήτηση;
Η εφαρμογή ταυτόχρονα της DFS και της BFS αναζήτησης απαντά σε μερικά από τα παραπάνω ερωτήματα και εγγυάται ότι σίγουρα οι δυο αναζητήσεις θα συναντηθούν, αλλά παραμένει πρόβλημα σε ποια κατεύθυνση να εφαρμοστεί η καθεμία από αυτές, ώστε να συναντηθούν πιο αποδοτικά.
Μειονέκτημα της αναζήτησης διπλής κατεύθυνσης είναι ότι υπάρχει επιπλέον κόστος επικοινωνίας μεταξύ των δύο αναζητήσεων.
1.5 Ευρετικές μέθοδοι αναζήτησης
Η εκθετική πολυπλοκότητα του χρόνου που απαιτούν οι μέθοδοι τυφλής αναζήτησης είναι ασύμφορη για την επιλογή τους, όταν τα προβλήματα προς επίλυση είναι προβλήματα του πραγματικού κόσμου. Η πρόταση στην περίπτωση αυτή είναι η χρήση ενός ευρετικού μηχανισμού με τέτοιο τρόπο, ώστε η επιλογή κόμβων για επίσκεψη να γίνεται σύμφωνα με κάποιο ποιοτικό κριτήριο και όχι τυφλά. Ο ευρετικός μηχανισμός (heuristic) συνήθως χρησιμοποιεί την κοινή λογική, για να εκφράσει το κριτήριο που θα αποτελέσει κατευθυντήρια ιδέα για τη χάραξη πορείας κατά την αναζήτηση. Η κατευθυντήρια ιδέα στοχεύει στο να επιλέγεται κάθε φορά η περισσότερα υποσχόμενη πορεία. Για παράδειγμα, στο πρόβλημα του περιοδεύοντος πωλητή, κατευθυντήρια ιδέα θα μπορούσε να είναι ότι «προσφορότερη πόλη, για να γίνει γονικός κόμβος, είναι εκείνη της οποίας η απόσταση από την πόλη-στόχο σε ευθεία γραμμή είναι η μικρότερη».
Η ευρετική αναζήτηση (heuristic search) είναι η μέθοδος αναζήτησης που υποστηρίζεται από κάποιον ευρετικό μηχανισμό. Βασίζεται στη γνώση για το συγκεκριμένο πρόβλημα προς επίλυση και στην κοινή λογική∙ συνήθως χρησιμοποιείται για εύρεση μίας «καλής» λύσης και όχι απαραίτητα της άριστης. Στην πράξη, σχηματίζει το δένδρο αναζήτησης αναδιατάσσοντας σε κάθε κύκλο λειτουργίας το μέτωπο αναζήτησης σύμφωνα με το κριτήριο που χρησιμοποιεί, χωρίς να ερευνά αν είναι ορθό ή λανθασμένο. Το κριτήριο προκύπτει μέσω μιας ευρετικής συνάρτησης. Μια ευρετική αναζήτηση δεν εγγυάται πάντα την εύρεση λύσης, αν αυτή υπάρχει.
Γνωστές ευρετικές μέθοδοι αναζήτησης είναι οι παρακάτω καθώς και πολλές ακόμα που αποτελούν παραλλαγές ή και συνδυασμούς τους:
- Καλύτερη Πρώτη – Best-First,
- Αναρρίχηση Λόφων – Hill-Climbing,
- Ακτινωτή Αναζήτηση – Beam Search,
- Αναζήτηση Βασικής Επέκτασης και Οριοθέτησης – Basic Βranch & Βound Search,
- Άλφα-Άστρο - Α*.
Επίσης, γνωστές ευρετικές μέθοδοι αναζήτησης για προβλήματα παιχνιδιών 2 ατόμων είναι οι:
- Αναζήτηση Μέγιστου-Ελάχιστου,
- Άλφα-Βήτα.
Στο εγχειρίδιο αυτό δεν θα ασχοληθούμε με αλγόριθμους επίλυσης παιχνιδιών δύο ατόμων ή άλλων παρόμοιων προβλημάτων φυσικού κόσμου.
1.5.1 Ευρετικές Συναρτήσεις
Ευρετική συνάρτηση (heuristic function) είναι η υλοποίηση ενός ευρετικού μηχανισμού. Έχει πεδίο ορισμού το χώρο καταστάσεων ενός προβλήματος και πεδίο τιμών το σύνολο των τιμών που αντιστοιχούν σε αυτές. Επιστρέφει ευρετικές τιμές που προκύπτουν ως αποτέλεσμα υπολογισμών βασισμένων στη γνώση που διατίθεται για το πρόβλημα και την κατάσταση που εξετάζεται.
Ευρετική τιμή (heuristic value) είναι η τιμή της ευρετικής συνάρτησης και εκφράζει το κόστος αναζήτησης. Μπορεί σε μια απλή προσέγγιση να εκφράζει απλώς το κόστος μετάβασης από τον τρέχοντα κόμβο σε έναν κόμβο-στόχο, αλλά για εύρεση άριστων λύσεων πρέπει να εκφράζει μια συν-εκτίμηση του κόστους της διαδρομής έως τον τρέχοντα κόμβο και του εκτιμώμενου κόστους από το σημείο αυτό έως τον κόμβο-στόχο.
Η επιλογή μιας ευρετικής συνάρτησης πρέπει να βασίζεται στο:
- πόσο ακριβής είναι,
- πόσα μεταεπίπεδα απαιτεί, δηλαδή σε ποιο βάθος θα φτάσει η αναζήτηση,
- αν είναι ικανή να βρει την καλύτερη λύση.
Γνωστοί ευρετικοί μηχανισμοί είναι η Ευκλείδεια απόσταση και η απόσταση Manhattan που υπολογίζονται, όπως φαίνεται στο παρακάτω σχήμα 1.22.
Σχήμα 1.22 Υπολογισμός Ευκλείδειας απόστασης και απόστασης Manhattan
Για παράδειγμα, στο πρόβλημα των 8 πλακιδίων μπορούμε να θεωρήσουμε ως ευρετικό μηχανισμό τη διαφορά των θέσεων των πλακιδίων της τρέχουσας κατάστασης από τις αντίστοιχες θέσεις των ίδιων πλακιδίων στην τελική θέση και ευρετική συνάρτηση το άθροισμα των αποστάσεων Manhattan κάθε πλακιδίου από την τελική του θέση.
Σχήμα 1.23 Αποστάσεις Manhattan για το πρόβλημα των 8 πλακιδίων
Στην περίπτωση του σχήματος 1.23, στην αρχική κατάσταση μόνο τα πλακίδια “3”, “8” και “1” είναι τοποθετημένα με λανθασμένο τρόπο σε σχέση με τον επιδιωκόμενο στόχο. Η απόσταση Manhattan αυτών από την τελική τους θέση είναι 2, 3, και 3 αντίστοιχα, ενώ των υπολοίπων η αντίστοιχη απόσταση είναι 0. Έτσι, αν ως Si χαρακτηρίσουμε ένα πλακίδιο της κατάστασης S που είναι σε λάθος θέση, η ευρετική συνάρτηση θα επιστρέψει 8, που είναι το άθροισμα των επιμέρους αποστάσεων Manhattan.
Manhattan Distance κατάστασης S:
Ένα εναλλακτικό ευρετικό κριτήριο για το πρόβλημα των 8 πλακιδίων είναι ο υπολογισμός του πλήθους των πλακιδίων που είναι σε λάθος θέση. Για την κατάσταση S του σχήματος 1.23, επειδή υπάρχουν μόνο 3 πλακίδια σε λάθος θέση, τα “3”, “8” και “1”, η ευρετική συνάρτηση θα επιστρέψει 3: h(S)=3
1.5.2 Αναζήτηση Καλύτερης-Πρώτης
Η μέθοδος αναζήτησης Πρώτα στο Καλύτερο ή Καλύτερη-Πρώτη (Best First Search - BestFS) σε κάθε κύκλο λειτουργίας της επισκέπτεται την κατάσταση του μετώπου αναζήτησης την οποία το κριτήριο θεωρεί «καλύτερη» βάσει ενός ευρετικού κριτηρίου άμεσα εξαρτώμενου από το πρόβλημα προς επίλυση. Χαρακτηριστικό της μεθόδου είναι ότι σε κάθε βήμα αναζήτησης η μέθοδος επιλέγει προς επέκταση το πιο πολλά υποσχόμενο μονοπάτι μεταξύ των μονοπατιών που βρίσκονται στην ουρά.
Ψευδοκώδικας αλγόριθμου BestFS
- ΑΡΧΗ
- Βάλε την αρχική κατάσταση στο κενό μέτωπο αναζήτησης. Βάλε το αρχικό μονοπάτι που περιέχει την αρχική κατάσταση μέσα στην κενή ουρά.
- Έως ότου η πρώτη κατάσταση του μετώπου ή το μέτωπο αδειάσει,
- Εφάρμοσε τους τελεστές μετάβασης στην πρώτη στην σειρά κατάσταση του μετώπου, για να γίνει κατάσταση-γονέας και να παραχθούν οι διάδοχες καταστάσεις. Δημιούργησε τα αντίστοιχα επεκτεταμένα μονοπάτια που καταλήγουν σε αυτές.
- Εάν υπάρχουν διάδοχες καταστάσεις,
- πρόσθεσε τις διάδοχες καταστάσεις στο μετώπου, αφού αφαιρέσεις την κατάσταση-γονέα. Πρόσθεσε τα επεκτεταμένα μονοπάτια στην ουρά, αφού αφαιρέσεις το μονοπάτι που οδηγούσε στην κατάσταση-γονέα.
- Αναδιάταξε τις καταστάσεις μέσα στο μέτωπο βάσει ενός ευρετικού κριτηρίου δημιουργώντας το νέο μέτωπο και αναδιάταξε ανάλογα τα μονοπάτια της ουράς δημιουργώντας τη νέα ουρά.
- Τέλος έως ότου
- Εάν το μέτωπο δεν είναι άδειο,
- Παράδωσε το πρώτο μονοπάτι της ουράς ως λύση.
- ΤΕΛΟΣ
Στο σχήμα 1.24 δίνουμε μια μικρή περιγραφή της εφαρμογής της μεθόδου αναζήτησης BestFS για το πρόβλημα του πωλητή με τις 6 πόλεις (βλέπε Σχήμα 1.1), όταν αρχική κατάσταση είναι η πόλη Α, στόχος η πόλη F και ευρετικό κριτήριο η Ευκλείδεια απόσταση. Δίπλα στους κόμβους του γραφήματος και του δένδρου αναζήτησης παρουσιάζονται οι Ευκλείδειες αποστάσεις των πόλεων του δικτύου από την πόλη-στόχο F.
Στην αρχή, ο αλγόριθμος δημιουργεί το αρχικό μέτωπο τοποθετώντας μέσα την κατάσταση Α και την αντίστοιχη αρχική ουρά. Στη συνέχεια, υπολογίζεται η Ευκλείδεια απόσταση της πόλης Α από την F και, δεδομένου ότι είναι η μοναδική κατάσταση στο μέτωπο, επιλέγεται ως η «καλύτερη», για να αποτελέσει γονικό κόμβο. Δημιουργούνται οι διάδοχοι κόμβοι, δηλαδή οι κόμβοι Β και C, και τοποθετούνται μέσα στο μέτωπο στη θέση του γονικού κόμβου. Ακολουθεί ταξινόμηση των κόμβων του μετώπου και τα αντίστοιχα συμβαίνουν για την ουρά. Τέλος ενημερώνεται το κλειστό σύνολο. Στον επόμενο βήμα το μέτωπο περιέχει τις καταστάσεις Β και C, οι οποίες ταξινομούνται βάσει των αποστάσεων αυτών από την F. Η πλησιέστερη είναι η Β∙ άρα, επιλέγεται ως γονικός κόμβος δίνοντας τους διάδοχους κόμβους C και D. Τώρα το μέτωπο περιέχει τους κόμβους C, που ανήκει στη μερική λύση (A C), C, που ανήκει στη μερική λύση (A B C), και τον D. Ο D έχει τη μικρότερη απόσταση έναντι των δύο άλλων ισοτίμων C και, επομένως, επιλέγεται ως γονικός κόμβος. Η αναζήτηση συνεχίζεται με αυτήν τη λογική, μέχρι να βρει το στόχο και να επιστρέψει ως λύση το μονοπάτι (A B D F).
Σχήμα 1.24 Παράδειγμα εφαρμογής της BestFS για το πρόβλημα του περιοδεύοντος πωλητή, όπως παρουσιάζεται στο σχήμα 1.1
Δείτε κινούμενη εικόνα 1.7 - Ανάπτυξη Δένδρου Αναζήτησης με την BestFS για το πρόβλημα του περιοδεύοντος πωλητή
Δείτε κινούμενη εικόνα 1.8 - Ανάπτυξη Δένδρου Αναζήτησης με την BestFS για το πρόβλημα των 8 πλακιδίων
Προτερήματα της BestFS
- Συνήθως βρίσκει κάποια καλή λύση πιο γρήγορα από οποιαδήποτε άλλη μέθοδο. Η απόδοση εξαρτάται άμεσα από την ακρίβεια της λειτουργίας του ευρετικού μηχανισμού.
- Είναι πλήρης.
Μειονεκτήματα της BestFS
- Το μέτωπο αναζήτησης μεγαλώνει πολύ γρήγορα, γιατί ο αλγόριθμος κρατά όλες τις καταστάσεις, με αποτέλεσμα να απαιτείται μεγάλος χώρος για την αποθήκευσή του.
- Δεν εγγυάται ότι η λύση που θα βρεθεί είναι η καλύτερη όλων, γιατί σταματά στην πρώτη καλύτερη που θα συναντήσει, χωρίς να πραγματοποιεί εξαντλητική αναζήτηση για εύρεση πιθανής άλλης ακόμα καλύτερης.
1.5.3. Αναζήτηση με αναρρίχηση λόφων
Η μέθοδος της αναζήτησης με Αναρρίχηση Λόφων (Hill-Climbing - HC) αποτελεί μια εξειδίκευση της BestFS μεθόδου. Η πιο κλασική τεχνική που χρησιμοποιούν οι αλγόριθμοι αναρρίχησης λόφων είναι αυτή της πλέον απότομης ανάβασης (steepest ascent), βάσει της οποίας ο αλγόριθμος σε κάθε βήμα του αντικαθιστά τον τρέχοντα κόμβο με τον καλύτερο γειτονικό του. Η αναρρίχηση λόφων με απότομη ανάβαση έχει τα ακόλουθα χαρακτηριστικά:
- Η αναζήτηση γίνεται κατά μήκος ενός μόνο μονοπατιού στο χώρο αναζήτησης.
- Η αναζήτηση προχωρά μόνο από διαδοχικά καλύτερους κόμβους, κλαδεύοντας σε κάθε κύκλο αναζήτησης όλες τις καταστάσεις του μετώπου εκτός από την ευρετικά βέλτιστη (δηλαδή κάθε στιγμή το μέτωπο περιέχει μόνο μία κατάσταση) και μεταβαίνει στην τελευταία, μόνο αν έχει καλύτερη ευρετική τιμή από το γονέα της, διαφορετικά τερματίζει έχοντας βρει μία τοπικά βέλτιστη λύση.
- Αν υπάρχουν περισσότεροι του ενός καλύτεροι διάδοχοι κόμβοι, τότε η αναζήτηση επιλέγει τυχαία έναν από αυτούς.
Προφανώς ο αλγόριθμος αναρρίχησης λόφων με απότομη ανάβαση δεν είναι πλήρης, αλλά είναι πολύ γρήγορος και απαιτεί ελάχιστη μνήμη. Η διαφορά του με την αναζήτηση Καλύτερης-Πρώτης είναι ότι στην αναρρίχηση λόφων η ταξινόμηση και επιλογή γίνονται μεταξύ των διάδοχων κόμβων, ενώ στην Καλύτερη-Πρώτη η ταξινόμηση και επιλογή γίνονται σε όλους τους κόμβους του μετώπου.
Αλγόριθμος μεθόδου αναζήτησης με Αναρρίχηση Λόφων
- ...
- Εφάρμοσε τους τελεστές, για να παραγάγεις τις διάδοχες καταστάσεις που σχηματίζονται από την πρώτη κατάσταση του μετώπου.
- Αφαίρεσε όλες τις καταστάσεις από το μέτωπο.
- Πρόσθεσε τις διάδοχες καταστάσεις στο άδειο μέτωπο και ταξινόμησέ τες βάσει ενός ευρετικού αλγορίθμου.
- ...
Στο σχήμα 1.25 φαίνεται το δένδρο αναζήτησης λύσης του προβλήματος του πωλητή με τις 6 πόλεις (βλέπε Σχήμα 1.1), όπως προκύπτει από την αναρρίχηση λόφων, όταν αρχική κατάσταση είναι η πόλη Α, στόχος η πόλη Β και ευρετικό κριτήριο είναι η απόσταση Manhattan κάθε κόμβου από τον κόμβο στόχο. Οι αποστάσεις Manhattan αποτυπώνονται δίπλα σε κάθε κόμβο.
Σχήμα 1.25 Αναζήτηση λύσης με τη μέθοδο Αναρρίχησης Λόφων για το πρόβλημα του περιοδεύοντος πωλητή, όπως παρουσιάζεται στο σχήμα 1.1
Δείτε κινούμενη εικόνα 1.9 - Ανάπτυξη Δένδρου Αναζήτησης με την HC για το πρόβλημα του περιοδεύοντος πωλητή
Η αναρρίχηση λόφων λέγεται και άπληστη τοπική αναζήτηση (greedy local search), επειδή επιλέγει μια καλή γειτονική κατάσταση, χωρίς να σκέφτεται πού θα πάει στη συνέχεια. Όπως όλοι οι αλγόριθμοι άπληστης αναζήτησης, αποδίδει αρκετά καλά, κάνοντας συχνά πολύ γρήγορη πρόοδο προς μια λύση, επειδή συνήθως είναι πολύ εύκολο να βελτιώσει μια κακή κατάσταση. Δυστυχώς, συχνά η αναρρίχηση λόφων παγιδεύεται για τους εξής λόγους:
- τα τοπικά μέγιστα (local maxima),
- τα οροπέδια (plateau),
- τις κορυφογραμμές (ridges).
Η παγίδευση παρουσιάζεται, όταν υπάρχει μια θέση που δεν είναι στόχος, αλλά από εκεί καμία κίνηση δεν βελτιώνει την τρέχουσα κατάσταση ή η θέση οδηγεί σε πρώιμη σύγκλιση, δηλαδή εύρεση λύσης που δεν αποτελεί τη βέλτιστη λύση. Αυτό θα συμβεί, αν έχουμε φτάσει σε ένα τοπικό μέγιστο, ένα οροπέδιο ή μια κορυφογραμμή (βλέπε Σχήμα 1.26).
Σχήμα 1.26 Προβλήματα που μπορούν να δημιουργηθούν κατά την αναρρίχηση λόφων
Τοπικό μέγιστο: Είναι μια κατάσταση που είναι καλύτερη από όλες τις γείτονές της, αλλά δεν είναι καλύτερη από όσο κάποιες άλλες πιο μακριά που δεν μπορούν να προσεγγιστούν από την πορεία που έχει ακολουθηθεί. Όλες οι πιθανές επόμενες κινήσεις φαίνεται να οδηγούν σε χειρότερες καταστάσεις. Λύση σε αυτό είναι η οπισθοδρόμηση σε κάποια προηγούμενη κατάσταση και η συνέχιση της αναζήτησης σε διαφορετική κατεύθυνση∙ όμως, ο κλασικός αλγόριθμος αναρρίχησης λόφων δεν το επιτρέπει.
Οροπέδιο: Είναι μια επίπεδη έκταση του χώρου αναζήτησης στην οποία ένα σύνολο γειτονικών καταστάσεων έχουν την ίδια ευρετική τιμή. Ως εκ τούτου, δεν είναι δυνατόν να καθοριστεί η καλύτερη κατεύθυνση προς την οποία πρέπει να συνεχιστεί η αναζήτηση. Λύση είναι να διαμορφωθεί έτσι ο αλγόριθμος, ώστε να μπορεί να κάνει ένα μεγάλο άλμα προς κάποια κατεύθυνση και να προσπαθήσει να προσεγγίσει ένα νέο τμήμα του χώρου αναζήτησης.
Κορυφογραμμές: Είναι μια περιοχή του χώρου αναζήτησης υψηλότερη από τις γύρω περιοχές (τοπική κορυφή), αλλά, αν η αναζήτηση βρίσκεται σε μια γειτονική κορυφογραμμή, δεν μπορεί να την προσεγγίσει με μια μοναδική κίνηση (ειδική περίπτωση τοπικών μεγίστων). Εδώ η εφαρμογή δύο ή περισσότερων βημάτων μετάβασης προς πολλές κατευθύνσεις ταυτόχρονα πρέπει να προηγηθεί του ευρετικού μηχανισμού για τον έλεγχο της καλύτερης πορείας.
Γενικές ενέργειες για την αντιμετώπιση παγιδεύσεων, όπως αυτές που αναφέραμε παραπάνω, είναι οι ακόλουθες:
- πλάγιες κινήσεις,
- στοχαστική αναζήτηση,
- τυχαία επιλογή καλών κινήσεων,
- τυχαίες επανεκκινήσεις,
- πλήρης αλγόριθμος.
Διάφορες παραλλαγές του αλγόριθμου αναρρίχησης λόφων χρησιμοποιούν τους παραπάνω τρόπους αποφυγής παγιδεύσεων, θυσιάζοντας λίγη από την ταχύτητα της αναζήτησης, για να αυξήσουν την πιθανότητα να βρεθεί λύση. Μία παραλλαγή είναι η Εξαναγκασμένη Αναρρίχηση Λόφων (Enforced Hill Climbing – EHC). Μια από τις πιο απλές είναι αυτή της EHC που καθιστά τον αλγόριθμο πλήρη. Στην EHC επιτρέπεται η οπισθοδρόμηση, με διατήρηση στο μέτωπο και των καταστάσεων του ακριβώς προηγούμενου βήματος. Στο σχήμα 1.27 το παράδειγμα εφαρμογής είναι παραλλαγή του παραδείγματος του σχήματος 1.25, όπου σε κάθε βήμα κρατούνται όλα τα παιδιά του συγκεκριμένου βήματος για τις ανάγκες της οπισθοδρόμησης, που είναι επιτρεπτή μόνο κατά ένα βήμα, και στο επόμενο βήμα διαγράφονται για να αντικατασταθούν με τα παιδιά του επόμενου βήματος.
Σχήμα 1.27 Αναζήτηση λύσης με EHC για το πρόβλημα του περιοδεύοντος πωλητή
Επίσης δημοφιλής είναι και ο αλγόριθμος προσομοιωμένης ανόπτησης (Simulated Annealing Algorithm) ο οποίος δίνει μία πιθανότητα μετάβασης σε χειρότερες καταστάσεις, αφήνοντας έτσι περιθώριο στην αναζήτηση να ξεφύγει από τοπικά βέλτιστα. Άλλος αλγόριθμος αναρρίχησης λόφων είναι ο αλγόριθμος αναζήτησης με απαγορεύσεις (Taboo Search Algorithm), όπου σε κάθε βήμα επέκτασης γίνεται πάντα μετάβαση στη καλύτερη διάδοχη κατάσταση, ακόμα και αν είναι χειρότερη από τη γονική, ενώ ταυτόχρονα η αναζήτηση αποφεύγει απαγορευμένες καταστάσεις αποθηκευμένες σε λίστα από την αρχή της αναζήτησης (παρόμοιας λειτουργικότητας με το κλειστό σύνολο, αλλά σταθερού μεγέθους).
1.5.4 Αναζήτηση Βασικής Επέκτασης και Οριοθέτησης
Η μέθοδος αναζήτησης Βασικής Επέκτασης και Οριοθέτησης (Basic Branch & Bound search - Β&Β) εφαρμόζεται σε προβλήματα όπου αναζητείται η λύση με το ελάχιστο κόστος. Η αναζήτηση δεν επισκέπτεται κόμβους του δένδρου αναζήτησης που οδηγούν σε λύσεις που υπερβαίνουν το μέγιστο επιτρεπόμενο κόστος.
Αλγόριθμος αναζήτησης B&B
- ΑΡΧΗ
- ...
- Εφάρμοσε τους τελεστές, για να παραγάγεις τις διάδοχες καταστάσεις που σχηματίζονται από κάθε κατάσταση του μετώπου καθιστώντας τες καταστάσεις-γονείς, και τοποθέτησέ τες στο μέτωπο, αφού πρώτα αφαιρέσεις όλες τις καταστάσεις-γονείς.
- Ταξινόμησε το μέτωπο βάσει ενός μέχρι τώρα κόστους αναζήτησης και άφησε στο μέτωπο μόνο αυτές τις καταστάσεις-παιδιά προς τις οποίες η διαδρομή δεν υπερβαίνει ένα μέγιστο επιτρεπόμενο κόστος.
- ...
- ΤΕΛΟΣ
Στο σχήμα 1.28 δίνεται παράδειγμα εφαρμογής της μεθόδου αναζήτησης B&B κατά την εξαντλητική αναζήτηση λύσεων στο πρόβλημα του περιοδεύοντος πωλητή σε 10 πόλεις. Ως κριτήριο είναι το κόστος του μονοπατιού μέχρι τον τρέχοντα κόμβο. Από τα δύο υπο-δένδρα που σχηματίζονται κάτω από τους κόμβους Θ, η μέθοδος θα αποκόψει το αριστερό, γιατί το κόστος του μονοπατιού Α-Β-Δ-Θ είναι 12,73, ενώ του A-E-Θ είναι μόνο 5,24.
Σχήμα 1.28 Εξαντλητική αναζήτηση Β&B για το πρόβλημα του περιοδεύοντος πωλητή
1.5.5 Ακτινωτή μέθοδος αναζήτησης
Η Ακτινωτή μέθοδος αναζήτησης (Βeam search) μπορεί να θεωρηθεί βελτίωση των μεθόδων αναζήτησης Αναρρίχησης Λόφου και Καλύτερης-Πρώτης.
Διαφέρει αφενός από την Αναρρίχηση Λόφων στο ότι προχωρά ανά επίπεδο και όχι σε ένα μονοπάτι με ολοένα καλύτερες καταστάσεις και αφετέρου από την αναζήτηση Καλύτερης-Πρώτης στο ότι, καθώς προχωρά σε βάθος, βασίζεται στην ποιότητα των κόμβων κάθε επιπέδου επισκεπτόμενη μόνο τον καλύτερο κόμβο κάθε επιπέδου που εντοπίζει η ευρετική συνάρτηση, αγνοώντας τους υπόλοιπους κόμβους. Με αυτόν τον τρόπο μειώνεται σημαντικά ο αριθμός των κόμβων που επισκέπτεται.
Τα χαρακτηριστικά της μεθόδου είναι τα ακόλουθα:
- Ο κύκλος αναζήτησης εξελίσσεται από επίπεδο σε επίπεδο.
- Κινείται προς τα κάτω διατηρώντας τους καλύτερους Ν κόμβους μόνο σε κάθε επίπεδο. Το Ν ονομάζεται πλάτος της ακτινωτής αναζήτησης.
- Άλλοι κόμβοι παραβλέπονται.
Αλγόριθμος ακτινωτής μεθόδου αναζήτησης
- ΑΡΧΗ
- ...
- Έως ότου η αναζήτηση καταλήξει στον κόμβο-σκοπό ή το μέτωπο αδειάσει,
- Εφάρμοσε τους τελεστές μετάβασης, για να σχηματίσεις τους διάδοχους κόμβους κάθε κόμβου του μετώπου.
- Άδειασε το μέτωπο από τους γονικούς κόμβους.
- Ταξινόμησε τους διάδοχους κόμβους βάσει ενός ευρετικού κριτηρίου και τοποθέτησε Ν το πλήθος από αυτούς στο άδειο μέτωπο.
- Τέλος έως ότου
- ...
- ΤΕΛΟΣ
Στο σχήμα 1.29, έχει αποτυπωθεί η ανά επίπεδο πορεία της ακτινωτής αναζήτησης για το πρόβλημα του περιοδεύοντος σε 10 πόλεις πωλητή, όταν το κριτήριο είναι το μήκος του μονοπατιού μέχρι τον τρέχοντα κόμβο. Το πλάτος της αναζήτησης είναι 2 και ξεκινά από το επίπεδο 0 όπου το μέτωπο περιέχει μόνο τον κόμβο της αρχικής κατάστασης.
Στο επίπεδο 1 που διαμορφώνεται από τον επόμενο κύκλο λειτουργίας δημιουργούνται όλοι οι διάδοχοι κόμβοι του προηγούμενου επιπέδου και παραμένουν στο μέτωπο οι Ε και Β ως οι δύο καλύτεροι.
Στο επίπεδο 2 δημιουργούνται οι διάδοχοι κόμβοι των Ε και Β και παραμένουν στο μέτωπο όλοι, γιατί είναι μόνο δύο, οι Δ και Θ.
Στο επίπεδο 3 δημιουργούνται οι διάδοχοι κόμβοι Ζ, Θ, Ι, Δ και παραμένουν οι Ζ και Δ ως οι δύο καλύτεροι.
Στο επίπεδο 4 δημιουργούνται οι διάδοχοι κόμβοι Η, Β, Ζ και παραμένουν οι H, Ζ ως οι δύο καλύτεροι.
Στο επίπεδο 5 ο κόμβος H δεν έχει διάδοχο κόμβο, γιατί θα δημιουργείτο κύκλος, ενώ ο Ζ έχει διάδοχο κόμβο τον Η που μπαίνει στο μέτωπο. Ο Η αυτός δεν έχει διάδοχο κόμβο, γιατί θα οδηγείτο σε κύκλο και έτσι η αναζήτηση ολοκληρώνεται χωρίς λύση, παρότι το πρόβλημα έχει τρεις λύσεις.
Σχήμα 1.29 Αποτυχημένη αναζήτηση με ακτινωτή μέθοδο και κριτήριο το μήκος του μονοπατιού μέχρι τον τρέχοντα κόμβο
1.5.6 Μέθοδος αναζήτησης Άλφα-Άστρο
Η μέθοδος αναζήτησης Άλφα-Άστρο (Α*) είναι κατά βάσει BestFS, αλλά με ευρετική συνάρτηση:
F(S) = g(S) + h(S)
Όπου:
- η g(S) δίνει την απόσταση της από την αρχική κατάσταση, η οποία είναι πραγματική και γνωστή, και
- η h(S) δίνει την εκτίμηση της απόστασης της από την τελική κατάσταση μέσω μιας ευρετικής συνάρτησης, όπως ακριβώς στον BestFS.
Για την Α* ισχύει ότι, αν για κάθε κατάσταση η τιμή είναι μικρότερη ή το πολύ ίση με την πραγματική απόσταση της από την τελική κατάσταση, τότε η Α* βρίσκει πάντα τη βέλτιστη λύση.
Σχήμα 1.30 Η πορεία της Α* από μια αρχική κατάσταση IS μέχρι μια τελική κατάσταση FS, όταν η αναζήτηση βρίσκεται στην κατάσταση S
Ακολουθεί ο αλγόριθμος της Α*
- ΑΡΧΗ
- ...
- Εφάρμοσε τους τελεστές μετάβασης, για να υπολογίσεις τις διάδοχες καταστάσεις της καλύτερης κατάστασης του μετώπου καθιστώντας την γονικό κόμβο.
- ΑΝ υπάρχουν διάδοχες καταστάσεις,
- Αφαίρεσε το γονικό κόμβο από το μέτωπο.
- Πρόσθεσε στο μέτωπο μόνο εκείνες από τις διάδοχες καταστάσεις προς τις οποίες το κόστος της διαδρομής είναι μικρότερο από το κόστος ίδιων καταστάσεων που βρίσκονται ήδη στο μέτωπο από προηγούμενα βήματα αναζήτησης.
- Αφαίρεσε τις καταστάσεις του μετώπου από παλαιότερα βήματα σε περίπτωση κατά την οποία προστέθηκαν στο μέτωπο νέες ίδιες με αυτές διάδοχες καταστάσεις.
- Ταξινόμησε όλες τις καταστάσεις του μετώπου συνυπολογίζοντας (με υπερτίμηση) το μέχρι τώρα κόστος αναζήτησης και (με υποτίμηση) το κόστος που υπολείπεται μέχρι την κατάσταση-στόχο.
- Τέλος ΑΝ
- ...
- ΤΕΛΟΣ
Για παράδειγμα, αν στο πρόβλημα των 8 πλακιδίων η Α* εφαρμόσει την ευρετική συνάρτηση:
f(S) = g(S) + h(S)
όπου:
g(S) = το βάθος του κόμβου της κατάστασης S στο δένδρο αναζήτησης
h(S) = ο αριθμός των κόμβων εκτός θέσης στη δεδομένη κατάσταση S,
και μια τρέχουσα κατάσταση S με αριθμό κόμβων εκτός θέσης 4 όπως παρακάτω:
τότε, αν η τρέχουσα κατάσταση S είναι η αρχική (με βάθος 0), ο κόμβος που αντιστοιχεί θα έχει ευρετική τιμή:
f(initial_node) = 0 + 4 = 4
και το δένδρο που θα σχηματίσει η Α* δίνεται στο επόμενο σχήμα 1.31 όπου με κόκκινα βέλη αποτυπώνεται το μονοπάτι-λύση.
Σχήμα 1.31 Δένδρο αναζήτησης της Α* για τα το πρόβλημα των 8 πλακιδίων
Δείτε κινούμενη εικόνα 1.10 - Ανάπτυξη Δένδρου Αναζήτησης με την Α* για το πρόβλημα των 8-puzzles