ΠΑΝΕΠΙΣΤΗΜΙΟ ΜΑΚΕΔΟΝΙΑΣ ΟΙΚΟΝΟΜΙΚΩΝ ΚΑΙ ΚΟΙΝΩΝΙΚΩΝ ΕΠΙΣΤΗΜΩΝ ΤΜΗΜΑ ΕΦΑΡΜΟΣΜΕΝΗΣ ΠΛΗΡΟΦΟΡΙΚΗΣ ΤΕΧΝΗΤΗ ΝΟΗΜΟΣΥΝΗ Τελικές εξετάσεις Πέμπτη 27 Ιουνίου 2013 10:003:00 Έστω το πάζλ των οκτώ πλακιδίων (8-puzzle) και ειδικότερα το πρόβλημα που φαίνεται στην παρακάτω εικόνα. 2 4 3 1 2 3 1 5 6 4 5 6 7 8 7 8 Αρχική κατάσταση Τελική κατάσταση Χρησιμοποιώντας τον αλγόριθμο αναζήτησης της προσομοιωμένης ανόπτησης (simulated annealing) με την ευρετική συνάρτηση: h 2 : Άθροισμα των αποστάσεων Manhattan για τα πλακίδια που είναι εκτός θέσης. Ο βαθμός της αρχικής κατάστασης του παραπάνω προβλήματος με την h 2 είναι 4. επιδείξτε τα πρώτα 20 βήματα εφαρμογής του αλγορίθμου για την επίλυση του παραπάνω προβλήματος. Χρησιμοποιείστε τους παρακάτω αριθμούς. 1 4 3 2 1 1 4 3 2 2 3 3 2 3 2 3 2 1 3 3 1 4 1 3 4 4 1 3 1 1 3 3 1 1 2 4 3 2 1 1 1 1 4 4 2 3 4 1 1 2 1 4 2 4 1 2 2 4 3 1 2 1 4 3 1 1 1 4 4 2 4 4 3 1 3 4 2 3 4 2 1 1 3 3 1 3 4 3 1 1 2 1 3 3 2 2 3 3 4 3 3 3 3 3 1 3 4 3 3 3 3 2 2 4 3 4 1 3 1 3 3 4 2 3 2 4 1 3 2 1 3 2 2 3 2 1 1 4 2 2 4 2 3 3 3 1 1 4 1 3 1 2 3 2 3 3 1 2 1 2 4 4 3 2 1 1 4 1 3 1 1 1 2 3 3 1 2 1 4 4 3 2 4 3 2 1 4 4 4 2 4 1 2 1 4 3 1 3 2 1 Ξεκινήστε να χρησιμοποιείτε τυχαίους αριθμούς από τον αριθμό που βρίσκεται στη θέση που αντιστοιχεί στον αριθμό μητρώου σας και συνεχίστε κατά τη φορά ανάγνωσης (για παράδειγμα, εάν ο αριθμός μητρώου σας είναι 25/03, θα ξεκινήσετε από τον 25 ο αριθμό, ο οποίος είναι ο πέμπτος αριθμός της δεύτερης σειράς, και θα συνεχίσετε προς τα δεξιά) 1. Εάν φθάσετε στο τέλος του πίνακα, συνεχίστε από την αρχή. Εάν εκτελέσετε 20 κινήσεις χωρίς να έχετε βρει λύση σταματήστε (ως κινήσεις θεωρούμε τόσο αυτές που εκτελούνται, όσο και αυτές που δεν εκτελούνται, είτε επειδή οδηγούν σε χειρότερη κατάσταση, είτε επειδή δεν ορίζονται για τη συγκεκριμένη θέση του κενού. Θεωρείστε ότι η παράμετρος T («θερμοκρασία») του αλγορίθμου είναι σταθερή καθ όλη τη διάρκεια επίλυσης του προβλήματος και ότι οι κινήσεις προς χειρότερες καταστάσεις γίνονται δεκτές με πιθανότητα 50%. 1 Εάν ο αριθμός μητρώου σας είναι μεγαλύτερος από 200, αφαιρέστε 200 από αυτόν. Για παράδειγμα, εάν κάποιος έχει αριθμό μητρώου 225/03, θα ξεκινήσει από τον ίδιο αριθμό με αυτόν που έχει αριθμό μητρώου 25/03.
Υπόδειξη: Τους τυχαίους αριθμούς θα τους χρησιμοποιήσετε: - Για να επιλέγετε τυχαία τις διάφορες κινήσεις του κενού (αντιστοιχία: 1 Κάτω, 2 Δεξιά, 3 Επάνω, 4 Αριστερά). Εάν η κίνηση που επιλεγεί δεν αντιστοιχεί σε επιτρεπτή κίνηση του κενού, χρησιμοποιείστε τον επόμενο τυχαίο αριθμό κοκ. - Για να αποφασίσετε εάν θα κάνετε δεκτή την επιλεγμένη κίνηση, εφόσον αυτή οδηγεί προς χειρότερη κατάσταση (αντιστοιχία: {1,2} Εκτέλεση, {3,4} Μη εκτέλεση). Η παρακάτω λύση χρησιμοποιεί τους τυχαίους αριθμούς από την αρχή. Η δική σας λύση θα διαφέρει από την ενδεικτική, μιας και δεν ξεκινάτε την ανάγνωση των τυχαίων αριθμών από την αρχή. # Τρέχουσα διάταξη Επόμενος αριθμός Εμπόδιο Υποψήφια επόμενη διάταξη Βελτίωση Επόμενος αριθμός Δεκτή με πιθανότητα 1 [24315678#] 4 1 2 [24315678#] 4 4 [2431567#8] 5 3 3 [24315678#] 4 2 4 [24315678#] 4 1 5 [24315678#] 4 1 6 [24315678#] 4 4 [2431567#8] 5 3 7 [24315678#] 4 2 8 [24315678#] 4 2 9 [24315678#] 4 3 [24315#786] 5 3 10 [24315678#] 4 2 11 [24315678#] 4 3 [24315#786] 5 2 12 [24315#786] 5 3 [24#153786] 6 2 13 [24#153786] 6 1 [24315#786] 5 14 [24315#786] 5 3 [24#153786] 6 3 15 [24315#786] 5 1 [24315678#] 4 16 [24315678#] 4 4 [2431567#8] 5 1 17 [2431567#8] 5 3 [2431#6758] 6 4 18 [2431567#8] 5 4 [243156#78] 6 1 19 [243156#78] 6 3 [243#56178] 7 1 20 [243#56178] 7 1 [243156#78] 6 Χρειάζονται αρκετά ακόμη βήματα για να λυθεί το πρόβλημα. ΘΕΜΑ 2 ο [Προγραμματισμός έργου] Για την ολοκλήρωση ενός έργου πρέπει να εκτελεστούν πέντε (5) εργασίες, τα στοιχεία των οποίων φαίνονται στον παρακάτω πίνακα: Εργασία Α Β Γ Δ Ε Διάρκεια 5 2 3 5 3 Πόροι: R 1 R 1 R 3 R 2, R 3 R 1, R 2 Ειδικότερα, κάθε εργασία έχει συγκεκριμένη διάρκεια, ενώ για να εκτελεστεί δεσμεύει μία μονάδα από κάθε πόρο που φαίνεται στον παραπάνω πίνακα (μερικές εργασίες χρειάζονται από μία μονάδα από δύο πόρους). Μετά την ολοκλήρωση της εργασίας οι πόροι αποδεσμεύονται (φανταστείτε τους πόρους ως εργαλεία που χρειαζόμαστε για την ολοκλήρωση μιας εργασίας και τα οποία στη συνέχεια αποδεσμεύονται, ενώ μερικές εργασίες χρειάζονται ταυτόχρονα δύο διαφορετικά εργαλεία). Διαθέτουμε μία μονάδα από κάθε έναν από τους πόρους. Επιπλέον, λόγω των εξαρτήσεων διαφόρων επιμέρους εργασιών μεταξύ τους, κάποιες εργασίες είναι προαπαιτούμενες άλλων για την εκτέλεσή τους. Ειδικότερα:
Η Γ μπορεί να αρχίσει να εκτελείται μόνο μετά την ολοκλήρωση της Α (π.χ. εάν η Α ξεκινήσει να εκτελείται σε t=0, η Γ μπορεί να ξεκινήσει να εκτελείται το νωρίτερο σε t=5). Η Δ μπορεί να αρχίσει να εκτελείται μόνο μετά την ολοκλήρωση της B. Θέλουμε το έργο να έχει ολοκληρωθεί σε 10 μονάδες χρόνου, δηλαδή σε t=10 να έχει ολοκληρωθεί η εκτέλεση όλων των εργασιών. Κάθε εργασία μπορεί να αρχίσει να εκτελείται μόνο σε ακέραιες τιμές χρόνου (ξεκινώντας από t=0). α) Μοντελοποιείστε το πρόβλημα ως πρόβλημα ικανοποίησης περιορισμών, δηλαδή ορίστε τις μεταβλητές, τα πεδία τους και τους περιορισμούς (περιοριστείτε μόνο σε μοναδιαίους και δυαδικούς περιορισμούς, δηλαδή περιορισμούς που αφορούν ζεύγη μεταβλητών). β) Λύστε το πρόβλημα, δηλαδή τοποθετείστε τις εργασίες στο χρόνο έτσι ώστε να ικανοποιούνται όλοι οι περιορισμοί διάταξης και πόρων, χρησιμοποιώντας μόνο έλεγχο συνέπειας τόξου (δεν θα χρειαστεί να εκτελέσετε αναζήτηση πρώτα σε βάθος). Υπόδειξη 1: Έστω δύο εργασίες με χρόνους έναρξης Χ και Υ και διάρκειες d X και d Y. Για να δηλώσουμε ότι οι εργασίες δεν επικαλύπτονται γράφουμε: Χ+d X Y or Y+d Y X Ένας διαζευκτικός περιορισμός σαν τον παραπάνω ενεργοποιείται μόνο όταν η μία από τις δύο διαζεύξεις μπορεί να αποδειχθεί ότι δεν ισχύει, οπότε εφαρμόζεται η άλλη. Υπόδειξη 2: Για να δηλώσουμε ότι η Υ πρέπει να περιμένει την ολοκλήρωση της Χ για να ξεκινήσει την εκτέλεσή της, γράφουμε τον περιορισμό Χ+d X Y. α) Ορίζουμε πέντε μεταβλητές με ονόματα A, B, Γ, Δ και E. Το αρχικό πεδίο των μεταβλητών είναι το {0,1,2,, 10} για όλες τις μεταβλητές. Με δεδομένο ότι όλες οι εργασίες πρέπει να έχουν ολοκληρωθεί σε t=10, και με δοσμένες τις διάρκειές τους, προκύπτουν οι παρακάτω μοναδιαίοι περιορισμοί: A+5 10 (1) B+2 10 (2) Γ+3 10 (3) Δ+5 10 (4) E+3 10 (5) Με δεδομένο επίσης ότι κάποιες εργασίες χρησιμοποιούν κοινούς πόρους, ενώ έχουμε μονάχα μια μονάδα από κάθε πόρο, προκύπτουν οι παρακάτω δυαδικοί περιορισμοί: Από τον πόρο R 1 : A+5 B or B+2 A (6) A+5 E or E+3 A (7) B+2 E or E+3 B (8) Από τον πόρο R 2 : Δ+5 E or E+3 Δ (9) Από τον πόρο R 3 : Δ+5 Γ or Γ+3 Δ (10) Τέλος οι δοσμένοι περιορισμοί διάταξης είναι οι εξής: A+5 Γ (11) Β+2 Δ (12) β) Οι περιορισμοί (1) έως (5) εφαρμόζονται μία φορά μόνο και μειώνουν τα πεδία των μεταβλητών ως εξής: D A ={0,1,2,3,4,5}
D B ={0,1,2,3,4,5,6,7,8} D Γ ={0,1,2,3,4,5,6,7} D Δ ={0,1,2,3,4,5} D Ε ={0,1,2,3,4,5,6,7} Στη συνέχεια θα εκμεταλλευτούμε τους δυαδικούς περιορισμούς ως εξής: Από τον (11) προκύπτει ότι: D A ={0,1,2} Από τον (12) προκύπτει: D B ={0,1,2,3} Τα νέα πεδία των μεταβλητών είναι λοιπόν: D A ={0,1,2} D B ={0,1,2,3} D Ε ={0,1,2,3,4,5,6,7} Οι περιορισμοί (6) έως (10) είναι πιο δύσκολοι στο χειρισμό τους. Σύμφωνα με την υπόδειξη μπορούμε να ενεργοποιήσουμε έναν τέτοιο περιορισμό μόνο όταν το ένα σκέλος της διάζευξης δεν μπορεί να ισχύει σε καμία περίπτωση, οπότε ενεργοποιείται το άλλο. Για παράδειγμα, έστω ο περιορισμός (7): A+5 E or E+3 A (7) Ο δεύτερος όρος της διάζευξης δεν μπορεί να ισχύει, άρα ισχύει ο πρώτος όρος, A+5 E, οπότε έχουμε: D A ={0,1,2} D B ={0,1,2,3} Από τον περιορισμό: A+5 B or B+2 A (6) το πρώτο σκέλος δεν μπορεί να ισχύει, άρα: Πλέον δύο μεταβλητές έχουν πάρει τιμή. Εξετάζοντας ξανά τον: A+5 Γ (11) έχουμε: D Γ ={7} Από τον: Δ+5 Γ or Γ+3 Δ (10)
το δεύτερο σκέλος δεν μπορεί να ισχύει, άρα: D Γ ={7} D Δ ={2} Τέλος από τον: Δ+5 E or E+3 Δ (9) το δεύτερο σκέλος δεν μπορεί να ισχύει, άρα: D Γ ={7} D Δ ={2} D Ε ={7} Στο σημείο αυτό όλα τα πεδία των μεταβλητών περιλαμβάνουν μία μόνο τιμή. Ελέγχουμε ξανά τους περιορισμούς και διαπιστώνουμε πως δεν παραβιάζεται κανένας. Άρα πρόκειται για λύση του προβλήματος και, μιας και δεν πραγματοποιήσαμε ανάθεση τιμών σε μεταβλητές, πρόκειται για τη μοναδική λύση. ΘΕΜΑ 3 ο Υπάρχει μία στοίβα με 6 τούβλα. Παίζουν δύο παίκτες εναλλάξ, έστω οι Α και Β, με πρώτο τον παίκτη Α. Κάθε παίκτης που είναι σειρά του να παίξει είναι υποχρεωμένος να αφαιρέσει ένα ή δύο τούβλα από τη στοίβα. Κερδίζει ο παίκτης που θα αφαιρέσει το τελευταίο τούβλο. Βρείτε ποιος παίκτης κερδίζει το παιχνίδι, κατασκευάζοντας το δένδρο του παιχνιδιού. Υπόδειξη (προαιρετική): Στο παιχνίδι αυτό η χρήση του κλαδέματος άλφα-βήτα δεν επιφέρει μεγάλη μείωση του μεγέθους του δένδρου του παιχνιδιού. Για να πετύχετε μέγιστο κλάδεμα μπορείτε να σκεφτείτε ως εξής: Έστω ότι κατασκευάσατε ολόκληρο ένα υπο-κλαδί του δένδρου, του οποίου η ρίζα έχει Ν τούβλα (1 Ν 6) και παίζει πρώτος ο παίκτης Χ ( Χ = Α ή Χ = Β ). Με εφαρμογή του minimax σε αυτό το υποκλαδί βρίσκετε την τιμή V (π.χ., V = 1 ή V =, αναλόγως ποιος παίκτης κερδίζει) για τη ρίζα του. Οπουδήποτε αλλού στο δένδρο του παιχνιδιού συναντήσετε κόμβο με Ν τούβλα και παίζει ο παίκτης Χ, μπορείτε κατευθείαν να βάλετε την τιμή V στον κόμβο αυτό, χωρίς να ξανακατασκευάσετε το υποδένδρο. Αν πάλι συναντήσετε κόμβο με N τούβλα αλλά δεν παίζει ο παίκτης Χ (παίζει ο άλλος παίκτης), τότε μπορείτε κατευθείαν να βάλετε την τιμή -V, χωρίς να ξανακατασκευάσετε το υποδένδρο (θεωρούμε ότι όταν κερδίζει ο ΜΑΧ είναι V>0 και όταν κερδίζει MIN είναι V<0 επιλέξτε εσείς ποιος από τους δύο παίκτες είναι ο MAX και ποιος ο MIN). Έστω ότι ο Α είναι ο παίκτης ΜΑΧ και ο Β είναι ο παίκτης ΜΙΝ. Θα κατασκευάσουμε το δένδρο του παιχνιδιού μέχρι το τέλος του παιχνιδιού. Θα βαθμολογήσουμε το φύλλα με 1 εφόσον κερδίζει ο Α και αν κερδίζει ο Β. Στη συνέχεια, με εφαρμογή του αλγορίθμου mininmax θα βρούμε ποιος παίκτης κερδίζει. Εφαρμόζουμε την υπόδειξη της εκφώνησης οι κόμβοι-φύλλα που βαθμολογούνται με είναι κόμβοι των οποίων η τιμή βρέθηκε από προηγούμενους κόμβους, χωρίς να κατασκευαστούν τα υποδένδρα τους.
6 MAX 5 4 MIN 4 3 1 MAX 3 1 2 2 1 1 1 MIN MAX 1 0 1 MIN 0 Από το παραπάνω δένδρο προκύπτει ότι κερδίζει ο παίκτης Β (ΜΙΝ). ΘΕΜΑ 4 ο Έστω τα κατηγορήματα: Person(x) : Ο x είναι άνθρωπος. HasSS#(x,y) : Ο x έχει αριθμό κοινωνικής ασφάλισης (Social Security) y. Digits(x,y) : Ο αριθμός x έχει y αριθμητικά ψηφία (στο δεκαδικό σύστημα αρίθμησης). Για κάθε μία από τις παρακάτω προτάσεις σε φυσική γλώσσα, γράψτε αν η αντίστοιχη έκφραση σε λογική πρώτης τάξης αποτελεί καλή μετάφραση. Αν όχι, προσπαθείστε να τη διορθώσετε (μια πρόταση μπορεί να έχει περισσότερα από ένα σφάλματα) 2. α) Κάθε άνθρωπος έχει αριθμό κοινωνικής ασφάλισης. x, Person(x) y, Hass#(x,y) β) Κάθε άνθρωπος έχει έναν μόνο αριθμό κοινωνικής ασφάλισης. x, y, z, Person(x) Hass#(x,y) Hass#(x,z) y=z γ) Δεν υπάρχουν δύο άτομα με τον ίδιο αριθμό κοινωνικής ασφάλισης. x,y,n, Person(x) Person(y) [HasSS#(x,n) HasSS#(y,n)] δ) Ο αριθμός κοινωνικής ασφάλισης του John είναι ίδιος με αυτόν της Mary. 2 Μην απαντάτε αν δεν είστε σίγουροι για την απάντησή σας. Οι λανθασμένες απαντήσεις προσμετρώνται αρνητικά εντός του θέματος.
n, HasSS#(John,n) HasSS#(Mary,n) ε) Ο αριθμός κοινωνικής ασφάλισης κάθε ανθρώπου είναι 9ψήφιος. x,n, Person(x) [HasSS#(x,n) Digits(n,9)] α) ΣΩΣΤΟ β) ΛΑΘΟΣ x, y, z, Person(x) Hass#(x,y) Hass#(x,y) y=z γ) ΛΑΘΟΣ x,y,n, Person(x) Person(y) HasSS#(x,n) HasSS#(y,n) δ) ΣΩΣΤΟ ε) ΛΑΘΟΣ x,n, Person(x) HasSS#(x,n) Digits(n,9) ΑΠΑΝΤΗΣΤΕ 3 ΑΠΟ ΤΑ ΠΑΡΑΠΑΝΩ 4 ΘΕΜΑΤΑ Ενδεικτικές λύσεις θα αναρτηθούν μετά την εξέταση στην ιστοσελίδα του μαθήματος