Τεχνητή Νοημοσύνη 06 Αλγόριθμοι Αναζήτησης σε Παίγνια Δύο Αντιπάλων Εισαγωγικά (1/3) Τα προβλήματα όπου η εξέλιξη των καταστάσεων εξαρτάται από δύο διαφορετικά σύνολα τελεστών μετάβασης που εφαρμόζονται εναλλάξ, αναφέρονται και ως ανταγωνιστικά παίγνια ή παίγνια δύο αντιπάλων (adversary ή two-person games) όρος "παίγνιο" αφορά την περιγραφή του τρόπου με τον οποίο παίζεται το παιχνίδι και περιλαμβάνει: τα αντικείμενα που υπάρχουν (για παράδειγμα, τα πούλια, το ταμπλό, κτλ.) καθώς και το σύνολο των κανόνων που το διέπουν. Αντίθετα, με τον όρο "παιχνίδι" χαρακτηρίζεται μία συγκεκριμένη παρτίδα του παιγνίου. Φώτης Κόκκορας Τμ.Τεχν/γίας Πληροφορικής & Τηλ/νιών - ΤΕΙ Λάρισας Φώτης Κόκκορας 2 Εισαγωγικά (2/3) Το πρόβλημα ορίζεται ως εξής: Μια κατάσταση παριστάνει τη διάταξη των πιονιών σε κάποια χρονική στιγμή. χώρος καταστάσεων αποτελείται από όλες αυτές τις πιθανές επιτρεπτές καταστάσεις. ι τελεστές μετάβασης είναι οι επιτρεπτές κινήσεις (κανόνες του παιχνιδιού). ι τελικές καταστάσεις έχουν γνωστά χαρακτηριστικά (π.χ. ματ στο σκάκι). Έστω ότι είναι η σειρά κάποιου να κάνει μία κίνηση. Αν θέλει να κερδίσει, θα επιδιώξει να κάνει την καλύτερη κίνηση για αυτόν, η οποία αντίστοιχα θα είναι και η χειρότερη για τον αντίπαλο. τρόπος που σκέφτεται είναι ο εξής: "Αν κάνω αυτή την κίνηση, τότε ο αντίπαλος θα κάνει εκείνη, αν όμως κάνω την άλλη κίνηση, τότε θα κάνει αυτήν,..." κ.ο.κ. συλλογισμός αυτός αντιστοιχεί στη δημιουργία ενός δένδρου (δένδρο του παιχνιδιού - game tree). Φώτης Κόκκορας 3 Εισαγωγικά (3/3) ι κινήσεις δύο διαδοχικών επιπέδων ανήκουν σε διαφορετικό παίκτη, γιατί οι παίκτες παίζουν εναλλάξ. Έστω ότι ένας από τους δύο αντιπάλους είναι ο υπολογιστής. Το πρόγραμμα αναζήτησης πρέπει να Δέντρο Αναζήτησης σε Παίγνιο 2 Αντιπάλων εξετάσει όλες τις πιθανές κινήσεις που παράγονται από μία (αρχική) κατάσταση. Ένα τέτοιο πρόγραμμα μπορεί να "δει" πλήρως μέχρι και 10 κινήσεις εμπρός, ο μέσος άνθρωπος 2 ή 3 ενώ ένας καλός σκακιστής λίγο παραπάνω. Παραδόξως, οι διαφορές αυτές επί πολλά χρόνια δεν αρκούσαν για να κάνουν ένα καλό πρόγραμμα καλύτερο σκακιστή από τον άνθρωπο. Συνέβη βέβαια το 07. Η ανωτερότητα των ανθρώπων-παικτών οφειλόταν στους εξής παράγοντες: ι άνθρωποι επιλέγουν με κάποιον ευριστικό τρόπο τις εναλλακτικές κινήσεις. ι άνθρωποι διαθέτουν κάποια διαίσθηση για την κατάληξη του παιχνιδιού. Με την εμπειρία που αποκτούν, μπορούν να σκέφτονται πολλές φορές εντελώς μηχανικά, ιδίως στα πρώτα και τελευταία στάδια του παιχνιδιού ("ανοίγματα", "τελειώματα"). το ίδιο βέβαια κάνουν πλέον και οι Η/Υ Φώτης Κόκκορας 4 παίχτης 1 παίχτης 2 παίχτης 1 παίχτης 2
Αλγόριθμος i (1/3) Δεδομένης μίας κατάστασης του παιχνιδιού, ο αλγόριθμος αναζήτησης ελαχίστου - μεγίστου (i-) καλείται να αποφασίσει ποια θα είναι η επόμενη κίνησή του, έναντι του αντιπάλου. ο αλγόριθμος ζητάει την καλύτερη από τις επιτρεπτές κινήσεις το πόσο καλή είναι προκύπτει κοιτώντας "μερικές" κινήσεις στο μέλλον Η εξαντλητική αναζήτηση των δένδρων αναζήτησης είναι ανέφικτη. Δεν είναι εφικτό να δει ο αλγόριθμος πολλές κινήσεις μπροστά το δένδρο αναζήτησης γίνεται ασύλληπτα μεγάλο! Το ζητούμενο είναι: να χτιστεί το δένδρο μέχρι κάποιο βάθος, να βρεθεί μια "καλή" κατάσταση (εξέλιξη της παρτίδας) σε αυτό το βάθος που εγγυημένα, (ακόμη κι αν ο αντίπαλος παίξει τέλεια) σε χειρότερή της δεν θα βρεθούμε. Το πόσο καλή είναι μια κατάσταση δίνεται από μία συνάρτηση αξιολόγησης (evaluation function) που εφαρμόζεται στα φύλλα του δένδρου του παιχνιδιού. ένας παίκτης (πρόγραμμα ή άνθρωπος) ονομάζεται και ο άλλος (άλλο πρόγραμμα ή άνθρωπος) ονομάζεται. Για απλότητα, αυτός που παίζει είναι πάντα ο (γιατί θέλει να κερδίσει)! Φώτης Κόκκορας Αλγόριθμος i Ψευδογλώσσα 0. Ανέπτυξε το δένδρο αναζήτησης σε βάθος ανάλογα με τη δυνατότητα που υπάρχει και ονόμασε εναλλάξ τα επίπεδα και, ξεκινώντας από τη ρίζα που είναι (γιατί αυτός που παίζει θέλει να μεγιστοποιήσει το όφελός του). 1. Εφάρμοσε τη συνάρτηση αξιολόγησης σε όλους τους κόμβους-φύλλα του δένδρου. 2. Έως ότου η ρίζα του δένδρου αποκτήσει τιμή, επανέλαβε: 3. Αρχίζοντας από τα φύλλα του δένδρου και προχωρώντας προς τη ρίζα, μετέφερε τις τιμές προς τους ενδιάμεσους κόμβους του δένδρου ως εξής: i. Η τιμή κάθε κόμβου σε επίπεδο είναι η μέγιστη (imum) των τιμών των κόμβων-παιδιών του. ii. Η τιμή κάθε κόμβου σε επίπεδο είναι η ελάχιστη (imum) των τιμών των κόμβων-παιδιών του. 4. Καλύτερη κίνηση είναι η κίνηση που οδηγεί στον κόμβο που έδωσε την πιο συμφέρουσα τιμή στη ρίζα ΠΡΣΗ: η υλοποίηση του αλγορίθμου είναι αρκετά διαφορετική καθώς το δένδρο αναπτύσσεται με DFS τρόπο και η ανάπτυξη μαζί με τις επιμέρους λειτουργίες (αξιολόγηση καταστάσεων-φύλλα) γίνονται ταυτόχρονα. Φώτης Κόκκορας 6 Αλγόριθμος i (2/3) Σχόλια Αξιολόγηση τερματικών καταστάσεων Αλγόριθμος i (3/3) αλγόριθμος εγγυάται την πιο συμφέρουσα εξέλιξη μετά από κάποιες κινήσεις, έστω και αν ο αντίπαλος διαλέγει τις καλύτερες για αυτόν κινήσεις. Κατά σύμβαση, ο παίκτης που έχει σειρά να παίξει βρίσκεται στη ρίζα και θεωρείται πως είναι ο (αφού θέλει να κερδίσει!). ι καταστάσεις-φύλλα ονομάζονται τερματικές καταστάσεις, όμως δεν είναι απαραίτητα τελικές καταστάσεις. Συνήθως έχουμε σταματήσει την ανάπτυξη του δένδρου για υπολογιστικούς λόγους (αδυναμία χειρισμού περισσοτέρων καταστάσεων λόγω μνήμης ή χρόνου). ι τιμές των τερματικών καταστάσεων υπολογίζονται από τη συνάρτηση αξιολόγησης ενώ οι άλλες προκύπτουν από τη διάδοση αυτών. Φώτης Κόκκορας 7 00-9 9 18-3 -7 για τον για τον για τον Απόφαση για την καλύτερη κίνηση 2 9 2 2 00-9 2 00-9 9 18 9 2 00-9 9 18 9 18 9-3 -7-3 -7-3 -7 (-7, ) (, ) (2,, ) Από τις 3 κινήσεις που μπορεί να γίνουν, ο αλγόριθμος προτείνει τη μεσαία γιατί σε βάθος 3 αυτό είναι το () που μπορεί εγγυημένα να μας εξασφαλίσει, θεωρώντας ότι ο αντίπαλος παίζει τέλεια. Αν παίξουμε την αριστερή ή την δεξιά κίνηση, στη χειρότερη θα βρεθούμε σε κατάσταση κόστους 00 ή -7 αντίστοιχα, τα οποία είναι χειρότερα από το. Φώτης Κόκκορας 8
Αλγόριθμος i στην Τρίλιζα (1/2) Η τρίλιζα έχει μικρό χώρο αναζήτησης (9! καταστάσεις). Αλγόριθμος i στην Τρίλιζα (2/2) Μία συνάρτηση αξιολόγησης στην τρίλιζα θα μπορούσε να είναι η: 3 2 + 1 (3 2 + 1 ) 2 ο αριθμός γραμμών, στηλών ή διαγωνίων με δύο και χωρίς κανένα. 1 ο αριθμός γραμμών, στηλών ή διαγωνίων με ένα και χωρίς κανένα. 2 ο αριθμός γραμμών, στηλών ή διαγωνίων με δύο και χωρίς κανένα. 1 ο αριθμός γραμμών, στηλών ή διαγωνίων με ένα και χωρίς κανένα. Ένα σε σειρά Δύο σε διαγώνιο Δύο σε στήλη Δύο σε στήλη 3 2 + 1 (3 2 + 1 ) = 3 2+1 (3 1+0) = 4 Φώτης Κόκκορας 9 Φώτης Κόκκορας 10 Εφαρμογή αλγορίθμου i στο σκάκι Το κύριο μέλημα των προγραμμάτων σκάκι είναι να αναπτύξουν το δένδρο του παιχνιδιού σε όσο το δυνατόν μεγαλύτερο βάθος. Μία συνάρτηση αξιολόγησης στο σκάκι Υπεροχή κομματιών: π.χ. Βασιλιάς=10, Άλογο=, Πιόνι=1 κλπ. Η αξία όλων των κομματιών κάθε χρώματος προστίθεται. Υπεροχή θέσης: π.χ. κάθε κομμάτι που βρίσκεται στα 4 κεντρικά τετράγωνα παίρνει επιπλέον 2 πόντους. Απειλές: π.χ. για κάθε απειλή που προβάλει ένας παίκτης παίρνει 3 επιπλέον πόντους, εκτός αν απειλεί το βασιλιά του άλλου παίκτη, οπότε παίρνει πόντους. Βασιλιάς Άλογο Αλγόριθμος i στο Σκάκι Τερματικές καταστάσεις 8 6 10 7 4 9 1 12-8 3 6-2 9 10 13 17 3 1 6 Αξιολόγηση Τερματικών Καταστάσεων Καλύτερη κίνηση 4 Πιόνι 4-8 -2 1 Εφαρμογή (σε βάθος μόνο 2) στο ακόλουθο slide: Φώτης Κόκκορας 11 8 6 10 7 4 9 1 12-8 3 6-2 9 10 13 17 3 1 6 Μετατόπιση τιμών προς τη ρίζα του δένδρου Φώτης Κόκκορας 12
Αλγόριθμος Alpha-Beta Άλφα-Βήτα (Alpha-Beta - ΑΒ) είναι βελτιστοποίηση του i. Αποφεύγει τη δημιουργία κάποιων υποδένδρων (και την αξιολόγηση κάποιων καταστάσεων). Πρακτικά δεν έχουμε κλάδεμα αλλά μη-δημιουργία κάποιων υποδένδρων που φτιάχνει ο i. Το κριτήριο είναι να προκύψει κάποιο από τα ακόλουθα υποδένδρα (λεπτομερής επεξήγηση στη συνέχεια): Παράδειγμα i vs. Alpha-Beta (1/2) Έστω το game-tree του σχήματος. Τι πρέπει να παίξει ο ; Καταρχήν, και οι δύο αλγόριθμοι δημιουργούν το δένδρο με τρόπο "DFS". Η ανάπτυξη κατά τρόπο " BFS" έχουμε δει ότι έχει μεγαλύτερες απαιτήσεις σε μνήμη και επιπλέον περιορίζει τα όποια οφέλη μπορεί να δώσει λόγο "κλαδέματος", ο alpha-beta. Όταν λέμε ότι ο alpha-beta "κλαδεύει", πρακτικά εννοούμε ότι δεν χρειάζεται να κατασκευάσει κάποιο τμήμα του δένδρου που ο i κατασκευάζει. ΠΡΣΗ: το δένδρο κατασκευάζεται σταδιακά (DFS-like δεν κατασκευάζεται όλο και μετά συντελείται πάνω του κάποιο κλάδεμα!). 4 a α-κλάδεμα b V 1α=4 V 1>V 2 2 c d V 1β=4 V 1<V 2 e f V 2α=2 g ΠΡΣΗ: Το κλάδεμα στον Alpha-Beta είναι αντικειμενικό (δηλαδή δε βασίζεται σε ευρετικό μηχανισμό). Δεν υπάρχει περίπτωση να κλαδέψει πιο συμφέρουσα κατάσταση! i 1 4 j k V 2β= l β-κλάδεμα m n 2 1 o p Φώτης Κόκκορας 13 Φώτης Κόκκορας 14 Παράδειγμα i vs. Alpha-Beta (2/2) Στο σχήμα απεικονίζεται όλο το δένδρο που κατασκευάζει σταδιακά ο i. Δεδομένου ότι ο i δεν κλαδεύει, θα χρειαστεί να φτιάξει ολόκληρο το δένδρο και να αξιολογήσει όλες (8) τις καταστάσεις-φύλλα του (i, j, k,..., p). alpha-beta, φτιάχνοντας σταδιακά το δένδρο με DFS τρόπο και αξιολογώντας όπου είναι εφικτό (πχ τα i, j, k μπορεί να αξιολογηθούν άμεσα, το d μέσω i): θα εντοπίσει το υποδένδρο του β-κλαδέματος (κόμβοι b, d, e, k - η εκτίμηση για τον d (4) είναι μικρότερης αυτής για τον k ()) και δεν θα δημιουργήσει (και αξιολογήσει) καθόλου τον κόμβο l θα εντοπίσει το υποδένδρο του α-κλαδέματος (κόμβοι a, b, c, f η εκτίμηση για τον b (4) είναι μεγαλύτερη αυτής για τον f (2)) και δεν θα δημιουργήσει καθόλου (και προφανώς ούτε θα αξιολογήσει) τους κόμβους g, o και p. Σημείωση: το παράδειγμα περιλαμβάνει χρήση και των δύο κριτηρίων κλαδέματος. Μέσα σε διακεκομμένες καμπύλες γραμμές επισημαίνονται οι δύο περιπτώσεις. Επομένως στο παράδειγμα: ο i παράγει 14 κόμβους και αξιολογεί 8 (όλα τα φύλλα του δένδρου), ο alpha-beta παράγει 10 κόμβους και αξιολογεί (τα φύλλα i, j, k, m, n) ΑΡΑ ο πρέπει να παίξει την κίνηση που από την κατάσταση a τον πάει στην b, καθώς από την b έρχεται το 4 που υπολογίζει ο alpha-beta για τον a. Φώτης Κόκκορας 1 Γιατί το "κλάδεμα" alpha-beta είναι αντικειμενικό; i d 1 4 V 1β=4 j b V 1<V 2 V 1α=4 k V 2β= e Το β-κλάδεμα είναι αντικειμενικό να γιατί δεν πρέπει να φτιαχτεί ο κόμβος l: Αν ο l είχε αξιολόγηση < που έχει ο k, τότε θα ανέβαινε πάνω η αξιολόγηση του k. Αν ο l είχε αξιολόγηση >, θα ανέβαινε μεν αυτός πάνω αλλά απέναντι στον d (που έχει αξιολόγηση μικρότερη του k) δεν θα έχει καμιά τύχη να ανέβει παραπάνω. Το α-κλάδεμα είναι αντικειμενικό να γιατί δεν πρέπει να φτιαχτούν οι g, o, p: Αν ο g είχε αξιολόγηση >2 που έχει ο f, τότε θα ανέβαινε πάνω η εκτίμηση του f. Αν ο g είχε αξιολόγηση <2, θα ανέβαινε μεν αυτός πάνω αλλά απέναντι στον b (που έχει αξιολόγηση μεγαλύτερη του f) δεν θα έχει καμιά τύχη να ανέβει παραπάνω. 4 l Φώτης Κόκκορας 16 a β-κλάδεμα V 1>V 2 m f 2 n 2 1 V 2α=2 c α-κλάδεμα o g p
Σύγκριση του AB με τον i ΑΒ εξετάζει περίπου N τερματικούς κόμβους......όπου Ν είναι οι τερματικοί κόμβοι που εξετάζει ο αλγόριθμος i. Το Πρόβλημα του ρίζοντα (Horizon Effect) Τι είναι: όταν επιλέγεται κίνηση που είναι μεν η πιο συμφέρουσα στο βάθος που εξετάζει/βλέπει ο αλγόριθμος (ορίζοντας), αλλά μετά μας οδηγούν σε δεινή θέση. Η απόδοσή του ΑΒ βελτιώνεται περεταίρω με διάφορες μεθόδους, όπως: επιπλέον κλάδεμα του δένδρου του παιχνιδιού με ευριστικούς μηχανισμούς χρήση δυναμικής, αντί στατικής, συνάρτησης αξιολόγησης αποθήκευση τιμών αξιολόγησης των τερματικών καταστάσεων (transposition tables) ώστε να μη χρειάζεται να υπολογιστούν χρήση προκαθορισμένων κινήσεων (χωρίς αναζήτηση) σε αρχικές και τελικές φάσεις του παιχνιδιού (ανοίγματα/openings, τελειώματα/end game moves). Φώτης Κόκκορας 17 Στο σχήμα, το βάθος εξέτασης επιτρέπει να ειδωθούν έγκαιρα οι απώλειες κομματιών (λευκοί κύκλοι) και να αποφευχθούν. Η πορεία όμως που επιλέγεται οδηγεί αργότερα (πέρα από τον ορίζοντα) σε δυσβάσταχτη απώλεια! Αντιμετώπιση: αντιμετωπίζεται μερικώς με ανιχνευτές (scouts), δηλαδή, τοπικά γίνεται έλεγχος πέραν του ορίζοντα, μήπως και εντοπιστεί ότι ακολουθούν τέτοιες (κακές) καταστάσεις, ώστε να επιλεγεί άλλο μονοπάτι. Φώτης Κόκκορας 18