ΤΥΦΛΗ ΑΝΑΖΗΤΗΣΗ (1) ΣΤΡΑΤΗΓΙΚΗ Ή ΑΛΓΟΡΙΘΜΟΣ ΑΝΑΖΗΤΗΣΗΣ Μια αυστηρά καθορισµένη ακολουθία ενεργειών µε σκοπό τη λύση ενός προβλήµατος. Χαρακτηριστικά οθέν πρόβληµα: P=<I, G, T, S> Επιλυθέν πρόβληµα: P s =<V, A, F, G s > V: σύνολο καταστάσεων που εξετάστηκαν (V SP) A: αλγόριθµος που χρησιµοποιήθηκε F: σύνολο λύσεων που βρέθηκαν Gs : σύνολο καταστάσεων στόχου που εξετάστηκαν 10-11-98 1
ΤΥΦΛΗ ΑΝΑΖΗΤΗΣΗ(2) Κριτήρια αξιολόγησης στρατηγικών αναζήτησης Πληρότητα (completeness) Βελτιστότητα (optimality) Πολυπλοκότητα χρόνου (time complexity) Πολυπλοκότητα χώρου (space complexity) ΠΡΟΣΟΧΗ Συντοµότερη διαδροµή = διαδροµή µε τις λιγότερες ακµές Βέλτιστη διαδροµή = διαδροµή µε το µικρότερο κόστος 10-11-98 2
ΤΥΦΛΗ ΑΝΑΖΗΤΗΣΗ (3) ΚΑΤΗΓΟΡΙΕΣ ΣΤΡΑΤΗΓΙΚΩΝ Ή ΑΛΓΟΡΙΘΜΩΝ ΑΝΑΖΗΤΗΣΗΣ Σχετικοί µε την κατεύθυνση αναζήτησης Αναζήτηση οδηγούµενη από τα δεδοµένα (data driven search) ή Αλυσίδωση προς τα εµπρός (forward chaining) Αναζήτηση οδηγούµενη από το στόχο (goal driven search) ή Αλυσίδωση προς τα πίσω (backward chaining) 10-11-98 3
ΤΥΦΛΗ ΑΝΑΖΗΤΗΣΗ (3Α) Οδηγούµενη από τα δεδοµένα Οδηγούµενη από το στόχο στόχος στόχος 10-11-98 4
ΤΥΦΛΗ ΑΝΑΖΗΤΗΣΗ (4) Σχετικοί µε τη σειρά αναζήτησης Αναζήτηση προτεραιότητας πλάτους ή Αναζήτηση κατά πλάτος (breadth-first search) Αναζήτηση προτεραιότητας βάθους ή Αναζήτηση κατά βάθος (depth-first search) Αναζήτηση επαναληπτικής εκβάθυνσης (iterative deepening search) Αναζήτηση περιορισµένου βάθους (depth-limited search) 10-11-98 5
ΤΥΦΛΗ ΑΝΑΖΗΤΗΣΗ (4Α) Προτεραιότητα πλάτους Προτεραιότητα βάθους µε οπισθοδρόµηση (backtracking) 10-11-98 6
ΤΥΦΛΗ ΑΝΑΖΗΤΗΣΗ (5) Αναζήτηση προτεραιότητας πλάτους (breadth-first: bfs) 1. ηµιούργησε µια λίστα open (που αρχικά περιέχει τη ρίζα) και µια κενή λίστα closed. 2. Ενόσω open [], έλεγχε αν το πρώτο στοιχείο, έστω Χ, είναι ο στόχος 2.1 Αν είναι, τότε σταµάτα (επιτυχία) 2.2 Αν δεν είναι, τότε 2.2.1 Παράγαγε τα παιδιά του Χ και βάλε το Χ στην closed 2.2.2 ιάγραψε όσα παιδιά του Χ υπάρχουν στην open ή στην closed 2.2.3 Εισάγαγε τα υπόλοιπα παιδιά του Χ στο τέλος της open 3. Σταµάτα (αποτυχία) 10-11-98 7
ΤΥΦΛΗ ΑΝΑΖΗΤΗΣΗ (6) Αναζήτηση προτεραιότητας βάθους (depth-first: dfs) 1. ηµιούργησε µια λίστα open (που αρχικά περιέχει τη ρίζα) και µια κενή λίστα closed. 2. Ενόσω open [], έλεγχε αν το πρώτο στοιχείο, έστω Χ, είναι ο στόχος 2.1 Αν είναι, τότε σταµάτα (επιτυχία) 2.2 Αν δεν είναι, τότε 2.2.1 Παράγαγε τα παιδιά του Χ και βάλε το Χ στην closed 2.2.2 ιάγραψε όσα παιδιά του Χ υπάρχουν στην open ή στην closed 2.2.3 Εισάγαγε τα υπόλοιπα παιδιά του Χ στην αρχή της open 3. Σταµάτα (αποτυχία) 10-11-98 8
ΤΥΦΛΗ ΑΝΑΖΗΤΗΣΗ (7) Αναζήτηση περιορισµένου βάθους Προτεραιότητα βάθους χωρίς να υπερβαίνει ορισµένο βάθος x Όλοι οι κόµβοι στο βάθος x θεωρούνται φύλλα 10-11-98 9
ΤΥΦΛΗ ΑΝΑΖΗΤΗΣΗ (8) Αναζήτηση περιορισµένου βάθους (depth-limited search: dfsl) 1. ηµιούργησε µια λίστα open (που αρχικά περιέχει τη ρίζα), µια κενή λίστα closed και µια µεταβλητή τρέχοντος βάθους d=0. 2. Ενόσω open [], έλεγχε αν το πρώτο στοιχείο, έστω Χ, είναι ο στόχος 2.1 Αν είναι, τότε σταµάτα (επιτυχία) 2.2 Αν δεν είναι, τότε 2.2.1 Αν ο Χ δεν είναι φύλλο (d<d lim ), παράγαγε τα παιδιά του Χ και βάλε το Χ στην closed και d=d+1 2.2.2 ιάγραψε όσα παιδιά του Χ υπάρχουν στην open ή στην closed 2.2.3 Εισάγαγε τα υπόλοιπα παιδιά του Χ στην αρχή της open 3. Σταµάτα (αποτυχία) 10-11-98 10
ΤΥΦΛΗ ΑΝΑΖΗΤΗΣΗ (9) Επαναληπτική εκβάθυνση βάθος = 1 βάθος = 2 10-11-98 11...
ΤΥΦΛΗ ΑΝΑΖΗΤΗΣΗ (10) Αναζήτηση επαναληπτικής εκβάθυνσης (iterative deepening search: ids) 1. Όρισε µια µεταβλητή ορίου βάθους d lim =1. 2. ηµιούργησε µια λίστα open (που αρχικά περιέχει τη ρίζα), µια κενή λίστα closed και µια µεταβλητή τρέχοντος βάθους d=0. 3. Ενόσω open [], έλεγχε αν το πρώτο στοιχείο, έστω Χ, είναι ο στόχος 3.1 Αν είναι, τότε σταµάτα (επιτυχία) 3.2 Αν δεν είναι, τότε 3.2.1 Αν ο Χ δεν είναι φύλλο (d<d lim ), παράγαγε τα παιδιά του Χ και βάλε το Χ στην closed και d=d+1 3.2.2 ιάγραψε όσα παιδιά του Χ υπάρχουν στην open ή στην closed 3.2.3 Εισάγαγε τα υπόλοιπα παιδιά του Χ στην αρχή της open 4. d lim =d lim +1 και πήγαινε στο βήµα 1. 10-11-98 12
ΤΥΦΛΗ ΑΝΑΖΗΤΗΣΗ (11) Αποφυγή επαναλαµβανόµενων καταστάσεων (κόµβων) Επαναλαµβανόµενες είναι οι καταστάσεις που συναντώνται περισσότερες από µια φορές κατά την ανάπτυξη ενός δέντρου καταστάσεων Στα περισσότερα προβλήµατα είναι αδύνατο να τις αποφύγουµε Η ανάπτυξη καταστάσεων (κόµβων) που έχουν ήδη αναπτυχθεί είναι χάσιµο χρόνου, γι αυτό δεν τις (τους) αναπτύσσουµε 10-11-98 13
ΤΥΦΛΗ ΑΝΑΖΗΤΗΣΗ (13) Πλεονεκτήµατα-Μειονεκτήµατα Προτεραιότητα πλάτους εγγυάται τη συντοµότερη διαδροµή (Π) απαιτεί µεγάλο χώρο στη µνήµη: b d (Μ) Προτεραιότητα βάθους απαιτεί µικρό χώρο στη µνήµη: b d (Π) µπορεί να βρεθεί σε *ανακύκλωση κόµβων *ατέρµονα κλάδο (Μ) b: συντελεστής διακλάδωσης (µ.ο. παιδιών ανά κόµβο) d: βάθος επιπέδου στόχου 10-11-98 14
ΤΥΦΛΗ ΑΝΑΖΗΤΗΣΗ (14) Περιορισµένου βάθους αποφυγή ατέρµονων διαδροµών (Π) δύσκολη επιλογή βάθους (Μ) Επαναληπτική εκβάθυνση άριστη ισορροπία χώρου και χρόνου (Π) επανυπολογισµός κόµβων (Μ) 10-11-98 15
ΕΥΡΕΤΙΚΗ ΑΝΑΖΗΤΗΣΗ (1) Η τυφλή αναζήτηση δεν λαµβάνει υπ όψιν της γνώση του πεδίου και δεν µπορεί να βελτιώσει την αποδοτικότητά της πέραν κάποιου σηµείου Η ευρετική αναζήτηση χρησιµοποιεί τέτοια γνώση, που ονοµάζεται ευρετική γνώση (heuristic knowledge), ώστε βελτιώνει σηµαντικά την απόδοση της αναζήτησης Γενικά ευρετικό (heuristic) είναι µια τεχνική που βελτιώνει την αποδοτικότητα της αναζήτησης. Μπορεί να είναι είτε γενικό είτε ειδικό (δηλ. σχετικό µε το πεδίο γνώσης του προβλήµατος). Μας ενδιαφέρουν κυρίως ευρετικά σχετικά µε το πεδίο και αυτά εννοούµε. Τα ευρετικά λειτουργούν ως συνιστώσα ελέγχου της αναζήτησης. 10-11-98 16
ΕΥΡΕΤΙΚΗ ΑΝΑΖΗΤΗΣΗ (2) Ένα ευρετικό µπορεί να αφορά είτε τον ορισµό τελεστών/κανόνων µετασχηµατισµού είτε την εκτίµηση µιας κατάστασης. Η δεύτερη περίπτωση είναι πιο ενδιαφέρουσα. Στην ευρετική αναζήτηση τότε είτε δεν αναπτύσσονται όλοι οι ανοικτοί κόµβοι, αλλά γίνεται επιλογή µε βάση το ευρετικό, είτε η σειρά ανάπτυξης των ανοικτών κόµβων βασίζεται στο ευρετικό. 10-11-98 17
ΕΥΡΕΤΙΚΗ ΑΝΑΖΗΤΗΣΗ (3) Ηαπόφαση για περαιτέρω ανάπτυξη ενός κόµβου βασίζεται εν γένει σε µια συνάρτηση εκτίµησης (evaluation function) f(n), όπου n ο εν λόγω κόµβος. Η f(n) έχει δύο συνιστώσες: f(n) = g(n) + h(n) Η g(n) λέγεται συνάρτηση κόστους και αναφέρεται στο (πραγµατικό) κόστος της διαδροµής από τη ρίζα στον κόµβο n. Η h(n) είναι η ευρετική συνάρτηση και αναφέρεται στο (εκτιµώµενο) κόστος της ελάχιστης διαδροµής από τον κόµβο n στο στόχο. 10-11-98 18
ΣΤΡΑΤΗΓΙΚΕΣ ΕΥΡΕΤΙΚΗΣ ΑΝΑΖΗΤΗΣΗΣ (1) έσµης (Beam search: bs) (Ακτινωτή) * παραλλαγή αναζήτησης προτεραιότητας πλάτους * m καλύτεροι κόµβοι σε κάθε επίπεδο (f(n) = h(n)) Αναρρίχηση λόφων (Hill climbing: hc) * παραλλαγή αναζήτησης προτεραιότητας βάθους * βασικός αλγόριθµος: επιλέγεται το καλύτερο παιδί (f(n) = h(n)), εφ όσον είναι καλύτερο και από τον γονέα, αλλιώς σταµατά (δηλ. δεν υπάρχει οπισθοδρόµηση) * υπάρχουν διάφορες παραλλαγές - ο βασικός, αλλά δεν σταµατά, συνεχίζει κατά πλάτος (Enforced Hill-Climbing: ehc) - επιλέγεται το καλύτερο παιδί του τρέχοντος κόµβου (µε ή χωρίς οπισθοδρόµηση) 10-11-98 19
ΣΤΡΑΤΗΓΙΚΕΣ ΕΥΡΕΤΙΚΗΣ ΑΝΑΖΗΤΗΣΗΣ (1) ιακλάδωση και δέσµευση (Branch and bound: b&b) (Επέκταση και οριοθέτηση) * ανάπτυξη του κόµβου της συντοµότερης τρέχουσας διαδροµής (f(n) = g(n)) Βέλτιστου κόµβου (Best-first search: bfs) * ανάπτυξη του καλύτερου κόµβου (f(n) = h(n)) Αλγόριθµος Α* * συνδυασµός των δύο προηγούµενων (f(n) = g(n) + h(n)) 10-11-98 20
ΣΤΡΑΤΗΓΙΚΕΣ ΕΥΡΕΤΙΚΗΣ ΑΝΑΖΗΤΗΣΗΣ (2) Αναζήτηση δέσµης (beam search: bs) 1. ηµιούργησε µια λίστα open (που αρχικά περιέχει τη ρίζα) και µια κενή λίστα closed. 2. Ενόσω open [], έλεγχε αν το πρώτο στοιχείο, έστω Χ, είναι ο στόχος 2.1 Αν είναι, τότε σταµάτα (επιτυχία) 2.2 Αν δεν είναι, τότε 2.2.1 Παράγαγε τα παιδιά του Χ και βάλε το Χ στην closed 2.2.2 ιάγραψε όσα παιδιά του Χ υπάρχουν στην open ή στην closed 2.2.3 Εισάγαγε τα υπόλοιπα παιδιά του Χ στην open 2.2.4 ιάταξε τα στοιχεία της open µε βάση την ευρετική συνάρτηση 2.2.5 ιάγραψε όλα τα στοιχεία της open πλην των m πρώτων 3. Σταµάτα (αποτυχία) 10-11-98 21
ΣΤΡΑΤΗΓΙΚΕΣ ΕΥΡΕΤΙΚΗΣ ΑΝΑΖΗΤΗΣΗΣ (3) Αναρρίχηση λόφου (hill climbing: hc) 1. Κάνε την αρχική τρέχουσα κατάσταση (Χ) 2. Ενόσω η Χ δεν είναι κατάσταση στόχου 2.1 Παράγαγε τα παιδιά του Χ 2.2 Αν δεν υπάρχουν παιδιά, σταµάτα (αποτυχία) 2.3 Αλλιώς, διάταξέ τα µε βάση την ευρετική συνάρτηση 2.4 Αν το πρώτο παιδί είναι καλύτερο από την Χ 2.2.1 αντικατέστησε την Χ µ αυτό 2.2.2 Αλλιώς, σταµάτα (αποτυχία) 3. Σταµάτα (επιτυχία) 10-11-98 22
ΣΤΡΑΤΗΓΙΚΕΣ ΕΥΡΕΤΙΚΗΣ ΑΝΑΖΗΤΗΣΗΣ (3) Αναρρίχηση λόφου (παραλλαγή) 1. ηµιούργησε µια λίστα open (που αρχικά περιέχει τη ρίζα) και µια κενή λίστα closed. 2. Ενόσω open [], έλεγχε αν το πρώτο στοιχείο, έστω Χ, είναι ο στόχος 2.1 Αν είναι, τότε σταµάτα (επιτυχία) 2.2 Αν δεν είναι, τότε 2.2.1 Παράγαγε τα παιδιά του Χ και βάλε το Χ στην closed 2.2.2 ιάταξε τα παιδιά του Χ µε βάση την ευρετική συνάρτηση 2.2.3 Εισάγαγε τα υπόλοιπα παιδιά του Χ στην αρχή της open 3. Σταµάτα (αποτυχία) 10-11-98 23
ΣΤΡΑΤΗΓΙΚΕΣ ΕΥΡΕΤΙΚΗΣ ΑΝΑΖΗΤΗΣΗΣ (4) Αλγόριθµος Πολυπ. Χρόνου Πολυπ. Χώρου Πληρότητα Βέλτ. Λύση Κατά Πλάτος Ο(b m ) Ο(b m ) ΝΑΙ ΌΧΙ Κατά Βάθος Ο(b m ) O(bm) ΌΧΙ ΌΧΙ Επαναληπτικής Εκβάθυνσης Ο(b m ) O(bm) ΝΑΙ ΌΧΙ έσµης Ο(k m ) Ο(k m ) ή O(km) ΌΧΙ ΌΧΙ Αναρρίχησης Λόφου Ο(b m ) O(bm) ΌΧΙ ΌΧΙ Β&Β Ο(b m ) Ο(b m ) ~g(s) ~g(s) Βέλτιστου Κόµβου Ο(b m ) Ο(b m ) ~h(s) ΟΧΙ Α* Ο(b m ) Ο(b m ) ΝΑΙ ΝΑΙ 10-11-98 24
ΣΤΡΑΤΗΓΙΚΕΣ ΕΥΡΕΤΙΚΗΣ ΑΝΑΖΗΤΗΣΗΣ (5) Κριτήρια αξιολόγησης ευριστικών συναρτήσεων Αποδεκτότητα (Admissibility) Βρίσκει τη συντοµότερη διαδροµή, οδηγεί πάντα στην καλύτερη λύση. Αυτό συµβαίνει όταν h(n) h*(n) (πραγµατική τιµή) Πληροφορικότητα (Informedness) ή Βέλτιστη Αποδοτικότητα (Optimal Efficiency) Εξασφαλίζει/εγγυάται την ανάπτυξη των λιγότερων κόµβων. Αν h1(n) h2 (n) n, τότε h2 περισσότερο πληροφοριακό από h1. 10-11-98 25
ΣΤΡΑΤΗΓΙΚΕΣ ΕΥΡΕΤΙΚΗΣ ΑΝΑΖΗΤΗΣΗΣ (6) Μονοτονικότητα (Monotonicity) ή Συνέπεια (Consistency) Εξασφαλίζει/εγγυάται ότι η ίδια κατάσταση δεν θα παραχθεί αργότερα µε µικρότερο κόστος. h(n) είναι µονότονη αν (1) h(n i ) h(n j ) c(n i, n j ) και (2) h(goal)=0 10-11-98 26