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

Σχετικά έγγραφα
Δυναμικός Προγραμματισμός

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

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

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

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

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

Άπληστοι Αλγόριθμοι. Επιμέλεια διαφανειών: Δ. Φωτάκης Τροποποιήσεις: Α. Παγουρτζής. Σχολή Ηλεκτρολόγων Μηχανικών και Μηχανικών Υπολογιστών

Άπληστοι Αλγόριθμοι. ιδάσκοντες: Σ. Ζάχος,. Φωτάκης Επιμέλεια διαφανειών:. Φωτάκης. Σχολή Ηλεκτρολόγων Μηχανικών και Μηχανικών Υπολογιστών

Άπληστοι Αλγόριθμοι. ιδάσκοντες: Σ. Ζάχος,. Φωτάκης Επιμέλεια διαφανειών:. Φωτάκης. Σχολή Ηλεκτρολόγων Μηχανικών και Μηχανικών Υπολογιστών

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

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

Προσεγγιστικοί Αλγόριθμοι

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

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

Αναδρομικές Σχέσεις «ιαίρει-και-βασίλευε»

Ασυμπτωτικός Συμβολισμός

Επιμέλεια διαφανειών: Δ. Φωτάκης Τροποποιήσεις-προσθήκες: Α. Παγουρτζής. Σχολή Ηλεκτρολόγων Μηχανικών και Μηχανικών Υπολογιστών

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

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

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

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

Μάθημα 20: Δυναμικός Προγραμματισμός (DP)

για NP-Δύσκολα Προβλήματα

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

Προσεγγιστικοί Αλγόριθμοι για NP- ύσκολα Προβλήματα

Συντομότερες Διαδρομές

Αλγόριθμοι Προσέγγισης για NP-Δύσκολα Προβλήματα

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

Προσεγγιστικοί Αλγόριθμοι για NP- ύσκολα Προβλήματα

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

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

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

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

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

Προσεγγιστικοί Αλγόριθμοι

Συντομότερες Διαδρομές

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

Συνδυαστική Απαρίθμηση

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

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

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

Συντομότερες ιαδρομές

Quicksort. Επιμέλεια διαφανειών: Δ. Φωτάκης Μικροαλλαγές: Α. Παγουρτζής. Σχολή Ηλεκτρολόγων Μηχανικών και Μηχανικών Υπολογιστών

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

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

Συντομότερες ιαδρομές

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

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

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

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

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

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

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

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

Υπολογιστικό Πρόβληµα

Ασυμπτωτικός Συμβολισμός

Ασυμπτωτικός Συμβολισμός

Ασυμπτωτικός Συμβολισμός

Υπολογιστική Πολυπλοκότητα

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

Υπολογιστική Πολυπλοκότητα

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

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

Quicksort. Πρόβλημα Ταξινόμησης. Μέθοδοι Ταξινόμησης. Συγκριτικοί Αλγόριθμοι

Αν ένα πρόβλημα λύνεται από δύο ή περισσότερους αλγόριθμους, ποιος θα είναι ο καλύτερος; Με ποια κριτήρια θα τους συγκρίνουμε;

Συντομότερες ιαδρομές

Ουρά Προτεραιότητας: Heap

ΠΟΛΛΑΠΛΑΣΙΑΣΜΟΣ (συνέχεια)

Διάλεξη 09: Αλγόριθμοι Ταξινόμησης I

Εισαγωγή στην Ανάλυση Αλγορίθμων (2-3)

Κατώτερα φράγματα Κατώτερο φράγμα: εκτίμηση της ελάχιστης εργασίας που απαιτείται για την επίλυση ενός προβλήματος. Παραδείγματα: Αριθμός συγκρίσεων π

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

Επιλογή. Πρόβλημα Επιλογής. Μέγιστο / Ελάχιστο. Εφαρμογές

Πολλαπλασιασμός: αλγόριθμος

Outline. 6 Edit Distance

4η Γραπτή Ασκηση Αλγόριθμοι και Πολυπλοκότητα CoReLab ΣΗΜΜΥ 3/2/2019 CoReLab (ΣΗΜΜΥ) 4η Γραπτή Ασκηση 3/2/ / 37

