Θ.Ε. ΠΛΗ31 (2005-6) ΓΡΑΠΤΗ ΕΡΓΑΣΙΑ #1 Στόχος Η εργασία επικεντρώνεται σε θέματα προγραμματισμού για Τεχνητή Νοημοσύνη και σε πρακτικά θέματα εξάσκησης σε Κατηγορηματική Λογική. Θέμα 1: Απλές Αναζητήσεις Το παιχνίδι των σπίρτων ανάμεσα σε δύο παίκτες, Α και Β, που εναλλάσσονται ως προς τη σειρά με τον Α να ξεκινάει, παίζεται ως εξής: από ένα σωρό σπίρτων, ο παίκτης που έχει σειρά αφαιρεί 1, 2 ή 3 σπίρτα, με μία κίνηση. Αυτός που αφαιρεί το τελευταίο σπίρτο χάνει. Σημείωση: Το παραπάνω πρόβλημα ανήκει στην κατηγορία προβλημάτων που ονομάζονται παίγνια δύο παικτών ή με αντίπαλο (two-players or adversary games). Στα προβλήματα αυτά απαιτούνται δύο σύνολα τελετών δράσης, ένα για κάθε παίκτη. Γι αυτό, για τα προβλήματα αυτά υπάρχουν ειδικοί αλγόριθμοι (δηλ. τρόποι αναζήτησης), όπως οι Alpha-Beta και Minimax. Όμως, ιδιαίτερα σε απλά προβλήματα, όπως το παραπάνω, μπορούν να εφαρμοστούν και οι αλγόριθμοι αναζήτησης ενός παίκτη (ή λύτη), όπως αυτοί που παρουσιάζονται στο Κεφ. 2 του Τόμου Α. Στην περίπτωση αυτή, θεωρούμε ότι σε κάθε επίπεδο του παραγόμενου δένδρου εφαρμόζονται οι τελεστές του ενός παίκτη, αυτού που είναι η σειρά του να παίξει, και θα πρέπει στην αναπαράσταση μιας κατάστασης να λάβουμε υπ όψιν τον τρέχοντα παίκτη. Θέμα 1α. Δημιουργία χώρου αναζήτησης Ο αρχικός σωρός περιέχει 7 σπίρτα. 1. Βρείτε ένα τρόπο αναπαράστασης μιας κατάστασης. 2. Προσδιορίστε τους τελεστές δράσης. 3. Σχεδιάστε πλήρως ένα δένδρο αναζήτησης του προβλήματος. Η γραμμή πάνω από ένα γράμμα (Α ή Β) υποδηλώνει ότι ο αντίστοιχος παίχτης κερδίζει. Εναλλακτικά θα χρησιμοποιούμε το συμβολισμό Α για το νικητή (Α). Η αναγραφή μίας κατάστασης σε κύκλο υποδηλώνει ότι έχει αναπτυχθεί πλήρως σε άλλο σημείο του σχήματος. Παρατηρείστε ότι η πλήρης σχεδίαση του δέντρου αναζήτησης απαντά τα ερωτήματα περί αναπαράστασης κατάστασης και περί τελεστών δράσης.
Θέμα 1β. Αναζήτηση-κατά-βάθος 1. Αν εφαρμόσετε αναζήτηση-κατά-βάθος στο δένδρο που σχεδιάσατε, ποιος είναι ο αριθμός των μεταβάσεων μέχρι να φτάσετε σε τελική κατάσταση; Πόσες διαφορετικές καταστάσεις επισκέπτεστε; 2. Το παραπάνω δένδρο μπορεί να κατασκευαστεί με διάφορους τρόπους, π.χ. αν αλλάζουμε τη σειρά εφαρμογής των τελεστών δράσης. Σχεδιάστε τα διαφορετικά δένδρα που προκύπτουν και βρείτε σε ποια περίπτωση από όλες έχουμε τον μικρότερο και σε ποια τον μεγαλύτερο αριθμό μεταβάσεων. (Στην απάντησή σας σχεδιάστε μόνο τα δέντρα που απαιτούνται για την απάντηση.) 1. Για το σχεδιασμένο δέντρο, χρειάζονται 3 μεταβάσεις και επισκεπτόμαστε 4 καταστάσεις (μονοπάτι: Α7, Β4, Α1, Β ) 2. Υπάρχουν 3 τελεστές δράσης, άρα υπάρχουν 6 διαφορετικοί τρόποι (προτεραιότητα, σειρά) εφαρμογής τους: 1-2-3, 1-3-2, 2-1-3, 2-3-1, 3-1-2, 3-2-1. Το δέντρο που σχεδιάστηκε παραπάνω υπονοεί τη χρήση της σειράς 3-2-1. Βεβαίως, και με χρήση της σειράς 3-1-2 πάλι 3 μεταβάσεις θα χρειαζόμασταν (με άλλο μονοπάτι). Αν «διαβάσουμε» το παραπάνω δέντρο από δεξιά προς αριστερά μας βολεύει στο να σκεφτούμε τη σειρά 1-2-3 που (επειδή η κατά-βάθος αναζήτηση αργεί επειδή «αφαιρεί» ένα σπίρτο τη φορά) για να μας φέρει σε τελική κατάσταση απαιτεί 7 μεταβάσεις και επισκέπτεται 8 καταστάσεις (μονοπάτι: Α7, Β6, Α5, Β4, Α3, Β2, Α1, Β ). Θέμα 1γ. Αναζήτηση-κατά-πλάτος (Είναι απόλυτα σκόπιμο να προσπαθήσετε να απαντήσετε στο θέμα 1γ αφού ασχοληθείτε με το 1β.) 1. Αν εφαρμόσετε αναζήτηση-κατά- πλάτος στο δένδρο που σχεδιάσατε, ποιος είναι ο αριθμός των μεταβάσεων μέχρι να φτάσετε σε τελική κατάσταση; Πόσες διαφορετικές καταστάσεις επισκέπτεστε; Απαντήστε για την περίπτωση του μικρότερου αριθμού μεταβάσεων. 2. Υπολογίστε το μεγαλύτερο αριθμό μεταβάσεων. 1. Για το σχεδιασμένο δέντρο, χρειάζονται 13 μεταβάσεις και επισκεπτόμαστε 10 διαφορετικές καταστάσεις (μονοπάτι: Α7, Β4, Β5, Β6, Α1, Α2, Α3, Α2, Α3, Α4, Α3, Α4, Α5, Β ) 2. Παρατηρούμε από το δέντρο ότι η πρώτη τελική κατάσταση που θα εντοπιστεί είναι η «αριστερότερα σχεδιασμένη» Β, την οποία όμως αυτή το φορά θα επισκεφτούμε τελευταία από όλες τις καταστάσεις του ίδιου επιπέδου. Άρα θα χρειαστούμε 3 + 3 x 3 + 3 x 3 x 3 = 39 μεταβάσεις για το παραπάνω δέντρο. 2. Παρατηρούμε από το δέντρο ότι η πρώτη τελική κατάσταση είναι αυτή που φαίνεται στο παρακάτω σχήμα (άρα έχουμε 3 για το 1 ο επίπεδο, 3 x 3 = 9 για το 2 ο επίπεδο και 3 + 3 + 3 = 9 για το 3 ο επίπεδο, σύνολο 21 μεταβάσεις):
Θέμα 1δ. Αναζήτηση με ευρετικό και Α* Έστω το ευρετικό «Επέλεξε την διαδρομή που μεγιστοποιεί τον αριθμό των σπίρτων που έχουν αφαιρεθεί». Ξεκινώντας από την αρχική κατάσταση και χρησιμοποιώντας τον Α*, με ποια σειρά επισκεπτόμαστε τους κόμβους του χώρου κατάστασης, μέχρι να φτάσουμε σε τελική κατάσταση; Η απάντησή σας πρέπει να τεκμηριώνεται με τις διαδοχικές τιμές που παίρνουν στα διάφορα σημεία εκτέλεσης του αλγορίθμου οι λίστες «Ανοικτές» και «Κλειστές» που αναφέρονται στις σελίδες 48 και 49 του βιβλίου ΤΝΕΣ (περιγραφή Α*). Αφού το ευρετικό «... μεγιστοποιεί τον αριθμό των σπίρτων που έχουν αφαιρεθεί», εργαζόμαστε με βάση την ελαχιστοποίηση των σπίρτων που έχουν μείνει (συνάρτηση h). Η απόσταση από μία κατάσταση στη γειτονική της θεωρείται ότι έχει κόστος 1 (υπολογισμός συνάρτησης g). Η συνάρτηση g είναι προφανώς η απόσταση από τη μία κατάσταση στη γειτονική της. Ανοικτές: [Α7], Κλειστές: [] Ανοικτές: [], Κλειστές: [Α7] Ανοικτές: [], Κλειστές: [Α7], Διάδοχοι: [Β4, Β5, Β6] Ανοικτές: [], Κλειστές: [Α7], Διάδοχοι: [f(β4)=1+4, f(β5)=1+5, f(β6)=1+6] Ανοικτές: [Β4, Β5, Β6], Κλειστές: [Α7], Διάδοχοι: [] Ανοικτές: [Β5, Β6], Κλειστές: [Α7, Β4], Διάδοχοι: [] Ανοικτές: [Β5, Β6], Κλειστές: [Α7, Β4], Διάδοχοι: [A1, A2, A3] Ανοικτές: [Β5, Β6], Κλειστές: [Α7, Β4], Διάδοχοι: [f(a1)=2+1, f(a2)=2+2, f(a3)=2+3] Ανοικτές: [Β5, Β6, A1, A2, A3], Κλειστές: [Α7, Β4], Διάδοχοι: [] Ανοικτές: [Β5, Β6, A2, A3], Κλειστές: [Α7, Β4, A1], Διάδοχοι: [] Ανοικτές: [Β5, Β6, A2, A3], Κλειστές: [Α7, Β4, A1], Διάδοχοι: [Β ]
Θέμα 2: Αναζήτηση κατά βάθος Δίνεται το παρακάτω γενεαλογικό δένδρο Θέμα 2α. Δημιουργία χώρου καταστάσεων Να αναπαραστήσετε το παραπάνω δένδρο καταστάσεων χρησιμοποιώντας την δηλωτική γλώσσα προγραμματισμού SWI-Prolog (http://www.swi-prolog.org/). Συμβουλή: Χρησιμοποιήστε το κατηγόρημα tree/3. tree(cathy,michael,melody). tree(michael,charles,hazel). tree(melody,jim,eleanor). tree(charles,nil,nil). tree(hazel,nil,nil). tree(jim,nil,nil). tree(eleanor,nil,nil). Θέμα 2β. Δημιουργία μηχανισμού διαπέρασης Δημιουργείστε κανόνες Prolog που θα υλοποιούν διαπέραση όλων των κόμβων του δένδρου με ταυτόχρονη εκτύπωσή τους, με τον τρόπο που γίνεται στην κατά βάθος αναζήτηση (depth-first search).
print_tree(x):- tree(x,y,z), write(x), nl, print_tree(y), print_tree(z). print_tree(x):-tree(x,nil,nil). go:-print_tree(t). 1?- go. cathy michael charles hazel melody jim eleanor Yes Θέμα 3: Αναζήτηση υπόπτου Η άτυχη Σουζάνα βρέθηκε από την αστυνομία δολοφονημένη, με τσακισμένο το κεφάλι από αμβλύ όργανο. Τα πρόσωπα της ιστορίας είναι ο Άλαν, 35 ετών, χασάπης και «κλεφτρόνι», ο Τζον, 25 ετών, ποδοσφαιριστής, που συνδέεται συναισθηματικά τόσο με τη δολοφονημένη Σουζάνα όσο και με τη Μπάρμπαρα, κομμώτρια, 22 ετών και παντρεμένη με τον πενηντάρη και κουτσό μαραγκό Μπερτ. Σε σχετική έρευνα ανακαλύφθηκε στο σπίτι του Τζον ένα περίστροφο. Η αστυνομία θεωρεί ως πιθανά κίνητρα τη ληστεία και τη ζήλεια. Θέμα 3α. Αναπαράσταση γεγονότων του προβλήματος
Να αναπαραστήσετε τα γεγονότα του προβλήματος χρησιμοποιώντας την δηλωτική γλώσσα προγραμματισμού SWI-Prolog (http://www.swi-prolog.org/), λαμβάνοντας υπόψη τα παρακάτω: Χρησιμοποιήστε τα ακόλουθα κατηγορήματα: person/4, had_affair/2, motive/1, owns/2. Τα τέσσερα ορίσματα του person/4 αναφέρονται στο όνομα, ηλικία, φύλο και ιδιότητα του προσώπου που περιγράφει, π.χ. person(john,25,m,football_player). Τα δύο ορίσματα του had_affair/2 δηλώνουν τα πρόσωπα που έχουν/είχαν δεσμό. Δίνεται το όργανο με το οποίο σκοτώθηκε η Σουζάνα, δηλ. killed_with(susan,club). Ο Μπερτ υποκαθιστά το χαμένο του πόδι με ένα ξύλινο. Δίνονται οι εξής υποθέσεις κοινής λογικής operates_identically(wooden_leg,club). operates_identically(bar,club). operates_identically(pair_of_scissors,knife). operates_identically(football_boot,club). % Τύποι ισχυρισμών και υποθέσεων από % την έρευνα της αστυνομίας. person(john,25,m,football_player). /*m:male*/ person(allan,35,m,butcher). person(barbara,22,f,hairdresser). /*f:female*/ person(bert,50,m,carpenter). person(allan,35,m,pickpocket). had_affair(barbara,john). had_affair(barbara,bert). had_affair(susan,john). killed_with(susan,club). motive(money). motive(jealousy). owns(bert,wooden_leg). owns(john,pistol). % Υποθέσεις κοινής λογικής operates_identically(wooden_leg,club). operates_identically(bar,club). operates_identically(pair_of_scissors,knife).
operates_identically(football_boot,club). Θέμα 3β. Αναπαράσταση κανόνων κοινής λογικής Περιγράψτε με προτάσεις Κατηγορηματικής Λογικής και κώδικα Prolog, χρησιμοποιώντας το κατηγόρημα owns_probably/2 καθώς και κατηγορήματα από το Θέμα 2α, την παρακάτω κοινά αποδεκτή γνώση: Ένας ποδοσφαιριστής κατέχει πιθανώς μπότα ποδοσφαίρου (το σενάριο αναφέρεται στο αμερικάνικο ποδόσφαιρο) Οποιοσδήποτε μπορεί να κατέχει ένα ψαλίδι. Οποιοσδήποτε μπορεί να κατέχει ένα μαχαίρι. Όποιος κατέχει ένα αντικείμενο τότε πιθανώς κατέχει αυτό το αντικείμενο. Προτάσεις Κατηγορηματικής Λογικής ( ( ) ( )) ( ( ) ( )) ( ( ) ( )) ( ( ) ( )) xyz,, owns_probably x,football_boot person xyz,,,football_player xyzw,,, owns_probably x, pair_of_scissors person xyzw,,, xyzw,,, owns_probably x, knife person xyzw,,, xy, owns_probably x, y owns xy, Κώδικας SWI-Prolog owns_probably(x,football_boot):- person(x,_,_,football_player). owns_probably(x,pair_of_scissors):- person(x,_,_,_). owns_probably(x,knife):- person(x,_,_,_). owns_probably(x,object):- owns(x,object). Θέμα 3γ. Αναπαράσταση κανόνων επίλυσης του προβλήματος Δημιουργείστε κανόνες επίλυσης του προβλήματος θεωρώντας ότι υπάρχουν δύο τύποι υπόπτων: α) ύποπτοι με βάση τη δυνατότητα να διαπράξουν τον φόνο, και β) ύποπτοι με βάση το κίνητρό τους. Οι υποθέσεις για τα κίνητρα του φόνου είναι οι εξής: Κάποιος Χ είναι ύποπτος με βάση τη δυνατότητα να διαπράξει τον φόνο αν το αντικείμενο με το οποίο σκοτώθηκε η Σουζάνα έχει την ίδια λειτουργία (ίδια αποτελέσματα) με κάποιο άλλο αντικείμενο Υ και ο Χ πιθανώς κατέχει το αντικείμενο Υ. Κάποιος Χ είναι ύποπτος με βάση το κίνητρό του αν 1. το κίνητρο είναι η ζήλεια, ο Χ είναι άνδρας και είχε δεσμό με τη Σουζάνα 2. το κίνητρο είναι η ζήλεια, ο Χ είναι γυναίκα και είχε δεσμό κάποιον ο οποίος είχε ταυτόχρονα δεσμό με τη Σουζάνα 3. το κίνητρο είναι τα χρήματα και ο Χ είναι «κλεφτρόνι».
Ο πιο πιθανός ύποπτος είναι αυτός που είναι ταυτόχρονα ύποπτος με βάση τη δυνατότητα και το κίνητρο να διαπράξει τον φόνο. Συμβουλή: Χρησιμοποιήστε τα ακόλουθα κατηγορήματα: suspect_by_capability/1, suspect_by_motive/1, mostly_suspected/1. Συνεχίζοντας το πρόγραμμα που δίνεται στην ενδεικτική επίλυση του 2α, έχουμε: % Υποθέσεις για τα κίνητρα φόνου. % Δύο τύποι υπόπτων: % α. ύποπτοι με βάση τη δυνατότητα να % διαπράξουν τον φόνο % β. ύποπτοι με βάση το κίνητρό τους suspect_by_capability(x):- killed_with(susan,weapon), operates_identically(object,weapon), owns_probably(x,object). suspect_by_motive(x):- motive(jealousy), person(x,_,m,_), had_affair(susan,x). suspect_by_motive(x):- motive(jealousy), person(x,_,f,_), had_affair(x,man), had_affair(susan,man). suspect_by_motive(x):- motive(money), person(x,_,_,pickpocket). ----- % Μη πιθανοθεωρητική υπόθεση κοινής λογικής ----- mostly_suspected(x):- suspect_by_capability(x), suspect_by_motive(x). Θέμα 3δ. Εκτέλεση του προγράμματος Εκτελέστε το παραπάνω πρόγραμμα κάνοντας κατάλληλα ερωτήματα (queries) ώστε να βρίσκει α) τους υπόπτους με βάση τη δυνατότητα να διαπράξουν τον φόνο β) τους υπόπτους με βάση το κίνητρό τους γ) τον πιο πιθανό ύποπτο.
1?- suspect_by_capability(x). X = bert ; X = john ; No 2?- suspect_by_motive(x). X = john ; X = barbara ; X = allan ; No 3?- mostly_suspected(x). X = john Yes Κριτήρια αξιολόγησης: Θέμα 1. Απλές Αναζητήσεις 40 1.α. Δημιουργία χώρου καταστάσεων 10 1.β. Αναζήτηση-κατά-βάθος 10 1.γ. Αναζήτηση-κατά-πλάτος 10 1.δ. Αναζήτηση με ευρετικό και Α* 10 Θέμα 2. Αναζήτηση κατά βάθος 20 2.α. Δημιουργία χώρου καταστάσεων 10 2.β. Δημιουργία μηχανισμού διαπέρασης 10 Θέμα 3. Αναζήτηση υπόπτου 40 3.α. Αναπαράσταση γεγονότων του προβλήματος 10 3.β. Αναπαράσταση κανόνων κοινής λογικής 15 3.γ. Αναπαράσταση κανόνων επίλυσης του προβλήματος 10 3.δ. Εκτέλεση του προγράμματος 5 ΣΥΝΟΛΟ 100 Ο συνολικός βαθμός θα διαιρεθεί δια 10, ώστε να προκύψει ο τελικός βαθμός της εργασίας.
Τρόπος Ημερομηνία Παράδοσης Η εργασία σας θα πρέπει να έχει φτάσει στον Καθηγητή-Σύμβουλό σας μέχρι την Κυριακή 27/11/2005 ώρα 23:59. Περιμένουμε όλες οι εργασίες να αποσταλούν μέσω Email και να είναι γραμμένες σε επεξεργαστή κειμένου MSWord. Τα τμήματα κώδικα θα βρίσκονται σε ξεχωριστά αρχεία θ αναφέρονται στο κείμενο της εργασίας. Στον Καθηγητή-Σύμβουλό σας, σε κάθε περίπτωση, στέλνετε ΕΝΑ μόνο αρχείο (συμπιεσμένο). Δεν θα δοθεί παράταση στην παράδοση της εργασίας πέραν της ως άνω αναφερόμενης ημέρας και ώρας, για κανένα λόγο. Την Τρίτη 29/11/2005 ώρα 14:00, θα δημοσιευθεί πρότυπη απάντηση για την επίλυση της εργασίας στο διαδίκτυο. Καλή Επιτυχία!