11_dynamicprogramming

44
Αλγόριθμοι & Πολυπλοκότητα (Χειμώνας 2011) Δυναμικός Προγραμματισμός 1 Διωνυμικοί Συντελεστές Tuesday, 12 June 2012

Upload: panos-giannakopoulos

Post on 25-Oct-2014

30 views

Category:

Documents


0 download

DESCRIPTION

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

TRANSCRIPT

Page 1: 11_DynamicProgramming

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

Διωνυµικοί Συντελεστές

Tuesday, 12 June 2012

Page 2: 11_DynamicProgramming

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

Διωνυµικοί Συντελεστές Διωνυµικοί συντελεστές

Tuesday, 12 June 2012

Page 3: 11_DynamicProgramming

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

Διωνυµικοί Συντελεστές Διωνυµικοί συντελεστές

long Binom(int n, int k) { if ((k == 0) || (k == n)) return(1);

return(Binom(n – 1, k - 1) + Binom(n – 1, k)); }

Tuesday, 12 June 2012

Page 4: 11_DynamicProgramming

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

Διωνυµικοί Συντελεστές Διωνυµικοί συντελεστές

long Binom(int n, int k) { if ((k == 0) || (k == n)) return(1);

return(Binom(n – 1, k - 1) + Binom(n – 1, k)); }

Tuesday, 12 June 2012

Page 5: 11_DynamicProgramming

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

Διωνυµικοί Συντελεστές Διωνυµικοί συντελεστές

Χρόνος εκτέλεσης δίνεται από την ίδια αναδροµή!

Πρόβληµα οι επαναλαµβανόµενοι υπολογισµοί.

Όταν έχω επικαλυπτόµενα στιγµιότυπα, χρησιµοποιώ δυναµικό προγραµµατισµό.

long Binom(int n, int k) { if ((k == 0) || (k == n)) return(1);

return(Binom(n – 1, k - 1) + Binom(n – 1, k)); }

Tuesday, 12 June 2012

Page 6: 11_DynamicProgramming

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

Τρίγωνο του Pascal

Tuesday, 12 June 2012

Page 7: 11_DynamicProgramming

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

Τρίγωνο του Pascal

Tuesday, 12 June 2012

Page 8: 11_DynamicProgramming

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

Τρίγωνο του Pascal

Tuesday, 12 June 2012

Page 9: 11_DynamicProgramming

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

Τρίγωνο του Pascal

Όταν έχω επαναλαµβανόµεναστιγµιότυπα, αποθηκεύω τιµέςσε πίνακα και τις χρησιµοποιώ χωρίς να τις υπολογίζω πάλι. Θεαµατική βελτίωση χρόνου εκτέλεσης!

Σηµαντικές απαιτήσεις σε µνήµη.

Tuesday, 12 June 2012

Page 10: 11_DynamicProgramming

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

Τρίγωνο του Pascal

Tuesday, 12 June 2012

Page 11: 11_DynamicProgramming

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

Τρίγωνο του Pascal

Tuesday, 12 June 2012

Page 12: 11_DynamicProgramming

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

Τρίγωνο του Pascal

Tuesday, 12 June 2012

Page 13: 11_DynamicProgramming

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

Τρίγωνο του Pascal

Tuesday, 12 June 2012

Page 14: 11_DynamicProgramming

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

Τρίγωνο του Pascal

Tuesday, 12 June 2012

Page 15: 11_DynamicProgramming

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

Τρίγωνο του Pascal

Χρόνος εκτέλεσης Θ(n k) αντί για Ω((n / e)k). Μνήµη Θ(n k). Μπορεί να µειωθεί σε Θ(k).

Tuesday, 12 June 2012

Page 16: 11_DynamicProgramming

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

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

Tuesday, 12 June 2012

Page 17: 11_DynamicProgramming

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

Δυναµικός Προγραµµατισµός Εφαρµόζουµε δυναµικό προγραµµατισµό για προβλήµατα συνδυαστικής βελτιστοποίησης όπου ισχύει: Αρχή βελτιστότητας (βέλτιστες επιµέρους λύσεις).

Κάθε τµήµα βέλτιστης λύσης αποτελεί βέλτιστη λύση για αντίστοιχο υποπρόβληµα.

π.χ. κάθε τµήµα µιας συντοµότερης διαδροµής είναι συντοµότερη διαδροµή µεταξύ των άκρων του.

Tuesday, 12 June 2012

Page 18: 11_DynamicProgramming

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

Δυναµικός Προγραµµατισµός Εφαρµόζουµε δυναµικό προγραµµατισµό για προβλήµατα συνδυαστικής βελτιστοποίησης όπου ισχύει: Αρχή βελτιστότητας (βέλτιστες επιµέρους λύσεις).