Επιλογή. ιδάσκοντες: Σ. Ζάχος,. Φωτάκης Επιμέλεια διαφανειών:. Φωτάκης. Σχολή Ηλεκτρολόγων Μηχανικών και Μηχανικών Υπολογιστών

Συνδυαστική Απαρίθμηση

Εισαγωγή στην Επιστήμη των Υπολογιστών

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

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

Πιθανοτικοί Αλγόριθμοι

Γεννήτριες Συναρτήσεις

Συνδυαστική Απαρίθμηση

Quicksort. ιδάσκοντες: Σ. Ζάχος,. Φωτάκης Επιμέλεια διαφανειών:. Φωτάκης. Σχολή Ηλεκτρολόγων Μηχανικών και Μηχανικών Υπολογιστών

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

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

4η Γραπτή Ασκηση Αλγόριθμοι και Πολυπλοκότητα CoReLab ΣΗΜΜΥ 7 Φεβρουαρίου 2017 CoReLab (ΣΗΜΜΥ) 4η Γραπτή Ασκηση 7 Φεβρουαρίου / 38

Συνδυαστική Απαρίθμηση

Διδάσκων: Κωνσταντίνος Κώστα Διαφάνειες: Δημήτρης Ζεϊναλιπούρ

Ουρά Προτεραιότητας: Heap

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

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

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

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

Συνδυαστική Απαρίθµηση Υπολογισµός (µε συνδυαστικά επιχειρήµατα) του πλήθους των διαφορετικών αποτελεσµάτων ενός «πειράµατος». «Πείραµα»: διαδικασία µ

Στοιχεία Θεωρίας Αριθμών & Εφαρμογές στην Κρυπτογραφία

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

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

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

Transcript:

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

Διωνυμικοί Συντελεστές Διωνυμικοί συντελεστές long Binom(int n, int k) { if ((k == 0) (k == n)) return(); return(binom(n, k - ) + Binom(n, k)); } Χρόνος εκτέλεσης δίνεται από την ίδια αναδρομή! Πρόβλημα οι επαναλαμβανόμενοι υπολογισμοί. Όταν έχω επικαλυπτόμενα στιγμιότυπα, χρησιμοποιώ δυναμικό προγραμματισμό. Δυναμικός Προγραμματισμός 2

Τρίγωνο του Pascal Όταν έχω επαναλαμβανόμενα στιγμιότυπα, αποθηκεύω τιμές σε πίνακα και τις χρησιμοποιώ χωρίς να τις υπολογίζω πάλι. 0 2 3 2 3 3 Θεαματική βελτίωση χρόνου εκτέλεσης! n 4 5 5 4 6 4 0 0 5 Σημαντικές απαιτήσεις σε μνήμη. 6 7 7 6 5 20 5 6 2 35 35 2 7 8 8 28 56 70 56 28 8 9 9 36 84 26 26 84 36 9 Δυναμικός Προγραμματισμός 3

Τρίγωνο του Pascal Χρόνος εκτέλεσης Θ(n k) αντί για Ω((n / e) k ). Μνήμη Θ(n k). Μπορεί να μειωθεί σε Θ(k). Δυναμικός Προγραμματισμός 4

Δυναμικός Προγραμματισμός Εφαρμόζουμε δυναμικό προγραμματισμό για προβλήματα συνδυαστικής βελτιστοποίησης όπου ισχύει: Αρχή βελτιστότητας (βέλτιστες επιμέρους λύσεις). Κάθε τμήμα βέλτιστης λύσης αποτελεί βέλτιστη λύση για αντίστοιχο υποπρόβλημα. π.χ. κάθε τμήμα μιας συντομότερης διαδρομής είναι συντομότερη διαδρομή μεταξύ των άκρων του. Έστω βέλτιστες λύσεις για «μικρότερα» προβλήματα. Πως συνδυάζονται για βέλτιστη λύση σε «μεγαλύτερα»; Αναδρομική εξίσωση που περιγράφει τιμή βέλτιστης λύσης. Υπολογίζουμε λύση από μικρότερα σε μεγαλύτερα (bottom-up). Δυναμικός Προγραμματισμός 5

