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

Σχετικά έγγραφα
Εισαγωγή στους Αλγορίθμους Ενότητα 11η

Εισαγωγή στους Αλγορίθμους Ενότητα 11η Άσκηση - Σταθμισμένος Χρονοπρογραμματισμός Διαστημάτων

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

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

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

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

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

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

Κεφάλαιο 4. Δυναµικός Προγραµµατισµός (Dynamic Programming) Χρησιµοποιήθηκε υλικό από τις αγγλικές διαφάνειες του Kevin Wayne.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Αλγόριθμοι και πολυπλοκότητα Συγχωνευτική Ταξινόμηση

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

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

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

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

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

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

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

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

Αλγόριθμοι και πολυπλοκότητα Δυναμικός Προγραμματισμός

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

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

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

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

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

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

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

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

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

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

Δομές Δεδομένων Ενότητα 1

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

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

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

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

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

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

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

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

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

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

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

ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΗΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ

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

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

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

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

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

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

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

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

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

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

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

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

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

Τίτλος Μαθήματος: Εργαστήριο Φυσικής Ι

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

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

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

Σχεδίαση και Ανάλυση Αλγορίθμων Ενότητα 4: ΑΝΑΠΑΡΑΣΤΑΣΗ ΔΕΔΟΜΕΝΩΝ - ΔΕΝΤΡΑ

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

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

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

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

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

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

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

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

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

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

Μάρκετινγκ Αγροτικών Προϊόντων

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

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

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

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

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

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

Θέματα Εφαρμοσμένης. Ενότητα 14.2: Η ψήφος στα πρόσωπα. Θεόδωρος Χατζηπαντελής Τμήμα Πολιτικών Επιστημών ΑΝΟΙΚΤΑ ΑΚΑΔΗΜΑΪΚΑ ΜΑΘΗΜΑΤΑ

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

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

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

ΠΛΗΡΟΦΟΡΙΚΗ Ι Ενότητα 9: Αναδρομή

Ιδιότητες και Τεχνικές Σύνταξης Επιστημονικού Κειμένου

Ευφυής Προγραμματισμός

Προγραμματισμός Η/Υ. 6 η ενότητα: Συναρτήσεις. Τμήμα. Τεχνολόγων Περιβάλλοντος. ΤΕΙ Ιονίων Νήσων. Ανοικτά Ακαδημαϊκά Μαθήματα στο ΤΕΙ Ιονίων Νήσων

Transcript:

Εισαγωγή στους Αλγορίθμους Ενότητα 11η Διδάσκων Χρήστος Ζαρολιάγκης Καθηγητής Τμήμα Μηχανικών Η/Υ & Πληροφορικής Πανεπιστήμιο Πατρών Email: zaro@ceid.upatras.gr

Άδειες Χρήσης Το παρόν εκπαιδευτικό υλικό υπόκειται σε άδειες χρήσης Creative Commons. Για εκπαιδευτικό υλικό, όπως εικόνες, που υπόκειται σε άλλου τύπου άδειας χρήσης, η άδεια χρήσης αναφέρεται ρητώς. 2

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

Σκοποί ενότητας Εισαγωγή στο Δυναμικό Προγραμματισμό Περιγραφή και ανάλυση του σταθμισμένου χρονοπρογραμματισμού διαστημάτων 4

Περιεχόμενα ενότητας Δυναμικός Προγραμματισμός Σταθμισμένος Χρονοπρογραμματισμός Διαστημάτων 5

Δυναμικός Προγραμματισμός Σταθμισμένος Χρονοπρογραμματισμός Διαστημάτων

Αλγοριθμικά Μοντέλα Απληστία. Χτίσε μια λύση σταδιακά, βελτιστοποιώντας μυωπικά κάποιο τοπικό κριτήριο. Διαίρει και βασίλευε. Διάσπασε ένα πρόβλημα σε δύο υποπροβλήματα, λύσε κάθε υποπρόβλημα ανεξάρτητα, και συνδύασε τις λύσεις των υποπροβλημάτων για να δημιουργήσεις την λύση του αρχικού προβλήματος. Δυναμικός προγραμματισμός. Διάσπασε ένα πρόβλημα σε μια σειρά από επικαλυπτόμενα υποπροβλήματα, και δόμησε σωστές λύσεις για όλο και μεγαλύτερα υποπροβλήματα. 7

