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

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

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

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

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

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

Κεφάλαιο 1. Πέντε Αντιπροσωπευτικά Προβλήματα. Έκδοση 1.4, 30/10/2014. Χρησιμοποιήθηκε υλικό από τις αγγλικές διαφάνειες του Kevin Wayne.

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

Κεφάλαιο 4. Άπληστοι Αλγόριθµοι (Greedy Algorithms) Χρησιµοποιήθηκε υλικό από τις αγγλικές διαφάνειες του Kevin Wayne.

ΑΛΓΟΡΙΘΜΟΙ Άνοιξη I. ΜΗΛΗΣ

Κεφάλαιο 4. Διαίρει και Βασίλευε (Divide and Conquer) Παύλος Εφραιμίδης V1.1,

ΑΛΓΟΡΙΘΜΟΙ Άνοιξη I. ΜΗΛΗΣ

Αλγόριθµοι. Παράδειγµα. ιαίρει και Βασίλευε. Παράδειγµα MergeSort. Τεχνικές Σχεδιασµού Αλγορίθµων

Initialize each person to be free. while (some man is free and hasn't proposed to every woman) { Choose such a man m w = 1 st woman on m's list to

Αλγοριθμικές Τεχνικές. Brute Force. Διαίρει και Βασίλευε. Παράδειγμα MergeSort. Παράδειγμα. Τεχνικές Σχεδιασμού Αλγορίθμων

Αλγοριθμικές Τεχνικές

Δυναμικός Προγραμματισμός

Δυναμικός Προγραμματισμός

Αλγόριθµοι και Πολυπλοκότητα

Αναδροµή (Recursion) ύο παρεξηγήσεις. Σκέψου Αναδροµικά. Τρίγωνο Sierpinski Μη αναδροµικός ορισµός;

Αναδρομή (Recursion) Πώς να λύσουμε ένα πρόβλημα κάνοντας λίγη δουλειά και ανάγοντας το υπόλοιπο να λυθεί με τον ίδιο τρόπο.

Κεφάλαιο 2. Η δομή δεδομένων Σωρός και η Ταξινόμηση Σωρού (The Heap data structure and Heapsort) Έκδοση 1.3, 14/11/2014

Στην ενότητα αυτή θα µελετηθούν τα εξής θέµατα:

Δυναμικός Προγραμματισμός

Βασικές Έννοιες Δοµών Δεδοµένων

Δυναµικός Προγραµµατισµός (ΔΠ)

Δυναμικός Προγραμματισμός

Διαίρει-και-Βασίλευε. Αλγόριθµοι & Πολυπλοκότητα (Χειµώνας 2011) Διαίρει-και-Βασίλευε 2

Διωνυµικοί Συντελεστές. Αλγόριθµοι & Πολυπλοκότητα (Χειµώνας 2011) Δυναµικός Προγραµµατισµός 1

Ενότητα 1: Εισαγωγή Ασκήσεις και Λύσεις

Στην ενότητα αυτή θα µελετηθούν τα εξής θέµατα:

Δομές Δεδομένων και Αλγόριθμοι

Κεφάλαιο 2. Η δοµή δεδοµένων Σωρός και η Ταξινόµηση Σωρού (The Heap data structure and Heapsort) Έκδοση 1.1, 12/05/2010

Θέματα Εφαρμογών Βάσεων Δεδομένων: Ιδιωτικότητα Δεδομένων

Κεφάλαιο 8. NP και Υπολογιστική Δυσεπιλυσιμότητα. Παύλος Εφραιμίδης V1.1,

Merge Sort (Ταξινόμηση με συγχώνευση) 6/14/2007 3:04 AM Merge Sort 1

Κεφάλαιο 8. NP και Υπολογιστική Δυσεπιλυσιµότητα. Χρησιµοποιήθηκε υλικό από τις αγγλικές διαφάνειες του Kevin Wayne.

ΟΙΚΟΝΟΜΙΚΟ ΠΑΝΕΠΙΣΤΗΜΙΟ ΑΘΗΝΩΝ ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ. Δοµές Δεδοµένων

Δομές Δεδομένων & Αλγόριθμοι

Σχεδίαση Αλγορίθμων -Τμήμα Πληροφορικής ΑΠΘ - Εξάμηνο 4ο

Άπληστοι Αλγόριθµοι (CLR, κεφάλαιο 17)

υναμικός Προγραμματισμός

Αλγόριθµοι και Πολυπλοκότητα

Διάλεξη 2η: Αλγόριθμοι και Προγράμματα

Τεχνικές Σχεδιασμού Αλγορίθμων

Αλγόριθµοι και Πολυπλοκότητα

Κεφάλαιο 8. NP και Υπολογιστική Δυσεπιλυσιμότητα. Χρησιμοποιήθηκε υλικό από τις αγγλικές διαφάνειες του Kevin Wayne.

Ταξινόμηση με συγχώνευση Merge Sort

Αναδρομή Ανάλυση Αλγορίθμων

ΕΛΛΗΝΙΚΗ ΔΗΜΟΚΡΑΤΙΑ ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΡΗΤΗΣ. Δομές Δεδομένων. Ιωάννης Γ. Τόλλης Τμήμα Επιστήμης Υπολογιστών Πανεπιστήμιο Κρήτης

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

ΜΥΥ105: Εισαγωγή στον Προγραµµατισµό. Αναδροµικές Συναρτήσεις Χειµερινό Εξάµηνο 2014

auth Αλγόριθμοι - Τμήμα Πληροφορικής ΑΠΘ - Εξάμηνο 4ο

υναμικός Προγραμματισμός

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

ΔΙΑΧΕΙΡΙΣΗ ΔΙΚΤΥΩΝ Δρομολόγηση στο Internet (II) Αλγόριθμοι Distance Vector (Bellman) Αλγόριθμοι Link State (Dijkstra)

Αλγόριθµοι και Πολυπλοκότητα

ΑΛΓΟΡΙΘΜΟΙ Άνοιξη I. ΜΗΛΗΣ

Πληροφορική 2. Αλγόριθμοι

Ν!=1*2*3* *(N-1) * N => N! = (Ν-1)! * N έτσι 55! = 54! * 55

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

ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ. Ταξινόµηση Mergesort Κεφάλαιο 8. Ε. Μαρκάκης Επίκουρος Καθηγητής

Κεφάλαιο 3. Γραφήµατα v1.0 ( ) Χρησιµοποιήθηκε υλικό από τις αγγλικές διαφάνειες του Kevin Wayne.

Αλγόριθµοι και Πολυπλοκότητα

Διαίρει-και-Βασίλευε. Διαίρει-και-Βασίλευε. MergeSort. MergeSort. Πρόβλημα Ταξινόμησης: Είσοδος : ακολουθία n αριθμών (α 1

Χαρακτηριστικά αναδροµής

Στοιχεία Αλγορίθµων και Πολυπλοκότητας

ΑΛΓΟΡΙΘΜΟΙ. Ενότητα 8: Δυναμικός Προγραμματισμός. Ιωάννης Μανωλόπουλος, Καθηγητής Αναστάσιος Γούναρης, Επίκουρος Καθηγητής Τμήμα Πληροφορικής ΑΠΘ

Σχεδίαση Αλγορίθμων - Τμήμα Πληροφορικής ΑΠΘ -4ο εξάμηνο 1

Κεφάλαιο 2. Βασικά στοιχεία ανάλυσης αλγορίθµων. Χρησιµοποιήθηκε υλικό από τις αγγλικές διαφάνειες του Kevin Wayne.

ΔΥΑΔΙΚΗ ΑΝΑΖΗΤΗΣΗ & ΤΑΞΙΝΟΜΗΣΗ ΜΕ ΣΥΓΧΩΝΕΥΣΗ

Ειδικά θέματα Αλγορίθμων και Δομών Δεδομένων (ΠΛΕ073) Απαντήσεις 1 ου Σετ Ασκήσεων

Προγραµµατισµός Η/Υ. Μέρος2

Στόχοι και αντικείμενο ενότητας. Πέρασμα Πίνακα σε Συνάρτηση (συν.) Πέρασμα Πίνακα σε Συνάρτηση. #8.. Ειδικά Θέματα Αλγορίθμων

ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ. Αρχές Ανάλυσης Αλγορίθµων Κεφάλαιο 2. Ε. Μαρκάκης Επικ. Καθηγητής

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

(Γραμμικές) Αναδρομικές Σχέσεις

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

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

Αλγόριθµοι και Πολυπλοκότητα

Αλγόριθμοι και Δομές Δεδομένων (Ι) (εισαγωγικές έννοιες)

Σχεδίαση & Ανάλυση Αλγορίθμων

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

I 1 I 2 I 3 I 4 I 5 I 6 I 7 I 8 I 9 I 10 I 11

Δοµές Δεδοµένων. ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ ΟΙΚΟΝΟΜΙΚΟ ΠΑΝΕΠΙΣΤΗΜΙΟ ΑΘΗΝΩΝ Φθινοπωρινό Εξάµηνο Ευάγγελος Μαρκάκης

Heapsort Using Multiple Heaps

Ορισµός. Εστω συναρτήσεις: f : N R και g : N R. η f(n) είναι fi( g(n) ) αν υπάρχουν σταθερές C 1, C 2 και n 0, τέτοιες ώστε:

Εισαγωγή στον Προγραμματισμό

ΕΙΣΑΓΩΓΗ ΣΤΗΝ ΑΝΑΛΥΣΗ ΑΛΓΟΡΙΘΜΩΝ

Αλγόριθμοι - Τμήμα Πληροφορικής ΑΠΘ -4ο εξάμηνο 1

Δομές Δεδομένων & Αλγόριθμοι

υναμικός Προγραμματισμός

ΟΙΚΟΝΟΜΙΚΟ ΠΑΝΕΠΙΣΤΗΜΙΟ ΑΘΗΝΩΝ ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ. Δοµές Δεδοµένων

Τι είναι αλγόριθμος; Υποπρογράμματα (υποαλγόριθμοι) Βασικές αλγοριθμικές δομές

Εισ. Στην ΠΛΗΡΟΦΟΡΙΚΗ. Διάλεξη 7 η. Βασίλης Στεφανής

Chapter 6. Problem Solving and Algorithm Design. Στόχοι Ενότητας. Επίλυση προβληµάτων. Εισαγωγή. Nell Dale John Lewis

ιαίρει-και-βασίλευε ημήτρης Φωτάκης Σχολή Ηλεκτρολόγων Μηχανικών και Μηχανικών Υπολογιστών Εθνικό Μετσόβιο Πολυτεχνείο

Προγραµµατισµός. Αναδροµή (1/2)

Περιεχόµενα. Ανασκόπηση - Ορισµοί. Ο κύκλος ανάπτυξης προγράµµατος. Γλώσσες Προγραµµατισµού Ασκήσεις

Ορθότητα Χωρική αποδοτικότητα. Βελτιστότητα. Θεωρητική ανάλυση Εμπειρική ανάλυση. Αλγόριθμοι - Τμήμα Πληροφορικής ΑΠΘ -4ο εξάμηνο 1

1o Φροντιστήριο ΗΥ240

Transcript:

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

Τεχνικές Σχεδίασης Αλγορίθµων Απληστία. Χτίζουµε µια λύση σταδιακά, βελτιστοποιώντας σε κάθε βήµα µυωπικά κάποιο τοπικό κριτήριο. Διαίρει-και-βασίλευε. Διαιρούµε το πρόβληµα σε δύο υπο-προβλήµατα, επιλύουµε ανεξάρτητα κάθε υπο-πρόβληµα και συνδυάζουµε τις λύσεις των υπο-προβληµάτων για να σχηµατίσουµε τη λύση του συνολικού προβλήµατος Δυναµικός προγραµµατισµός. Διαιρούµε το πρόβληµα σε µια ακολουθία επικαλυπτόµενων υπο-προβληµάτων, και χτίζουµε λύσεις σε όλο και µεγαλύτερα υπο-προβλήµατα. 2

Δυναµικός προγραµµατισµός: Ιστορικά στοιχεία Bellman. Πρωταγωνίστησε στη συστηµατική µελέτη του δυναµικού προγραµµατισµού τη δεκαετία του 1950. Ετυµολογία. Δυναµικός Προγραµµατισµός: Ο όρος προγραµµατισµός εδώ δεν αφορά τις γλώσσες προγραµµατισµού Δυναµικός Προγραµµατισµός = planning over time. Ιστορικά παραλειπόµενα: Το Secretary of Defense των ΗΠΑ ήταν εχθρικό προς τη µαθηµατική έρευνα. Ο Bellman αναζήτησε ένα εντυπωσιακό όνοµα για να αποφύγει την αρνητική στάση. "it's impossible to use dynamic in a pejorative sense" "something not even a Congressman could object to" Reference: Bellman, R. E. Eye of the Hurricane, An Autobiography. 3

Εφαρµογές Δυναµικού Προγραµµατισµού Areas. Βιοπληροφορική (Bioinformatics). Control theory. Θεωρία Πληροφοριών (Information theory). Επιχειρησιακή Έρευνα (Operations research). Επιστήµη Υπολογιστών (Computer science): θεωρία, γραφικά, Τεχνητή Νοηµοσύνη, συστήµατα,. Ορισµένοι διάσηµοι αλγόριθµοι δυναµικού προγραµµατισµού. Viterbi for hidden Markov models. Unix diff για τη σύγκριση δύο αρχείων. Smith-Waterman for sequence alignment. Bellman-Ford for shortest path routing in networks. Cocke-Kasami-Younger for parsing context free grammars. 4

6.1 Weighted Interval Scheduling (Σταθµισµένος Χρονοπρογραµµατισµός Διαστηµάτων)

Weighted Interval Scheduling Το πρόβληµα του Weighted interval scheduling. Εργασία j ξεκινά τη χρονική στιγµή s j, τερµατίζει τη χρονική στιµγή f j, και έχει βάρος ή αξία v j. Δύο εργασίες είναι συµβατές εάν δεν υπάρχει επικάλυψη µεταξύ τους. Στόχος: εύρεση συνόλου συµβατών εργασιών µεγίστου βάρους. a b c d e f g 0 1 2 3 4 5 6 7 8 9 10 11 h Time 6

Χρονοπρογραµµατισµός Διαστηµάτων χωρίς βάρη (Unweighted Interval Scheduling) Υπενθυµίζουµε. Ένας άπληστος (greedy) αλγόριθµος λύνει το πρόβληµα εάν όλα τα βάρη είναι 1 (ή αλλιώς, δεν υπάρχουν βάρη). Εξετάζουµε τις εργασίες σε αύξουσα σειρά χρόνου τερµατισµού. Προσθέτω κάθε εργασία που είναι συµβατή µε όσες έχουν επιλεγεί πριν από αυτή. Παρατήρηση. Ο παραπάνω άπληστος αλγόριθµος µπορεί να αποτυχέι πανηγυρικά εάν επιτρέψουµε βάρη στις εργασίες (σταθµισµένος χρονοπρογραµµατισµός διαστηµάτων) βάρος = 999 b βάρος = 1 a 0 1 2 3 4 5 6 7 8 9 10 11 Χρόνος 7

Weighted Interval Scheduling Συµβολισµός. Ονοµάζουµε τις εργασίες µε βάση το χρόνο τερµατισµού τους: 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 8

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

Weighted Interval Scheduling: Brute Force Αλγόριθµος brute force. Input: n, s 1,,s n, f 1,,f n, v 1,,v n Sort jobs by finish times so that f 1 f 2... f n. Compute p(1), p(2),, p(n) Compute-Opt(j) { if (j = 0) return 0 else return max(v j + Compute-Opt(p(j)), Compute-Opt(j-1)) } 10

Weighted Interval Scheduling: Brute Force Παρατήρηση. Ο αναδροµικός αλγόριθµος αποτυγχάνει πανηγυρικά εξαιτίας των περιττών υποπροβληµάτων εκθετικός αλγόριθµος. Παράδειγµα. Ο αριθµός των αναδροµικών προς τα διάφορα επίπεδα των υποπροβληµάτων αυξάνει στη λογική της ακολουθίας Fibonacci. 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 11

Weighted Interval Scheduling: Memoization (Αποµνηµόνευση) Memoization. Αποθήκευση των αποτελεσµάτων για κάθε υποπρόβληµα σε µια προσωρινή µνήµη; χρήση της αποθηκευµένης λύσης κάθε φορά που απαιτείται. Input: n, s 1,,s n, f 1,,f n, v 1,,v n Sort jobs by finish times so that f 1 f 2... f n. Compute p(1), p(2),, p(n) for j = 1 to n M[j] = empty M[j] = 0 global array M-Compute-Opt(j) { if (M[j] is empty) M[j] = max(w j + M-Compute-Opt(p(j)), M-Compute-Opt(j-1)) return M[j] } 12

Weighted Interval Scheduling: Πολυπλοκότητα Χρόνου Ισχυρισµός. Η έκδοση του αλγόριθµου µε χρήση memoization απαιτεί O(n log n) πολυπλοκότητα χρόνου. Ταξινόµηση εργασιών κατά χρόνο τερµατισµού: O(n log n). Υπολογισµός p( ) : O(n) µετά την ταξινόµηση κατά χρόνο έναρξης. M-Compute-Opt(j): κάθε κλήση απαιτεί χρόνο O(1) time και είτε (i) επιστρέφει την αποθηκευµένη τιµή M[j] (ii) συµπληρώνει την ελεύθερη θέση M[j] και εκτελεί δύο αναδροµικές κλήσεις Μέτρο προόδου (Progress measure)φ= # συµπληρωµένων θέσεων του M[]. αρχικάφ= 0, ισχύει πάντοτεφ n. (ii) αυξάνει το Φ κατά 1 το πολύ 2n αναδροµικές κλήσεις. Ο συνολικός χρόνος εκτέλεσης της M-Compute-Opt(n είναι O(n). Παρατήρηση. O(n) εάν οι εργασίες δοθούν ταξινοµηµένες κατά χρόνου τερµατισµού και χρόνου έναρξης (δύο ξεχωριστές λίστες). 13

Automated Memoization Automated memoization. Πολλές συναρτησικές γλώσσες προγραµµατισµού (π.χ., Lisp) παρέχουν εγγενή υποστήριξη για memoization. Ερώτηµα. Γιατί όχι και οι imperative γλώσσες (π.χ., Java)? (defun F (n) (if (<= n 1) n (+ (F (- n 1)) (F (- n 2))))) Lisp (efficient) static int F(int n) { if (n <= 1) return n; else return F(n-1) + F(n-2); } Java (exponential) F(40) F(39) F(38) F(38) F(37) F(37) F(36) F(37) F(36) F(36) F(35) F(36) F(35) F(35) F(34) 14

Weighted Interval Scheduling: Εύρεση µιας λύσης Ερώτηµα. Ο αλγόριθµος δυναµικού προγραµµατισµού που είδαµε υπολογίζει την τιµή µιας βέλτιστης λύσης. Μπορούµε να υπολογίσουµε την ίδια τη λύση; Απάντηση. Ναι, επεξεργαζόµενοι τα αποτελέσµατα του αλγορίθµου. Run M-Compute-Opt(n) Run Find-Solution(n) Find-Solution(j) { if (j = 0) output nothing else if (v j + M[p(j)] > M[j-1]) print j Find-Solution(p(j)) else Find-Solution(j-1) } # of αναδροµικών κλήσεων n O(n). 15

Weighted Interval Scheduling: Bottom-Up Bottom-up dynamic programming. Unwind recursion (ξετύλιγµα αναδροµής). Input: n, s 1,,s n, f 1,,f n, v 1,,v n Sort jobs by finish times so that f 1 f 2... f n. Compute 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]) } 16

πηγές/αναφορές Κεφάλαιο 6, Σχεδίαση Αλγορίθµων, J. Kleinberg and E. Tardos, Ελληνική έκδοση από τις Εκδ. Κλειδάριθµος Χρησιµοποιήθηκε υλικό από τις αντίστοιχες αγγλικές διαφάνειες του Kevin Wayne για το βιβλίο του µαθήµατος 17