Τεχνητή Νοημοσύνη Ι. Εργαστηριακή Άσκηση 4-6. Σγάρμπας Κυριάκος. Τμήμα Ηλεκτρολόγων Μηχανικών και Τεχνολογίας Υπολογιστων



Σχετικά έγγραφα
Τεχνητή Νοημοσύνη ΙΙ. Εργαστηριακή Άσκηση 3. Μουστάκας Κωνσταντίνος. Τμήμα Ηλεκτρολόγων Μηχανικών και Τεχνολογίας Υπολογιστων

Τεχνητή Νοημοσύνη Ι. Εργαστηριακή Άσκηση 7. Σγάρμπας Κυριάκος. Τμήμα Ηλεκτρολόγων Μηχανικών και Τεχνολογίας Υπολογιστων

Τεχνητή Νοημοσύνη ΙΙ. Εργαστηριακή Άσκηση 4. Μουστάκας Κωνσταντίνος. Τμήμα Ηλεκτρολόγων Μηχανικών και Τεχνολογίας Υπολογιστων

Τεχνητή Νοημοσύνη ΙΙ. Εργαστηριακή Άσκηση 2. Μουστάκας Κωνσταντίνος. Τμήμα Ηλεκτρολόγων Μηχανικών και Τεχνολογίας Υπολογιστων

Κβαντική Επεξεργασία Πληροφορίας

Εισαγωγή στους Αλγορίθμους

Εισαγωγή στους Αλγορίθμους Ενότητα 9η Άσκηση - Αλγόριθμος Prim

Κβαντική Επεξεργασία Πληροφορίας

Εισαγωγή στους Αλγορίθμους

Εισαγωγή στους Αλγορίθμους

Θερμοδυναμική. Ανοικτά Ακαδημαϊκά Μαθήματα. Πίνακες Νερού σε κατάσταση Κορεσμού. Γεώργιος Κ. Χατζηκωνσταντής Επίκουρος Καθηγητής

ΣΥΣΤΗΜΑΤΑ ΗΛΕΚΤΡΙΚΗΣ ΕΝΕΡΓΕΙΑΣ ΙIΙ

ΣΥΣΤΗΜΑΤΑ ΗΛΕΚΤΡΙΚΗΣ ΕΝΕΡΓΕΙΑΣ ΙIΙ

ΣΥΣΤΗΜΑΤΑ ΗΛΕΚΤΡΙΚΗΣ ΕΝΕΡΓΕΙΑΣ ΙIΙ

Εισαγωγή στους Αλγορίθμους Ενότητα 10η Άσκηση Αλγόριθμος Dijkstra

Εισαγωγή στους Υπολογιστές

Διοικητική Λογιστική

Λογιστική Κόστους Ενότητα 12: Λογισμός Κόστους (2)

Κβαντική Επεξεργασία Πληροφορίας

Βέλτιστος Έλεγχος Συστημάτων

Κβαντική Επεξεργασία Πληροφορίας

Τεχνητή Νοημοσύνη ΙΙ. Εργαστηριακή Άσκηση 6. Μουστάκας Κωνσταντίνος. Τμήμα Ηλεκτρολόγων Μηχανικών και Τεχνολογίας Υπολογιστων

Μηχανολογικό Σχέδιο Ι

Τεχνητή Νοημοσύνη Ι. Εργαστηριακή Άσκηση 1. Σγάρμπας Κυριάκος. Τμήμα Ηλεκτρολόγων Μηχανικών και Τεχνολογίας Υπολογιστων

Εισαγωγή στην Διοίκηση Επιχειρήσεων

Τίτλος Μαθήματος: Μαθηματική Ανάλυση Ενότητα Γ. Ολοκληρωτικός Λογισμός

Λογιστική Κόστους Ενότητα 8: Κοστολογική διάρθρωση Κύρια / Βοηθητικά Κέντρα Κόστους.

Μυελού των Οστών Ενότητα #1: Ερωτήσεις κατανόησης και αυτόαξιολόγησης

Εισαγωγή στους Αλγορίθμους Ενότητα 9η Άσκηση - Αλγόριθμος Kruskal

Ψηφιακή Επεξεργασία Εικόνων

Ανοικτά Ακαδημαϊκά Μαθήματα στο ΤΕΙ Αθήνας. Βιοστατιστική (Ε) Ενότητα 3: Έλεγχοι στατιστικών υποθέσεων