Ιστορία Δυναμικού Προγραμματισμού Bellman. Ήταν πρωτοπόρος της συστηματικής μελέτης του δυναμικού προγραμματισμού την δεκαετία του 1950. Ετυμολογία. Δυναμικός προγραμματισμός = σχεδιασμός με την πάροδο του χρόνου. Η τότε κυβέρνηση των ΗΠΑ ήταν αντίθετη με την έρευνα στο πεδίο των μαθηματικών. Ο Bellman αναζήτησε ένα εντυπωσιακό όνομα για να αποφύγει την αντιπαράθεση. "είναι αδύνατον να χρησιμοποιηθεί η λέξη δυναμικός με υποτιμητική έννοια" "κάτι στο οποίο δεν θα μπορούσε να διαφωνήσει ούτε ένα μέλος του κογκρέσου" Αναφορά: Bellman, R. E. Eye of the Hurricane, An Autobiography. 8

Εφαρμογές δυναμικού προγραμματισμού Περιοχές. Βιοπληροφορική. Θεωρία του ελέγχου. Θεωρία της πληροφορίας. Ερευνητικές δραστηριότητες. Επιστήμη υπολογιστών: θεωρία, γραφικά, τεχνητή νοημοσύνη, συστήματα,. Μερικοί διάσημοι αλγόριθμοι δυναμικού προγραμματισμού. Viterbi για κρυμμένα Μαρκοβιανά μοντέλα. Unix diff για σύγκριση δύο αρχείων. Smith-Waterman για ευθυγράμμιση ακολουθιών. Bellman-Ford για δρομολόγηση συντομότερης διαδρομής σε δίκτυα. Cocke-Kasami-Younger για ανάλυση γραμματικών χωρίς συμφραζόμενα. 9

Σταθμισμένος Χρονοπρογραμματισμός Διαστημάτων

Σταθμισμένος Χρονοπρογραμματισμός Διαστημάτων Πρόβλημα σταθμισμένου χρονοπρογραμματισμού διαστημάτων. Σύνολο αιτημάτων ή εργασιών {1,, n} Το αίτημα j ξεκινά την στιγμή s j, τελειώνει την στιγμή f j, και έχει βαρύτητα v j Δύο αιτήματα είναι συμβατά αν δεν επικαλύπτονται. Στόχος: εύρεση υποσυνόλου S {1,, n} συμβατών αιτημάτων μέγιστης βαρύτητας Σ i S v i. 1, v 1 = 2 2, v 2 = 4 3, v 3 = 2 4, v 4 = 3 5, v 5 = 7 6, v 6 = 1 7, v 7 = 5 8, v 8 = 4 0 1 2 3 4 5 6 7 8 9 10 11 Χρόνος 11

Ανασκόπηση Μη-σταθμισμένου Χρονοπρογραμματισμού Διαστημάτων Ανασκόπηση. Ο άπληστος αλγόριθμος λειτουργεί αν όλες οι βαρύτητες είναι 1. Θεωρείστε τα αιτήματα σε αύξουσα σειρά ως προς το χρόνο λήξης. Προσθέστε το αίτημα στο υποσύνολο αν είναι συμβατό με τα αιτήματα που έχουν ήδη επιλεχθεί. Παρατήρηση. Ο άπληστος αλγόριθμος μπορεί να αποτύχει θεαματικά αν επιτραπούν αυθαίρετες βαρύτητες. Βάρος = 999 b Βάρος = 1 a 0 1 2 3 4 5 6 7 8 9 10 11 Χρόνος 12

