Τεχνητή Νοημοσύνη Αλγόριθμοι Ευρετικής Αναζήτησης Εισαγωγικά (/) 05 Αλγόριθμοι Ευρετικής Αναζήτησης (Heuristic Search Algorithms) Ο χώρος αναζήτησης συνήθως αυξάνεται εκθετικά. Απαιτείται πληροφορία για αξιολόγηση των καταστάσεων (ευρετικός μηχανισμός) ώστε να ευνοηθεί η αναζήτηση! Οι αλγόριθμοι που εκμεταλλεύονται τέτοια πληροφορία ονομάζονται Αλγόριθμοι Ευρετικής (ή Ευριστικής) Αναζήτησης. Παράδειγμα ευρετικής αναζήτησης είναι η συναρμολόγηση ενός puzzle όπου η γνώση της τελικής εικόνας επηρεάζει (προς το καλύτερο) τη συμπλήρωση του παζλ. Αν δεν υπήρχαν ευρετικοί μηχανισμοί, τότε τα προβλήματα αυτά θα λύνονταν πολύ δύσκολα, γιατί οι συνδυασμοί που πρέπει να γίνουν είναι πάρα πολλοί. Φώτης Κόκκορας Τμ.Τεχν/γίας Πληροφορικής & Τηλ/νιών - ΤΕΙ Λάρισας Ο ευρετικός μηχανισμός εξαρτάται από τη γνώση που έχουμε για το πρόβλημα. Δεν είναι πάντα εφικτό (ή εύκολο) να σκεφτούμε ευρετικό μηχανισμό. Το ποιο συχνό είναι να μην υπάρχει τέτοιος μηχανισμός!! Φώτης Κόκκορας Ευρετικός Μηχανισμός Ευρετικός μηχανισμός (heuristic) είναι μία στρατηγική, βασισμένη στη γνώση για το συγκεκριμένο πρόβλημα, που χρησιμοποιείται σα βοήθημα για τη γρηγορότερη επίλυσή του. Ο ευρετικός μηχανισμός υλοποιείται με ευρετική συνάρτηση (heuristic function). Ευρετικές Συναρτήσεις σε Μικρά Προβλήματα (/) Ευρετικός μηχανισμός και συναρτήσεις σε λαβύρινθο Ευκλείδεια απόσταση (Euclidian distance): d(s, F) S - XF) (YS - YF ) Απόσταση Manhattan (Manhattan distance): Md(S,F) = XS - XF + YS -YF (X Ευρετική τιμή (heuristic value) είναι η τιμή της ευρετικής συνάρτησης και εκφράζει το πόσο κοντά βρίσκεται μία κατάσταση σε μία τελική. Η ευρετική τιμή δεν είναι η πραγματική τιμή της απόστασης από μία τερματική κατάσταση, αλλά μία εκτίμηση (estimate) που πολλές φορές μπορεί να είναι και λανθασμένη. Md(S,F)= 5-5 + 4-0 =0+6=6. Φώτης Κόκκορας Φώτης Κόκκορας 4
Ευρετικές Συναρτήσεις σε Μικρά Προβλήματα (/) Ευρετικός μηχανισμός και συναρτήσεις στο N-Puzzle. Πόσα πλακίδια βρίσκονται εκτός θέσης.. Το άθροισμα των αποστάσεων Manhattan κάθε πλακιδίου από την τελική του θέση. Εκτός Θέσης = Άθροισμα Manhattan αποστάσεων = 8 4 5 6 7 8 9 0 4 5 Αρχική κατάσταση Τελική κατάσταση 7 8 5 5 4 0 7 4 6 8 0 9 5 5 4 9 6 4 Ευριστική Τιμή (εκτίμηση απόστασης) Τυχαία κατάσταση Φώτης Κόκκορας 5 Ευρετικές Συναρτήσεις σε Μικρά Προβλήματα (/) Αναλυτικός υπολογισμός ευρετικής τιμής για μία τυχαία κατάσταση του 5-puzzle. 7 4 6 8 0 9 5 5 4 Εκτός θέσης = 7 4 6 8 0 9 5 5 4 Φώτης Κόκκορας 6 0 0 0 0 Άθροισμα αποστάσεων Manhattan = 8 Ευρετικός Μηχανισμός και Συναρτήσεις στο TSP Η κοντινότερη πόλη έχει περισσότερες πιθανότητες να οδηγήσει σε μία συνολικά καλή λύση. Αναζήτηση με Αναρρίχηση Λόφων Η αναρρίχηση λόφων (Hill-Climbing Search - HC) είναι ένας αλγόριθμος αναζήτησης που μοιάζει πολύ με τον DFS. Ο αλγόριθμος HC. Η αρχική κατάσταση είναι η τρέχουσα κατάσταση.. Αν η κατάσταση είναι μία τελική τότε ανέφερε τη λύση και σταμάτησε.. Εφάρμοσε τους τελεστές μετάβασης για να βρεις τις καταστάσεις-παιδιά. 4. Έστω Α η καλύτερη από αυτές, σύμφωνα με την ευρετική συνάρτηση. 5. Αν η Α είναι καλύτερη από την τρέχουσα κατάσταση τότε η Α γίνεται η τρέχουσα, πήγαινε στο βήμα. 6. Διαφορετικά σταμάτα. Ο αλγόριθμος HC (Ψευδοκώδικας) algorithm hc(initialstate, FinalState) begin CurrentState InitialState; while CurrentState FinalState do Children Expand(CurrentState); if Children= then return failure; EvaluatedChildren Heuristic(Children); bestchild best(evaluatedchildren); if hvalue(currentstate) hvalue(bestchild) then return failure; else CurrentState bestchild; endif; endwhile; return success; end. Φώτης Κόκκορας 7 Φώτης Κόκκορας 8
Ο αλγόριθμος HC - Σχόλια Ο HC χρησιμοποιείται σε προβλήματα όπου πρέπει να βρεθεί μία λύση πολύ γρήγορα, έστω και αν αυτή δεν είναι η καλύτερη. Πλεονεκτήματα: Πολύ αποδοτικός και σε χρόνο και σε μνήμη (χωρίς κλειστό σύνολο!!) Μειονεκτήματα: Είναι μη-πλήρης. Ειδικότερα προβλήματα του HC: Πρόποδες (foothill). Χαμηλές κορυφές παγιδεύουν τον αλγόριθμο σε τοπικά (και όχι συνολικά) καλύτερη λύση. Οροπέδιο (plateau). Τα τριγύρω σημεία του χώρου αναζήτησης είναι ισοϋψή (παρόμοια ποιοτικά) και ο αλγόριθμος περιπλανιέται στο οροπέδιο. Κορυφογραμμή (ridges). Βρίσκονται σχετικά εύκολα αλλά η εύρεση στη συνέχεια της υψηλότερης κορυφής είναι γενικά αργή διαδικασία. Υπάρχει ακόμη κίνδυνος παγίδευσης εκατέρωθεν μια κορυφογραμμής. Βελτιώσεις: Εξαναγκασμένη αναρρίχηση λόφου (Enforced Hill-Climbing - EHC) Προσομοιωμένη Ανόπτηση (Simulated Annealing - SA) Αναζήτηση με απαγορευμένες καταστάσεις (Tabu Search - TS). Φώτης Κόκκορας 9 Εξαναγκασμένη Αναρρίχηση Λόφου Enforced Hill-Climbing EHC Αποτελεί βελτίωση του Hill-Climbing. Είναι συνδυασμός απλού HC και αναζήτησης κατά πλάτος. Σε κάθε βήμα, ψάχνει καλύτερη κατάσταση βάσει της συνάρτησης αξιολόγησης. Αν δεν είναι εφικτό, εκτελεί μια αναζήτηση κατά πλάτος από την τρέχουσα κατάσταση μέχρι να βρεθεί μια καλύτερη κατάσταση. Μόλις βρεθεί τέτοια κατάσταση η αναζήτηση συνεχίζει από αυτή. Έτσι μπορεί να ξεφύγει από σχετικά μικρά οροπέδια. Φώτης Κόκκορας 0 Προσομοιωμένη Ανόπτηση Simulated Annealing SA Παραλλαγή του HC για αντιμετώπιση τοπικών ακρότατων. Επιτρέπει την μετάβαση σε χειρότερη κατάσταση αφήνοντας το ενδεχόμενο να ξεφύγει η αναζήτηση από τοπικό ακρότατο. Επιλέγεται μια τυχαία κατάσταση S' από τις επόμενες καταστάσεις της τρέχουσας κατάστασης S. Αν αξιολογηθεί ως καλύτερη από την S (δηλ. αν Δ=h(S')-h(S) 0) τότε η αναζήτηση συνεχίζει από τη S'. Αν όμως h(s')-h(s)>0 τότε η μετάβαση στην S' πραγματοποιείται με πιθανότητα e -Δ/t όπου t μια παράμετρος που ονομάζεται θερμοκρασία. Αναζήτηση με Απαγορευμένες Καταστάσεις Tabu Search TS Παραλλαγή του HC Σε κάθε βήμα επιλέγεται η καλύτερη (έστω S') από τις γειτονικές καταστάσεις της τρέχουσας κατάστασης S, ακόμη κι αν η S' αξιολογείται χειρότερη της S. Επιπλέον υπάρχει μια λίστα απαγορευμένων καταστάσεων (tabu list), με καταστάσεις τις οποίες ο αλγόριθμος έχει επισκεφθεί. κάτι σαν κλειστό σύνολο δηλαδή, αλλά... Η tabu list έχει συγκεκριμένο μέγεθος: όταν "γεμίσει" η tabu list, η εισαγωγή σε αυτή νέων καταστάσεων προκαλεί διαγραφή των παλαιοτέρων. Για t 0 ο αλγόριθμος λειτουργεί ως απλός HC. Φώτης Κόκκορας Φώτης Κόκκορας
Είναι βελτίωση του HC και του BFS Ακτινωτή Αναζήτηση (Beam Search BS) Δεν κλαδεύονται όλες οι υπόλοιπες καταστάσεις όπως στον HC ένας σταθερός αριθμός από τις καλύτερες από αυτές κρατείται στο μέτωπο αναζήτησης Πρακτικά αυτό σημαίνει ότι η αναζήτηση γίνεται ταυτόχρονα σε περισσότερα από ένα μονοπάτια όχι σε ένα όπως κάνει ο HC. Άρα έχει περισσότερες πιθανότητες εύρεσης λύσης. Ο αριθμός καταστάσεων στο μέτωπο αναζήτησης είναι σταθερός. Στον BFS αύξανε εκθετικά με τον παράγοντα διακλάδωσης. Φώτης Κόκκορας Αναζήτηση Πρώτα στο Καλύτερο Ο αλγόριθμος αναζήτηση πρώτα στο καλύτερο (Best-First-Search - BestFS) κρατά όλες τις καταστάσεις στο μέτωπο αναζήτησης (άρα είναι πλήρης). Ο αλγόριθμος BestFS. Βάλε την αρχική κατάσταση στο μέτωπο αναζήτησης.. Αν το μέτωπο αναζήτησης είναι κενό τότε σταμάτησε.. Πάρε την πρώτη σε σειρά κατάσταση από το μέτωπο αναζήτησης. 4. Αν η κατάσταση είναι μέλος του κλειστού συνόλου τότε πήγαινε στο. 5. Αν η κατάσταση είναι μία τελική τότε ανέφερε τη λύση και σταμάτα. 6. Εφάρμοσε τους τελεστές μεταφοράς για να παράγεις τις καταστάσειςπαιδιά. 7. Εφάρμοσε την ευρετική συνάρτηση σε κάθε παιδί. 8. Βάλε τις καταστάσεις-παιδιά στο μέτωπο αναζήτησης. 9. Αναδιάταξε το μέτωπο αναζήτησης, έτσι ώστε η κατάσταση με την καλύτερη ευρετική τιμή να είναι πρώτη. 0. Βάλε τη κατάσταση-γονέα στο κλειστό σύνολο.. Πήγαινε στο βήμα. Φώτης Κόκκορας 4 Ο αλγόριθμος BestFS (Ψευδοκώδικας) algorithm bestfs(initialstate, FinalStates) begin Closed ; EvaluatedInitialState Heuristic(<InitialState>) Frontier <EvaluatedInitialState>; CurrentState best(frontier); while CurrentState FinalStates do Frontier delete(currentstate,frontier); if CurrentState ClosedSet then begin Children Expand(CurrentState); EvaluatedChildren Heuristic(Children); Frontier Frontier ^ EvaluatedChildren; Closed Closed {CurrentState}; end; if Frontier= then return fail; CurrentState best(frontier); endwhile; return success; end. Φώτης Κόκκορας 5 Ο αλγόριθμος BestFS Σχόλια Πλεονεκτήματα: Προσπαθεί να δώσει μια γρήγορη λύση σε κάποιο πρόβλημα. Εξαρτάται πολύ από τον ευρετικό μηχανισμό. Είναι πλήρης. Μειονεκτήματα: Το μέτωπο αναζήτησης μεγαλώνει με υψηλό ρυθμό και μαζί του ο χώρος που χρειάζεται για την αποθήκευσή του. Δεν εγγυάται ότι η λύση που θα βρεθεί είναι η βέλτιστη. Θα εφαρμόζουμε τον BestFS στον ακόλουθο λαβύρινθο. Η σειρά επέκτασης σε μια κατάσταση (η σειρά 6 των τελεστών) έστω ότι είναι η ακόλουθη: 5 πάνω, δεξιά, κάτω, αριστερά Αρχική Κατάσταση: Θέση (5,5) 4 Τελική Κατάσταση: Θέση (9,) Προσοχή στη συμβολογραφία: πρώτα είναι ο αριθμός στήλης και μετά ο αριθμός γραμμής. 4 5 6 7 8 9 0 Φώτης Κόκκορας 6 S F
Ο αλγόριθμος BestFS: το πρόβλημα του λαβύρινθου Μέτωπο Αναζήτησης Κλειστό Σύνολο Κατάσταση Παιδιά <5-5> <> 5-5 5-6 7, 5-4 5, 4-5 7 <5-4 5, 5-6 7, 4-5 7 > <5-5> 5-4 5-5 6, 6-4 4 <6-4 4, 5-5 6, 5-6 7, 4-5 7 > <5-5, 5-4> 6-4 7-4, 6-, 5-4 5 <7-4, 6-, 5-4 5, 5-5 6, 5-6 7,...> <5-5, 5-4, 6-4> 7-4 7-5 4, 7-, 6-4 4, <7-, 6-, 7-5 4, 6-4 4, 5-4 5,...> <5-5, 5-4, 6-4, 7-4> 7-7-4, 6- <7-4, 6-, 7-5 4, 6-4 4, 5-4 5,...> <5-5, 5-4, 6-4, 7-4, 7-> 7-4 Βρόχος <6-, 7-5 4, 6-4 4, 5-4 5,...> <5-5, 5-4, 6-4, 7-4, 7-> 6-6-4 4, 7-, 6-4 <7-, 6-4, 7-5 4, 6-4 4, 5-4 5,...> <5-5, 5-4, 6-4, 7-4, 7-, 6-> 7- Βρόχος <6-4, 7-5 4, 6-4 4, 5-4 5,...> <5-5, 5-4, 6-4, 7-4, 7-, 6-> 6-6-, 5-5 <6-, 7-5 4, 6-4 4, 5-5, 5-4 5,...> <5-5, 5-4, 6-4, 7-4, 7-, 6-, 6-> 6- Βρόχος <7-5 4, 6-4 4, 5-5, 5-4 5,...> <5-5, 5-4, 6-4, 7-4, 7-, 6-, 6-> 7-5 7-6 5, 8-5, 7-4, <8-5, 7-4, 6-4 4, 7-6 5, 5-5,...> <5-5,5-4,6-4,7-4,7-,6-,6-,7-5> 8-5 8-6 4, 9-5, 7-5 4 <9-5, 7-4, 8-6 4, 7-5 4, 6-4 4,...> <5-5,5-4,6-4,7-4,7-,6-,6-,7-5,8-5> 9-5 0-5, 9-4, 8-5, <9-4,0-5,8-5,7-4,8-6 4,...> <5-5,5-4,6-4,7-4,7-,6-,6-,7-5,8-5,9-5> 9-4 9-5, 0-4, 9-0 <9-0,9-5,0-4,0-5,8-5,...> <5-5,5-4,6-4,7-4,7-,6-,6-,7-5,8-5,9-5,9-4> 9- ΤΕΛΙΚΗ ΚΑΤΑΣΤΑΣΗ Τελική Διαδρομή: η σειρά των καταστάσεων στο κλειστό σύνολο. Δεν είναι βέλτιστη! Βελτιστοποιώντας την παίρνουμε τη συντομότερη: 5-5 5-4 6-4 7-4 7-5 8-5 9-5 9-4 9- Άρα λύση: Κ, Δ, Δ, Π, Δ, Δ, Κ, Κ Φώτης Κόκκορας 4 5 6 7 8 9 7 0 6 5 4 S F Ο Αλγόριθμος Άλφα-Άστρο (Α*) Ο αλγόριθμος Α (Άλφα Άστρο) είναι κατά βάσει BestFS, αλλά με ευρετική συνάρτηση: F(S) = g(s) + h(s) η g(s ) δίνει την απόσταση της S από την αρχική κατάσταση που είναι πραγματική και γνωστή, και η h(s) δίνει την εκτίμηση της απόστασης της S από την τελική κατάσταση μέσω μιας ευρετικής συνάρτησης, όπως ακριβώς στον BestFS. Φώτης Κόκκορας 8 Ο Αλγόριθμος Άλφα-Άστρο (Α*) Σχόλια Αν για κάθε κατάσταση η τιμή h(s) είναι μικρότερη ή το πολύ ίση με την πραγματική απόσταση της S από την τελική κατάσταση, τότε ο Α* βρίσκει πάντα τη βέλτιστη λύση. Ερώτηση: Ισχύει αυτό σε πρόβλημα λαβυρίνθου με ευρετική συνάρτηση Ευκλείδεια Απόσταση; Απάντηση: ΝΑΙ (γιατί?) Εφαρμογή των Αλγορίθμων Ευρετικής Αναζήτησης Χώρος Αναζήτησης στο 8-puzzle U: Up/Πάνω D: Down/Κάτω L: Left/Αριστερά R: Right/Δεξιά Βελτιώσεις: Α* με επαναληπτική εκβάθυνση (Iterative Deepening A* - IDA*) Όπως ο ID βελτιώνει τις απαιτήσεις μνήμης του BFS έτσι και ο IDA* αντιμετωπίζει το ίδιο πρόβλημα του A* χωρίς να θυσιάσει την παραγωγή βέλτιστων λύσεων αν η ευρετική συνάρτηση είναι αποδεκτή (admissible). Προχωρά με προτεραιότητα κατά βάθος και επεκτείνει κόμβους βάσει της h. Αν παραχθεί κατάσταση με ευρετική τιμή μεγαλύτερη από το όριο που έχει τεθεί για την τρέχουσα επανάληψη, τα κλαδιά που ξεκινούν από αυτή κλαδεύονται και η αναζήτηση οπισθοδρομεί στην πλησιέστερη κατάσταση-πατέρα που είχε εναλλακτικές λύσεις. Το όριο αρχικά ισούται με την τιμή αξιολόγησης της αρχικής κατάστασης. Μετά από κάθε επανάληψη ανανεώνεται στη μικρότερη τιμή που εμφανίστηκε στις καταστάσεις που κλαδεύτηκαν στην προηγούμενη επανάληψη. Φώτης Κόκκορας 9 Φώτης Κόκκορας 0
Εφαρμογή αλγορίθμου BestFS στο 8-puzzle U: Up/Πάνω D: Down/Κάτω L: Left/Αριστερά R: Right/Δεξιά Ευρετική Συνάρτηση: Πόσα πλακίδια είναι εκτός θέσης. a: αρχική κατάσταση d, n, τελικές καταστάσεις Άσκηση [6] i [0] f [4] a e Εξέλιξη Μετώπου Για ευκολία, οι καταστάσεις προσδιορίζονται με την ευρετική τους τιμή. Αρχική 6, 4 6,, 5 6, 4, 4,, 5 6, 4, 4, 0,, 5 6, 4, 4,, 5 κτλ Φώτης Κόκκορας [6] h [7] b [9] c [] [0] d [] Ο αριθμός μέσα σε αγκύλες δίπλα σε κάθε κόμβο, αντιστοιχεί στην τιμή μιας ευρετικής συνάρτησης για αυτόν. Γράψτε την σειρά (π.χ. a, f, n,...) με την οποία θα εξεταστούν οι κόμβοι του δέντρου από τους ακόλουθους 4 αλγορίθμους αναζήτησης. Για τον Α*, θεωρήστε g(s) το πλήθος των βημάτων από την ρίζα a. DFS: BFS: BestFS: A*: ΑΣΧΕΤΟ με άσκηση: Δείτε και αυτό: http://qiao.github.io/pathfinding.js/visual/ m Φώτης Κόκκορας [0] n [5] g j [8] k