Διακριτό Πρόβλημα Σακιδίου (0- KNAPSACK) Δίνονται n αντικείμενα και σακίδιο μεγέθους Β. Αντικείμενο i έχει μέγεθος και αξία: Ζητείται συλλογή μέγιστης αξίας που χωράει στο σακίδιο. Αντικείμενα: { (, 0.5), (2, 5), (2, 5), (3, 9), (4, 8) } Μέγεθος σακιδίου: 4. Βέλτιστη λύση = { (2, 5), (2, 5) } Αντικείμενα: { (3, 5), (2, 7), (4, 4), (6, 8), (5, 4) } Μέγεθος σακιδίου: 0. Βέλτιστη λύση = { (3, 5), (2, 7), (4, 4) } Δυναμικός Προγραμματισμός 6

Διακριτό Πρόβλημα Σακιδίου (0- KNAPSACK) Δίνονται n αντικείμενα και σακίδιο μεγέθους Β. Αντικείμενο i έχει μέγεθος και αξία: Ζητείται συλλογή μέγιστης αξίας που χωράει στο σακίδιο. Λύνεται με την άπληστη στρατηγική; Αντικείμενα: { (0, 00), (0, 00), (, ) } Μέγεθος σακιδίου: 20. Λύση απέχει πολύ από βέλτιστη. Μήπως με divide-and-conquer; Δυναμικός Προγραμματισμός 7

Διακριτό Πρόβλημα Σακιδίου (0- KNAPSACK) Πρόβλημα συνδυαστικής βελτιστοποίησης: Εφικτή λύση: συλλογή που χωράει στο σακίδιο. Αξία λύσης: άθροισμα αξιών στοιχείων συλλογής. Ζητούμενο: (βέλτιστη) συλλογή που χωράει με μέγιστη αξία. Εξαντλητική αναζήτηση: #συλλογών = 2 n. Χρόνος Ω(n2 n ) Πρόβλημα Σακιδίου είναι NP-δύσκολο και δεν υπάρχει «γρήγορος» (πολυωνυμικός) αλγόριθμος. Εφαρμογή δυναμικού προγραμματισμού. Χρόνος Θ(n B). Δεν είναι πολυωνυμικός(;)! Δυναμικός Προγραμματισμός 8

Αρχή Βελτιστότητας Αντικείμενα N = {,, n}, σακίδιο μεγέθους Β. Βέλτιστη λύση Α * {,, n}. Αγνοούμε αντικείμενο n : Α * \ {n} βέλτιστη λύση για Ν \ {n} με σακίδιο B (f n s n ). Αγνοούμε αντικείμενα {n, n }: Α * \ {n, n } βέλτιστη λύση για Ν \ {n, n } με σακίδιο B (f n s n + f n- s n- ). 2 περιπτώσεις: αντικ. n εντός ή εκτός βέλτιστης λύσης. Αν γνωρίζουμε βέλτιστες λύσεις για αντικείμενα Ν \ {n} και σακίδια μεγέθους Β s n και Β αποφασίζουμε αν αντικείμενο n στη βέλτιστη λύση για Ν Δυναμικός Προγραμματισμός 9

Αναδρομική Εξίσωση P(n-, B) βέλτιστη αξία για Ν \ {n} σε σακίδιο Β P(n-, B - s n ) βέλτιστη αξία για Ν \ {n} σε σακίδιο Β - s n Προσέγγιση Bottom-up : ορίζουμε : βέλτιστη αξία με αντικείμενα {,, i } και σακίδιο μεγέθους b Δυναμικός Προγραμματισμός 0

Παράδειγμα Αντικείμενα: { (3, 5), (2, 7), (4, 4), (6, 8), (5, 4) } Μέγεθος σακιδίου: 0. Δυναμικός Προγραμματισμός