Σταθμισμένος Χρονοπρογραμματισμός Διαστημάτων Διατάσσουμε τα αιτήματα σύμφωνα με το χρόνο λήξης τους: f 1 f 2... f n p(j) = μεγαλύτερος δείκτης i < j τέτοιος ώστε το αίτημα i να είναι συμβατό με το j. Παράδειγμα: p(8) = 5, p(7) = 3, p(2) = 0. 1 2 3 4 5 6 7 0 1 2 3 4 5 6 7 8 9 10 11 8 Time 13

Δυναμικός Προγραμματισμός: Δυαδική επιλογή OPT(j) = τιμή της βέλτιστης λύσης προβλήματος αποτελούμενο από αιτήματα 1, 2,..., j Περίπτωση 1: Η OPT(j) επιλέγει το αίτημα j, με βαρύτητα v j Δεν μπορούν να χρησιμοποιηθούν τα ασύμβατα αιτήματα { p(j) + 1, p(j) + 2,..., j - 1 } Πρέπει να περιέχει την βέλτιστη λύση OPT(p(j)) στο πρόβλημα που αποτελείται από τα συμβατά αιτήματα {1, 2,..., p(j)} που έχουν απομείνει Περίπτωση 2: Η OPT(j) δεν επιλέγει το αίτημα j Βέλτιστο υποπρόβλημα Πρέπει να περιέχει την βέλτιστη λύση OPT(j 1) στο πρόβλημα που αποτελείται από τα συμβατά αιτήματα {1, 2,..., j-1} που έχουν απομείνει OPT( j) 0 max v j OPT( p( j)), OPT( j 1) αν j 0 αλλιώς 14

Σταθμισμένος Χρονοπρογραμματισμός Διαστημάτων: Ωμή Βία Αλγόριθμος ωμής βίας. Είσοδος: n, s 1,,s n, f 1,,f n, v 1,,v n Ταξινόμησε τα αιτήματα κατά χρόνο λήξης f 1 f 2... f n. Υπολόγισε p(1), p(2),, p(n) Υπολόγισε Compute-Opt(1), Compute-Opt(2),, Compute-Opt(n) Compute-Opt(j) { if (j = 0) return 0 else return max{v j + Compute-Opt(p(j)), Compute-Opt(j-1)} } 15

Σταθμισμένος Χρονοπρογραμματισμός Διαστημάτων: Ωμή Βία Παρατήρηση. Ο αναδρομικός αλγόριθμος αποτυγχάνει θεαματικά λόγω επανϋπολογισμού πλεοναζόντων υποπροβλημάτων εκθετικός αλγόριθμος Παράδειγμα. Ο αριθμός των αναδρομικών κλήσεων στην παρακάτω περίπτωση μεγαλώνει σαν μια ακολουθία Fibonacci T(n) = T(n-1) + T(n-2) (δηλαδή εκθετική) 5 1 4 3 2 3 3 2 2 1 4 5 2 1 1 0 1 0 p(1) = 0, p(j) = j-2 1 0 Compute-Opt(j): παράγει αναδρομικές κλήσεις σε υποπροβλήματα μεγέθους j-1 και j-2 16

Σταθμισμένος Χρονοπρογραμματισμός Διαστημάτων Παρατήρηση 1. Ο Compute-Opt επιλύει n+1 διαφορετικά υποπροβλήματα Compute-Opt(0), Compute-Opt(1),., Compute-Opt(n) Παρατήρηση 2. Εκθετική πολυπλοκότητα του Compute-Opt οφείλεται στον εντυπωσιακό πλεονασμό κλήσεων κάθε ενός από τα Compute-Opt(j) Ερώτημα. Πως απαλείφουμε αυτόν τον πλεονασμό; 17

Σταθμισμένος Χρονοπρογραμματισμός Διαστημάτων Απομνημόνευση Απομνημόνευση. Αποθήκευσε τα αποτελέσματα κάθε υποπροβλήματος σε μια καθολικά προσπελάσιμη θέση μνήμης. Αναζήτηση όποτε χρειαστεί. Είσοδος: n, s 1,,s n, f 1,,f n, v 1,,v n Ταξινόμησε τα αιτήματα κατά χρόνο λήξης, έτσι ώστε f 1 f 2... f n Υπολόγισε p(1), p(2),, p(n) for j = 1 to n M[j] = empty M[0] = 0 M-Compute-Opt(n) Καθολικός πίνακας απομνημόνευσης M-Compute-Opt(j) { if (M[j] is empty) M[j] = max{v j + M-Compute-Opt(p(j)), M-Compute-Opt(j-1)} return M[j] } 18