Ανοικτά Ακαδημαϊκά Μαθήματα στο ΤΕΙ Αθήνας. Βιοστατιστική (Ε) Ενότητα 1: Καταχώρηση δεδομένων

ΗΛΕΚΤΡΟΝΙΚΗ ΙIΙ Ενότητα 6

Εισαγωγή στους Η/Υ. Ενότητα 2β: Αντίστροφο Πρόβλημα. Δημήτρης Σαραβάνος, Καθηγητής Πολυτεχνική Σχολή Τμήμα Μηχανολόγων & Αεροναυπηγών Μηχανικών

Εκκλησιαστικό Δίκαιο. Ενότητα 10η: Ιερά Σύνοδος της Ιεραρχίας και Διαρκής Ιερά Σύνοδος Κυριάκος Κυριαζόπουλος Τμήμα Νομικής Α.Π.Θ.

Ανοικτά Ακαδημαϊκά Μαθήματα στο ΤΕΙ Αθήνας. Βιοστατιστική (Ε) Ενότητα 2: Περιγραφική στατιστική

Μαθηματικά Διοικητικών & Οικονομικών Επιστημών

ΕΛΛΗΝΙΚΗ ΔΗΜΟΚΡΑΤΙΑ ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΡΗΤΗΣ

Εισαγωγή στους Αλγορίθμους Φροντιστήριο 1

Θερμοδυναμική. Ανοικτά Ακαδημαϊκά Μαθήματα. Πίνακες Νερού Υπέρθερμου Ατμού. Γεώργιος Κ. Χατζηκωνσταντής Επίκουρος Καθηγητής

Γραμμική Άλγεβρα και Μαθηματικός Λογισμός για Οικονομικά και Επιχειρησιακά Προβλήματα

Εισαγωγή στην Διοίκηση Επιχειρήσεων

Ενότητα. Εισαγωγή στις βάσεις δεδομένων

Διεθνείς Οικονομικές Σχέσεις και Ανάπτυξη

Αερισμός. Ενότητα 1: Αερισμός και αιμάτωση. Κωνσταντίνος Σπυρόπουλος, Καθηγητής Σχολή Επιστημών Υγείας Τμήμα Ιατρικής

Βέλτιστος Έλεγχος Συστημάτων

Ενδεικτικές λύσεις ασκήσεων διαχείρισης έργου υπό συνθήκες αβεβαιότητας

Προγραμματισμός Η/Υ. Βασικές Προγραμματιστικές Δομές. ΤΕΙ Ιονίων Νήσων Τμήμα Τεχνολόγων Περιβάλλοντος Κατεύθυνση Τεχνολογιών Φυσικού Περιβάλλοντος

Γενικά Μαθηματικά Ι. Ενότητα 15: Ολοκληρώματα Με Ρητές Και Τριγωνομετρικές Συναρτήσεις Λουκάς Βλάχος Τμήμα Φυσικής

Τεχνητή Νοημοσύνη Ι. Διαφάνειες Εργαστηρίου. Σγάρμπας Κυριάκος Πολυτεχνική Σχολή Τμήμα Ηλεκτρολόγων Μηχανικών και Τεχνολογίας Υπολογιστών

Διοίκηση Εξωτερικής Εμπορικής Δραστηριότητας

Έλεγχος και Διασφάλιση Ποιότητας Ενότητα 4: Μελέτη ISO Κουππάρης Μιχαήλ Τμήμα Χημείας Εργαστήριο Αναλυτικής Χημείας

Διαφήμιση και Δημόσιες Σχέσεις Ενότητα 9: Σχέσεις διαφημιστή-διαφημιζόμενου

Διοικητική Λογιστική

Μαθηματικά Διοικητικών & Οικονομικών Επιστημών

1 η Διάλεξη. Ενδεικτικές λύσεις ασκήσεων

Εισαγωγή στην Διοίκηση Επιχειρήσεων

Εισαγωγή στους Αλγορίθμους Φροντιστήριο 4

Βέλτιστος Έλεγχος Συστημάτων

Γενικά Μαθηματικά Ι. Ενότητα 12: Κριτήρια Σύγκλισης Σειρών. Λουκάς Βλάχος Τμήμα Φυσικής ΑΝΟΙΚΤΑ ΑΚΑΔΗΜΑΪΚΑ ΜΑΘΗΜΑΤΑ

