ΧΑΡΟΚΟΠΕΙΟ ΠΑΝΕΠΙΣΤΗΜΙΟ ΑΘΗΝΩΝ ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ & ΤΗΛΕΜΑΤΙΚΗΣ ΤΕΧΝΗΤΗ ΝΟΗΜΟΣΥΝΗ ΒΑΣΙΚΕΣ ΕΝΝΟΙΕΣ ΠΡΑΚΤΟΡΩΝ ΠΕΡΙΓΡΑΦΗ ΠΡΟΒΛΗΜΑΤΩΝ ΚΑΙ ΑΝΑΖΗΤΗΣΗ ΛΥΣΗΣ Καραγιώργου Σοφία
Γενικά Περί Πρακτόρων Με το όρο πράκτορα (agent) στη περιοχή της Τεχνητής Νοημοσύνης, περιγράφουμε ένα σύστημα (π.χ. Πρόγραμμα) το οποίο λαμβάνει μέσω αισθητήρων (sensors) ή κάποιας άλλης διαπροσωπείας ερεθίσματα από το περιβάλλον του και στη συνέχεια αντιδρά σε αυτά τα ερεθίσματα με κάποιες ενέργειες μέσω κατάλληλων μηχανισμών (effectors) Ένας Ορθολογικός Πράκτορας (rational agent) είναι μια υπηρεσία που πάντα αντιδρά με το σωστό τρόπο στα ερεθίσματα που λαμβάνει από το περιβάλλον του (does the right thing) Το πρόβλημα λοιπόν είναι να: Μοντελοποιήσουμε τις ενέργειες του πράκτορα σα συνάρτηση των ερεθισμάτων που λαμβάνει (και πιθανόν και σα συνάρτηση άλλων παραγόντων όπως η κατάσταση που βρίσκεται ο πράκτορας κλπ.) Αναπτύξουμε τεχνικές με τις οποίες θα μπορέσουμε να προσδιορίσουμε πότε και πως μετράμε την απόδοση του πράκτορα Συνεπώς ένας Ορθολογικός Πράκτορας για τη λειτουργία του βασίζεται: Σε κάποια μετρική/μετρικές που ορίζουν το βαθμό απόδοσης του πράκτορα Την ακολουθία ερεθισμάτων που έχει δει ο πράκτορας μέχρι κάποια χρονική στιγμή (percept sequence) Τη γνώση που έχει ο πράκτορας για το περιβάλλον του Τις ενέργειες που μπορεί ο πράκτορας να εκτελέσει σε κάθε πιθανή κατάσταση και ερέθισμα
Ιδανικοί Ορθολογικοί Πράκτορες Η δομή ενός ορθολογικού πράκτορα είναι: Ορθολογικός πράκτορας = Αρχιτεκτονική + Πρόγραμμα Αρχιτεκτονική: Επιτρέπει τα ερεθίσματα να διοχετεύονται στο Πρόγραμμα Εκτελεί το Πρόγραμμα Διοχετεύει τα αποτελέσματα του Προγράμματος σε μηχανισμούς δράσης (actuators, effectors) Πρόγραμμα: Ορίζει την απεικόνιση (ακολουθία ερεθισμάτων -> ενέργεια) Ανάλογα με την απεικόνιση έχουμε Table Driven Agents, Simple Reflex Agents, Reflex Agents with Internal State, Goal based Agents, Utility based Agents Ένας Ιδανικός Ορθολογικός Πράκτορας (Ideal Rational Agent) είναι ο πράκτορας ο οποίος για κάθε πιθανή κατάσταση και ερεθίσματα έχει τη δυνατότητα και γνώση να ενεργήσει με κάποιο τρόπο που θα μεγιστοποιήσει την επίδοσή του
Κατηγοριοποίηση Πρακτόρων Ένας πράκτορας (agent) λοιπόν περιγράφεται σε γενικές γραμμές από την αρχιτεκτονική του και τη συνάρτηση ενεργειών δράσης (agent activity function) Ανάλογα με το πώς δομείται ένας πράκτορας κατηγοριοποιείται ως: Table Driven Agent Simple Reflex Agent Reflex Agent with Internal State Goal based Agent Utility based Agent
Table Driven Agents Οι Table Driven Agents χρησιμοποιούν πίνακες για να αντιστοιχήσουν: Τα ερεθίσματα που λαμβάνει ο πρακτορας από το περιβάλλον Την κατάσταση του πράκτορα Τις ενέργειες που πρέπει να εκτελεσθούν Αυτή η προσέγγιση έχει αρκετά μειονεκτήματα και πιο συγκεκριμένα: Είναι απαραίτητο να κρατιέται στη μνήμη ολόκληρη η ακολουθία ερεθισμάτων (percept sequence) Είναι δύσκολο να ορισθεί ένας πλήρης πίνακας αντιστοίχισης Ο πράκτορας δεν μπορεί να παρουσιάσει αυτόνομη συμπεριφορά
Simple Reflex Agents Η βασική ιδέα πίσω από τους Simple Reflex Agents είναι η αναγνώριση/αποθήκευση συχνών και επαναλαμβανόμενων σχέσεων μεταξύ ερεθισμάτων και ενεργειών Αυτές οι κοινές και επαναλαμβανόμενες σχέσεις μοντελοποιούνται με τη μορφή κανόνων που ονομάζονται κανόνες συνθήκης ενέργειας (condition action rules) Ένας Simple Reflex Agent δουλεύει με την αρχή κατά την οποία το πρόγραμμα επιλέγει τον κατάλληλο κανόνα και στη συνέχεια εφαρμόζει την αντίστοιχη ενέργεια Ο ψευδοκώδικας που περιγράφει ένα Simple Reflex Agent είναι Function Simple Reflex Agent(percept) static: rules, /* condition action rules */ state <- Intercept_input(percept) rule <- Rule_match(state, rules) action <- Rule_Action(rule) return(action)
Simple Reflex Agent - Σχηματικά
Πράκτορας με Εσωτερική Κατάσταση Reflex Agent with Internal State Τα ερεθίσματα που λαμβάνει ένας πράκτορας μέσω των αισθητήρων του, συχνά δεν δίνουν την συνολική εικόνα του περιβάλλοντος Χρειάζεται λοιπόν ο πράκτορας να έχει μηχανισμούς για να διακρίνει και να ξεχωρίζει ανάμεσα σε διαφορετικές καταστάσεις του περιβάλλοντος που μπορεί να παράγουν τα ίδια ερεθίσματα Ο μηχανισμός που χρησιμοποιείται εδώ είναι η διατήρηση ενός μοντέλου εσωτερικής κατάστασης που επιτρέπει την διαφοροποίηση των περιπτώσεων και την επιλογή των δράσεων Ο ψευδοκώδικας που προσδιορίζει τη συμπεριφορά ενός Reflex Agent με Εσωτερική Κατάσταση είναι: Function Reflex Agent With State(percept) static: state, /* description of the current world state */ rules // set of condition action rules // state <- Update_State(state, percept) rule <- Rule_Match(state, rules) action <- Rule_Action(rule) state <- Update_State(state, action) return(action)
Πράκτορας με Εσωτερική Κατάσταση - Σχηματικά
Πράκτορας Επιδίωξης Στόχου Goal Based Agent Η γνώση της κατάστασης του περιβάλλοντος μερικές φορές δεν είναι αρκετή για την επιλογή της σωστής ενέργειας Οι πράκτορες επιδίωξης στόχου βασίζονται στην ιδέα ότι ο πράκτορας έχει και κάποιους συγκεκριμένους στόχους που πρέπει να επιτύχει (όχι απλά να επιτελέσει μια ενέργεια) Η γνώση των στόχων που πρέπει να επιτευχθούν συνδυάζεται με όλες τις άλλες πληροφορίες που έχει στη διάθεσή του ο πράκτορας ώστε να επιλέξει την κατάλληλη ενέργεια Η επιλογή μιας κατάλληλης ενέργειας είναι αποτέλεσμα μιας διαδικασίας έρευνας (search) και αλγόριθμων μεθόδευσης ενεργειών (planning) εύρεση μιας ακολουθίας ενεργειών που επιτυγχάνουν το στόχο
Ψευδοκώδικας Πράκτορα Επιδίωξης Στόχου Function Goal Based Agent(percept) static: state, /* description of the current world state */ rules /* set of condition action rules */ goal /* set of specific success states */ state <- Update_State(state, percept) rule <- Rule_Match(state, rules) action <- Rule_Action(rule) state <- Update_State(state, action) if (state in goal) then return (action) else percept <- Obtain_Percept(state, goal) return(goal Based Agent(percept))
Πράκτορας Επιδίωξης Στόχου Σχηματικά
Πράκτορας Ωφέλειας Utility Based Agent Η συμπεριφορά ενός πράκτορα να επιτύχει τους στόχους του δεν εγγυάται ότι αυτός ο πράκτορας εκτελεί και τις καλύτερες δυνατές ενέργειες ή ότι έχει υψηλή πιστότητα Στους πράκτορες επίτευξης στόχου οι καταστάσεις του πράκτορα χαρακτηρίζονται ως επιτυχείς (τελική επίτευξη στόχου) ή ανεπιτυχείς (ο στόχος δεν έχει ακόμη επιτευχθεί) Χρειαζόμαστε λοιπόν μια μέθοδο για να διακρίνουμε πόσο είναι το κέρδος ή το σκορ κάθε κατάστασης σε σχέση με το στόχο Χρησιμοποιούμε για αυτό το σκοπό μια συνάρτηση που ονομάζουμε συνάρτηση ωφέλειας (utility function) Η συνάρτηση ωφέλειας αποδίδει σε κάθε κατάσταση ένα σκορ και έτσι επιτρέπει Την επιλογή εναλλακτικών ενεργειών Την επιλογή κατάλληλων και επιτεύξιμων στόχων
Ψευδοκώδικας Πράκτορα Ωφέλειας Function Goal Based Agent(percept) static: state, /* description of the current world state */ rules /* set of condition action rules */ goal /* set of specific success states */ state <- Update_State(state, percept) rule <- Rule_Match(state, rules) action <- Rule_Action(rule) state <- Update_State(state, action) score <- Obtain_Score(state) if (state in goal) and Best_Score(score) then return(action) else percept <- Obtain_Percept(state, goal) return(goal Based Agent(percept))
Πράκτορας Ωφέλειας Σχηματικά
Ταξινόμηση Τύπων Περιβάλλοντος Τα περιβάλλοντα στα οποία ενεργούν οι πράκτορες ταξινομούνται ως: Προσιτά/Μη Προσιτά (οι αισθητήρες μπορούν να έχουν πρόσβαση σε όλο ή μόνο σε μέρος του περιβάλλοντος) Νομοτελειακά/Μη Νομοτελειακά (η κατάσταση του περιβάλλοντος είναι νομοτελειακά ή μη ορισμένη) Επεισοδιακά/Μη Επεισοδιακά (η συμπεριφορά του πράκτορα βασίζεται πρώτα στη εισαγωγή στοιχείων και μετά στην επιλογή της ενέργειας acting vs. planning) Στατικά/Δυναμικά (το περιβάλλον παραμένει στατικό ή αλλάζει καθώς ο πράκτορας ενεργεί) Συνεχή/Μη συνεχή περιβάλλοντα (distinct percepts vs. continuous percept sequences)
Παραδείγματα
Γενικά Ο σκοπός αυτής της ενότητας είναι να παρουσιάσει τις βασικές έννοιες αλγόριθμων που βρίσκουν λύσεις σε προβλήματα όπου μια επιλογή ή ενέργεια οδηγεί σε μια άλλη επιλογή ή ενέργεια, μέχρι να επιτευχθεί ο στόχος
Περιγραφή προβλημάτων Η έννοια του προβλήματος είναι διαισθητικά γνωστή σε όλους: υπάρχει μία δεδομένη κατάσταση (αρχική), υπάρχει μία επιθυμητή κατάσταση (τελική) και διαθέσιμες ενέργειες που πρέπει να γίνουν ώστε να φτάσουμε στην επιθυμητή. Πολλές φορές στην καθημερινότητα, η έννοια «πρόβλημα» χρησιμοποιείται με λάθος τρόπο. Π.χ. αν δεν είναι γνωστό ένα από τα παραπάνω τρία βασικά συστατικά, δηλαδή κάποιος δεν έχει στόχους ή δε γνωρίζει τι ενέργειες μπορεί να εκτελέσει, τότε δεν υφίσταται πρόβλημα με την τυπική έννοια του όρου. Καθημερινά καλούμαστε να αντιμετωπίσουμε πολλά προβλήματα σε ποικίλα περιβάλλοντα. Η επίλυση προβλημάτων που επιδιώκεται από την Τ.Ν. απαιτεί τον τυποποιημένο και σαφή ορισμό τους. Ο ορισμός ή η περιγραφή ενός προβλήματος πρέπει να είναι ανεξάρτητη από την πολυπλοκότητα επίλυσής του. Η πολυπλοκότητα καθορίζεται από την πολυπλοκότητα του αλγορίθμου αναζήτησης που εφαρμόζεται για την επίλυσή του.
Περιγραφή προβλημάτων H περιγραφή ενός προβλήματος μπορεί να γίνει με δύο βασικούς τρόπους: Περιγραφή με Χώρο Καταστάσεων (State Space) Περιγραφή με Αναγωγή (Reduction)
Επίλυση προβλημάτων Επίλυση προβλημάτων μέσω αναζήτησης Κάθε πρόβλημα το οποίο μπορεί να διατυπωθεί αυστηρά λύνεται μέσω αναζήτησης Για τα περισσότερα «ενδιαφέροντα» προβλήματα ο χρόνος και ο χώρος που απαιτείται για την λύση τους μέσω αναζήτησης είναι απαγορευτικά μεγάλος και αυξάνει τουλάχιστον εκθετικά με το μέγεθος του προβλήματος
Κλασσικά Τ.Ν. προβλήματα Παράδειγμα: κρυφός συνδυασμός μιας ηλεκτρονικής κλειδαριάς που δέχεται ως κλειδί έναν αριθμό με 2 ψηφία Έχουμε να ψάξουμε (δοκιμάσουμε) 100 συνδυασμούς. Αν η κάθε δοκιμή χρειάζεται 1 δευτερόλεπτο τότε θέλουμε 1 min και 40sec Αν όμως το κλειδί αποτελείται από 4 ψηφία τότε πρέπει να ψάξουμε 10000 συνδυασμούς το οποίο μπορεί να μας πάρει μέχρι και 2 ώρες και 45 λεπτά Με 8 ψηφία; πάνω από 3 χρόνια στην χειρότερη περίπτωση
Κλασσικά Τ.Ν. προβλήματα Βλέπουμε την εκθετική αύξηση της πολυπλοκότητας που παρουσιάζουν πολλά προβλήματα: για μικρά μεγέθη προβλημάτων ή για πολύ απλά προβλήματα μπορούμε να χρησιμοποιήσουμε τυφλή αναζήτηση αλλιώς χρησιμοποιούμε extra πληροφορία. Αν για παράδειγμα, γνωρίζαμε ότι αυτός που όρισε το κλειδί βάζει ως κλειδιά ημερομηνίες γεννήσεως συγγενικών του προσώπων τότε θα χρειαζόταν να δοκιμάσουμε πολύ λίγους συνδυασμούς (ευριστικός τρόπος) εξαρτάται από το πρόβλημα
Ιεραπόστολοι και κανίβαλοι http://www.plastelina.net/game2.html
Ιεραπόστολοι και κανίβαλοι Έχουμε στην όχθη ενός ποταμού 3 ιεραποστόλους και 3 κανίβαλους και μία βάρκα που χωράει το πολύ 2 άτομα Περιορισμοί: Δεν υπάρχει κανένας τρόπος να περάσει κάποιος το ποτάμι πάρα μόνο με την βάρκα Η βάρκα δεν μπορεί να μετακινηθεί παρά μόνο αν υπάρχει κάποιος μέσα Ζητείται ένα σχέδιο μετακινήσεων με βάση το οποίο θα περάσουν το ποτάμι και οι ιεραπόστολοι και οι κανίβαλοι με τον επιπλέον περιορισμό ότι ποτέ δεν πρέπει σε μία όχθη να υπάρχουν ιεραπόστολοι, ο αριθμός των οποίων να είναι μικρότερος από τον αριθμό των κανιβάλων σε εκείνη την όχθη
N-Puzzle
N-Puzzle Έχουμε έναν πίνακα 4 x 4 (16 θέσεων). Η μία θέση του πίνακα είναι κενή ενώ στις άλλες υπάρχει κάποιος από τους αριθμούς 1 μέχρι 15. Ο κάθε αριθμός εμφανίζεται ακριβώς μία φορά. Στον πίνακα αυτόν επιτρέπονται οι μετακινήσεις των αριθμών με τον εξής τρόπο: ένας αριθμός μπορεί να μετακινηθεί μόνο οριζόντια ή κάθετα κατά μία θέση κάθε φορά εφόσον η θέση στην οποία θα μετακινηθεί ήταν προηγουμένως άδεια Δεδομένου μίας αρχικής διάταξης ζητείται να γίνουν οι κατάλληλες κινήσεις έτσι ώστε ο πίνακας να φτάσει στην τελική του μορφή
Ο κόσμος των κύβων
Ο κόσμος των κύβων Έχουμε πάνω σε ένα τραπέζι 3 κύβους ιδίου μεγέθους: Α, B, C. Αρχικά έχουμε τον κύβο C πάνω στον κύβο Α ενώ ο κύβος B βρίσκεται μόνος του πάνω στο τραπέζι. Κάθε φορά μπορούμε να μετακινήσουμε ένα μόνο κύβο και να τον τοποθετήσουμε πάνω στο τραπέζι ή πάνω σε κάποιο άλλο κύβο ο οποίος όμως δεν πρέπει να έχει άλλον κύβο πάνω του (πρέπει να είναι ο πάνω κύβος). Δεν μπορούμε να μετακινήσουμε τους κύβους που έχουν κάποιον άλλο κύβο πάνω τους. Ζητείται ένα σχέδιο κινήσεων έτσι ώστε να καταλήξουμε να έχουμε τον κύβο C πάνω στο τραπέζι, τον B πάνω στο C και τον Α πάνω στο Β.
Το πρόβλημα του πλανόδιου πωλητή
Το πρόβλημα του πλανόδιου πωλητή Έχουμε ένα σύνολο από πόλεις οι οποίες συνδέονται με διάφορους δρόμους μεταξύ τους. Για κάθε τέτοιο δρόμο ξέρουμε το μήκος του. Ένας πλανόδιος πωλητής θέλει να περάσει από όλες αυτές τις πόλεις. Ζητείται η σειρά με την οποία πρέπει να επισκεφτεί τις πόλεις ο πλανόδιος πωλητής έτσι ώστε από κάθε πόλη να περάσει ακριβώς μία φορά, να καταλήξει στην πόλη από την οποία ξεκίνησε και να κάνει τα ελάχιστα δυνατά χιλιόμετρα.
Επιλογή οδικής διαδρομής Δεδομένου ενός οδικού χάρτη που περιέχει πόλεις, δρόμους και χιλιομετρικές αποστάσεις για τους δρόμους, ζητείται να βρεθεί ο συντομότερος δρόμος που συνδέει δύο δεδομένες πόλεις.
Τα δώδεκα νομίσματα Μας δίνονται 12 νομίσματα ένα από τα οποία είναι κάλπικο. Στην διάθεση μας έχουμε μία ζυγαριά με την οποία μπορούμε να κάνουμε το πολύ 3 ζυγίσεις. Σε κάθε ζύγιση μπορούμε να συγκρίνουμε δύο ομάδες νομισμάτων και να δούμε ποια ομάδα είναι βαρύτερη ή αν οι δύο ομάδες έχουν το ίδιο βάρος. Ζητείται ένα σχέδιο ζυγίσεων το οποίο βρίσκει σε κάθε περίπτωση ποιο είναι το κάλπικο νόμισμα.
Οι οχτώ βασίλισσες Έχουμε μία άδεια σκακιέρα και 8 βασίλισσες. Ζητείται να τοποθετήσουμε τις βασίλισσες πάνω στην σκακιέρα έτσι ώστε καμία βασίλισσα να μην απειλεί κάποια άλλη. Αυτή είναι μία αποτυχημένη απόπειρα λύσης του προβλήματος: στην κυρίως λευκή διαγώνιο να υπάρχουν 2 βασίλισσες.
Περιγραφή προβλημάτων με χώρο καταστάσεων Κόσμος προβλήματος: Αποτελείται μόνον από τα αντικείμενα που υπάρχουν σε αυτόν, τις ιδιότητες των αντικειμένων και τις σχέσεις που τα συνδέουν. Άρα, είναι υποσύνολο του πραγματικού κόσμου. Κλειστός κόσμος (closed world). Τίποτα δεν εισάγεται ή εξάγεται από ή προς άλλο κόσμο. Ανοιχτός κόσμος (open world). Το αντίθετο του κλειστού. Κατάσταση προβλήματος: Κατάσταση ενός κόσμου είναι ένα στιγμιότυπο (instance) ή φωτογραφία (snapshot) μίας συγκεκριμένης χρονικής στιγμής της εξέλιξης του κόσμου. Χώρος καταστάσεων (state space ή domain space) ενός προβλήματος ονομάζεται το σύνολο όλων των έγκυρων καταστάσεων.
Περιγραφή προβλημάτων με χώρο καταστάσεων Τυπικά: Κατάσταση (state) ενός κόσμου είναι μία επαρκής αναπαράσταση του κόσμου σε μία δεδομένη χρονική στιγμή. Με τη λέξη «επαρκής» εννοείται ότι οι χαρακτηριστικές ιδιότητες μιας κατάστασης του κόσμου πρέπει να επιλεγούν με τέτοιο τρόπο ώστε διαφορετικές τιμές των ιδιοτήτων να αντικατοπτρίζουν τις πραγματικές διαφορές των στιγμιότυπων του κόσμου. Αυτό επιτυγχάνεται με τη λειτουργία της αφαίρεσης (abstraction), σύμφωνα με την οποία για να περιγραφεί μία κατάσταση αφαιρούνται όλες εκείνες οι λεπτομέρειες οι οποίες δεν είναι απαραίτητες για τη μετέπειτα επίλυση ενός προβλήματος.
Αρχικές και τελικές καταστάσεις Η αρχική (initial state) και τελική (final ή goal state) κατάσταση εκφράζουν το δεδομένο και το ζητούμενο αντίστοιχα. Ορισμός προβλήματος: Ένα πρόβλημα (problem) ορίζεται ως η τετράδα P = (I, G, T, S) όπου: είναι η αρχική κατάσταση, I S G είναι το σύνολο των τελικών καταστάσεων, G S T είναι το σύνολο των τελεστών μετάβασης, T: S S S είναι ο χώρος καταστάσεων
Παράδειγμα χώρου Κόσμος του προβλήματος: Τρεις κύβοι και ένα τραπέζι (επιφάνεια) Μια κατάσταση: Κύβος Α πάνω στον κύβο Β Κύβος Β πάνω στο Τ Κύβος Γ πάνω στο Τ Κύβος Α ελεύθερος Κύβος Γ ελεύθερος
Παράδειγμα χώρου
Τελεστές μετάβασης Οι καταστάσεις ενός κόσμου συνδέονται μεταξύ τους. Τελεστής μετάβασης (transition operator) ή ενέργεια (action) είναι η αντιστοίχιση μίας κατάστασης του κόσμου σε νέες καταστάσεις. Παράδειγμα: Στον κόσμο των κύβων, οι τελεστές μετάβασης είναι: Βάλε τον κύβο Α πάνω στον κύβο Γ. Βάλε τον κύβο Α πάνω στον κύβο Β. κλπ Επειδή δεν μπορεί να υπάρχει ένας τελεστής για κάθε περίπτωση, χρησιμοποιούμε μεταβλητές. Παράδειγμα: Βάλε κάποιον κύβο Χ πάνω σε κάποιον κύβο Υ. Επειδή όλες οι μεταβάσεις δεν είναι δυνατές (π.χ. στο προηγούμενο παράδειγμα, ο κύβος Β δεν μπορεί να πάει επάνω στον κύβο Γ). Υπάρχουν προϋποθέσεις εφαρμογής (preconditions) που πρέπει να τηρούνται για να εφαρμοστεί ένας τελεστής. Μια βασική προϋπόθεση είναι η κατάσταση που προκύπτει να είναι Έγκυρη (valid).
Λύση προβλήματος Λύση (Solution) σε ένα πρόβλημα (I, G, T, S), είναι μία ακολουθία από τελεστές μετάβασης t1, t2,...tn T με την ιδιότητα g = tn(...(t2(t1(i)))...), όπου g G. Δηλαδή λύση σε ένα πρόβλημα είναι η ακολουθία τελεστών που εφαρμόζονται στην αρχική κατάσταση για να προκύψει η τελική κατάσταση. Παράδειγμα: Η λύση στο πρόβλημα των κανιβάλων και ιεραποστόλων: Μετέφερε 1 ιεραπόστολο και 1 κανίβαλο από την αριστερή στη δεξιά όχθη Μετέφερε 1 ιεραπόστολο από τη δεξιά στην αριστερή όχθη Μετέφερε 2 κανίβαλους από την αριστερή στη δεξιά όχθη Μετέφερε 1 κανίβαλο από τη δεξιά στην αριστερή όχθη Μετέφερε 2 ιεραπόστολους από την αριστερή στη δεξιά όχθη Μετέφερε 1 ιεραπόστολο και 1 κανίβαλο από τη δεξιά στην αριστερή όχθη Μετέφερε 2 ιεραπόστολους από την αριστερή στη δεξιά όχθη Μετέφερε 1 κανίβαλο από τη δεξιά στην αριστερή όχθη Μετέφερε 2 κανίβαλους από την αριστερή στη δεξιά όχθη Μετέφερε 1 ιεραπόστολο από τη δεξιά στην αριστερή όχθη Μετέφερε 1 ιεραπόστολο και 1 κανίβαλο από την αριστερή στη δεξιά όχθη
Κατηγοριοποίηση προβλημάτων Τα προβλήματα μπορεί να κατηγοριοποιηθούν σε κατηγορίες, ανάλογα με την ερμηνεία που δίνεται στον όρο «λύση». Υπάρχουν προβλήματα στα οποία είναι πλήρως γνωστές οι τελικές καταστάσεις και επιδιώκεται η εύρεση μίας σειράς ενεργειών, η εκτέλεση των οποίων προκαλεί τη μετάβαση από την αρχική κατάσταση σε μία τελική όπως τα προβλήματα σχεδιασμού ενεργειών (planning) και τα προβλήματα πλοήγησης, στρατηγικής, εφοδιαστικής, κτλ. στο πρόβλημα N puzzle λύση είναι οι κινήσεις που έγιναν ώστε να διαμορφωθεί το τελικό puzzle Σε άλλα προβλήματα, είναι γνωστές κάποιες ιδιότητες μόνο της τελικής κατάστασης και επιδιώκεται η εύρεση ενός πλήρους στιγμιότυπου της τελικής κατάστασης όπως σε προβλήματα χρονοπρογραμματισμού (scheduling), παζλ, σταυρόλεξα, κρυπτογραφικά, κτλ. στο ωρολόγιο πρόγραμμα ενός σχολείου, ξεκινώντας από ένα κενό πρόγραμμα αναζητείται το πλήρες πρόγραμμα στο σταυρόλεξο, το πλήρες στιγμιότυπο της τελικής κατάστασης είναι όλες οι λέξεις τοποθετημένες στη σωστή τους θέση και αυτό αποτελεί τη λύση του τα προβλήματα αυτά είναι γνωστά ως προβλήματα ικανοποίησης περιορισμών (constraint satisfaction problems).
Κατηγορίες προβλημάτων Συνδυασμό των παραπάνω κατηγοριών αποτελούν τα προβλήματα στα οποία είναι γνωστές κάποιες ιδιότητες μόνο της τελικής κατάστασης και επιδιώκεται η εύρεση μίας πλήρως γνωστής τελικής κατάστασης και η σειρά ενεργειών που θα οδηγήσουν σε αυτή, όπως είναι τα προβλήματα διαμόρφωσης (configuration). Για παράδειγμα, στην κατασκευή ενός αυτοκινήτου βάσει κάποιων προδιαγραφών, ζητούμενο είναι όχι μόνο τα εξαρτήματα που θα συνθέσουν το αυτοκίνητο αλλά και η σειρά με την οποία θα τοποθετηθούν. Τέλος, υπάρχουν τα προβλήματα όπου είναι σχετικά εύκολο να βρεθούν λύσεις, αλλά το ζητούμενο είναι η βέλτιστη από αυτές. Για παράδειγμα, στο πρόβλημα του πλανόδιου πωλητή αναζητείται η συντομότερη διαδρομή που περνά από όλες τις πόλεις. Αυτά είναι τα λεγόμενα προβλήματα βελτιστοποίησης, στα οποία και πάλι η τελική κατάσταση δεν είναι πλήρως γνωστή αλλά είναι γνωστά κάποια χαρακτηριστικά της.
Επίλυση μέσω αναζήτησης Περιγραφή του προβλήματος ως πρόβλημα αναζήτησης Μοντελοποίηση καταστάσεων Μοντελοποίηση μεταβάσεων Ορισμός αρχικής κατάστασης Ορισμός μεθόδου αναγνώρισης τελικών καταστάσεων Επιλογή αλγορίθμου αναζήτησης
Γράφος καταστάσεων Περιγράφει των χώρο αναζήτησης και όλες τις δυνατές μεταβάσεις
Δέντρο αναζήτησης Το γενικό δέντρο αναζήτησης περιέχει όλα τα δυνατά μονοπάτια που μπορούν να ακολουθήσουν οι αλγόριθμοι αναζήτησης
Ιεραπόστολοι Κανίβαλοι σε γράφο καταστάσεων
Ιεραπόστολοι Κανίβαλοι σε δέντρο αναζήτησης
Επίλυση μέσω αναγωγής Μία ακολουθία από τελεστές ανάγουν την περιγραφή ενός προβλήματος σε υποπροβλήματα τα οποία είναι άμεσα επιλύσιμα, αρχέγονα (primitive problems). Για να μεταφερθούν n>1 δίσκοι από τον στύλο i στο στύλο k, πρέπει: να μεταφερθούν n-1 δίσκοι από το i στο j, να μεταφερθεί 1 δίσκος από το i στο k, να μεταφερθούν n-1 δίσκοι από το j στο k.
Επίλυση μέσω αναγωγής Η βασική δομή δεν είναι η κατάσταση αλλά η ίδια η περιγραφή του προβλήματος. Αντί για αρχική κατάσταση έχουμε Αρχική Περιγραφή. Αντί για τελεστή μετάβασης έχουμε τελεστή αναγωγής. Ένας Τελεστής Αναγωγής (reduction operator) ανάγει ένα πρόβλημα σε υποπροβλήματα. Αν δοθεί μια αρχική περιγραφή, μια ακολουθία από τελεστές αναγωγής μπορούν να το ανάγουν σε απλούστερα (αρχέγονα), δηλαδή άμεσα επιλύσιμα. Ορισμός προβλήματος Ένα πρόβλημα ορίζεται τυπικά ως η τετράδα P = (ID, GD, TR, PP) όπου ID είναι η αρχική περιγραφή GD είναι ένα σύνολο από τελικές περιγραφές TR είναι ένα σύνολο τελεστών αναγωγής και PP είναι ένα σύνολο από αρχέγονα προβλήματα
Επίλυση μέσω αναγωγής Δοθέντος ενός προβλήματος με περιγραφή στο χώρο καταστάσεων ή με αναγωγή, στόχος είναι να βρεθεί η λύση του. Η τυποποίηση της περιγραφής ενός προβλήματος διευκολύνει την επίλυσή του. Κατ αντιστοιχία, η τυποποίηση των βημάτων επίλυσης διευκολύνει την υλοποίηση του τρόπου επίλυσης σε ένα υπολογιστικό σύστημα. Η αυτοματοποίηση αυτή επιτυγχάνεται μέσω αυστηρά προκαθορισμένων βημάτων, δηλαδή αλγορίθμων, που πρέπει να εφαρμοστούν για να επιλυθεί ένα πρόβλημα. Επειδή οι αλγόριθμοι αυτοί αναζητούν τη λύση στο πρόβλημα ονομάζονται αλγόριθμοι αναζήτησης (search algorithms). Η επιλογή ενός αλγορίθμου αναζήτησης για ένα συγκεκριμένο πρόβλημα είναι σημαντική, διότι οι αλγόριθμοι αυτοί διαφέρουν μεταξύ τους σε αρκετά χαρακτηριστικά. Ο λόγος για την ύπαρξη τόσων αλγορίθμων είναι ότι κάθε ένας έχει διαφορετικά χαρακτηριστικά που τον καθιστούν περισσότερο ή λιγότερο αποδοτικό από άλλους, σε απαιτήσεις μνήμης ή/και χρόνου εκτέλεσης.
Χώρος καταστάσεων vs Αναγωγή Υπάρχουν αντιστοιχίες μεταξύ των δυο τρόπων περιγραφής προβλημάτων Τα προβλήματα μπορούν να αναπαρασταθούν με οποιονδήποτε από τους δυο τρόπους Συνήθως σε κάθε πρόβλημα ταιριάζει ο ένας από τους δυο τρόπους Η PROLOG βασίζεται στην αναγωγή
Χαρακτηριστικά αλγορίθμων Ένας αλγόριθμος είναι μία αυστηρά καθορισμένη ακολουθία βημάτων εντολών που επιδιώκει να λύσει ένα πρόβλημα. Δοθέντος ενός προβλήματος P=(I,G,T,S) και μετά την εφαρμογή κάποιου αλγορίθμου στο χώρο αναζήτησής του, προκύπτει το επιλυμένο πρόβλημα (solved problem), το οποίο ορίζεται ως μία τετράδα Ps=(V,A,F,Gs), όπου: V είναι το σύνολο των καταστάσεων που εξέτασε ο αλγόριθμος αναζήτησης, A είναι ο αλγόριθμος που χρησιμοποιήθηκε, F είναι το σύνολο των λύσεων που βρέθηκαν, και Gs είναι το σύνολο των τελικών καταστάσεων που εξετάστηκαν. Ο πληθάριθμος του V (ο αριθμός των καταστάσεων που περιέχει) και η σχέση του με το χώρο καταστάσεων S ενός προβλήματος και τον χώρο αναζήτησης SP, είναι ένα από τα χαρακτηριστικά της αποδοτικότητας του αλγορίθμου.
Χαρακτηριστικά αλγορίθμων Ένας αλγόριθμος ονομάζεται εξαντλητικός (exhaustive) όταν το σύνολο των καταστάσεων που εξετάζει ο αλγόριθμος για να βρει τις απαιτούμενες λύσεις είναι ίσο με το χώρο αναζήτησης, δηλαδή V=SP. Ένας αλγόριθμος δεν λύνει πάντα κάποιο πρόβλημα, έστω και αν υπάρχει κάποια λύση. Τότε τα σύνολα Gs και F είναι κενά. Ένας αλγόριθμος αναζήτησης ονομάζεται πλήρης (complete) αν εγγυάται ότι θα βρει μία λύση για οποιαδήποτε τελική κατάσταση, αν τέτοια λύση υπάρχει. Σε αντίθετη περίπτωση, ο αλγόριθμος ονομάζεται μη πλήρης (incomplete). Μία λύση ονομάζεται βέλτιστη (optimal) αν οδηγεί στην καλύτερη, σύμφωνα με τη διάταξη, τελική κατάσταση. Όταν δεν υπάρχει διάταξη, μία λύση ονομάζεται βέλτιστη αν είναι η συντομότερη (shortest). Ένας αλγόριθμος αναζήτησης καλείται αποδεκτός (admissible) αν εγγυάται ότι θα βρει τη βέλτιστη λύση, αν μια τέτοια λύση υπάρχει.
Αλγόριθμοι αναζήτησης
Διαδικασία επιλογής αλγορίθμου Η επιλογή ενός αλγορίθμου βασίζεται στα εξής κριτήρια: αριθμός των καταστάσεων που αυτός επισκέπτεται δυνατότητα εύρεσης λύσεων εφόσον αυτές υπάρχουν αριθμός των λύσεων ποιότητα των λύσεων αποδοτικότητά του σε χρόνο αποδοτικότητά του σε χώρο (μνήμη) ευκολία υλοποίησής του Στα κριτήρια αυτά εντάσσεται και η έννοια του κλαδέματος ή αποκοπής καταστάσεων (pruning) του χώρου αναζήτησης. Κλάδεμα ή αποκοπή καταστάσεων (pruning) του χώρου αναζήτησης είναι η διαδικασία κατά την οποία ο αλγόριθμος απορρίπτει, κάτω από ορισμένες συνθήκες, κάποιες καταστάσεις και μαζί με αυτές όλο το υποδένδρο που εκτυλίσσεται κάτω από τις καταστάσεις αυτές.
Χώρος αναζήτησης Δοθέντος ενός προβλήματος (I,G,T,S), χώρος αναζήτησης (search space) SP είναι το σύνολο όλων των καταστάσεων που είναι προσβάσιμες από την αρχική κατάσταση. Μία κατάσταση s ονομάζεται προσβάσιμη (accessible) αν υπάρχει μια ακολουθία τελεστών μετάβασης t1,t2,...tk T τέτοια ώστε s=tk(...(t2(t1(i)))...). O χώρος αναζήτησης είναι υποσύνολο του χώρου καταστάσεων, δηλαδή SP S. Ο χώρος αναζήτησης μπορεί να αναπαρασταθεί με γράφο. Είναι πάντα εφικτό να μετατραπεί ο γράφος σε δένδρο αναζήτησης (search tree), το οποίο όμως μπορεί να έχει μονοπάτια απείρου μήκους.
Χώρος αναζήτησης ως δέντρο Ο παράγοντας διακλάδωσης (branching factor) εκφράζει τον αριθμό των καταστάσεων που προκύπτουν από μία άλλη κατάσταση.
Χώρος αναζήτησης ως δέντρο Το φαινόμενο της εκθετικής αύξησης του αριθμού των κόμβων του δένδρου ονομάζεται συνδυαστική έκρηξη (combinatorial explosion).
Γενικός αλγόριθμος αναζήτησης Μέτωπο της αναζήτησης (search frontier) ενός αλγορίθμου είναι το διατεταγμένο σύνολο (λίστα) των καταστάσεων που ο αλγόριθμος έχει ήδη επισκεφτεί, αλλά δεν έχουν ακόμη επεκταθεί. Κλειστό σύνολο (closed set) ενός αλγορίθμου αναζήτησης είναι το σύνολο όλων των καταστάσεων που έχουν ήδη επεκταθεί από τον αλγόριθμο. Με έναν απλό έλεγχο, αν η κατάσταση προς επέκταση ανήκει ήδη στο κλειστό σύνολο, αποφεύγονται οι βρόχοι (loops).
Γενικός αλγόριθμος αναζήτησης
Γενικός αλγόριθμος αναζήτησης (ψευδοκώδικας)
Αλγόριθμοι Τυφλής Αναζήτησης Οι αλγόριθμοι τυφλής αναζήτησης (blind search algorithms) εφαρμόζονται σε προβλήματα στα οποία δεν υπάρχει πληροφορία που να επιτρέπει την αξιολόγηση των καταστάσεων του χώρου αναζήτησης.
Αναζήτηση Πρώτα σε Βάθος Ο αλγόριθμος πρώτα σε βάθος (Depth-First Search - DFS) επιλέγει προς επέκταση την κατάσταση που βρίσκεται πιο βαθιά στο δέντρο.
Αναζήτηση Πρώτα σε Βάθος (ψευδοκώδικας)
Αναζήτηση Πρώτα σε Βάθος (σχόλια) Το μέτωπο της αναζήτησης είναι μια δομή στοίβας (Stack LIFO, Last In First Out). Η εξέταση αμέσως προηγουμένων (χρονικά) καταστάσεων ονομάζεται χρονική οπισθοδρόμηση (chronological backtracking). Πλεονεκτήματα: Έχει μικρές απαιτήσεις σε χώρο διότι το μέτωπο της αναζήτησης δε μεγαλώνει πάρα πολύ. Μειονεκτήματα: Δεν εγγυάται ότι η πρώτη λύση που θα βρεθεί είναι η βέλτιστη (μονοπάτι με το μικρότερο μήκος ή με μικρότερο κόστος). Εν γένει θεωρείται ατελής (αν δεν υπάρχει έλεγχος βρόχων ή αν ο χώρος αναζήτησης είναι μη πεπερασμένος).
Αναζήτηση Πρώτα σε Βάθος
Αναζήτηση Πρώτα σε Πλάτος Ο αλγόριθμος αναζήτησης πρώτα σε πλάτος (Breadth First Search - BFS) εξετάζει πρώτα όλες τις καταστάσεις που βρίσκονται στο ίδιο βάθος και μετά συνεχίζει στην επέκταση καταστάσεων στο αμέσως επόμενο επίπεδο.
Αναζήτηση Πρώτα σε Πλάτος (ψευδοκώδικας)
Αναζήτηση Πρώτα σε Πλάτος (σχόλια) Το μέτωπο της αναζήτησης είναι μια δομή ουράς (Queue FIFO, δηλαδή First In First Out). Πλεονεκτήματα: Βρίσκει πάντα την καλύτερη λύση (μικρότερη σε μήκος). Είναι πλήρης. Μειονεκτήματα: Το μέτωπο της αναζήτησης μεγαλώνει πολύ σε μέγεθος.
Αναζήτηση Πρώτα σε Πλάτος
Αναζήτηση Πρώτα σε Πλάτος
Αλγόριθμος Επαναληπτικής Εκβάθυνσης Ο αλγόριθμος επαναληπτικής εκβάθυνσης (Iterative Deepening - ID) συνδυάζει με τον καλύτερο τρόπο τους DFS και BFS.
Αλγόριθμος Επαναληπτικής Εκβάθυνσης (σχόλια) Μειονεκτήματα: Όταν αρχίζει ο DFS με διαφορετικό βάθος δε θυμάται τίποτα από την προηγούμενη αναζήτηση. Πλεονεκτήματα: Είναι πλήρης. Αν το βάθος αυξάνεται κατά 1 σε κάθε κύκλο και ο ID βρει λύση, τότε αυτή η λύση θα είναι η καλύτερη.
Αναζήτηση Διπλής Κατεύθυνσης Η ιδέα της αναζήτησης διπλής κατεύθυνσης (Bidirectional Search - BiS) πηγάζει από τη δυνατότητα του παραλληλισμού (parallelism) στα υπολογιστικά συστήματα. Προϋποθέσεις κάτω από τις οποίες μπορεί να εφαρμοστεί: Οι τελεστές μετάβασης είναι αντιστρέψιμοι (reversible). Είναι πλήρως γνωστή η τελική κατάσταση. Μειονεκτήματα: Υπάρχει επιπλέον κόστος που οφείλεται στην επικοινωνία μεταξύ των δύο αναζητήσεων.
Αλγόριθμος Επέκτασης και Οριοθέτησης Ο αλγόριθμος επέκτασης και οριοθέτησης (Branch and Bound - B&B) εφαρμόζεται σε προβλήματα όπου αναζητείται η βέλτιστη λύση, δηλαδή εκείνη με το ελάχιστο κόστος. Η λειτουργία του Β&Β βασίζεται στο κλάδεμα καταστάσεων (pruning) και κατά συνέπεια στην ελάττωση του χώρου αναζήτησης.
Αλγόριθμος Επέκτασης και Οριοθέτησης
Αλγόριθμος Επέκτασης και Οριοθέτησης (ψευδοκώδικας)
Αλγόριθμος Επέκτασης και Οριοθέτησης (σχόλια) Ο B&B μπορεί να συνδυαστεί με δυναμικό προγραμματισμό (dynamic programming), όπου το κλάδεμα δε γίνεται μόνο σε σύγκριση με το τρέχον όριο, δηλαδή τη βέλτιστη λύση μέχρι εκείνη τη στιγμή, αλλά γίνεται και για κάθε κατάσταση που είναι περιττή.
Εφαρμογή των Αλγορίθμων Τυφλής Αναζήτησης Το πρόβλημα του Λαβύρινθου Ορισμός: Αρχική κατάσταση είναι η θέση με συντεταγμένες (1,4). Το σύνολο τελικών καταστάσεων περιέχει μόνο τη θέση (15,10). Οι τελεστές μεταφοράς είναι οι εξής: πήγαινε μία θέση αριστερά, πήγαινε μία θέση επάνω, πήγαινε μία θέση δεξιά, πήγαινε μία θέση κάτω, εφόσον η θέση είναι ελεύθερη. Ο χώρος καταστάσεων είναι όλες οι ελεύθερες θέσεις, χωρίς εμπόδια, του πλέγματος.
Εφαρμογή του αλγορίθμου DFS
Εφαρμογή του αλγορίθμου BFS
Εφαρμογή του αλγορίθμου ID