Κάθε τµήµα βέλτιστης λύσης αποτελεί βέλτιστη λύση για αντίστοιχο υποπρόβληµα.

π.χ. κάθε τµήµα µιας συντοµότερης διαδροµής είναι συντοµότερη διαδροµή µεταξύ των άκρων του.

Έστω βέλτιστες λύσεις για «µικρότερα» προβλήµατα. Πως συνδυάζονται για βέλτιστη λύση σε «µεγαλύτερα»; Αναδροµική εξίσωση που περιγράφει τιµή βέλτιστης λύσης. Υπολογίζουµε λύση από µικρότερα σε µεγαλύτερα

(bottom-up).

Tuesday, 12 June 2012

Page 19: 11_DynamicProgramming

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

Διακριτό Πρόβληµα Σακιδίου

Tuesday, 12 June 2012

Page 20: 11_DynamicProgramming

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

Διακριτό Πρόβληµα Σακιδίου Δίνονται n αντικείµενα και σακίδιο µεγέθους Β. Αντικείµενο i έχει µέγεθος και αξία:

Ζητείται συλλογή µέγιστης αξίας που χωράει στο σακίδιο.

Tuesday, 12 June 2012

Page 21: 11_DynamicProgramming

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

Διακριτό Πρόβληµα Σακιδίου Δίνονται n αντικείµενα και σακίδιο µεγέθους Β. Αντικείµενο i έχει µέγεθος και αξία:

Ζητείται συλλογή µέγιστης αξίας που χωράει στο σακίδιο.

Tuesday, 12 June 2012

Page 22: 11_DynamicProgramming

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

Διακριτό Πρόβληµα Σακιδίου Δίνονται n αντικείµενα και σακίδιο µεγέθους Β. Αντικείµενο i έχει µέγεθος και αξία:

Ζητείται συλλογή µέγιστης αξίας που χωράει στο σακίδιο.

Tuesday, 12 June 2012

Page 23: 11_DynamicProgramming

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

Διακριτό Πρόβληµα Σακιδίου Δίνονται n αντικείµενα και σακίδιο µεγέθους Β. Αντικείµενο i έχει µέγεθος και αξία:

Ζητείται συλλογή µέγιστης αξίας που χωράει στο σακίδιο.

Tuesday, 12 June 2012

Page 24: 11_DynamicProgramming

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

Διακριτό Πρόβληµα Σακιδίου Δίνονται n αντικείµενα και σακίδιο µεγέθους Β. Αντικείµενο i έχει µέγεθος και αξία:

Ζητείται συλλογή µέγιστης αξίας που χωράει στο σακίδιο.

Tuesday, 12 June 2012

Page 25: 11_DynamicProgramming

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

Διακριτό Πρόβληµα Σακιδίου Δίνονται n αντικείµενα και σακίδιο µεγέθους Β. Αντικείµενο i έχει µέγεθος και αξία:

Ζητείται συλλογή µέγιστης αξίας που χωράει στο σακίδιο.

Αντικείµενα: { (1, 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) }Μέγεθος σακιδίου: 10.

Βέλτιστη λύση = { (3, 5), (2, 7), (4, 4) }

Tuesday, 12 June 2012

Page 26: 11_DynamicProgramming

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

Πρόβληµα Σακιδίου

Tuesday, 12 June 2012

Page 27: 11_DynamicProgramming

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

Πρόβληµα Σακιδίου Πρόβληµα συνδυαστικής βελτιστοποίησης:

Συλλογή που χωράει εφικτή λύση. Αντιστοιχεί σε αξία. Ζητούµενο: (βέλτιστη) συλλογή που χωράει µε µέγιστη αξία.

Tuesday, 12 June 2012

Page 28: 11_DynamicProgramming

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

Πρόβληµα Σακιδίου Πρόβληµα συνδυαστικής βελτιστοποίησης:

Συλλογή που χωράει εφικτή λύση. Αντιστοιχεί σε αξία. Ζητούµενο: (βέλτιστη) συλλογή που χωράει µε µέγιστη αξία.

Εξαντλητική αναζήτηση: #συλλογών = 2n . Χρόνος Ω(n2n)

Tuesday, 12 June 2012

Page 29: 11_DynamicProgramming

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

Πρόβληµα Σακιδίου Πρόβληµα συνδυαστικής βελτιστοποίησης:

Συλλογή που χωράει εφικτή λύση. Αντιστοιχεί σε αξία. Ζητούµενο: (βέλτιστη) συλλογή που χωράει µε µέγιστη αξία.

Εξαντλητική αναζήτηση: #συλλογών = 2n . Χρόνος Ω(n2n)