Εισαγωγή στην Διοίκηση Επιχειρήσεων

Ιστορία της μετάφρασης

ΟΙΚΟΝΟΜΙΚΑ ΜΑΘΗΜΑΤΙΚΑ

Διεθνείς Οικονομικές Σχέσεις και Ανάπτυξη

Λογιστική Κόστους Ενότητα 11: Λογισμός Κόστους (1)

Βάσεις Περιβαλλοντικών Δεδομένων

Λογιστική Κόστους Ενότητα 10: Ασκήσεις Προτύπου Κόστους Αποκλίσεων.

Τεχνικό Σχέδιο - CAD

Πληροφοριακά Συστήματα Διοίκησης (ΜΒΑ) Ενότητα 3: Εφαρμογές Δικτυωτής Ανάλυσης (2 ο Μέρος)

Παιδαγωγική ή Εκπαίδευση ΙΙ

Μεθοδολογία Έρευνας Κοινωνικών Επιστημών Ενότητα 2: ΣΥΓΚΕΝΤΡΩΣΗ ΠΛΗΡΟΦΟΡΙΩΝ ΜΑΡΚΕΤΙΝΓΚ Λοίζου Ευστράτιος Τμήμα Τεχνολόγων Γεωπόνων-Kατεύθυνση

Θεσμοί Ευρωπαϊκών Λαών Ι 19 ος -20 ος αιώνας

Λογιστική Κόστους Ενότητα 11: Λογισμός Κόστους

Εισαγωγή στην Διοίκηση Επιχειρήσεων

Βέλτιστος Έλεγχος Συστημάτων

Παιδαγωγικά. Ενότητα Β: Γενικοί σκοποί της διδασκαλίας και διδακτικοί στόχοι. Ζαχαρούλα Σμυρναίου Σχολή Φιλοσοφίας Τμήμα Παιδαγωγικής και Ψυχολογίας

Διδακτική της Πληροφορικής

Βάσεις Δεδομένων. Ενότητα 1: Εισαγωγή στις Βάσεις δεδομένων. Πασχαλίδης Δημοσθένης Τμήμα Ιερατικών σπουδών

Γραμμική Άλγεβρα και Μαθηματικός Λογισμός για Οικονομικά και Επιχειρησιακά Προβλήματα

4 η Διάλεξη. Ενδεικτικές λύσεις ασκήσεων

Τεχνικό Σχέδιο - CAD

Εκκλησιαστικό Δίκαιο

Εισαγωγή στη Δικτύωση Υπολογιστών

Βάσεις Περιβαλλοντικών Δεδομένων

Τεχνητή Νοημοσύνη Ι. Ενότητα 7:Προτασιακή Λογική. Πέππας Παύλος Πολυτεχνική Σχολή Τμήμα Ηλεκτρολόγων Μηχανικών και Τεχνολογίας Υπολογιστών

Διεθνείς Οικονομικές Σχέσεις και Ανάπτυξη

Εισαγωγή στους Υπολογιστές

Μηχανολογικό Σχέδιο Ι

Κβαντική Επεξεργασία Πληροφορίας

Αρχές Προγραμματισμού

Εφαρμογές των Τεχνολογιών της Πληροφορίας και των Επικοινωνιών στη διδασκαλία και τη μάθηση

Διοίκηση Επιχειρήσεων

Γραμμική Άλγεβρα και Μαθηματικός Λογισμός για Οικονομικά και Επιχειρησιακά Προβλήματα

Εισαγωγή στη Δικτύωση Υπολογιστών

Θεσμοί Ευρωπαϊκών Λαών Ι 19 ος -20 ος αιώνας

Έλεγχος Ποιότητας Φαρμάκων

Γενική Φυσική Ενότητα: Ταλαντώσεις

Εισαγωγή στους Υπολογιστές

ΣΥΜΠΕΡΙΦΟΡΑ ΚΑΤΑΝΑΛΩΤΗ

Εφαρμογές πληροφορικής σε θέματα πολιτικού μηχανικού

Transcript:

Τεχνητή Νοημοσύνη Ι Εργαστηριακή Άσκηση 4-6 Σγάρμπας Κυριάκος Τμήμα Ηλεκτρολόγων Μηχανικών και Τεχνολογίας Υπολογιστων

