ΜΑΘΗΜΑ: ΣΧΕΔΙΑΣΗ ΑΛΓΟΡΙΘΜΩΝ ΔΙΔΑΣΚΩΝ: Π. ΚΑΤΣΑΡΟΣ Τετάρτη, 15 Απριλίου 2015Τετάρτη, 15 Απριλίου 2015Τετάρτη, 15 Απριλίου 2015Τετάρτη, 15 Απριλίου 2015Τμ. Πληροφορικής, Α.Π.Θ.1 Οπισθδορόμηση Ι Παράδειγμα (Δυαδικό πρόβλημα του σάκου) Στο δυαδικό πρόβλημα του σάκου θέλουμε να γεμίσουμε ένα σάκο που έχει χωρητικότητα c. Από μία λίστα με n αντικείμενα πρέπει να επιλέξουμε τα αντικείμενα που πρόκειται να τοποθετηθούν στο σάκο. Κάθε αντικείμενο έχει ένα βάρος w i και ένα κέρδος p i. Σε μια εφικτή πλήρωση του σάκου το άθροισμα των βαρών των αντικειμένων που έχουν εισαχθεί δεν ξεπερνά τη χωρητικότητα του σάκου. Μία βέλτιστη πλήρωση επιτυγχάνει το βέλτιστο κέρδος. και
ΜΑΘΗΜΑ: ΣΧΕΔΙΑΣΗ ΑΛΓΟΡΙΘΜΩΝ ΔΙΔΑΣΚΩΝ: Π. ΚΑΤΣΑΡΟΣ Τετάρτη, 15 Απριλίου 2015Τετάρτη, 15 Απριλίου 2015Τετάρτη, 15 Απριλίου 2015Τετάρτη, 15 Απριλίου 2015Τμ. Πληροφορικής, Α.Π.Θ.2 Οπισθοδρόμηση ΙΙ Παράδειγμα - συνέχεια (Δυαδικό πρόβλημα του σάκου) Υποθέστε ότι n=3, w=[20,15,15], p=[40,25,25] και c=30 Ένας αλγόριθμος οπισθοδρόμησης ξεκινά ορίζοντας το χώρο λύσεων του προβλήματος. Στην περίπτωση του συγκεκριμένου προβλήματος ο χώρος των λύσεων είναι ένα σύνολο από 2 3 δυαδικά διανύσματα μεγέθους 3, δηλαδή το σύνολο {(0,0,0), (0,1,0), (0,0,1), (1,0,0), (0,1,1), (1,0,1), (1,1,0), (1,1,1)}
ΜΑΘΗΜΑ: ΣΧΕΔΙΑΣΗ ΑΛΓΟΡΙΘΜΩΝ ΔΙΔΑΣΚΩΝ: Π. ΚΑΤΣΑΡΟΣ Τετάρτη, 15 Απριλίου 2015Τετάρτη, 15 Απριλίου 2015Τετάρτη, 15 Απριλίου 2015Τετάρτη, 15 Απριλίου 2015Τμ. Πληροφορικής, Α.Π.Θ.3 Οπισθοδρόμηση ΙΙΙ Παράδειγμα - συνέχεια (Δυαδικό πρόβλημα του σάκου) Στη συνέχεια επιχειρούμε να οργανώσουμε το χώρο λύσεων έτσι ώστε να είναι εύκολο να διερευνηθεί (π.χ. ως δένδρο ή ως γράφο). Για το συγκεκριμένο πρόβλημα βολεύει η ακόλουθη δενδρική οργάνωση:
ΜΑΘΗΜΑ: ΣΧΕΔΙΑΣΗ ΑΛΓΟΡΙΘΜΩΝ ΔΙΔΑΣΚΩΝ: Π. ΚΑΤΣΑΡΟΣ Τετάρτη, 15 Απριλίου 2015Τετάρτη, 15 Απριλίου 2015Τετάρτη, 15 Απριλίου 2015Τετάρτη, 15 Απριλίου 2015Τμ. Πληροφορικής, Α.Π.Θ.4 Οπισθοδρόμηση ΙV Παράδειγμα - συνέχεια (Δυαδικό πρόβλημα του σάκου) Όλα τα μονοπάτια από τη ρίζα προς ένα φύλλο ορίζουν ένα στοιχείο του χώρου λύσεων. Ανάλογα με τις τιμές w και c, κάποια ή όλα από τα μονοπάτια από τη ρίζα προς τα φύλλα μπορεί να ορίζουν ανέφικτες λύσεις. Από τη στιγμή που έχουμε ορίσει μία οργάνωση του χώρου λύσεων διερευνούμε το χώρο λύσεων με μία αναζήτηση με προτεραιότητα βάθους (ο αλγόριθμος αυτός προσεχώς) ξεκινώντας από κάποιο αρχικό κόμβο.
ΜΑΘΗΜΑ: ΣΧΕΔΙΑΣΗ ΑΛΓΟΡΙΘΜΩΝ ΔΙΔΑΣΚΩΝ: Π. ΚΑΤΣΑΡΟΣ Τετάρτη, 15 Απριλίου 2015Τετάρτη, 15 Απριλίου 2015Τετάρτη, 15 Απριλίου 2015Τετάρτη, 15 Απριλίου 2015Τμ. Πληροφορικής, Α.Π.Θ.5 Οπισθοδρόμηση V Ο αρχικός κόμβος είναι ταυτόχρονα και ζωντανός κόμβος, αλλά και κόμβος-Ε (κόμβος επέκτασης). Αν από τον τρέχοντα κόμβο-Ε μπορούμε να μετακινηθούμε σε έναν άλλο τότε ο νέος κόμβος γίνεται επίσης ζωντανός κόμβος, αλλά και κόμβος-Ε. Ο παλιός κόμβος- Ε παραμένει απλά ζωντανός κόμβος. Αν δεν μπορούμε να μετακινηθούμε σε ένα νέο κόμβο, ο τρέχων Ε-κόμβος πεθαίνει (δηλαδή παύει να είναι ζωντανός) και επιστρέφουμε (δηλαδή οπισθοδρομούμε) στον πιο πρόσφατο ζωντανό κόμβο που απομένει. Η αναζήτηση τερματίζει όταν έχουμε βρει τη λύση ή όταν δεν υπάρχουν άλλοι κόμβοι για να οπισθοδρομήσουμε.
ΜΑΘΗΜΑ: ΣΧΕΔΙΑΣΗ ΑΛΓΟΡΙΘΜΩΝ ΔΙΔΑΣΚΩΝ: Π. ΚΑΤΣΑΡΟΣ Τετάρτη, 15 Απριλίου 2015Τετάρτη, 15 Απριλίου 2015Τετάρτη, 15 Απριλίου 2015Τετάρτη, 15 Απριλίου 2015Τμ. Πληροφορικής, Α.Π.Θ.6 Οπισθοδρόμηση VΙ Στο συγκεκριμένο πρόβλημα η αναζήτηση ξεκινά από τη ρίζα. Έστω ότι μετακινούμαστε στον κόμβο Β. Οι ζωντανοί κόμβοι είναι οι κόμβοι Α και Β, ενώ ο Β είναι ο τρέχων κόμβος-Ε. Η χωρητικότητα r που απομένει στον κόμβο B είναι 10 και το κέρδος είναι 40. Από το B η κίνηση στο D είναι ανέφικτη. Άρα μετακινούμαστε στο E και οι ζωντανοί κόμβοι είναι πλέον οι A, B και E. Στη συνέχεια μετακινούμαστε στον κόμβο K. Αφού ο Κ είναι φύλλο έχουμε μία εφικτή λύση με κέρδος 40. Αφού ο κόμβος Κ δεν μπορεί να επεκταθεί άλλο, πεθαίνει και οπισθοδρομούμε στον προηγούμενο ζωντανό κ.ο.κ. Η καλύτερη λύση που θα βρούμε είναι η λύση L με κέρδος 50.
ΜΑΘΗΜΑ: ΣΧΕΔΙΑΣΗ ΑΛΓΟΡΙΘΜΩΝ ΔΙΔΑΣΚΩΝ: Π. ΚΑΤΣΑΡΟΣ Τετάρτη, 15 Απριλίου 2015Τετάρτη, 15 Απριλίου 2015Τετάρτη, 15 Απριλίου 2015Τετάρτη, 15 Απριλίου 2015Τμ. Πληροφορικής, Α.Π.Θ.7 Οπισθοδρόμηση VΙΙ Άλλα παραδείγματα αλγορίθμων οπισθοδρόμησης: Δομές Δεδομένων Αλγόριθμοι και Εφαρμογές στη C++, Sartaj Sahnii, Μετάφραση: Γ. Θεοδωρίδης & Γ. Μανωλόπουλος, Εκδόσεις Τζιόλα Κεφάλαιο 16 Μεταγλωττιστές, Λάζος, Κ., Κατσαρός, Π., Καραϊσκος Ζ. σελ. 113 και 126