Υλοποίηση Αναδρομική υλοποίηση; Χρόνος Ο(n B) Μνήμη Ο(n B) Δυναμικός Προγραμματισμός 2

Ψευδοπολυωνυμικοί Αλγόριθμοι Το πρόβλημα του σακιδίου είναι NP-δύσκολο. Αλγόριθμος Ο(n B) δεν είναι πολυωνυμικού χρόνου(;) Για να είναι, πρέπει πολυώνυμο του μεγέθους εισόδου! Μέγεθος εισόδου: Χρόνος πολυωνυμικός στο n αλλά εκθετικός στο log 2 B Αριθμητικά προβλήματα: Μέγεθος αριθμών πολύ μεγαλύτερο (π.χ. εκθετικό) από πλήθος «βασικών συνιστωσών» (ό,τι συμβολίζουμε με n). Αλγόριθμος πολυωνυμικού χρόνου: Αλγόριθμος ψευδο-πολυωνυμικού χρόνου: Δυναμικός Προγραμματισμός 3

Βελτιώσεις ΔΠ για 0- KNAPSACK (Ι) Ζητούμενο: μείωση #υπολογιζόμενων θέσεων Αναδρομή: δεν χρειάζεται όλον τον πίνακα! B = 0 s i p i 3, 5 2, 7 4, 4 6, 8 5, 4 Δυναμικός Προγραμματισμός 4

Βελτιώσεις ΔΠ για 0- KNAPSACK (Ι) Ζητούμενο: μείωση #υπολογιζόμενων θέσεων Αναδρομή: δεν χρειάζεται όλον τον πίνακα! Χρήση αναδρομής με απομνημόνευση (memoization) B = 0 s i p i 3, 5 2, 7 4, 4 6, 8 5, 4 Δυναμικός Προγραμματισμός 5

Βελτιώσεις ΔΠ για 0- KNAPSACK (Ι) Ζητούμενο: μείωση #υπολογιζόμενων θέσεων Αναδρομή: δεν χρειάζεται όλον τον πίνακα! Χρήση αναδρομής με απομνημόνευση (memoization) θέσεις πίνακα υπολογίζονται μία φορά μόνο πολυπλ/τα: Ο(min(nB, 2 n )), πρακτικά καλύτερος για n<< B B = 0 s i p i 3, 5 2, 7 4, 4 6, 8 5, 4 Δυναμικός Προγραμματισμός 6

Παράδειγμα ΔΠ-memoized Δυναμικός Προγραμματισμός 5 25 4 24 6 70 9 28 6 75 6 3 2 2 85 6 4 5 73 5 25 4 24 6 70 9 28 6 75 6 3 2 2 85 6 4 5 73 7

Βελτιώσεις ΔΠ για 0- KNAPSACK (IΙ) 2ος τρόπος: αλγόριθμος Nemhauser-Ullmann Pareto-optimal θέσεις: (0,0), (,3), (2,2), (2,5), (3,9), (4,8) αντ/χούν σε «χρήσιμους» συνδ/σμούς αντικ/νων από [.. i]... που δεν «κυριαρχούνται» από άλλους από αντικ/να [.. i] #P.o.θ. σε γραμμή i Σ#P.o.θ. σε γραμμές [0.. i-] B = 0 s i p i 3, 5 2, 7 4, 4 6, 8 5, 4 Δυναμικός Προγραμματισμός 8

Βελτιώσεις ΔΠ για 0- KNAPSACK (ΙI) P.o.θ. αντιστοιχούν σε αθροίσματα υποσυνόλων P.o.θ. γραμμής i: «άθροιση» αντ. i σε P.o.θ. προηγ. γραμμής απόρριψη θέσεων με αξία, μέγεθος από άλλες πολυπλ/τα: Ο(min(nB, 2 n )), πολυων/κός αναμεν. χρόνος! υλοποίηση με λίστες ζευγών (s i, p i ) για κάθε γραμμή i B = 0 s i p i 3, 5 2, 7 4, 4 6, 8 5, 4 Δυναμικός Προγραμματισμός 9

