ΥΣ02 Τεχνητή Νοημοσύνη Χειμερινό Εξάμηνο 2010-2011 Πρώτη Σειρά Ασκήσεων (20% του συνολικού βαθμού στο μάθημα, Άριστα = 390 μονάδες) Ημερομηνία Ανακοίνωσης: 6/10/2010 Ημερομηνία Παράδοσης: 15/11/2010 σύμφωνα με τις οδηγίες που δίνονται στην ιστοσελίδα του μαθήματος. Δεν θα γίνουν δεκτές ασκήσεις που θα παραδοθούν μετά την έναρξη του φροντιστηρίου στις 15/11. Αντιγραφή: Σε περίπτωση που προκύψουν φαινόμενα αντιγραφής, οι εμπλεκόμενοι θα βαθμολογηθούν στο μάθημα (όχι απλά στην άσκηση!) με βαθμό μηδέν. Πρόβλημα 1: Θεωρήστε το πρόβλημα τακτοποίησης προϊόντων σε κιβώτια, όπως ορίζεται παρακάτω. Το κατάστημα "Future Goods" διαθέτει n διαφορετικούς τύπους προϊόντων τα οποία αποθηκεύονται σε ένα κατάλληλα διαμορφωμένο χώρο που επιτρέπει την μετακίνηση και τοποθέτησή τους από έναν ρομποτικό βοηθό. Ο χώρος διαθέτει n κυλιόμενους διαδρόμους σε κάθε ένα από τους οποίους είναι δυνατόν να τοποθετηθούν παραπάνω από ένα κιβώτιο. Κάθε κιβώτιο περιέχει προϊόντα ενός συγκεκριμένου τύπου και εξωτερικά αναγράφει ένα αριθμό μεταξύ 1 και n που αντιστοιχεί στον τύπο του προϊόντος. Επιπλέον, υπάρχει ένας ρομποτικός βοηθός που μπορεί να φορτώνει και να ξεφορτώνει κιβώτια, και να κινείται δεξιά ή αριστερά, όπως στο σχήμα (n=5): Ο ρομποτικός βοηθός μπορεί να φορτώσει το κιβώτιο που είναι πρώτο στον διάδρομο που είναι μπροστά του. Ο κυλιόμενος διάδρομος είναι αυτόματος, οπότε μετά την φόρτωση του κιβωτίου, ο ιμάντας μετακινείται και το κιβώτιο που βρισκόταν δεύτερο έρχεται πρώτο, κ.ο.κ. Ο ρομποτικός βοηθός μπορεί στη συνέχεια να μετακινηθεί δεξιά ή αριστερά κατά ένα διάδρομο μεταφέροντας το κιβώτιο μαζί του. Αντίστοιχα με τη φόρτωση, ο ρομποτικός βοηθός μπορεί να ξεφορτώσει το κιβώτιο που κουβαλάει, τοποθετώντας το πρώτο στο διάδρομο που βρίσκεται μπροστά του. Και σε αυτή την περίπτωση ο κυλιόμενος διάδρομος
λειτουργεί αυτόματα, και ο ιμάντας μετακινείται ώστε να δημιουργηθεί χώρος για την τοποθέτηση του κιβωτίου. Έτσι, το κιβώτιο που ξεφορτώνεται τοποθετείται πρώτο στο διάδρομο, ενώ αυτό που ήταν πρώτο πριν, μετακινείται και γίνεται δεύτερο, κ.ο.κ. Το πρόβλημα τακτοποίησης που καλούμαστε να λύσουμε είναι να τοποθετηθούν τα κιβώτια στους διαδρόμους έτσι ώστε στον διάδρομο Δ1 να υπάρχουν μόνο προϊόντα τύπου 1, στον διάδρομο Δ2 μόνο προϊόντα τύπου 2,... κ.ο.κ., χρησιμοποιώντας τις διαθέσιμες ενέργειες του ρομποτικού βοηθού (δείτε την κατάσταση στόχου στο παραπάνω σχήμα). Συνολικά ο ρομποτικός βοηθός μπορεί να πραγματοποιήσει τις εξής τέσσερις ενέργειες: - μετακίνηση κατά ένα διάδρομο δεξιά, - μετακίνηση κατά ένα διάδρομο αριστερά, - φόρτωση του κιβωτίου που βρίσκεται πρώτο στο διάδρομο που βρίσκεται μπροστά του - ξεφόρτωση του κιβωτίου στο διάδρομο που βρίσκεται μπροστά του. Κάθε μετακίνηση του ρομποτικού βοηθού χωρίς φορτίο έχει κόστος 1, ενώ κάθε μετακίνηση του όταν κουβαλάει ένα κιβώτιο έχει κόστος 5, ανεξάρτητα με τον τύπο του προϊόντος που περιέχεται στο κιβώτιο. Επίσης, η κίνηση με την οποία φορτώνει ένα κιβώτιο και η κίνηση με την οποία ξεφορτώνει ένα κιβώτιο έχει κόστος 2, ανεξάρτητα με το προϊόν που περιέχεται στο κιβώτιο. Μια λύση στο πρόβλημα είναι μια ακολουθία ενεργειών του ρομποτικού βοηθού ώστε να φτάσουμε από μια αρχική κατάσταση στην κατάσταση στόχου. Η βέλτιστη λύση του προβλήματος είναι αυτή που έχει το μικρότερο κόστος. Να λύσετε το πρόβλημα αυτό με τον αλγόριθμο Α* χρησιμοποιώντας κατάλληλη ευρετική συνάρτηση. Η υλοποίηση σας πρέπει να είναι επέκταση του C++ κώδικα που θα σας δοθεί. Η επιθυµητή λύση θα πρέπει να χρησιμοποιεί τον καλύτερο ευρετικό µηχανισµό (heuristic) που μπορείτε να βρείτε και να δουλεύει για ν προϊόντα. Τέλος, οποιαδήποτε άλλη βελτιστοποίηση στον κώδικα ώστε να γίνει πιο αποδοτικός είναι επιθυµητή. (250 μονάδες)
Πρόβλημα 2: Θεωρήστε το παρακάτω δένδρο αναζήτησης για τον αλγόριθμο A*. Στο παραπάνω δένδρο με S συμβολίζουμε τον κόμβο που αντιστοιχεί στην αρχική κατάσταση ενώ με G συμβολίζουμε τον κόμβο που αντιστοιχεί στην κατάσταση στόχου. Δίπλα από κάθε ακμή δίνουμε το κόστος της αντίστοιχης ενέργειας, και δίπλα από κάθε κόμβο δίνουμε την τιμή της ευρετικής συνάρτησης h για τον κόμβο. Να δώσετε τα αποτελέσματα της εκτέλεσης του αλγόριθμου A* στο δοσμένο δένδρο αναζήτησης ως εξής. Για κάθε κόμβο που ελέγχεται αν αντιστοιχεί σε κατάσταση στόχου και πιθανά επεκτείνεται, να δώσετε: την τιμή του εκτιμώμενου κόστους f της φθηνότερης λύσης μέσω του κόμβου (συμπληρώνοντας την αντίστοιχη έκφραση f= ). τη σειρά με την οποία έγινε ο έλεγχος και η επέκταση (γράφοντας τον αντίστοιχο αριθμό 1, 2, 3,... μέσα στο κυκλάκι του κόμβου). Να υποθέσετε ότι όταν υπάρχουν δύο ή περισσότεροι ισοδύναμοι κόμβοι στην ουρά τότε η επιλογή γίνεται με τον κανόνα FIFO. (20 μονάδες)
Πρόβλημα 3: Αναζήτηση πρώτα σε πλάτος. Υποθέστε ότι εκτελούμε μια αναζήτηση πρώτα σε πλάτος σε ένα δένδρο με παράγοντα διακλάδωσης b. Όμως δεν γνωρίζουμε ότι ο χώρος αναζήτησης είναι δένδρο, οπότε προσπαθούμε να αποφύγουμε να επεκτείνουμε καταστάσεις που έχουμε ήδη συναντήσει και επεκτείνει. Έτσι, για κάθε νέα κατάσταση που παράγεται, ελέγχουμε αν είναι ίδια με κάποια άλλη κατάσταση που έχει ήδη συναντήσει. Πόσοι τέτοιοι έλεγχοι θα γίνουν σε μια αναζήτηση μέχρι βάθος d; (έκφραση με παραμέτρους b και d) (60 μονάδες) Πρόβλημα 4: Άσκηση 4.4 του βιβλίου ΑΙΜΑ. Επινοήστε ένα χώρο καταστάσεων στον οποίο ο αλγόριθμος Α* που χρησιμοποιεί αναζήτηση σε γράφο (GRAPH-SEARCH) επιστρέφει μια μη βέλτιστη λύση με συνάρτηση h(n) που είναι παραδεκτή (admissible) αλλά όχι συνεπής (inconsistent). (20 μονάδες) Πρόβλημα planning). 5: Μια απλή μορφή ενός κλασσικού προβλήματος ρομποτικής (motion Θεωρήστε το πρόβλημα της εύρεσης του συντομότερου μονοπατιού από το σημείο S στο σημείο G από ένα ρομπότ χωρίς διαστάσεις (σημείο) σ ένα επίπεδο περιβάλλον με πολυγωνικά εμπόδια (δείτε το παρακάτω σχήμα).. G S. Aπό την Υπολογιστική Γεωμετρία γνωρίζουμε ότι το συντομότερο μονοπάτι για το πρόβλημα αυτό αποτελείται από μια ακολουθία ευθύγραμμων τμημάτων με άκρα το S, το G ή κορυφές των δοσμένων πολυγώνων. Για την ακρίβεια ισχύει το παρακάτω αποτέλεσμα. Το συντομότερο μονοπάτι είναι ένα μονοπάτι στο γράφο ορατότητας των πολυγωνικών εμποδίων.
Ο γράφος ορατότητας ενός συνόλου πολυγώνων είναι ένας μη κατευθυνόμενος γράφος με κόμβους που αντιστοιχούν στις κορυφές των πολυγώνων και ακμές που αντιστοιχούν σε κορυφές x και y που είναι ορατές η μια από την άλλη (δηλαδή, το ευθύγραμμο τμήμα xy δεν τέμνει το εσωτερικό κανενός πολυγώνου). Με βάση την παραπάνω συζήτηση να προτείνετε ένα αλγόριθμο αναρρίχησης λόφων (hillclimbing) που λύνει το πρόβλημα. Να δώσετε ψευδοκώδικα για τον αλγόριθμο αυτό. Μπορείτε να υποθέσετε ότι έχετε διαθέσιμες απλές συναρτήσεις της Υπολογιστικής Γεωμετρίας που μπορεί να χρειαστείτε (ποιες είναι αυτές;). Είναι δυνατόν να παγιδευτεί το ρομπότ που χρησιμοποιεί τον αλγόριθμο σας σε ένα τοπικό ελάχιστο όταν όλα τα πολύγωνα είναι κυρτά όπως στο παραπάνω σχήμα; Τι γίνεται όταν έχουμε και εμπόδια που είναι μη κυρτά πολύγωνα; (40 μονάδες)