ΠΑΝΕΠΙΣΤΗΜΙΟ ΠΑΤΡΩΝ - ΠΟΛΥΤΕΧΝΙΚΗ ΣΧΟΛΗ ΤΜΗΜΑ ΗΛΕΚΤΡΟΛΟΓΩΝ ΜΗΧΑΝΙΚΩΝ & ΤΕΧΝΟΛΟΓΙΑΣ ΥΠΟΛΟΓΙΣΤΩΝ ΤΟΜΕΑΣ ΤΗΛΕΠΙΚΟΙΝΩΝΙΩΝ & ΤΕΧΝΟΛΟΓΙΑΣ ΤΗΣ ΠΛΗΡΟΦΟΡΙΑΣ - ΕΡΓΑΣΤΗΡΙΟ ΕΝΣΥΡΜΑΤΗΣ ΤΗΛΕΠΙΚΟΙΝΩΝΙΑΣ ΤΕΧΝΗΤΗ ΝΟΗΜΟΣΥΝΗ Ι - ΕΡΓΑΣΤΗΡΙΟ ΕΝΟΤΗΤΑ Β: Αλγόριθμοι Αναζήτησης ΑΣΚΗΣΕΙΣ #4, #5, #6 Οι αλγόριθμοι αναζήτησης που θα εξετάσουμε στην παρούσα ενότητα ασκήσεων είναι γενικοί. Δηλαδή λύνουν οποιοδήποτε πρόβλημα, αρκεί να τους προσθέσουμε το κατάλληλο interface: τα δεδομένα του προβλήματος μέσω της συνάρτησης διαδόχων. ΑΣΚΗΣΗ #4 (BFS, UCS, DFS) 1. Ο παρακάτω κώδικας Prolog υλοποιεί τον αλγόριθμο αναζήτησης πρώτα σε πλάτος (Breadth-First Search = BFS). % Breadth-First Search % Επειδή δεν έχει μνήμη επισκεφθέντων καταστάσεων, %..κλειδώνει σε loop αν δεν υπάρχει λύση. % Αν υπάρχει λύση βρίσκει αυτήν που βρίσκεται σε μικρότερο βάθος, %..όχι κατ'ανάγκη αυτή με το μικρότερο κόστος. % Καλείται ως: find_bfs(+state1,+state2,-node) search_bfs([currentnode _],GoalNode):- GoalNode=node(C,State,A,D,P), CurrentNode=node(C,State,A,D,P),!. % Εναλλακτικά: search_bfs([g _],G):-!. search_bfs([currentnode Fringe],GoalNode):- findall(succnode,successor(currentnode,succnode),nlist), append(fringe,nlist,newfringe), search_bfs(newfringe,goalnode). find_bfs(initial_state,goal_state,goalnode):- GoalNode=node(_,Goal_State,_,_,_), search_bfs([node(0,initial_state,move,0,null)],goalnode). Και ο επόμενος υλοποιεί τον αλγόριθμο αναζήτησης ομοιόμορφου κόστους (Uniform Cost Search). % Uniform Cost Search % Καλείται ως: find_ucs(+state1,+state2,-node) search_ucs([currentnode _],GoalNode):- GoalNode=node(C,State,A,D,P), CurrentNode=node(C,State,A,D,P),!. search_ucs([currentnode Fringe],GoalNode):- findall(succnode,successor(currentnode,succnode),nlist), append(fringe,nlist,newfringe), msort(newfringe,snfringe), search_ucs(snfringe,goalnode). find_ucs(initial_state,goal_state,goalnode):- GoalNode=node(_,Goal_State,_,_,_), search_ucs([node(0,initial_state,move,0,null)],goalnode). Μελετήστε τον κώδικα και αφού καταλάβετε πώς λειτουργεί, προσθέστε τις κατάλληλες συναρτήσεις ώστε να λύνει το πρόβλημα του χάρτη της Ρουμανίας και με τους δύο αλγορίθμους. Υπόδειξη: Θα χρειαστεί να προσθέσετε τις συναρτήσεις link/3 και nextd/3 από την προηγούμενη ενότητα ασκήσεων, καθώς και μια νέα μη ντετερμινιστική συνάρτηση successor/2 που θα εκφράζει την συνάρτηση διαδόχων του προβλήματος και θα είναι κοινή και για τους δυο αλγορίθμους. Η κλήση της είναι: successor(+node,-nextnode). Θεωρήστε --1-- (v1.8) 15/11/2012 - Κ.Σγάρμπας