Σταθμισμένος Χρονοπρογραμματισμός Διαστημάτων Χρόνος Εκτέλεσης Ισχυρισμός. Η εκδοχή με απομνημόνευση του αλγόριθμου παίρνει χρόνο O(n log n) Απόδειξη. Ταξινόμηση ως προς χρόνο λήξης: O(n log n). Υπολογισμός p( ) : O(n) μετά από ταξινόμηση ως προς τον χρόνο έναρξης. M-Compute-Opt(j): κάθε κλήση απαιτεί χρόνο O(1) και είτε (i) επιστρέφει μια υπάρχουσα τιμή M[j] (ii) συμπληρώνει μια νέα εγγραφή M[j] και εκτελεί δύο αναδρομικές κλήσεις Μέτρο προόδου = # μη κενών εγγραφών του M[]. Αρχικά = 0, κατά τη διάρκεια n. Το (ii) αυξάνει το κατά 1 το πολύ 2n αναδρομικές κλήσεις. Ο συνολικός χρόνος εκτέλεσης του M-Compute-Opt(n) είναι O(n). Παρατήρηση. O(n) αν τα αιτήματα είναι ταξινομημένα εξ αρχής κατά χρόνους έναρξης και λήξης. 19

Σταθμισμένος Χρονοπρογραμματισμός Διαστημάτων Εύρεση Λύσης Ερ. Ο αλγόριθμος βρίσκει τη βέλτιστη τιμή. Τι γίνεται αν θέλουμε την ίδια την λύση ; Απ. Εκτελούμε ένα επιπλέον βήμα μετεπεξεργασίας του M, «ινχηλατώντας» τη λύση Run M-Compute-Opt(n) Run Find-Solution(n) Find-Solution(j) { if (j = 0) μην εκτυπώσεις τίποτα else if (v j + M[p(j)] > M[j-1]) εκτύπωσε το j Find-Solution(p(j)) else Find-Solution(j-1) } # επαναληπτικών κλήσεων n O(n). 20

Σταθμισμένος Χρονοπρογραμματισμός Διαστημάτων Απομνημόνευση ή επανάληψη στα υποπροβλήματα Βασική Ιδέα. «Ξεδίπλωσε» την αναδρομή. Είσοδος: n, s 1,,s n, f 1,,f n, v 1,,v n Ταξινόμησε αιτήματα ως προς χρόνους λήξης f 1 f 2... f n Υπολόγισε p(1), p(2),, p(n) Iterative-Compute-Opt { M[0] = 0 for j = 1 to n M[j] = max{v j + M[p(j)], M[j-1]} } 21

Σταθμισμένος Χρονοπρογραμματισμός Διαστημάτων Απομνημόνευση ή επανάληψη στα υποπροβλήματα Είσοδος: n, s 1,,s n, f 1,,f n, v 1,,v n Ταξινόμησε αιτήματα ως προς χρόνους λήξης f 1 f 2... f n Υπολόγισε p(1), p(2),, p(n) Iterative-Compute-Opt { M[0] = 0 for j = 1 to n M[j] = max{w j + M[p(j)], M[j-1]} } Δείκτης 1 w 1 = 2 p(1) = 0 2 w 2 = 4 p(2) = 0 3 4 5 6 w 3 = 4 w 4 = 7 w 5 = 2 w 6 = 1 p(3) = 1 p(4) = 0 p(5) = 3 p(6) = 3 0 1 2 3 4 5 6 M = 0 2 0 2 4 0 2 4 6 0 2 4 6 7 0 2 4 6 7 8 0 2 4 6 7 8 8 22