Απληστία vs Δυναμικός Προγρ. Διακριτό Πρόβλ. Σακιδίου: όχι ιδιότητα άπληστης επιλογής. Π.χ. Αντικείμενα: {(, +ε), (Β, Β)}. Σακίδιο μεγέθους Β. Απληστία και Δυναμικός Προγραμματισμός: Αρχή βελτιστότητας υπο-λύσεων κοινό χαρακτηριστικό. Δυναμικός Προγραμματισμός: αναδρομή Χρειάζεται βέλτιστη λύση σε πολλά υπο-προβλήματα που εμπλέκονται στην αναδρομή. Διακριτό Σακίδιο: υπολ/σμός βέλτιστης λύσης για πρώτα i αντικείμενα για κάθε i και όλα τα δυνατά μεγέθη σακιδίου! Συνδυάζει «κατάλληλα» επιμέρους λύσεις για βέλτιστη. Προσέγγιση bottom-up (συνήθως). Λύση πολλών υπο-προβλημάτων εγγυάται βέλτιστη λύση αλλά κοστίζει σημαντικά σε υπολογιστικό χρόνο. Δυναμικός Προγραμματισμός 20

Απληστία vs Δυναμικός Προγρ. Απληστία: επανάληψη Ταξινόμηση ως προς κάποιο (εύλογο) κριτήριο. Σε κάθε βήμα αμετάκλητη άπληστη επιλογή. Άπληστη επιλογή: η καλύτερη με βάση τρέχουσα κατάσταση και κάποιο (απλό) κριτήριο. Λύση λίγων (συχνά ενός) «αναγκαίων» υπο-προβλημάτων: αποδοτικό υπολογιστικά αλλά δεν δίνει πάντα βέλτιστη λύση. Γρήγοροι, απλοί και «φυσιολογικοί» αλγόριθμοι! (Καλές) προσεγγιστικές λύσεις σε πολλά προβλήματα. Βέλτιστη λύση μόνο όταν ισχύει ιδιότητα άπληστης επιλογής (ως προς συγκεκριμένο κριτήριο επιλογής). Δυναμικός Προγραμματισμός 2

SUBSET SUM και PARTITION Πρόβλημα SUBSET SUM (Άθροισμα Υποσυνόλου): Σύνολο φυσικών Α = {s,, s n } και B, 0 < B < s(a). Υπάρχει X Α με γενίκευση Subset Sum. Πρόβλημα PARTITION (Διαμέριση): όταν Β = s(a) / 2 S(i, b) είναι TRUE ανν υπάρχει Χ {,..., i} με s(x) = b. Η τιμή του S(n, B) δίνει την απάντηση. Αποδοτικότητα; Δυναμικός Προγραμματισμός 22

Το Πρόβλημα του Περιπτερά Κέρματα αξίας, 2, και 20 λεπτών. Ρέστα ποσό x με ελάχιστο #κερμάτων. Δυναμικός προγραμματισμός. Πώς; Βρείτε την αναδρομή! Πώς μπορεί να φτιαχτεί ο Πίνακας ΔΠ; Δυναμικός Προγραμματισμός 23

Αλυσιδωτός Πολ/μός Πινάκων Γινόμενο πινάκων Α (p q) επί B (q r) σε χρόνο Θ(p q r) (p q r = πλήθος πολλαπλ/σμών) Ποιος ο συντομότερος τρόπος υπολογισμού γινομένου: Ο πολλαπλασιασμός πινάκων είναι πράξη προσεταιριστική (αποτέλεσμα ανεξάρτητο από υπολ/μό επιμέρους γινομένων) Ο χρόνος υπολογισμού εξαρτάται από τη σειρά! Δυναμικός Προγραμματισμός 24

Πολλαπλασιασμός Πινάκων Δυναμικός Προγραμματισμός 25