ότι κάθε κόμβος έχει τη δομή: node(pathcost, State, Action, Depth, Parent). 2. Ο παρακάτω κώδικας Prolog υλοποιεί τον αλγόριθμο αναζήτησης πρώτα σε βάθος (Depth-First Search = DFS). % Depth-First Search % Επικίνδυνη γιατί μπορεί να κλειδώσει σε ατέρμονο loop. % Κλήση: find_dfs(+state1,+state2,-node) search_dfs(currentnode,goalnode):- GoalNode=node(C,State,A,D,P), CurrentNode=node(C,State,A,D,P),!. search_dfs(currentnode,goalnode):- successor(currentnode,succnode), search_dfs(succnode,goalnode). find_dfs(initial_state,goal_state,goalnode):- GoalNode=node(_,Goal_State,_,_,_), search_dfs(node(0,initial_state,move,0,null),goalnode),!. Μελετήστε τον κώδικα και αφού καταλάβετε πώς λειτουργεί, χρησιμοποιήστε τον ως πρότυπο για να φτιάξετε τον αλγόριθμο αναζήτησης περιορισμένου βάθους (Depth- Limited Search = DLS) με πρότυπο κλήσης: find_dls(+state1,+state2,+limit,-node). Ελέγξτε τη σωστή λειτουργία του στο πρόβλημα του χάρτη της Ρουμανίας. ΑΣΚΗΣΗ #5 (IDS, Συναρτήσεις Διαδόχων) 3. Με βάση την εμπειρία σας από τους παραπάνω αλγορίθμους, υλοποιήστε τον αλγόριθμο αναζήτησης με επαναληπτική εμβάθυνση (Iterative-Deepening Search = IDS) με πρότυπο κλήσης: find_ids(+state1,+state2,-node). Μπορείτε να χρησιμοποιείτε κλήσεις προς τις συναρτήσεις των προηγούμενων αλγορίθμων, αν θέλετε. Ελέγξτε τη σωστή λειτουργία του στο πρόβλημα του χάρτη της Ρουμανίας. 4. Φτιάξτε μια συνάρτηση με πρότυπο κλήσης detailed_print(+node) η οποία θα δέχεται έναν κόμβο και θα τυπώνει όλο το μονοπάτι από τον αρχικό κόμβο προς αυτόν, με τα ενδιάμεσα κόστη και τις λοιπές πληροφορίες που καταχωρούνται στους κόμβους. Για παράδειγμα, θα πρέπει να τρέχει κάπως έτσι: run_romania_map:- find_ids(a,b,r), detailed_print(r).?- run_romania_map. 0 0 move:a 1 140 move:s 2 239 move:f 3 450 move:b true. 5. Τροποποιήστε κατάλληλα την successor/2 ώστε να γίνει ανεξάρτητη από το πρόβλημα αναζήτησης. Υπόδειξη: Μεταφέρετε τα στοιχεία που εξαρτώνται από το πρόβλημα σε νέα συνάρτηση. 6. Προσθέστε κατάλληλο κώδικα ώστε να λύσετε με αναζήτηση (προτιμήστε τον αλγόριθμο IDS) το πρόβλημα των Πύργων του Ανόι: Τρεις δίσκοι είναι τοποθετημένοι στον αριστερό από τρεις στύλους όπως στο σχήμα, και πρέπει να μετακινηθούν όλοι στον δεξιό στύλο. Επιτρέπεται να μετακινούμε μόνο έναν δίσκο κάθε φορά και ποτέ δεν μπορούμε να τοποθετήσουμε έναν μεγαλύτερο πάνω σε έναν μικρότερο. Το πρόβλημα γενικεύεται για οποιοδήποτε πλήθος δίσκων, αλλά πάντα οι στύλοι είναι τρεις. --2-- (v1.8) 15/11/2012 - Κ.Σγάρμπας