Σταθμισμένος Χρονοπρογραμματισμός Διαστημάτων Απομνημόνευση ή επανάληψη στα υποπροβλήματα M[j] = max(w j + M[p(j)], M[j-1]) M[0] = 0 M[1] = max(w 1 + M[0], M[0])= max(2 + 0, 0) = 2 M[2] = max(w 2 + M[0], M[1])= max(4 + 0, 2) = 4 M[3] = max(w 3 + M[1], M[2])= max(4 + 2, 4) = 6 M[4] = max(w 4 + M[0], M[3])= max(7 + 0, 6) = 7 M[5] = max(w 5 + M[3], M[4])= max(2 + 6, 7) = 8 M[6] = max(w 6 + M[3], M[5])= max(1 + 6, 8) = 8 Δείκτης 1 w 1 = 2 p(1) = 0 2 w 2 = 4 p(2) = 0 3 4 5 6 w 3 = 4 w 4 = 7 w 5 = 2 w 6 = 1 p(3) = 1 p(4) = 0 p(5) = 3 p(6) = 3 0 1 2 3 4 5 6 M = 0 2 0 2 4 0 2 4 6 0 2 4 6 7 0 2 4 6 7 8 0 2 4 6 7 8 8 23

Σταθμισμένος Χρονοπρογραμματισμός Διαστημάτων Απομνημόνευση ή επανάληψη στα υποπροβλήματα M[j] = max(w j + M[p(j)], M[j-1]) M[0] = 0 M[1] = max(w 1 + M[0], M[0])= max(2 + 0, 0) = 2 M[2] = max(w 2 + M[0], M[1])= max(4 + 0, 2) = 4 M[3] = max(w 3 + M[1], M[2])= max(4 + 2, 4) = 6 M[4] = max(w 4 + M[0], M[3])= max(7 + 0, 6) = 7 M[5] = max(w 5 + M[3], M[4])= max(2 + 6, 7) = 8 M[6] = max(w 6 + M[3], M[5])= max(1 + 6, 8) = 8 Δείκτης 1 w 1 = 2 p(1) = 0 2 w 2 = 4 p(2) = 0 3 4 5 6 w 3 = 4 w 4 = 7 w 5 = 2 w 6 = 1 p(3) = 1 p(4) = 0 p(5) = 3 p(6) = 3 0 1 2 3 4 5 6 M = 0 2 0 2 4 0 2 4 6 0 2 4 6 7 0 2 4 6 7 8 0 2 4 6 7 8 8 24

Σταθμισμένος Χρονοπρογραμματισμός Διαστημάτων Απομνημόνευση ή επανάληψη στα υποπροβλήματα M[j] = max(w j + M[p(j)], M[j-1]) M[0] = 0 M[1] = max(w 1 + M[0], M[0])= max(2 + 0, 0) = 2 M[2] = max(w 2 + M[0], M[1])= max(4 + 0, 2) = 4 M[3] = max(w 3 + M[1], M[2])= max(4 + 2, 4) = 6 M[4] = max(w 4 + M[0], M[3])= max(7 + 0, 6) = 7 M[5] = max(w 5 + M[3], M[4])= max(2 + 6, 7) = 8 εργασία 5 M[6] = max(w 6 + M[3], M[5])= max(1 + 6, 8) = 8 Δείκτης 1 w 1 = 2 p(1) = 0 2 w 2 = 4 p(2) = 0 3 4 5 6 w 3 = 4 w 4 = 7 w 5 = 2 w 6 = 1 p(3) = 1 p(4) = 0 p(5) = 3 p(6) = 3 0 1 2 3 4 5 6 M = 0 2 0 2 4 0 2 4 6 0 2 4 6 7 0 2 4 6 7 8 0 2 4 6 7 8 8 25