Πολλαπλασιασμός Πινάκων Δίνονται n πίνακες: Με ποια σειρά θα υπολογιστεί το γινόμενο Α Α 2 Α n ώστε να ελαχιστοποιηθεί #πολ/σμών; Πρόβλημα συνδυαστικής βελτιστοποίησης: Κάθε σειρά υπολογισμού υπολογίζει γινόμενο πινάκων εκτελώντας διαφορετικό #πολ/σμών. Ζητείται η σειρά με ελάχιστο #πολ/σμών. Υπάρχει αποδοτικός αλγόριθμος για υπολογισμό καλύτερης σειράς; Δυναμικός Προγραμματισμός 26

Εξαντλητική Αναζήτηση δοκιμάζει όλες τις σειρές υπολογισμού και βρίσκει καλύτερη. Κάθε σειρά αντιστοιχεί σε δυαδικό δέντρο με n φύλλα. Χρόνος ανάλογος #δυαδικών δέντρων με n φύλλα: Λύση (n-)-oστός αριθμός Catalan: Θα εφαρμόσουμε δυναμικό προγραμματισμό. Δυναμικός Προγραμματισμός 27

Αρχή Βελτιστότητας Συμβολίζουμε Βέλτιστη λύση υπολογίζει και για κάποιο και τελειώνει με #πολ/μών = d 0 d i d n + #πολ/μών(α..i ) + #πολ/μων(a i+..n ) Επιμέρους γινόμενα Α..i και A i+..n υπολογίζονται βέλτιστα. Συμβολίζουμε Έστω για κάθε γνωρίζουμε Τότε Γενική αναδρομική σχέση: Δυναμικός Προγραμματισμός 28

Δυναμικός Προγραμματισμός Bottom-up υπολογισμός m[, n] από αναδρομική σχέση: Υπολογίζω n(n ) / 2 τιμές m[i, j]. Κάθε m[i, j] υπολογίζεται σε χρόνο Ο(n) από τιμές γινομένων μικρότερου εύρους. Τιμές m[i, j] αποθηκεύονται σε πίνακα. Δυναμικός Προγραμματισμός 29

Παράδειγμα 6 5.25 5 2.875 0.500 j 4 3 i 9.375 7.25 5.375 3 4 7.875 4.375 2.500 3.500 2 5 5.750 2.625 750.000 5.000 0 0 0 0 0 0 6 Δυναμικός Προγραμματισμός 30

Υλοποίηση με επανάληψη (bottom-up) Χρόνος Ο(n 3 ) και μνήμη O(n 2 ), μειώνεται σε Ο(n). Δυναμικός Προγραμματισμός 3

Υλοποίηση με αναδρομή (top-down) Χρόνος Ω(2 n )!..4.. 2..4..2 3..4..3 4..4 2..2 3..4 2..3 4..4.. 2..2 3..3 4..4.. 2..3..2 3..3 3..3 4..4 2..2 3..3 2..2 3..3.. 2..2

Αναδρομή με Απομνημόνευση Memoization: ο αναδρομικός αλγόριθμος αποθηκεύει τιμές σε πίνακα. Κάθε τιμή υπολογίζεται μία φορά μόνο. Συνδυάζει απλότητα top-down προσέγγισης με ταχύτητα bottom-up. Δυναμικός Προγραμματισμός 33

ΔΠ vs ΔκΒ Δυναμικός Προγραμματισμός και Διαίρει-και-Βασίλευε επιλύουν προβλήματα συνδυάζοντας λύσεις κατάλληλα επιλεγμένων υπο-προβλημάτων. ΔκΒ είναι φύσει αναδρομική μέθοδος (top-down). Υλοποίηση με επανάληψη: σπάνια (μπορεί και πιο αργή). ΔκΒ επιλύει ανεξάρτητα υπο-προβλήματα. Εφαρμόζεται όταν το πρόβλημα αναλύεται σε ανεξάρτητα υποπροβλήματα. Ανεξάρτητα υποπροβλήματα: συνήθως σημαντικά μικρότερου μεγέθους. Απότομη μείωση μεγέθους δέντρο αναδρομής λογαριθμικού ύψους Δυναμικός Προγραμματισμός 34

