ΠΑΝΕΠΙΣΤΗΜΙΟ ΠΕΙΡΑΙΩΣ ΤΜΗΜΑ ΨΗΦΙΑΚΩΝ ΣΥΣΤΗΜΑΤΩΝ ΤΜΗΜΑ ΨΗΦΙΑΚΩΝ ΣΥΣΤΗΜΑΤΩΝ http://www.ds.unipi.gr TEXNHTH ΝΟΗΜΟΣΥΝΗ 2017-2018 ΕΡΓΑΣΙΑ 1 η ΑΠΑΝΤΗΣΕΙΣ 1. Α. ΧΩΡΟΣ ΚΑΤΑΣΤΑΣΕΩΝ Για το πρόβλημα των πύργων Ανόι: Σύνολο καταστάσεων: Στις καταστάσεις, αποθηκεύουμε τις πληροφορίες σχετικά με τις τρέχουσες θέσεις των δίσκων. Αναπαριστώ μία κατάσταση με μία τριάδα (Χ, Υ, Ζ) όπου Χ {P, Q, R} και δείχνει σε ποιο πύργο βρίσκεται ο δίσκος 1, δηλαδή {P, Q, R} και δείχνει σε ποιο πύργο βρίσκεται ο δίσκος 2 στο {P, Q, R} και δείχνει σε ποιο πύργο βρίσκεται ο δίσκος 3 στο {P, Q, R}. Είναι δηλαδή μία διατεταγμένη τριάδα (Χ,Υ,Ζ) όπου τα Χ,Υ και Ζ αναπαριστούν την θέση των δίσκων 1,2 και 3 αντίστοιχα και μπορούν να λάβουν τις τιμές P, Q και R, με Χ,Υ,Ζ {P, Q, R}. Αρχική κατάσταση: Αρχικά, όλοι οι δίσκοι βρίσκονται στη ράβδο P: Άρα η αρχική κατάσταση θα είναι Α = (P, P, P) Σύνολο καταστάσεων στόχων: Ο στόχος είναι να μετακινηθούν και οι τρεις δίσκοι στη ράβδο R. Έτσι, σε αυτό το πρόβλημα, έχουμε μόνο μία κατάσταση στόχου, δηλαδή: L = (R, R, R ) Τελεστές Δράσης: Κάθε τελεστής περιλαμβάνει δύο στοιχεία: - ποιος δίσκο πρέπει να κινηθεί και - σε ποια ράβδο Και συγκεκριμένα: Move I,Θ, όπου Ι μπορεί να πάρει τις τιμές 1,2,3 και Θ τις τιμές P,Q,R Έστω Χ ένας τυχαίος δίσκος {1,2,3} που αναπαριστά τους δίσκους (μικρό,μεσαίο και μεγάλο), αντίστοιχα. Αφού έχουμε ορίσει Χ,Υ και Ζ την αναπαράσταση των θέσεων των τριών δίσκων, ορίζουμε έξι
τελεστές που αναπαριστούν τις κινήσεις (ενέργειες) που επιτρέπονται και μπορούν να εκτελεστούν προκειμένου να μεταβούμε απο μία κατάσταση σε μία άλλη: 1. Μετακίνησε τον δίσκο Χ απο την ράβδο P στην ράβδο Q. Προυποθέσεις: Αν Χ = 1 τότε πρέπει, (Υ Q και Z Q) ή (Υ=Q και Z Q) ή (Υ Q και Z=Q) ή (Υ=Q και Z=Q) Αν Χ = 2 τότε πρέπει, {(Χ Q και Z Q) ή (Χ Q και Z=Q)} και (Χ P) Αν Χ = 3 τότε πρέπει, (X P,Q και Y P,Q) Αποτέλεσμα: Ο δίσκος Χ μετακινείται απο την ράβδο P στην ράβδο Q. 2. Μετακίνησε τον δίσκο Χ απο την ράβδο Q στην ράβδο R. Προυποθέσεις: Αν Χ = 1 τότε πρέπει, (Υ R και Z R) ή (Υ=R και Z R) ή (Υ R και Z=R) ή (Υ=R και Z=R) Αν Χ = 2 τότε πρέπει, {(Χ R και Z R) ή (Χ R και Z=R)} και (Χ Q) Αν Χ = 3 τότε πρέπει, (X Q,R και Y Q,R) Αποτέλεσμα: Ο δίσκος Χ μετακινείται απο την ράβδο Q στην ράβδο R. 3. Μετακίνησε τον δίσκο Χ απο την ράβδο R στην ράβδο Q. Προυποθέσεις: Αν Χ = 1 τότε πρέπει, (Υ Q και Z Q) ή (Υ=Q και Z Q) ή (Υ Q και Z=Q) ή (Υ=Q και Z=Q) Αν Χ = 2 τότε πρέπει, {(Χ Q και Z Q) ή (Χ Q και Z=Q)} και (Χ R) Αν Χ = 3 τότε πρέπει, (X Q,R και Y Q,R) Αποτέλεσμα: Ο δίσκος Χ μετακινείται απο την ράβδο R στην ράβδο Q. 4. Μετακίνησε τον δίσκο Χ απο την ράβδο Q στην ράβδο P. Προυποθέσεις: Αν Χ = 1 τότε πρέπει, (Υ P και Z P) ή (Υ=P και Z P) ή (Υ P και Z=P) ή (Υ=P και Z=P) Αν Χ = 2 τότε πρέπει, {(Χ P και Z P) ή (Χ P και Z=P)} και (Χ Q) Αν Χ = 3 τότε πρέπει, (X P,Q και Y P,Q) Αποτέλεσμα: Ο δίσκος Χ μετακινείται απο την ράβδο Q στην ράβδο P. 5. Μετακίνησε τον δίσκο Χ απο την ράβδο P στην ράβδο R. Προυποθέσεις: Αν Χ = 1 τότε πρέπει, (Υ R και Z R) ή (Υ=R και Z R) ή (Υ R και Z=R) ή (Υ=R και Z=R) Αν Χ = 2 τότε πρέπει, {(Χ R και Z R) ή (Χ R και Z=R)} και (Χ P) Αν Χ = 3 τότε πρέπει, (X P,R και Y P,R) Αποτέλεσμα: Ο δίσκος Χ μετακινείται απο την ράβδο P στην ράβδο R. 6. Μετακίνησε τον δίσκο Χ απο την ράβδο R στην ράβδο P. Προυποθέσεις: Αν Χ = 1 τότε πρέπει, (Υ P και Z P) ή (Υ=P και Z P) ή (Υ P και Z=P) ή (Υ=P και Z=P) Αν Χ = 2 τότε πρέπει, {(Χ P και Z P) ή (Χ P και Z=P)} και (Χ R) Αν Χ = 3 τότε πρέπει, (X P,R και Y P,R) Αποτέλεσμα: Ο δίσκος Χ μετακινείται απο την ράβδο R στην ράβδο P. Χώρος Καταστάσεων: Ο χώρος καταστάσεων διαμορφώνεται ως εξής: ΣΗΜΕΙΩΣΗ:Με κόκκινο αποτυπώνονται οι αριστεροί κόμβοι, με πράσινο οι δεξιοί και μαύρο οι οριζόντιοι για να είναι διακριτές οι ενέργειες του καθενός
ΧΩΡΟΣ ΚΑΤΑΣΤΑΣΕΩΝ (P,P,P) MOVE 1,Q MOVE 1,R (Q,P,P) MOVE 1,P MOVE 1,P MOVE 1,R (R,P,P) MOVE 2,R MOVE 1,Q MOVE 2,Q (Q,R,P) MOVE 2,P MOVE 2,P (R,Q,P) MOVE 1,R (R,R,P) MOVE 1,Q MOVE 1,P MOVE 1,P MOVE 1,Q MOVE 1,P MOVE 2,Q (P,R,P) (P,Q,P) MOVE 1,R MOVE 1,R MOVE 1,Q MOVE 1,Q (Q,Q,P) MOVE 1,R MOVE 2,R MOVE 1,P MOVE 3,R MOVE 3,Q MOVE 3,P MOVE 3,P (Q,Q,R) (R,R,Q) MOVE 1,R MOVE 1,Q MOVE 1,P MOVE 1,P MOVE 1,Q MOVE 1,Q MOVE 1,R MOVE 1,R MOVE 1,P MOVE (R,Q,R) (P,Q,R) 1,Q (P,R,Q) (Q,R,Q) MOVE 1,R MOVE 2,P MOVE 2,R MOVE MOVE MOVE 2,P 2,Q 1,P MOVE 2,Q MOVE 2,R MOVE 2,R MOVE 2,R (P,R,R) (P,Q,Q) (Q,P,Q) (R,P,R) MOVE 1,P MOVE 1,Q MOVE 1,R MOVE 1,Q MOVE 1,R MOVE 1,P MOVE MOVE 1,R MOVE 1,P 1,R MOVE 1,Q MOVE 1,P MOVE 1,Q MOVE 1,P MOVE MOVE MOVE 1,Q 1,R 1,P MOVE 1,R MOVE MOVE MOVE 2,P 1,P 3,R MOVE MOVE 1,Q 2,R MOVE 1,R (R,R,R) (P,P,Q) (P,P,R) (Q,P,R) (Q,R,R) (Q,Q,Q) (R,Q,Q) (R,P,Q) MOVE MOVE 2,P MOVE 1,Q MOVE MOVE 1,R MOVE 1,Q 2,Q 3,Q MOVE 1,P
Σε πίνακα (βλέπε παρακάτω) αποτυπώνονται αναλυτικά οι κόμβοι (καταστάσεις) και οι διαδοχικές τους καταστάσεις (κόμβοι) σύμφωνα με τις ακμές (συναρτήσεις διαδοχής καταστάσεων). Παρατήρηση: Αναγράφονται μόνο τα πιθανά έως ένα σημείο (για να δοθεί παράδειγμα του πως ακριβώς κινηθήκαμε) και στη συνέχεια αποτυπώνονται μόνο αυτά που έχουν νόημα για την επίλυση της άσκησης. Με Bold αναγράφονται οι καταστάσεις που διατρέχουμε προκειμένου να καταλήξουμε στον κόμβο στόχο (επιθυμητή κατάσταση). ΚΟΜΒΟΙ/ΑΚΜΕΣ ΜOVE (1) ΜOVE (2) ΜOVE (3) ΜOVE (4) ΜOVE (5) ΜOVE (6) (P,P,P) ΑΡΧΙΚΗ (Q,P,P) (R,P,P) ΚΑΤΑΣΤΑΣΗ (Q,P,P) (R,P,P) (P,P,P) (Q,R,P) (R,P,P) (R,Q,P) (Q,P,P) (P,P,P) (Q,R,P) (R,R,P) (P,R,P) (Q,P,P) (R,Q,P) (Q,Q,P) (R,P,P) (P,Q,P) (R,R,P) (R,R,Q) (Q,R,P) (P,R,P) (P,R,P) (Q,R,P) (P,Q,P) (R,R,P) (P,Q,P) (Q,Q,P) (P,R,P) (R,Q,P) (Q,Q,P) (R,Q,P) (P,Q,P) (Q,Q,R) (Q,Q,R) (R,Q,R) (P,Q,R) (Q,Q,P) (P,Q,R) (Q,Q,R) (P,R,R) (R,Q,R) (P,R,R) (Q,R,R) (P,Q,R) (R,R,R) ΤΕΛΙΚΗ ΚΑΤΑΣΤΑΣΗ
Β. ΑΝΑΖΗΤΗΣΗ α. Κατά βάθος αναζήτηση με λίστα εισόδου (P,P,P) (Q,P,P) (R,P,P) (Q,R,P) (R,P,P) (P,R,P) (R,R,P) (P,Q,P) (R,R,P) (Q,Q,P (R,Q,P) (Q,Q,R ) (R,Q,P) (P,Q,R) (R,Q,R) (P,R,R) (R,Q,R) (Q,R,R) (R,R,R) (Q,P,R) (R,R,R ) (P,P,R) (R,P,R) (P,P,R) (R,Q,R) (P,P,Q) (R,P,R) (Q,P,Q) (R,P,Q) (R,Q,Q) (R,P,Q) (Q,P,Q) (Q,R,Q) (P,R,Q ) (P,Q,Q ) (Q,Q,Q) (R,R,Q ) (R,R,Q ) (R,Q,Q) (P,R,Q ) (R,R,P) (R,P,Q) (R,Q,Q) (Q,Q,Q)
Οι κόμβοι που διαγράφηκαν οφείλεται στο γεγονός ότι προϋπηρχαν στη λίστα εισόδου. Παρατηρείται ότι όταν ο αλγόριθμος φτάσει στον κόμβο (Q,Q,Q) επειδή δεν μπορεί πλέον να επεκταθεί αρχίζει διαδοχικές οπισθοδομήσεις (καθότι ούτε οι κόμβοι (R,Q,Q) (R,R,Q) (R,P,Q) και (R,P,R) μπορούν να επεκταθούν) ώσπου φτάνει στον κόμβο- στόχο (R,R,R) Επίπεδο Μέτωπο αναζήτησης (ουρά) Κόμβος (σειρά επέκτασης ή τιμή αποτίμησης κόστους για τον κόμβο) Λίστα επέκτασης/ εισόδου 0 (P,P,P) (P,P,P) (P,P,P) 1 (Q,P,P) (R,P,P) (Q,P,P) (P,P,P)(Q,P,P) (R,P,P) 2 (Q,R,P) (R,P,P) (Q,R,P) (P,P,P)(Q,P,P) (R,P,P) (Q,R,P) 3 (P,R,P) (R,R,P) (P,R,P) (P,P,P)(Q,P,P) (R,P,P) (Q,R,P) (P,R,P) (R,P,P) 4 (Q,Q,P) (R,Q,P) (Q,Q,P) (P,P,P)(Q,P,P) (R,P,P) (Q,R,P) (P,R,P) (Q,Q,P) (R,Q,P) 5 (Q,Q,R) (R,Q,P) (Q,Q,R) (P,P,P)(Q,P,P) (R,P,P) (Q,R,P) (P,R,P) 6 (P,Q,R) (R,Q,R) (R,Q,P) 7 (P,R,R) (R,Q,R) (R,Q,P) 8 (Q,R,R) (R,R,R) (R,Q,R) (R,Q,P) 9 (Q,P,R) (R,R,R) (R,Q,R) (R,Q,P) 10 (P,P,R) (R,P,R) (R,R,R) (R,Q,R) (R,Q,P) 11 (P,P,Q) (R,P,R) (R,R,R) (R,Q,R) (R,Q,P) 12 (Q,P,Q)(R,P,Q) (R,P,R) (R,R,R) (R,Q,R) (R,Q,P) 13 (Q,R,Q)(R,P,Q) (R,P,R) (R,R,R) (R,Q,R) (R,Q,P) 14 (P,R,Q) (R,R,Q) (R,P,Q) (R,P,R) (R,R,R) (R,Q,R) (R,Q,P) 15 (P,Q,Q) (R,R,Q) (R,P,Q) (R,P,R) (R,R,R) (R,Q,R) (R,Q,P) 16 (Q,Q,Q) (R,Q,Q) (R,R,Q) (R,P,Q) (R,P,R) (R,R,R) (R,Q,R) (R,Q,P) (P,Q,R) (P,R,R) (Q,R,R) (Q,P,R) (P,P,R) (P,P,Q) (Q,P,Q) (Q,R,Q) (P,R,Q) (P,Q,Q) (Q,Q,Q) (Q,Q,P) (R,Q,P) (Q,Q,R) (P,P,P)(Q,P,P) (R,P,P) (Q,R,P) (P,R,P) (Q,Q,P) (R,Q,P) (Q,Q,R) (P,Q,R) (R,Q,R) (P,P,P)(Q,P,P) (R,P,P) (Q,R,P) (P,R,P) (Q,Q,P) (R,Q,P) (Q,Q,R) (P,Q,R) (R,Q,R) (P,R,R) (P,P,P)(Q,P,P) (R,P,P) (Q,R,P) (P,R,P) (Q,Q,P) (R,Q,P) (Q,Q,R) (P,Q,R) (R,Q,R) (P,R,R) (Q,R,R) (R,R,R) (P,P,P)(Q,P,P) (R,P,P) (Q,R,P) (P,R,P) (Q,Q,P) (R,Q,P) (Q,Q,R) (P,Q,R) (R,Q,R) (P,R,R) (Q,R,R) (R,R,R) (Q,R,R) (P,P,P)(Q,P,P) (R,P,P) (Q,R,P) (P,R,P) (Q,Q,P) (R,Q,P) (Q,Q,R) (P,Q,R) (R,Q,R) (P,R,R) (Q,R,R) (R,R,R) (Q,R,R)(Q,P,R) (P,P,P)(Q,P,P) (R,P,P) (Q,R,P) (P,R,P) (Q,Q,P) (R,Q,P) (Q,Q,R) (P,Q,R) (R,Q,R) (P,R,R) (Q,R,R) (R,R,R) (Q,R,R)(Q,P,R) (P,P,R) (P,P,P)(Q,P,P) (R,P,P) (Q,R,P) (P,R,P) (Q,Q,P) (R,Q,P) (Q,Q,R) (P,Q,R) (R,Q,R) (P,R,R) (Q,R,R) (R,R,R) (Q,R,R)(Q,P,R)(P,P,R) (P,P,Q) (P,P,P)(Q,P,P) (R,P,P) (Q,R,P) (P,R,P) (Q,Q,P) (R,Q,P) (Q,Q,R) (P,Q,R) (R,Q,R) (P,R,R) (Q,R,R) (R,R,R) (Q,R,R)(Q,P,R)(P,P,R) (P,P,Q) (Q,P,Q) (P,P,P)(Q,P,P) (R,P,P) (Q,R,P) (P,R,P) (Q,Q,P) (R,Q,P) (Q,Q,R) (P,Q,R) (R,Q,R) (P,R,R) (Q,R,R) (R,R,R) (Q,R,R)(Q,P,R) (P,P,R)(P,P,Q) (Q,P,Q) (Q,R,Q) (P,P,P)(Q,P,P) (R,P,P) (Q,R,P) (P,R,P) (Q,Q,P) (R,Q,P) (Q,Q,R) (P,Q,R) (R,Q,R) (P,R,R) (Q,R,R) (R,R,R) (Q,R,R)(Q,P,R)(P,P,R) (P,P,Q) (Q,P,Q) (Q,R,Q) (P,R,Q) (P,P,P)(Q,P,P) (R,P,P) (Q,R,P) (P,R,P) (Q,Q,P) (R,Q,P) (Q,Q,R) (P,Q,R) (R,Q,R) (P,R,R) (Q,R,R) (R,R,R) (Q,R,R)(Q,P,R)(P,P,R) (P,P,Q) (Q,P,Q) (Q,R,Q) (P,R,Q) (P,Q,Q) Οπισθοδρόμηση
17 (R,Q,Q) (R,R,Q) (R,P,Q) (R,P,R) (R,R,R) (R,Q,R) (R,Q,P) 18 (R,R,Q) (R,P,Q) (R,P,R) (R,R,R) (R,Q,R) (R,Q,P) 19 (R,P,Q) (R,P,R) (R,R,R) (R,Q,R) (R,Q,P) 20 (R,P,R) (R,R,R) (R,Q,R) (R,Q,P) 21 (R,R,R) (R,Q,R) (R,Q,P) 22 Κόμβος -στόχος (R,Q,Q) (R,R,Q) (R,P,Q) (R,P,R) (R,R,R) P,P,P)(Q,P,P) (R,P,P) (Q,R,P) (P,R,P) (Q,Q,P) (R,Q,P) (Q,Q,R) (P,Q,R) (R,Q,R) (P,R,R) (Q,R,R) (R,R,R) (Q,R,R)(Q,P,R)(P,P,R) (P,P,Q) (Q,P,Q) (Q,R,Q) (P,R,Q) (P,Q,Q) P,P,P)(Q,P,P) (R,P,P) (Q,R,P) (P,R,P) (Q,Q,P) (R,Q,P) (Q,Q,R) (P,Q,R) (R,Q,R) (P,R,R) (Q,R,R) (R,R,R) (Q,R,R)(Q,P,R)(P,P,R) (P,P,Q) (Q,P,Q) (Q,R,Q) (P,R,Q) (P,Q,Q) P,P,P)(Q,P,P) (R,P,P) (Q,R,P) (P,R,P) (Q,Q,P) (R,Q,P) (Q,Q,R) (P,Q,R) (R,Q,R) (P,R,R) (Q,R,R) (R,R,R) (Q,R,R)(Q,P,R)(P,P,R) (P,P,Q) (Q,P,Q) (Q,R,Q) (P,R,Q) (P,Q,Q) P,P,P)(Q,P,P) (R,P,P) (Q,R,P) (P,R,P) (Q,Q,P) (R,Q,P) (Q,Q,R) (P,Q,R) (R,Q,R) (P,R,R) (Q,R,R) (R,R,R) (Q,R,R)(Q,P,R)(P,P,R) (P,P,Q) (Q,P,Q) (Q,R,Q) (P,R,Q) (P,Q,Q) P,P,P)(Q,P,P) (R,P,P) (Q,R,P) (P,R,P) (Q,Q,P) (R,Q,P) (Q,Q,R) (P,Q,R) (R,Q,R) (P,R,R) (Q,R,R) (R,R,R) (Q,R,R)(Q,P,R)(P,P,R) (P,P,Q) (Q,P,Q) (Q,R,Q) (P,R,Q) (P,Q,Q) NAI ΝΑΙ ΝΑΙ ΝΑΙ
β. Αναζήτηση κατά πλάτος με λίστα εισόδου (P,P,P) (Q,P,P) (R,P,P) (Q,R,P) (R,P,P) (Q,P,P) (R,Q,P) (R,R,P) (P,R,P) (P,Q,P) (Q,Q,P) (R,R,Q) (P,R,P) (P,R,P) (Q,Q,P) (Q,Q,R) (P,R,Q) (Q,R,Q) (R,Q,R) (P,Q,R) (P,Q,Q) (Q,R,Q) (P,R,Q) (Q,P,Q) (R,P,R) (P,Q,R) (R,Q,R) (P,R,R) (Q,Q,Q) (R,Q,Q) (R,P,Q) (P,P,Q) (P,P,R) (Q,P,R) (Q,R,R) (R,R,R) (R,Q,Q) (R,Q,Q) (P,P,Q) (P,P,Q) (Q,P,R) (Q,P,R) (R,R,R) (Q,Q,Q) (R,P,Q) (R,P,Q) (P,P,R) (P,P,R) (Q,R,R)
Επίπεδο Μέτωπο αναζήτησης (ουρά) Κόμβος (σειρά επέκτασης ή τιμή αποτίμησης κόστους για τον κόμβο) Λίστα επέκτασης/ εισόδου 0 (PPP) (PPP) (PPP) 1 (QPP) (RPP) (QPP) (PPP) (QPP) (RPP) 2 (RPP) (QRP) (RPP) (PPP) (QPP) (RPP) (QRP) 3 (QRP) (RQP) (QRP) (PPP) (QPP) (RPP) (QRP) (RQP) 4 (RQP) (RRP)(PRP) (RQP) (PPP) (QPP) (RPP) (QRP) (RQP) (RRP)(PRP) 5 (RRP)(PRP) (PQP) (QQP) (RRP) (PPP) (QPP) (RPP) (QRP) (RQP) (RRP)(PRP) (PQP) (QQP) 6 (PRP) (PQP) (QQP) (RRQ) (QQP) (PPP) (QPP) (RPP) (QRP) (RQP) (RRP)(PRP) (PQP) (QQP)(RRQ) 7 (RRQ) (QQR) (RRQ) (PPP) (QPP) (RPP) (QRP) (RQP) 8 (QQR) (PRQ)(QRQ) (QQR) (PPP) (QPP) (RPP) (QRP) (RQP) (PRQ)(QRQ) 9 (PRQ)(QRQ) (RQR)(PQR) 10 (QRQ) (RQR)(PQR) (PQQ) 11 (RQR)(PQR) (PQQ)(QPQ) 12 (PQR) (PQQ)(QPQ) (RPR) 13 (PQQ)(QPQ) (RPR) (PRR) 14 (QPQ) (RPR) (PRR) (QQQ)(RQQ) 15 (RPR) (PRR) (QQQ)(RQQ) (RPQ)(PPQ) 16 (PRR) (QQQ)(RQQ) (RPQ)(PPQ) (PPR)(QPR) 17 (QQQ)(RQQ) (RPQ)(PPQ) (PPR)(QPR) (QRR) (RRR) 18 (RQQ) (RPQ)(PPQ) (PPR)(QPR) (QRR) (RRR) (PRQ) (QRQ) (RQR) (PQR) (PQQ) (QPQ) (RPR) (PRR) (QQQ) (RQQ) (PPP) (QPP) (RPP) (QRP) (RQP) (PRQ)(QRQ) (RQR)(PQR) (PPP) (QPP) (RPP) (QRP) (RQP) (PRQ)(QRQ)(RQR)(PQR) (PQQ) (PPP) (QPP) (RPP) (QRP) (RQP) (PRQ)(QRQ) (RQR)(PQR)(PQQ)(QPQ) (PPP) (QPP) (RPP) (QRP) (RQP) (PRQ)(QRQ)(RQR)(PQR) (PQQ)(QPQ) (RPR) (PPP) (QPP) (RPP) (QRP) (RQP) (PRQ)(QRQ)(RQR)(PQR) (PQQ)(QPQ) (RPR) (PRR) (PPP) (QPP) (RPP) (QRP) (RQP) (PRQ)(QRQ)(RQR)(PQR) (PQQ)(QPQ) (RPR) (PRR)(QQQ) (RQQ) (PPP) (QPP) (RPP) (QRP) (RQP) (PRQ)(QRQ)(RQR)(PQR) (PQQ)(QPQ) (RPR) (PRR) (QQQ)(RQQ) (RPQ) (PPQ) (PPP) (QPP) (RPP) (QRP) (RQP) (PRQ)(QRQ) (RQR)(PQR)(PQQ)(QPQ) (RPR) (PRR) (QQQ)(RQQ) (RPQ) (PPQ) (PPR) (QPR) (PPP) (QPP) (RPP) (QRP) (RQP) (PRQ)(QRQ) (RQR)(PQR)(PQQ)(QPQ) (RPR) (PRR) (QQQ)(RQQ) (RPQ) (PPQ) (PPR) (QPR) (QRR) (RRR) (PPP) (QPP) (RPP) (QRP) (RQP) (PRQ)(QRQ) (RQR)(PQR)(PQQ)(QPQ) Οπισθοδρόμηση
19 (RPQ)(PPQ) (PPR)(QPR) (QRR) (RRR) 20 (PPQ) (PPR)(QPR) (QRR) (RRR) 21 (PPR)(QPR) (QRR) (RRR) (RPQ) (PPQ) (PPR) (RPR) (PRR) (QQQ)(RQQ) (RPQ) (PPQ) (PPR) (QPR) (QRR) (RRR) (PPP) (QPP) (RPP) (QRP) (RQP) (PRQ)(QRQ) (RQR)(PQR)(PQQ)(QPQ) (RPR) (PRR) (QQQ)(RQQ) (RPQ) (PPQ) (PPR) (QPR) (QRR) (RRR) (PPP) (QPP) (RPP) (QRP) (RQP) (PRQ)(QRQ) (RQR)(PQR)(PQQ)(QPQ) (RPR) (PRR) (QQQ)(RQQ) (RPQ) (PPQ) (PPR) (QPR) (QRR) (RRR) (PPP) (QPP) (RPP) (QRP) (RQP) (PRQ)(QRQ) (RQR)(PQR)(PQQ)(QPQ) (RPR) (PRR) (QQQ)(RQQ) (RPQ) (PPQ) (PPR) (QPR) (QRR) (RRR) 22 (QPR) (QRR) (RRR) (QRP) (PPP) (QPP) (RPP) (QRP) (RQP) (PRQ)(QRQ) (RQR)(PQR)(PQQ)(QPQ) (RPR) (PRR) (QQQ)(RQQ) (RPQ) (PPQ) (PPR) (QPR) (QRR) (RRR) 23 (QRR) (RRR) (QRR) (PPP) (QPP) (RPP) (QRP) (RQP) (PRQ)(QRQ) (RQR)(PQR)(PQQ)(QPQ) (RPR) (PRR) (QQQ)(RQQ) (RPQ) (PPQ) (PPR) (QPR) (QRR) (RRR) 24 (RRR) (RRR) (PPP) (QPP) (RPP) (QRP) (RQP) (PRQ)(QRQ) (RQR)(PQR)(PQQ)(QPQ) (RPR) (PRR) (QQQ)(RQQ) (RPQ) (PPQ) (PPR) (QPR) (QRR) (RRR) 25 Κόμβος-στόχος
γ. Συνάρτηση πραγματικού κόστους: Αριθμός ενεργειών που εκτελούνται (δηλαδή το κόστος κάθε ακμής βέλους είναι ίσο με ένα) Μελετώντας το πρόβλημα των πύργων του Ανόι με τρείς δίσκους παρατηρούμε το εξής: Για τον δίσκο 1: Ο δίσκος 1 μπορεί ανά πάσα στιγμή να μετακινηθεί από οποιαδήποτε ράβδο σε οποιαδήποτε άλλη ράβδο, διότι: Λόγω των δεδομένων περιορισμών του προβλήματος, δεν χρειάζεται να μετακινηθεί κάποιος άλλος δίσκος πρώτα, αφού είναι ο δίσκος με τη μικρότερη διάμετρο και κανένας άλλος δίσκος δεν είναι τοποθετημένος πάνω από αυτόν. Δεν απαιτείται να εξετάσουμε κάποια συνθήκη για την ράβδο στην οποία μετακινείται ο δίσκος 1 αφού πάντοτε είτε θα τοποθετείται πάνω από δίσκο μεγαλύτερης διαμέτρου (αφού έχει τη μικρότερη διάμετρο), είτε θα τοποθετείται στη βάση του κάθε πύργου (P,Q,R), ή οποία εποτελεί επιτρεπτή κατάσταση. Επομένως, αφού από τα δεδομένα της άσκησης, ο αριθμός ενεργειών που εκτελούνται θα αποτελεί συνάρτηση κόστους (έστω C1), το κόστος μετακίνησης του δίσκου 1 θα είναι είτε C1 = 0 (όταν δεν μετακινείται ο δίσκος) είτε C1 = 1. Για τον δίσκο 2: Επειδή υπάρχει δίσκος με μικρότερη διάμετρο από αυτόν (δίσκος 1), πρέπει να ελεγχθούν οι εξής καταστάσεις: i. Ο δίσκος 2 έχει από πάνω του τον δίσκο 1 και όλοι οι δίσκοι βρίσκονται στην ίδια ράβδο (έστω στην P). Για να μετακινηθεί ο δίσκος σε οποιαδήποτε άλλη - κενή ράβδο (έστω στην δεύτερη Q) θα χρειαστεί μία μετακίνηση του δίσκου 1 στην ράβδο R και μία μετακίνηση του δίσκου 2 στην ράβδο Q. Κατά συνέπεια, το κόστος μετακίνησης του δίσκου 2 (έστω C2) σε αυτήν την περίπτωση θα είναι 2 (1 για κάθε μετακίνηση). ii. Ο δίσκος 2 δεν έχει απο πάνω του τον δίσκο 1, βρίσκεται πάνω στον δίσκο 3 και θέλει να μετακινηθεί στη ράβδο που είναι ελεύθερη (δηλαδή δεν βρίσκεται εκεί ο δίσκος 1). Για την μετακίνηση αυτή χρειάζεται ακριβώς μία μετακίνηση και αρα C2 = 1. (αντίστοιχα με δίσκο 1 επεξήγηση) iii. Ο δίσκος 2 δεν έχει απο πάνω του τον δίσκο 1, βρίσκεται πάνω στον δίσκο 3 και θέλει να μετακινηθεί στη ράβδο στην οποία βρίσκεται ο δίσκος 1. Για την μετακίνηση αυτή απαιτείται να μετακινηθεί πρώτα ο δίσκος 1 στην ελεύθερη ράβδο και έπειτα να μετακινηθεί ο δίσκος 2 στην νέα ελεύθερη ράβδο. Άρα σε αυτήν την περίπτωση απαιτούνται δύο μετακινήσεις σύνολο άρα C2 = 2. iv. Όλοι οι δίσκοι βρίσκονται σε ξεχωριστές ράβδους και ο δίσκος 2 θέλει να μετακινηθεί στην ράβδο που καταλαμβάνεται απο τον δίσκο 1. Γι αυτό απαιτείται να μετακινηθεί ο δίσκος 1 στη ράβδο που βρίσκεται ο δίσκος 3 (επιτρεπτό) και έπειτα να γίνει η μετακίνηση του δίσκου 2 στην ελεύθερη ράβδο. Άρα C2 = 2. v. Όλοι οι δίσκοι βρίσκονται σε ξεχωριστές ράβδους και ο δίσκος 2 θέλει να μετακινηθεί στην ράβδο που βρίσκεται ο δίσκος 3. Επιτρεπτό, άρα μία μετακίνηση άρα C2 = 1. Με βάση τα ανωτέρω μπορούμε με σχετική ακρίβεια να ορίσουμε οτι το κόστος μετακίνησης του δίσκου 2 (C2) θα είναι ίσο με: - 0, δεν μετακινείται - 1, στις περιπτώσεις ii και v (δεν πάει στη ράβδο του δίσκου 1 και δεν έχει τον δίσκο 1 απο πάνω του) - 2, στις περιπτώσεις i, iii και iv (έχει τον δίσκο 1 απο πάνω του ή θέλει να πάει στη ράβδο του δίσκου 1)
Για τον δίσκο 3: Επειδή υπάρχουν δύο δίσκοι μικρότερης διαμέτρου από αυτόν (δίσκοι 1,2), πρέπει να ελεγχθούν οι εξής καταστάσεις: i. Όλοι οι δίσκοι βρίσκονται στην ίδια ράβδο και ο δίσκος 3 θέλει να μετακινηθεί σε μία εκ των δύο ελεύθερων ράβδων (έστω την Q). Απαιτείται μία μετακίνηση του δίσκου 1 στην ράβδο Q, μία μετακίνηση του δίσκου 2 στην ράβδο R, μία μετακίνηση του δίσκου 1 στην ράβδο R και η μετακίνηση του δίσκου 3 στην ράβδο Q (ελεύθερη). Άρα το κόστος μετακίνησης του δίσκου 3(έστω C3) είναι C3 = 4. ii. Οι δίσκοι 2,3 βρίσκονται σε μία ράβδο και ο δίσκος 3 θέλει να μετακινηθεί στην ελέυθερη ράβδο (που δεν βρίσκεται ο 1). Απαιτούνται μία μετακίνηση του δίσκου 2 στην ράβδο R, μία μετακίνηση του δίσκου 1 στην ράβδο P, μία μετακίνηση του δίσκου 2 στη ράβδο Q, μία μετακίνηση του δίσκου 1 στη ράβδο Q και μία μετακίνηση του δίσκου 3 στην ράβδο R (ελεύθερη) Άρα το κόστος μετακίνησης του δίσκου 3 είναι C3 = 5. iii. Οι δίσκοι 2,3 βρίσκονται σε μία ράβδο και ο δίσκος 3 θέλει να μετακινηθεί στη ράβδο που βρίσκεται ο 1 (π.χ. Q). Απαιτούνται μία μετακίνηση του δίσκου 2 στην ράβδο R, μία μετακίνηση του δίσκου 1 στην ράβδο R και μία μετακίνηση του δίσκου 3 στην ράβδο Q. Άρα το κόστος μετακίνησης του δίσκου 3 είναι C3 = 3. iv. Όλοι οι δίσκοι βρίσκονται σε διαφορετική ράβδο και ο δίσκος 3 θέλει να μετακινηθεί στην ράβδο που βρίσκεται ο δίσκος 1. Απαιτείται μία μετακίνηση του δίσκου 1 στην ράβδο που βρίσκεται ο δίσκος 2 και μία μετακίνηση του δίσκου 3 στην ελεύθερη πλέον ράβδο. Άρα το κόστος μετακίνησης του δίσκου 3 είναι C3 = 2. v. Όλοι οι δίσκοι βρίσκονται σε διαφορετική ράβδο και ο δίσκος 3 θέλει να μετακινηθεί στην ράβδο που βρίσκεται ο δίσκος 2. Απαιτείται μία μετακίνηση του δίσκου 1 στη ράβδο που βρίσκεται ο δίσκος 3, μία μετακίνηση του δίσκου 2 στην ελεύθερη πλέον ράβδο, μία μετακίνηση του δίσκου 1 στη ράβδο που βρίσκεται ο δίσκος 2 και μία μετακίνηση του δίσκου 3 στην ελεύθερη ράβδο. Άρα το κόστος μετακίνησης του δίσκου 4 είναι C3 = 4. vi. Ο δίσκος 3 βρίσκεται τοποθετημένος σε μία ράβδο (π.χ. P) και οι λοιποί δίσκοι βρίσκονται μαζί σε μία άλλη ράβδο. Ο δίσκος 3 θέλει να μετακινηθεί στην ελεύθερη ράβδο. Επιτρεπτό άρα το κόστος μετακίνησης του δίσκου 3 είναι C3 = 1. vii. Ο δίσκος 3 βρίσκεται τοποθετημένος σε μία ράβδο (π.χ. P) και οι λοιποί δίσκοι βρίσκονται μαζί σε μία άλλη ράβδο (π.χ. Q). Ο δίσκος 3 θέλει να μετακινηθεί στην ράβδο που βρίσκονται οι δύο δίσκοι. Απαιτείται μία μετακίνηση του δίσκου 1 απο την ράβδο Q στην ράβδο P (επιτρεπτό), μία μετακίνηση του δίσκου 2 στην ράβδο R (ελεύθερη), μία μετακίνηση του δίσκου 1 στην ράβδο R και μία μετακίνηση του δίσκου 3 στην ράβδο Q (ελεύθερη). Άρα το κόστος μετακίνησης του δίσκου 3 είναι C3 = 4. Με βάση τα ανωτέρω μπορούμε με σχετική ακρίβεια να ορίσουμε οτι το κόστος μετακίνησης του δίσκου 2 (C3) θα είναι ίσο με: - 0, δεν μετακινείται - 1, στις περιπτώσεις (vi) (δεν έχει δίσκους 1,2 απο πάνω και δεν πάει στις ράβδους των 1,2) - 2, στις περιπτώσεις (iv) (δεν έχει δίσκους 1,2 απο πάνω και πάει στη θέση του δίσκου 1) - 3, στις περιπτώσεις (iii) (έχει απο πάνω τον δίσκο 2 και πάει στη ράβδο του δίσκου 1) - 4, στις περιπτώσεις (i), (v), (vii) (δεν έχει κανέναν δίσκο απο πάνω και πάει σε ράβδο που βρίσκονται και οι δύο έτεροι δίσκοι ή που βρίσκεται μόνο ο δίσκος 2 ή έχει απο πάνω τους δίσκους 1,2 και θέλει να μεταβεί σε ελεύθερη ράβδο) - 5, στις περιπτώσεις (ii) (έχει απο πάνω τον δίσκο 2 και δεν πάει στη ράβδο που βρίσκεται ο δίσκος 1) Έχοντας υπ όψην μας όλα τα ανωτέρω ορίζουμε μία ευριστική συνάρτη h(n) η οποία ισούται με το άθροισμα του κόστους μετακίνησης απο μία κατάσταση σε μία άλλη, δηλαδή: h(n) = C1 + C2 + C3
Κατα συνέπεια, διαμορφώνεται ο κάτωθι πίνακας: ΑΡΧΙΚΗ ΚΑΤΑΣΤΑΣΗ - ΤΕΛΙΚΗ ΚΑΤΑΣΤΑΣΗ - ΕΥΡΕΤΙΚΗ ΕΚΤΙΜΗΣΗ ΚΟΜΒΟΣ ΚΟΜΒΟΣ h(n) = C1 + C2 + C3 (P,P,P) (R,P,P) h(n) = 1 + 0 + 0 = 1 (1) (P,P,P) (Q,Q,P) h(n) = 1 + 2 + 0 = 3 (R,P,Q) (P,Q,R) h(n) = 1 + 1 + 2 = 4 (5) (P,P,P) (R,R,R) h(n) = 1 + 2 + 4 = 7 (R,R,P) (P,P,R) h(n) = 1 + 2 + 4 = 7 (4) (Q,Q,Q) (R,Q,R) h(n) = 1 + 0 + 4 = 5 (6)......... Παίρνοντας δειγματοληπτικά κάποιες μεταβάσεις απο μία κατάσταση σε μία άλλη, ανακαλύπτουμε τα πραγματικά κόστη μερικών απο αυτές (όπως εμφαίνονται σε παρένθεση στον παραπάνω πίνακα δίπλα απο την ευριστική εκτιμησή τους). Όμως αν προσπαθήσουμε να μεταβούμε απο την κατάσταση (R,R,P) προς την κατάσταση (P,P,R), θα δούμε οτι το πραγματικό κόστος h* είναι 4 ενώ η ευριστική εκτίμηση 7. Επομένως, δεν ισχύει ο κανόνας υποεκτίμησης (h(n) h*(n)) για όλες τις μεταβάσεις απο κατάσταση σε κατάσταση και στο συγκεκριμένο παράδειγμα για τη μετάβαση απο την κατάσταση (R,R,P) προς την κατάσταση (P,P,R), άρα η ευρετική ΔΕΝ ΕΙΝΑΙ ΑΠΟΔΕΚΤΗ. 2. ΑΝΑΖΗΤΗΣΗ Με βάση τον ανωτέρω γράφο καταστάσεων και έχοντας υπόψη το κόστος μονοπατιού g(n) και την ευριστική εκτίμηση h(n) ως έννοιες, θα τις χρησιμοποιήσουμε κατά περίπτωση για την επίλυση των κατωτέρω ερωτημάτων. Βοηθητικά έχει δημιουργηθεί ο παρακάτω πίνακας: Κόμβος h(v) h*(v) S 25 26 A 20 27 B 22 22 C 14 14 X 0 42 Y 0 34 D 8 12 E 3 5 F 9 10 H 2 16 G 0 0
α)αναρριχηση ΣΕ ΛΟΦΟ Γνωρίζουμε ότι για την αναρρίχηση σε λόφο αναζητούμε την συνάρτηση f(n)= h(n) όπου h(n) η ευριστική εκτίμηση η οποία σύμφωνα με τα δεδομένα της άσκησης αποτυπώνεται στους κόμβους του γράφου καταστάσεων. (1) S f(s)= 25 f(a)= 20 A (2) B f(b)= 22 (3) f(c)= 14 C D f(d)= 8 (4) f(e)= 3 E H f(h)= 2 (5) F f(f)= 9 Παραδοχές: -όταν εισάγουμε τους απογόνους (παιδιά) ενός κόμβου, η σειρά με την οποία τα τοποθετούμε είναι λεξικογραφική (αλφαβητική). -Κριτήριο τερματισμού: ο αλγόριθμος τερματίζει όταν «πατήσουμε-επισκεφθούμε» τον κόμβο-στόχο ή όταν ο αλγόριθμος φτάσει σε αδιέξοδο, δηλαδή δεν μπορεί να επεκταθεί περαιτέρω και αφού δεν πραγματοποιεί οπισθοδρόμηση σταματά. (Η αναζήτηση προχωρά μόνο από διαδοχικά καλύτερους κόμβους, κλαδεύοντας σε κάθε κύκλο αναζήτησης όλες τις καταστάσεις του μετώπου εκτός από την ευρετικά βέλτιστη (δηλαδή κάθε στιγμή το μέτωπο περιέχει μόνο μία κατάσταση) και μεταβαίνει στην τελευταία, μόνο αν έχει καλύτερη ευρετική τιμή από το γονέα της, διαφορετικά τερματίζει έχοντας βρει μία τοπικά βέλτιστη λύση) Επίπεδο Μέτωπο αναζήτησης (ουρά) Κόμβος (σειρά επέκτασης ή τιμή αποτίμησης κόστους για τον κόμβο) Λίστα επέκτασης/ εισόδου 0 S 25 S 25 1 A 20, B 22 A 20 S 25, 2 D 8,C 14 D 8 S 25, A 20 3 H 2, E 3, H 2 S 25, A 20 D 8 4 F 9 F 9 S 25, A 20 D 8 H 2 5 Αδιέξοδο Οπισθοδρόμηση Η σειρά επέκτασης των κόμβων είναι η εξής: S25 -A20 -D8 -H2 -F9 Το μονοπάτι είναι το εξής: S25 -A20 -D8 -H2 -F9 Βλέπουμε ότι ο αλγόριθμος δεν βρίσκει τον κόμβο στόχο και επειδή δεν μπορεί να κάνει οπισθοδρόμηση, καταλήγει σε αδιέξοδο. Βήματα: 5 (κάθε βήμα εμφαίνεται και με τον αριθμό που αναγράφεται στις παρενθέσεις κάθε κόμβου) Κόστος μονοπατιού: 37
β) Α* Γνωρίζουμε ότι για την Α* αναζητούμε την συνάρτηση f(n)=g(n) + h(n). Όπου g(n): κόστος μονοπατιού h(n): ευριστική εκτίμηση (1) f(s)= 0+25=25 S (2) f(a)= 10+20=30 A B f(b)= 4+22=26 f(c)=12+14=26 C (5) f(x)=24+0=24 X (3) Y (4) f(y)= 24+0=24 f(a)= 21+20=41 A f(d)= 19+8=27 D E (6) f(e)= 21+3=24 C f(c)= 44+14=58 (7) f(d)= 28+8=36 D F G f(g)= 26+0=26 f(f)= 29+9=38 Παραδοχές: -όταν εισάγουμε τους απογόνους (παιδιά) ενός κόμβου, η σειρά με την οποία τα τοποθετούμε είναι λεξικογραφική (αλφαβητική). -Κριτήριο τερματισμού: ο αλγόριθμος τερματίζει όταν «πατήσουμε-επισκεφθούμε» τον κόμβο-στόχο. -Σε περίπτωση ισοπαλίας (ίδια τιμή f), επιλέγεται ο κόμβος που είναι σε ψηλότερο επίπεδο ή αν πρόκειται για ίδιο επίπεδο επιλέγεται ο κόμβος που βρίσκεται πιο αριστερά. Παρατήρηση: Ο απόγονος (C) του κόμβου (Υ), διαγράφεται γιατί επεκτείνεται ο κόμβος (C) ως απόγονος του κόμβου (Β) που κατέχει τη μικρότερη τιμή f και ως εκ τούτου δεν μπορεί να πάρει άλλη τιμή. Επίπεδο Μέτωπο αναζήτησης (ουρά) Κόμβος (σειρά επέκτασης ή τιμή αποτίμησης κόστους για τον κόμβο) Λίστα επέκτασης/ εισόδου 0 S 25 S 25 1 A 30, B 26 B 26 S 25, 2 A 30, C 26, X 24, Y 24 X 24 S 25, B 26 3 A 30, C 26, Y 24 Y 24 S 25, B 26, X 24 4 A 30, C 26, C 84 C 26 S 25, B 26, X 24, Y 24 5 A 30, C 58, A 41, D 27, E 24 E 24 S 25, B 26, X 24, Y 24, C 26 6 A 30,,A 41, D 27, D 36, F 38, G 26 G 26 S 25, B 26, X 24, Y 24, C 26, E 24 7 Κατάσταση-στόχος S 25, B 26, X 24, Y 24, C 26, E 24, G 26 Οπισθοδρόμηση Η σειρά επέκτασης των κόμβων είναι η εξής: S 25 -B 26 -X 24 -Y 24 -C 26 -E 24 -G 26 Το μονοπάτι είναι το εξής: S 25 -B 26 -C 26 -E 24 -G 26 Βήματα: 7 (κάθε βήμα εμφαίνεται και με τον αριθμό που αναγράφεται στις παρενθέσεις κάθε κόμβου) Κόστος μονοπατιού: 26 Βλέπουμε ότι ο αλγόριθμος βρίσκει το βέλτιστο μονοπάτι γιατί η ευρετική συνάρτηση είναι αποδεκτή καθότι ισχύει h(n) h*(n)
γ) Αναζήτηση ενιαίου (ή ομοιόμορφου) κόστους (UCS) Γνωρίζουμε ότι για την UCS αναζητούμε την συνάρτηση f(n)=g(n). Όπου g(n): κόστος μονοπατιού f(s)= 0 S (1) f(a)= 10 (3) (2) A B f(b)= 4 f(c)= 19 C D f(d)= 25 f(x)= 24 (7) (8) f(c)= 12 C (4) X Y f(y)= 24 f(a)= 21 A f(d)= 19 D (5) E (6) f(e)= 21 (10) f(g)= 26 f(e)= 26 E f(h)= 26 H (9) D F G f(f)= 29 F f(f)= 32 Παραδοχές: -όταν εισάγουμε τους απογόνους (παιδιά) ενός κόμβου, η σειρά με την οποία τα τοποθετούμε είναι λεξικογραφική (αλφαβητική). -Κριτήριο τερματισμού: ο αλγόριθμος τερματίζει όταν «πατήσουμε-επισκεφθούμε» τον κόμβο-στόχο. -Σε περίπτωση ισοπαλίας (ίδια τιμή f), επιλέγεται ο κόμβος που είναι σε ψηλότερο επίπεδο ή αν πρόκειται για ίδιο επίπεδο επιλέγεται ο κόμβος που βρίσκεται πιο αριστερά. Παρατήρηση: Οι κόμβοι που διαγράφηκαν οφείλεται στο γεγονός ότι είχαν επεκταθεί σε προγενέστερο χρόνο και άρα προϋπήρχαν στο εκάστοτε μονοπάτι. Επίπεδο Μέτωπο αναζήτησης (ουρά) Κόμβος (σειρά επέκτασης ή τιμή αποτίμησης κόστους για τον κόμβο) Λίστα επέκτασης/ εισόδου 0 S (0) S (0) 1 B (4) A (10) B (4) S (0) 2 A (10) C (12) X (24) Y (24) A (10) S (0) B (4) 3 C (12) C (19) D (25) X (24) Y (24) C (12) S (0) B (4) A (10) 4 D (19) E (21) X (24) Y (24) D (25) D (19) S (0) B (4) A (10) C (12) 5 E (21) X (24) Y (24) E (26) H (26) E (21) S (0) B (4) A (10) C (12) D (19) 6 X (24) Y (24) H (26)) G (26) F (29) X (24) S (0) B (4) A (10) C (12) D (19) E (21) ΝΑΙ 7 Y (24) H (26) G (26) F (29) Y (24) S (0) B (4) A (10) C (12) D (19) E (21) ΝΑΙ 8 H (26) G (26) F (29) H (26) S (0) B (4) A (10) C (12) D (19) E (21) ΝΑΙ 9 G (26) F (29) F (32) G (26) S (0) B (4) A (10) C (12) D (19) E (21) H (26) 10 Κατάσταση -στόχος Οπισθοδρόμηση
Η σειρά επέκτασης των κόμβων είναι η εξής: S (0) B (4) A (10) C (12) D (19) E (21) H (26) G 26 Το μονοπάτι είναι το εξής: S (0) B (4) C (12) E (21) G 26 Βήματα: 10 Κόστος μονοπατιού: 26 Βλέπουμε ότι ο αλγόριθμος βρίσκει το βέλτιστο μονοπάτι αλλά δεν είναι εξίσου αποδοτικός με τον Α* σε αυτή τη περίπτωση καθότι απαιτεί περισσότερες κινήσεις-βήματα και έτσι έχει μεγαλύτερη χρονική πολυπλοκότητα, δηλαδή θα απαιτήσει περισσότερο χρόνο για να βρει τη λύση. δ)πρώτα στο καλύτερο Θα βρούμε το f(n) = h(n) όπου h(n) η ευριστική εκτίμηση (1) S f(s)= 25 (2) f(a)= 20 A (3) B f(b)= 22 f(c)= 14 C D f(d)= 8 (5) (4) f(c)= 14 C E f(e)= 3 H f(h)= 2 (6) f(f)= 9 F G f(g)= 0 F f(f)= 9 Παραδοχές: -όταν εισάγουμε τους απογόνους (παιδιά) ενός κόμβου, η σειρά με την οποία τα τοποθετούμε είναι λεξικογραφική (αλφαβητική). -Κριτήριο τερματισμού: ο αλγόριθμος τερματίζει όταν «πατήσουμε-επισκεφθούμε» τον κόμβο-στόχο. Επίπεδο Μέτωπο αναζήτησης (ουρά) Κόμβος (σειρά επέκτασης ή τιμή αποτίμησης κόστους για τον κόμβο) Λίστα επέκτασης/ εισόδου 0 S 25 S 25 1 A 20, B 22 A 20 S 25, 2 D 8, C 14, B 22 D 8 S 25, A 20 3 H 2, E 3, C 14, C 14, B 22 H 2 S 25, A 20 D 8 4 E 3, F 9, C 14, C 14, B 22, E 3 S 25, A 20 D 8 H 2 ΝΑΙ 5 G 0, C 14, C 14, B 22, G 0, S 25, A 20 D 8 H 2,, E 3 6 Κόμβος- στόχος Οπισθοδρόμηση Η σειρά επέκτασης των κόμβων είναι η εξής: S25 -A20 -D8 -H2 E3- G 0 Το μονοπάτι είναι το εξής: S25 -A20 -D8 E3- G 0 Βήματα: 6 (κάθε βήμα εμφαίνεται και με τον αριθμό που αναγράφεται στις παρενθέσεις κάθε κόμβου) Κόστος μονοπατιού: 37
Βλέπουμε ότι ο αλγόριθμος δεν βρίσκει την βέλτιστη λύση και δεν είναι αποδοτικός διότι έχει μεγάλο κόστος αναζήτησης (37). ε) ακτινωτής αναζήτησης με w=2 συνάρτηση f=h h: ευριστική συνάρτηση S f(s)= 25 f(a)= 20 A B f(b)= 22 f(c)= 14 C D f(d)= 8 f(c)= 14 C Y X f(y)= 0 f(x)= 0 f(c)= 14 C f(e)= 3 f(d)= 8 D E f(e)= 3 E H f(h)= 2 F G f(f)= 9 f(g)= 0 Επίπεδο Μέτωπο αναζήτησης (ουρά) Κόμβος (σειρά επέκτασης ή τιμή αποτίμησης κόστους για τον κόμβο) Λίστα επέκτασης/ εισόδου 0 S 25 S 25 1 A 20, B 22 A 20, B 22 S 25, 2 C 14, D 8, C 14, X 0, Y 0, X 0, Y 0, S 25, A 20, B 22 3 C 14 C 14 S 25, A 20, B 22, X 0, Y 0, 4 D 8,E 3, D 8,E 3, S 25, A 20, B 22, X 0, Y 0, C 14 5 E 3, H 2, F 9, G 0, H 2,, G 0, S 25, A 20, B 22, X 0, Y 0, C 14, D 8,E 3, 6 Κόμβος-στόχος S 25, A 20, B 22, X 0, Y 0, C 14, D 8,E 3, H 2,, G 0, Οπισθοδρόμηση Η σειρά επέκτασης των κόμβων είναι η εξής: S25 -A20 - B 22 - X 0, -Y 0,- C 14 -D8 -E 3 - H2 - G 0 Το μονοπάτι είναι το εξής: S25 - B 22 -Y 0,- C 14 -E 3 - G 0 Βήματα: 6 Κόστος μονοπατιού: 58 Βλέπουμε ότι ο αλγόριθμος δεν βρίσκει την βέλτιστη λύση και δεν είναι αποδοτικός διότι έχει μεγάλο κόστος αναζήτησης (58).
3. ΕΥΡΙΣΤΙΚΕΣ ΣΥΝΑΡΤΗΣΕΙΣ Στον ακόλουθο χώρο καταστάσεων όπου φαίνονται τα πραγματικά κόστη μετάβασης, Για το σκοπό της άσκησης, δημιουργήθηκε ο κατωτέρω πίνακας όπου g είναι το κόστος μονοπατιού, h 1, h 2 οι ευριστικές συναρτήσεις που απαντούν στα α,β,γ ερωτήματα και h* το πραγματκό κόστος. Στους κόμβους C και G παρατηρούνται δύο τιμές ανάλογα με το μονοπάτι που ακολουθείται. Έτσι πχ στον κόμβο C αν ακολουθήσουμε το μονοπάτι S-A-C το g(c)=1+1+=2 ενώ αν ακολουθήσουμε το μονοπάτι S-B- C το g(c)=1+3=4 Κόμβος g(n) h 1(n) h 2(n) h*(n) S 0 3 3 9 A 1 2 5 8 B 1 5 2 10 C 2 ή 4 1 1 7 G 9 ή 11 0 0 0 Μια ευριστική συνάρτηση h είναι συνεπής αν και μόνο αν για όλους τους κόμβους n, n, όπου ο n είναι απόγονος του n που παράγεται από μία ενέργεια a, έχουμε h(n) c(n,a,n ) + h(n ) και h(g)=0 όπου G ο κόμβος-στόχος Δηλαδή: h είναι η συνεπής ευρετική λειτουργία n είναι οποιοσδήποτε κόμβος στο γράφημα n είναι οποιοσδήποτε απόγονος του n c (n,a,n ) είναι το κόστος επίτευξης του κόμβου n από το n α) 0 h(n) h*(n) Έστω h1 η ευριστική συνάρτηση που εξετάζουμε: h(s)=3 9, h(a)=2 8, h(b)=5 10, h(c)=1 7 hg=0 0 ΆΡΑ ΕΊΝΑΙ ΑΠΟΔΕΚΤΗ όμως δεν είναι συνεπής γιατί πρέπει h1(s) c(s,a) + h1(a) 3 1+2 Ισχύει h1(s) c(s,b) + h1(b) 3 1+5 Ισχύει h1(a) c(a,c) + h1(c) 2 1+1 Ισχύει h1(b) c(b,c) + h1(c) 5 3+1 Δεν ισχύει Αφού έστω για ένα κόμβο δεν ισχύει η εξίσωση, τότε η ευριστική συνάρτηση δεν είναι συνεπής. β) Γνωρίζουμε ότι για την Α* αναζητούμε την συνάρτηση f=g + h1 g: κόστος μονοπατιού h1: ευριστική εκτίμηση f(s)=0+3=3 f(a)=2+1=3 f(b)=5+1=6 f(c)=2+1=3 f(c)=4+1=5 f(g)=9+0=9
f(g)=11+0=11 η συνάρτηση είναι αποδεκτή όχι όμως συνεπής για τους λόγους που αναφέρονται στο α) Επειδή ο Α* θα ακολουθήσει το μονοπάτι S-Α-C-G αυτή δεν είναι η βέλτιστη λύση γ) Αρχικά θα εξετάσουμε αν η h2 είναι αποδεκτή αλλά όχι συνεπής, όπως ζητά η άσκηση. Έστω h2 η ευριστική συνάρτηση που εξετάζουμε: h(s)=3 9, h(a)=5 8, h(b)=2 10, h(c)=1 7 hg=0 0 ΆΡΑ ΕΊΝΑΙ ΑΠΟΔΕΚΤΗ όμως δεν είναι συνεπής γιατί πρέπει h1(s) c(s,a) + h1(a) 3 1+5 Ισχύει h1(s) c(s,b) + h1(b) 3 1+2 Ισχύει h1(a) c(a,c) + h1(c) 5 1+1 Δεν ισχύει Αφού έστω για ένα κόμβο δεν ισχύει η εξίσωση, τότε η ευριστική συνάρτηση δεν είναι συνεπής. Γνωρίζουμε ότι για την Α* αναζητούμε την συνάρτηση f=g + h2 g: κόστος μονοπατιού h2: ευριστική εκτίμηση f(s)=0+3=3 f(a)=5+1=6 f(b)=2+1=3 f(c)=2+1=3 f(c)=4+1=5 f(g)=9+0=9 f(g)=11+0=11 Κατόπιν των ανωτέρω,ο Α* θα ακολουθήσει το μονοπάτι S-B-C-G η οποία είναι η και η βέλτιστη λύση 4. ΥΛΟΠΟΙΗΣΗ ΑΝΑΖΗΤΗΣΗΣ ΟΔΗΓΟΣ ΧΡΗΣΗΣ: Η υλοποίηση των αλγορίθμων πραγματοποιήθηκε σε java. Προκειμένου να «τρέξει» ο κάθε αλγόριθμος στο πρόγραμμα Eclipse, πατήστε «Create new java project» και στο src directory του νέου java project που δημιουργήσαμε (αποθηκεύουμε με όποια ονομασία επιθυμούμε), επικολλάτε (paste) όλα τα.java που εμπεριέχονται στο src φάκελο που επισυνάπτεται με τη παρούσα εργασία. ΥΛΟΠΟΙΗΣΗ: Χρησιμοποιώντας το πρόβλημα εύρεσης διαδρομής σε ένα χάρτη που μοντελοποιείται με ένα γράφο, της άσκησης προβλήματος 2, υλοποιήθηκαν οι αλγόριθμοι κατά βάθος, κατά πλάτος αναζήτηση, αναζήτηση ενιαίου (ή ομοιόμορφου) κόστους, πρώτα στον καλύτερο, και Α*. Ο χώρος καταστάσεων υλοποιήθηκε με τη δημιουργία κλάσης Node που αναπαριστά τους κόμβους του προβλήματος, της κλάσης Edge που αναπαριστά τις ακμές του προβλήματος (που ενώνουν τους κόμβους μεταξύ τους). Έπειτα, δημιουργήθηκαν αντίστοιχα αντικείμενα με αυτά του προβλήματος δηλαδή κόμβοι με τις ονομασίες και τις αντίστοιχες ευριστικές εκτιμήσεις τους καθώς και ακμές με τον κόμβο προορισμού τους και το πραγματικό κόστος
μετάβασης απο τον αρχικό κόμβο στον κόμβο προορισμού, περνώντας τις τιμές που μας δίνεται απο το πρόβλημα. Η δομή δεδομένων που χρησιμοποιήθηκε και για τις δύο κλάσεις είναι ArrayList (δυναμική λίστα). Αναλυτικά: Δημιουργία κλάσης Node: Δημιουργία κλάσης Edge:
Δημιουργία αντικειμένων των κλάσεων Node και Edge στην main: Επιπρόσθετα, δημιουργήθηκε μία κλάση Result για να εκτυπώνονται τα τελικά αποτελέσματα των διάφορων αλγορίθμων αναζήτησης, μέσω της δημιουργίας αντικειμένων
της κλάσης που αντιστοιχεί ο κάθε αλγόριθμος. Η δομή δεδομένων που χρησιμοποιήθηκε είναι ArrayList (δυναμική λίστα). Αναλυτικά, η κλάση Result και έπειτα ενδεικτική μεθοδολογία χρήσης εντολών εντός της main για την εκτύπωση των αποτελεσμάτων παίρνοντας ως παράδειγμα τον A* αλγόριθμο.
Β. + Γ. Παραδείγματα τρεξίματος αλγορίθμων και σχόλια επί των αποτελεσμάτων τους. Έχοντας ήδη υλοποιήσει όλες τις αντίστοιχες κλάσεις ξεχωριστά για κάθε αλγόριθμο, παρακάτω εμφαίνονται παραδείγματα τρεξίματος του κάθε αλγορίθμου και τα σχετικά αποτελέσματα αυτού. Αναζήτηση κατά βάθος (DFS): Η δομές δεδομένων που χρησιμοποιήθηκαν είναι ArrayList (δυναμική λίστα), ουράσυνδεδεμένη λίστα και πίνακας κατακερματισμού (Hashmap).
Παρατηρώντας τις τελευταίες γραμμές που εμφανίζονται ως αποτέλεσμα στο πρόγραμμα: Επεκτάθηκαν 5 συνολικά κόμβοι μέχρι τον τελικό κόμβο (και τον τερματισμό του αλγορίθμου)
Το (πραγματικό) κόστος του μονοπατιού απο τον αρχικό κόμβο S έως τον τελικό κόμβο Χ είναι 47. Το μονοπάτι διαμορφώνεται σε S A C B X Η αναζήτηση κατα βάθος (DFS) ΔΕΝ κατάφερε να φτάσει στον κόμβο στόχο. Αναζήτηση κατά πλάτος (BFS): Η δομές δεδομένων που χρησιμοποιήθηκαν είναι ArrayList (δυναμική λίστα), ουράσυνδεδεμένη λίστα και πίνακας κατακερματισμού (Hashmap).
Παρατηρώντας τις τελευταίες γραμμές που εμφανίζονται ως αποτέλεσμα στο πρόγραμμα: Επεκτάθηκαν 11 συνολικά κόμβοι μέχρι τον τελικό κόμβο (και τον τερματισμό του αλγορίθμου) Το (πραγματικό) κόστος του μονοπατιού απο τον αρχικό κόμβο S έως τον τελικό κόμβο Χ είναι 33. Το μονοπάτι διαμορφώνεται σε S A C E G Η αναζήτηση κατα πλάτος (BFS) κατάφερε να φτάσει στον κόμβο στόχο. Αναζήτηση Ενιαίου Κόστους (UCS): Η δομές δεδομένων που χρησιμοποιήθηκαν είναι ArrayList (δυναμική λίστα) και πίνακας κατακερματισμού (Hashmap).
Παρατηρώντας τις τελευταίες γραμμές που εμφανίζονται ως αποτέλεσμα στο πρόγραμμα: Επεκτάθηκαν 10 συνολικά κόμβοι μέχρι τον τελικό κόμβο (και τον τερματισμό του αλγορίθμου) Το (πραγματικό) κόστος του μονοπατιού απο τον αρχικό κόμβο S έως τον τελικό κόμβο Χ είναι 26. Το μονοπάτι διαμορφώνεται σε S B C E G Η αναζήτηση ενιαίου (ή ομοιόμορφου) κόστους (UCS) κατάφερε να φτάσει στον κόμβο στόχο. Αναζήτηση πρώτα στον καλύτερο: Η δομές δεδομένων που χρησιμοποιήθηκαν είναι ArrayList (δυναμική λίστα), ουράσυνδεδεμένη λίστα και πίνακας κατακερματισμού (Hashmap).
Παρατηρώντας τις τελευταίες γραμμές που εμφανίζονται ως αποτέλεσμα στο πρόγραμμα: Επεκτάθηκαν 6 συνολικά κόμβοι μέχρι τον τελικό κόμβο (και τον τερματισμό του αλγορίθμου) Το (πραγματικό) κόστος του μονοπατιού απο τον αρχικό κόμβο S έως τον τελικό κόμβο Χ είναι 37. Το μονοπάτι διαμορφώνεται σε S A D E G Η αναζήτηση πρώτα στον καλύτερο κατάφερε να φτάσει στον κόμβο στόχο. Αναζήτηση με αλγόριθμο Α* (Α star): Η δομές δεδομένων που χρησιμοποιήθηκαν είναι ArrayList (δυναμική λίστα) και πίνακας κατακερματισμού (Hashmap).
Παρατηρώντας τις τελευταίες γραμμές που εμφανίζονται ως αποτέλεσμα στο πρόγραμμα: Επεκτάθηκαν 7 συνολικά κόμβοι μέχρι τον τελικό κόμβο (και τον τερματισμό του αλγορίθμου).
Το (πραγματικό) κόστος του μονοπατιού απο τον αρχικό κόμβο S έως τον τελικό κόμβο Χ είναι 26. Το μονοπάτι διαμορφώνεται σε S B C E G Η αναζήτηση του A* (A star) κατάφερε να φτάσει στον κόμβο στόχο. *Σημείωση: Εκτός των αλγορίθμων που ζητούνται στην άσκηση 4, έχουν υλοποιηθεί επιπλέον και οι αλγόριθμοι αναρρίχησης λόφων και ακτινωτής αναζήτησης με w=2 (απο άσκηση 2) οι οποίοι εμπεριέχονται επίσης στον φάκελο src.