Σταθμισμένος Χρονοπρογραμματισμός Διαστημάτων Απομνημόνευση ή επανάληψη στα υποπροβλήματα M[j] = max(w j + M[p(j)], M[j-1]) M[0] = 0 M[1] = max(w 1 + M[0], M[0])= max(2 + 0, 0) = 2 M[2] = max(w 2 + M[0], M[1])= max(4 + 0, 2) = 4 M[3] = max(w 3 + M[1], M[2])= max(4 + 2, 4) = 6 M[4] = max(w 4 + M[0], M[3])= max(7 + 0, 6) = 7 M[5] = max(w 5 + M[3], M[4])= max(2 + 6, 7) = 8 εργασία 5 M[6] = max(w 6 + M[3], M[5])= max(1 + 6, 8) = 8 Δείκτης 1 w 1 = 2 p(1) = 0 2 w 2 = 4 p(2) = 0 3 4 5 6 w 3 = 4 w 4 = 7 w 5 = 2 w 6 = 1 p(3) = 1 p(4) = 0 p(5) = 3 p(6) = 3 0 1 2 3 4 5 6 M = 0 2 0 2 4 0 2 4 6 0 2 4 6 7 0 2 4 6 7 8 0 2 4 6 7 8 8 26

Σταθμισμένος Χρονοπρογραμματισμός Διαστημάτων Απομνημόνευση ή επανάληψη στα υποπροβλήματα M[j] = max(w j + M[p(j)], M[j-1]) M[0] = 0 M[1] = max(w 1 + M[0], M[0])= max(2 + 0, 0) = 2 M[2] = max(w 2 + M[0], M[1])= max(4 + 0, 2) = 4 M[3] = max(w 3 + M[1], M[2])= max(4 + 2, 4) = 6 εργασία 3 M[4] = max(w 4 + M[0], M[3])= max(7 + 0, 6) = 7 M[5] = max(w 5 + M[3], M[4])= max(2 + 6, 7) = 8 εργασία 5 M[6] = max(w 6 + M[3], M[5])= max(1 + 6, 8) = 8 Δείκτης 1 w 1 = 2 p(1) = 0 2 w 2 = 4 p(2) = 0 3 4 5 6 w 3 = 4 w 4 = 7 w 5 = 2 w 6 = 1 p(3) = 1 p(4) = 0 p(5) = 3 p(6) = 3 0 1 2 3 4 5 6 M = 0 2 0 2 4 0 2 4 6 0 2 4 6 7 0 2 4 6 7 8 0 2 4 6 7 8 8 27

Σταθμισμένος Χρονοπρογραμματισμός Διαστημάτων Απομνημόνευση ή επανάληψη στα υποπροβλήματα M[j] = max(w j + M[p(j)], M[j-1]) M[0] = 0 M[1] = max(w 1 + M[0], M[0])= max(2 + 0, 0) = 2 M[2] = max(w 2 + M[0], M[1])= max(4 + 0, 2) = 4 M[3] = max(w 3 + M[1], M[2])= max(4 + 2, 4) = 6 εργασία 3 M[4] = max(w 4 + M[0], M[3])= max(7 + 0, 6) = 7 M[5] = max(w 5 + M[3], M[4])= max(2 + 6, 7) = 8 εργασία 5 M[6] = max(w 6 + M[3], M[5])= max(1 + 6, 8) = 8 Δείκτης 1 w 1 = 2 p(1) = 0 2 w 2 = 4 p(2) = 0 3 4 5 6 w 3 = 4 w 4 = 7 w 5 = 2 w 6 = 1 p(3) = 1 p(4) = 0 p(5) = 3 p(6) = 3 0 1 2 3 4 5 6 M = 0 2 0 2 4 0 2 4 6 0 2 4 6 7 0 2 4 6 7 8 0 2 4 6 7 8 8 28