7. Ο παρακάτω κώδικας λύνει το πρόβλημα των Πύργων του Ανόι χωρίς αναζήτηση: hanoi(0,_,_,_) :-!. hanoi(n,a,b,c) :- M is N-1, hanoi(m,a,c,b), write([move,from,a,to,b]), nl, hanoi(m,c,b,a). Τρέξτε τον με:?- hanoi(3,left,right,middle). Συγκρίνετε το αποτέλεσμα με αυτό που βρίσκει η αναζήτηση. Σχολιάστε τα πλεονεκτήματα και τα μειονεκτήματα των δύο προσεγγίσεων. 8. Ο παρακάτω κώδικας λύνει το πρόβλημα του αγρότη: Ένας αγρότης βρίσκεται στην αριστερή όχθη ενός ποταμού μαζί με ένα λύκο, μια κατσίκα και ένα μεγάλο μαρούλι και πρέπει να περάσουν όλοι απέναντι με μια βάρκα που χωρά μόνο τον αγρότη και έναν επιπλέον επιβάτη, χωρίς ποτέ να βρεθεί η κατσίκα στην ίδια όχθη με το μαρούλι χωρίς να είναι παρών ο αγρότης (γιατί η κατσίκα θα φάει το μαρούλι), ούτε ο λύκος μαζί με την κατσίκα χωρίς τον αγρότη (γιατί ο λύκος θα φάει την κατσίκα). % Το πρόβλημα του Αγρότη % initial state: s([a,k,l,m],[]) final state: s([], [a,k,l,m]) farmer_ps(_,state,saction,sstate,cost):- farmer_next_move(state,sstate,saction), Cost=1. farmer_next_move(s([a LT],R),s(LT,[a R]),((a),right)):- is_safe(lt). farmer_next_move(s(l,[a RT]),s([a L],RT),((a),left)):- is_safe(rt). farmer_next_move(s([a LT],R),s(Ln,[a Rn]),((a,Passenger),right)):- member(passenger,lt), remove(lt,passenger,ln), is_safe(ln), msort([passenger R],Rn). farmer_next_move(s(l,[a RT]),s([a Ln],Rn),((a,Passenger),left)):- member(passenger,rt), remove(rt,passenger,rn), is_safe(rn), msort([passenger L],Ln). is_safe(l):- member(l,l),member(k,l),!,fail. is_safe(l):- member(m,l),member(k,l),!,fail. is_safe(_). remove(l,x,l2):- append(a,[x B],L), append(a,b,l2). run_farmer_puzzle:- find_ids(s([a,k,l,m],[]),s([],[a,k,l,m]),r), detailed_print(r). Μελετήστε τον κώδικα και προσπαθήστε να καταλάβετε πώς λειτουργεί. 9. Προσθέστε κατάλληλο κώδικα ώστε να λύσετε με αναζήτηση (με IDS) το puzzle των 8 πλακιδίων: Έστω 8 πλακίδια, τοποθετημένα σε διάταξη 3x3 με μια θέση κενή. Σε κάθε κίνηση επιτρέπεται να μετακινηθεί οριζόντια ή κατακόρυφα μόνο ένα πλακίδιο γειτονικό της κενής θέσης ώστε να την καλύψει. Ο στόχος είναι να φτάσετε από μια αρχική κατάσταση στην τελική. ΑΡΧΙΚΗ ΤΕΛΙΚΗ 1 2 3 1 2 3 4 5 4 5 6 6 7 8 7 8 Χρονομετρήστε τον αλγόριθμό σας. Μετά δοκιμάστε ως αρχική κατάσταση αυτήν: 1 2 3 4 5 6 7 8 Υπόδειξη: Μπορείτε να συμβολίσετε κάθε κατάσταση είτε ως λίστα είτε ως ένα σύνθετο αντικείμενο, πχ. s(1,2,3,4,5,6,7,8,0) όπου 0 συμβολίζει το κενό τετράγωνο. --3-- (v1.8) 15/11/2012 - Κ.Σγάρμπας

ΑΣΚΗΣΗ #6 (BestFS, A*) 10.Υλοποιήστε τον αλγόριθμο Best-First Search (Αναζήτηση Πρώτα στο Καλύτερο) με πρότυπο κλήσης: find_bestfs(+state1,+state2,-node) και χρησιμοποιήστε τον για να λύσετε το puzzle των 8 πλακιδίων. Υπόδειξη: Ως ευρετική συνάρτηση χρησιμοποιήστε το άθροισμα των αποστάσεων Manhattan των αριθμών από τις τελικές τους θέσεις. (Η συνάρτηση αυτή είναι consistent.) Προσοχή: Ο αλγόριθμος κινδυνεύει από ατέρμονα loops. 11.Προσθέστε μνήμη στον προηγούμενο αλγόριθμο ώστε να μην αναπτύσσει καταστάσεις που έχει ξανασυναντήσει (και να μην πέφτει σε ατέρμονα loops). Προσέξτε πόσο πιο γρήγορα βρίσκει λύση στις περιπτώσεις που ο IDS καθυστερεί πολύ, αλλά δεν βρίσκει τόσο καλές λύσεις όπως ο IDS. 12.Υλοποιήστε τον αλγόριθμο A* με πρότυπο κλήσης find_astars(+state1,+state2,-node) και χρησιμοποιήστε τον για να λύσετε το puzzle των 8 πλακιδίων. Προσέξτε πόσο πιο γρήγορα βρίσκει τη βέλτιστη λύση σε σύγκριση με τον IDS. --4-- (v1.8) 15/11/2012 - Κ.Σγάρμπας