ΔΠ vs ΔκΒ ΔΠ «κτίζει» βέλτιστη λύση προβλήματος από βέλτιστες λύσεις υπο-προβλημάτων (bottom-up). ΔΠ ξεκινά με στοιχειώδη στιγμιότυπα. Συνδυάζει λύσεις για να βρει λύσεις σε μεγαλύτερα. ΔΠ εφαρμόζεται όταν υπο-προβλήματα επικαλύπτονται. Αποθηκεύει επιμέρους λύσεις για να μην υπολογίζει πάλι. «Προγραμματισμός»: διαδικασία συμπλήρωσης πίνακα με ενδιάμεσα αποτελέσματα (Bellman, ~950). ΔΠ εφαρμόζεται όταν ισχύει αρχή βελτιστότητας. Διατύπωση αναδρομικής εξίσωσης για βέλτιστη λύση. Βέλτιστη λύση υπολογίζεται bottom-up για αποδοτικότητα. Βέλτιστος συνδυασμός υπο-λύσεων προσδιορίζει βέλτιστη λύση. Top-down επίλυση: memoization. Δυναμικός Προγραμματισμός 35

Πρόβλημα Πλανόδιου Πωλητή (TSP) Δίνονται n σημεία και αποστάσεις τους Απόσταση i j =, απόσταση j i = Γενική περίπτωση: όχι συμμετρικές αποστάσεις, όχι τριγωνική ανισότητα. Ζητείται μια περιοδεία ελάχιστου συνολικού μήκους. Περιοδεία: κύκλος που διέρχεται από κάθε σημείο μία φορά. Περιοδεία: μετάθεση σημείων Μετάθεση (permutation): - και επί αντιστοιχία Ν με Ν. Π.χ. Μήκος περιοδείας π: Δυναμικός Προγραμματισμός 36

Πρόβλημα Πλανόδιου Πωλητή Πρόβλημα συνδυαστικής βελτιστοποίησης: Κάθε περιοδεία εφικτή λύση με αντικειμ. τιμή μήκος. Ζητούμενο: περιοδεία ελάχιστου μήκους (βέλτιστη). 8 Εξαντλητική αναζήτηση: #περιοδειών = (n )! Χρόνος Ω(n!) TSP είναι NP-δύσκολο και δεν υπάρχει «γρήγορος» (πολυωνυμικός) αλγόριθμος. Δυναμικός προγραμματισμός λύνει γενική περίπτωση σε χρόνο Θ(n 2 2 n ). 5 20 8 6 9 3 4 5 0 2 9 2 3 0

Αρχή Βελτιστότητας Βέλτιστη περιοδεία ξεκινάει i και συνεχίζει από i όλα τα σημεία Ν \ {, i }. Αυτό το τμήμα βέλτιστο με αυτή την ιδιότητα. Διαφορετικά, βελτιώνω τμήμα και περιοδεία συνολικά! Έστω L(i, S) ελάχιστο μήκος διαδρομής i όλο το S (i, S) 2 0 Για S = 0: 4 9 Για S = : 7 5 2 3 6 8 Δυναμικός Προγραμματισμός 38

Αρχή Βελτιστότητας Έστω L(i, S) ελάχιστο μήκος διαδρομής i όλο το S, (i, S). Για S N \ {} θεωρούμε i (το τελικό σημείο εκκίν.). Για S = 2: Υπολογίζω L(i, S), S = k, αν γνωρίζω όλα τα L(j, S \ {j}): Υπολογίζω όλες τις βέλτιστες «υπο-περιοδείες» που τελειώνουν στο και έχουν μήκος, 2, 3, 4,, εξετάζοντας όλα τα υποσύνολα κατάλληλου μεγέθους. Δυναμικός Προγραμματισμός 39

8 5 Παράδειγμα 0 2 5 20 8 6 9 3 2 4 3 9 0 Βέλτιστη περιοδεία, 2, 4, 3 μήκους 35. Δυναμικός Προγραμματισμός 40

Υλοποίηση Μνήμη Θ(n 2 n ) Χρόνος Θ(n 2 2 n ) 20 σημεία: 20! = 2.40 8 20 2 2 20 = 4.20 8 Δυναμικός Προγραμματισμός 4