Πρόβληµα Σακιδίου είναι NP-δύσκολο και δεν υπάρχει «γρήγορος» (πολυωνυµικός) αλγόριθµος. Εφαρµογή δυναµικού προγραµµατισµού. Χρόνος Θ(n B). Δεν είναι πολυωνυµικός(;)!

Tuesday, 12 June 2012

Page 30: 11_DynamicProgramming

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

Αρχή Βελτιστότητας

Tuesday, 12 June 2012

Page 31: 11_DynamicProgramming

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

Αρχή Βελτιστότητας Αντικείµενα N = {1, …, n}, σακίδιο µεγέθους Β. Βέλτιστη λύση Α* ⊆ {1, …, n}.

Tuesday, 12 June 2012

Page 32: 11_DynamicProgramming

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

Αρχή Βελτιστότητας Αντικείµενα N = {1, …, n}, σακίδιο µεγέθους Β. Βέλτιστη λύση Α* ⊆ {1, …, n}.

Αγνοούµε αντικείµενο n :

Α* \ {n} βέλτιστη λύση για Ν \ {n} µε σακίδιο B – (fn sn).

Tuesday, 12 June 2012

Page 33: 11_DynamicProgramming

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

Αρχή Βελτιστότητας Αντικείµενα N = {1, …, n}, σακίδιο µεγέθους Β. Βέλτιστη λύση Α* ⊆ {1, …, n}.

Αγνοούµε αντικείµενο n :

Α* \ {n} βέλτιστη λύση για Ν \ {n} µε σακίδιο B – (fn sn).

Αγνοούµε αντικείµενα {n, n – 1}: Α* \ {n, n – 1} βέλτιστη λύση για Ν \ {n, n – 1}

µε σακίδιο B – (fn sn + fn-1 sn-1).

Tuesday, 12 June 2012

Page 34: 11_DynamicProgramming

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

Αρχή Βελτιστότητας Αντικείµενα N = {1, …, n}, σακίδιο µεγέθους Β. Βέλτιστη λύση Α* ⊆ {1, …, n}.

Αγνοούµε αντικείµενο n :

Α* \ {n} βέλτιστη λύση για Ν \ {n} µε σακίδιο B – (fn sn).

Αγνοούµε αντικείµενα {n, n – 1}: Α* \ {n, n – 1} βέλτιστη λύση για Ν \ {n, n – 1}

µε σακίδιο B – (fn sn + fn-1 sn-1).

Αν γνωρίζουµε βέλτιστη αξία για αντικείµενα Ν \ {n} και σακίδια µεγέθους Β και Β – sn

… αποφασίζουµε αν αντικείµενο n στη βέλτιστη λύση!

Tuesday, 12 June 2012

Page 35: 11_DynamicProgramming

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

Αναδροµική Εξίσωση

Tuesday, 12 June 2012

Page 36: 11_DynamicProgramming

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

Αναδροµική Εξίσωση P(n-1, B) βέλτιστη αξία για Ν \ {n} σε σακίδιο Β

P(n-1, B - sn) βέλτιστη αξία για Ν \ {n} σε σακίδιο Β - sn

Tuesday, 12 June 2012

Page 37: 11_DynamicProgramming

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

Αναδροµική Εξίσωση P(n-1, B) βέλτιστη αξία για Ν \ {n} σε σακίδιο Β

P(n-1, B - sn) βέλτιστη αξία για Ν \ {n} σε σακίδιο Β - sn

Βέλτιστη αξία µε αντικείµενα {1, …, i } και σακίδιο µεγέθους b :

Tuesday, 12 June 2012

Page 38: 11_DynamicProgramming

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

Παράδειγµα

Tuesday, 12 June 2012

Page 39: 11_DynamicProgramming

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

Παράδειγµα

Αντικείµενα: { (3, 5), (2, 7), (4, 4), (6, 8), (5, 4) }Μέγεθος σακιδίου: 10.

Tuesday, 12 June 2012

Page 40: 11_DynamicProgramming

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

Παράδειγµα

Αντικείµενα: { (3, 5), (2, 7), (4, 4), (6, 8), (5, 4) }Μέγεθος σακιδίου: 10.

Tuesday, 12 June 2012

Page 41: 11_DynamicProgramming

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

Υλοποίηση

Tuesday, 12 June 2012

Page 42: 11_DynamicProgramming

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

Υλοποίηση

Tuesday, 12 June 2012

Page 43: 11_DynamicProgramming

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

Υλοποίηση

Χρόνος Ο(n B)

Μνήµη Ο(n B)

Tuesday, 12 June 2012

Page 44: 11_DynamicProgramming

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

Υλοποίηση

Χρόνος Ο(n B)

Μνήµη Ο(n B)

Αναδροµική υλοποίηση;

Tuesday, 12 June 2012