Σημειώματα Σημείωμα Ιστορικού ΕκδόσεωνΈργου Το παρόν έργο αποτελεί την έκδοση 1.0 Έκδοση 1.0 διαθέσιμη εδώ. Σημείωμα Αναφοράς Copyright Πανεπιστήμιο Πατρων, Φακωτάκης Νικόλαος, Σγάρμπας Κυριάκος, Πέππας Παύλος, Μουστάκας Κωνσταντίνος. «Εργαστήριο 4-6». Έκδοση: 1.0. Πάτρα 2015. Διαθέσιμο από τη δικτυακή διεύθυνση: https://eclass.upatras.gr/modules/course_metadata/opencourses.php?fc=15 Σημείωμα Αδειοδότησης Το παρόν υλικό διατίθεται με τους όρους της άδειας χρήσης CreativeCommons Αναφορά, Μη Εμπορική Χρήση Παρόμοια Διανομή 4.0 [1] ή μεταγενέστερη, Διεθνής Έκδοση. Εξαιρούνται τα αυτοτελή έργα τρίτων π.χ. φωτογραφίες, διαγράμματα κ.λ.π., τα οποία εμπεριέχονται σε αυτό και τα οποία αναφέρονται μαζί με τους όρους χρήσης τους στο «Σημείωμα Χρήσης Έργων Τρίτων». [1] http://creativecommons.org/licenses/by-nc-sa/4.0/ Ως Μη Εμπορική ορίζεται η χρήση: που δεν περιλαμβάνει άμεσο ή έμμεσο οικονομικό όφελος από την χρήση του έργου, για το διανομέα του έργου και αδειοδόχο που δεν περιλαμβάνει οικονομική συναλλαγή ως προϋπόθεση για τη χρήση ή πρόσβαση στο έργο που δεν προσπορίζει στο διανομέα του έργου και αδειοδόχο έμμεσο οικονομικό όφελος (π.χ. διαφημίσεις) από την προβολή του έργου σε διαδικτυακό τόπο Ο δικαιούχος μπορεί να παρέχει στον αδειοδόχο ξεχωριστή άδεια να χρησιμοποιεί το έργο για εμπορική χρήση, εφόσον αυτό του ζητηθεί.

Διατήρηση Σημειωμάτων Οποιαδήποτε αναπαραγωγή ή διασκευή του υλικού θα πρέπει να συμπεριλαμβάνει: το Σημείωμα Αναφοράς το Σημείωμα Αδειοδότησης τη δήλωση Διατήρησης Σημειωμάτων το Σημείωμα Χρήσης Έργων Τρίτων (εφόσον υπάρχει) μαζί με τους συνοδευόμενους υπερσυνδέσμους. Σημείωμα Χρήσης Έργων Τρίτων Το Έργο αυτό κάνει χρήση των ακόλουθων έργων:

Χρηματοδότηση Το παρόν εκπαιδευτικό υλικό έχει αναπτυχθεί στoπλαίσιo του εκπαιδευτικού έργου του διδάσκοντα. Το έργο «Ανοικτά Ακαδημαϊκά Μαθήματα στο Πανεπιστήμιο Αθηνών» έχει χρηματοδοτήσει μόνο τη αναδιαμόρφωση του εκπαιδευτικού υλικού. Το έργο υλοποιείται στο πλαίσιο του Επιχειρησιακού Προγράμματος «Εκπαίδευση και Δια Βίου Μάθηση» και συγχρηματοδοτείται από την Ευρωπαϊκή Ένωση (Ευρωπαϊκό Κοινωνικό Ταμείο) και από εθνικούς πόρους.