Σταθμισμένος Χρονοπρογραμματισμός Διαστημάτων Απομνημόνευση ή επανάληψη στα υποπροβλήματα M[j] = max(w j + M[p(j)], M[j-1]) M[0] = 0 M[1] = max(w 1 + M[0], M[0])= max(2 + 0, 0) = 2 εργασία 1 M[2] = max(w 2 + M[0], M[1])= max(4 + 0, 2) = 4 M[3] = max(w 3 + M[1], M[2])= max(4 + 2, 4) = 6 εργασία 3 M[4] = max(w 4 + M[0], M[3])= max(7 + 0, 6) = 7 M[5] = max(w 5 + M[3], M[4])= max(2 + 6, 7) = 8 εργασία 5 M[6] = max(w 6 + M[3], M[5])= max(1 + 6, 8) = 8 Δείκτης 1 w 1 = 2 p(1) = 0 2 w 2 = 4 p(2) = 0 3 4 5 6 w 3 = 4 w 4 = 7 w 5 = 2 w 6 = 1 p(3) = 1 p(4) = 0 p(5) = 3 p(6) = 3 0 1 2 3 4 5 6 M = 0 2 0 2 4 0 2 4 6 0 2 4 6 7 0 2 4 6 7 8 0 2 4 6 7 8 8 29

Σύνοψη Δυναμικού Προγραμματισμού Συνταγή. Χαρακτηρισμός δομής του προβλήματος. Αναδρομικά ορισμός της τιμής της βέλτιστης λύσης. Υπολογισμός της τιμής της βέλτιστης λύσης. Κατασκευή της βέλτιστης λύσης από την υπολογισμένη πληροφορία. 30

Βιβλιογραφία 1. J. Kleinberg and E. Tardos, Σχεδιασμός Αλγορίθμων, ελληνική έκδοση, Εκδόσεις Κλειδάριθμος, 2008 2. T. Cormen, C. Leiserson, R. Rivest, and C. Stein, Εισαγωγή στους Αλγορίθμους, ελληνική έκδοση, Πανεπιστημιακές Εκδόσεις Κρήτης, 2012 3. K. Mehlhorn and P. Sanders, Αλγόριθμοι και Δομές Δεδομένων Τα βασικά εργαλεία, ελληνική έκδοση, Εκδόσεις Κλειδάριθμος, 2014 4. S. Dasgupta, C. Papadimitriou, and U. Vazirani, Αλγόριθμοι, ελληνική έκδοση, Εκδόσεις Κλειδάριθμος, 2008 5. Θ. Παπαθεοδώρου, Αλγόριθμοι: Εισαγωγικά Θέματα και Παραδείγματα, Εκδόσεις Πανεπιστημίου Πατρών, 1999 31

Τέλος Ενότητας 32

Σημείωμα Ιστορικού Εκδόσεων Έργου Το παρόν έργο αποτελεί την έκδοση 1.0. 33

Σημείωμα Αναφοράς Copyright Πανεπιστήμιο Πατρών, Χρήστος Ζαρολιάγκης, 2014. «Εισαγωγή στους Αλγορίθμους». Έκδοση: 1.0. Πάτρα 2014. Διαθέσιμο από τη δικτυακή διεύθυνση: https://eclass.upatras.gr/courses/ceid1083 34

Σημείωμα Αδειοδότησης Το παρόν υλικό διατίθεται με τους όρους της άδειας χρήσης Creative Commons Αναφορά, Μη Εμπορική Χρήση, Όχι Παράγωγα Έργα 4.0 [1] ή μεταγενέστερη, Διεθνής Έκδοση. Εξαιρούνται τα αυτοτελή έργα τρίτων π.χ. φωτογραφίες, διαγράμματα κ.λ.π., τα οποία εμπεριέχονται σε αυτό. [1] http://creativecommons.org/licenses/by-nc-nd/4.0/ Ως Μη Εμπορική ορίζεται η χρήση: που δεν περιλαμβάνει άμεσο ή έμμεσο οικονομικό όφελος από την χρήση του έργου, για το διανομέα του έργου και αδειοδόχο που δεν περιλαμβάνει οικονομική συναλλαγή ως προϋπόθεση για τη χρήση ή πρόσβαση στο έργο που δεν προσπορίζει στο διανομέα του έργου και αδειοδόχο έμμεσο οικονομικό όφελος (π.χ. διαφημίσεις) από την προβολή του έργου σε διαδικτυακό τόπο Ο δικαιούχος μπορεί να παρέχει στον αδειοδόχο ξεχωριστή άδεια να χρησιμοποιεί το έργο για εμπορική χρήση, εφόσον αυτό του ζητηθεί. 35

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