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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Outline. 6 Edit Distance

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

Αλγόριθμοι Αναζήτησης

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

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

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

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

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

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

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

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

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

Μη Ντετερμινισμός και NP-Πληρότητα

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

Σχεδίαση και Ανάλυση Αλγορίθμων Ενότητα 5: ΚΑΤΗΓΟΡΙΕΣ ΑΛΓΟΡΙΘΜΙΚΩΝ ΠΡΟΒΛΗΜΑΤΩΝ-ΑΝΑΓΩΓΗ

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

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

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

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

3η Σειρά Γραπτών Ασκήσεων

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

Μη Ντετερμινισμός και NP-Πληρότητα

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

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

Αναζήτηση Κατά Πλάτος

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

Μη Ντετερμινισμός και NP-Πληρότητα

Transcript:

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

ιακριτό Πρόβλημα Σακιδίου ίνονται 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) } Αλγόριθμοι και Πολυπλοκότητα (Χειμώνας 2016) υναμικός Προγραμματισμός 2

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

Αναδρομική Εξίσωση P(n-1, B) βέλτιστη αξία για Ν \{n}σε σακίδιο Β P(n-1, B -s n ) βέλτιστη αξία για Ν \{n} σε σακίδιο Β -s n Βέλτιστη αξία με αντικείμενα {1,, i } και σακίδιο μεγέθους b : (Αμιγώς) αναδρομική επίλυση της δεν είναι αποδοτική!!! Αλγόριθμοι και Πολυπλοκότητα (Χειμώνας 2016) υναμικός Προγραμματισμός 4

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

Τρίγωνο του Pascal Όταν έχω επαναλαμβανόμενα στιγμιότυπα, αποθηκεύω τιμές σε πίνακα και τις χρησιμοποιώ χωρίς να τις υπολογίζω πάλι. 0 1 2 3 1 1 1 1 1 2 3 3 1 1 Θεαματική βελτίωση χρόνου εκτέλεσης! n 4 5 1 1 5 4 6 4 10 10 5 1 1 Σημαντικές απαιτήσεις σε μνήμη. 6 7 1 1 7 6 15 20 15 6 21 35 35 21 7 1 1 8 1 8 28 56 70 56 28 8 1 Αλγόριθμοι και Πολυπλοκότητα (Χειμώνας 2016) υναμικός Προγραμματισμός 6

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

ιακριτό Πρόβλημα Σακιδίου: υναμικός Προγραμματισμός Αντικείμενα: { (3, 5), (2, 7), (4, 4), (6, 8), (5, 4) } Μέγεθος σακιδίου: 10. Αλγόριθμοι και Πολυπλοκότητα (Χειμώνας 2016) υναμικός Προγραμματισμός 8

Υλοποίηση Αναδρομική υλοποίηση; Χρόνος Ο(nB) Μνήμη Ο(nB) Αλγόριθμοι και Πολυπλοκότητα (Χειμώνας 2016) υναμικός Προγραμματισμός 9

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

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

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

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

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

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

Το Πρόβλημα του Περιπτερά Κέρματα αξίας 1, 12, και 20 λεπτών. Ρέστα ποσό x με ελάχιστο #κερμάτων. υναμικός προγραμματισμός. Αλγόριθμοι και Πολυπλοκότητα (Χειμώνας 2016) υναμικός Προγραμματισμός 16

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

Πολλαπλασιασμός Πινάκων Αλγόριθμοι και Πολυπλοκότητα (Χειμώνας 2016) υναμικός Προγραμματισμός 18

Πολλαπλασιασμός Πινάκων ίνονται n πίνακες: Με ποια σειρά θα υπολογιστεί το γινόμενο Α 1 Α 2 Α n ώστε να ελαχιστοποιηθεί #αριθμ. πολ/μών. Πρόβλημα συνδυαστικής βελτιστοποίησης: Κάθε σειρά υπολογισμού υπολογίζει γινόμενο πινάκων με κάποιο #αριθμ. πολ/μών. Ζητείται η σειρά με ελάχιστο #αριθμ. πολ/μών. Αποδοτικός αλγόριθμος για υπολογισμό καλύτερης σειράς για αλυσιδωτό πολ/μό n πινάκων. Αλγόριθμοι και Πολυπλοκότητα (Χειμώνας 2016) υναμικός Προγραμματισμός 19

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

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

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

Παράδειγμα 1 6 1 15.125 5 2 11.875 10.500 j 4 3 i 9.375 7.125 5.375 3 4 7.875 4.375 2.500 3.500 2 5 15.750 2.625 750 1.000 5.000 0 0 0 0 0 0 6 Αλγόριθμοι και Πολυπλοκότητα (Χειμώνας 2016) υναμικός Προγραμματισμός 23

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

Υλοποίηση (top-down) Εκθετικός χρόνος!

Αναδρομή με Απομνημόνευση Ο αναδρομικός αλγόριθμος αποθηκεύει τιμές σε πίνακα. Κάθε τιμή υπολογίζεται μία φορά. Συνδυάζει απλότητα top-down προσέγγισης με ταχύτητα bottom-up. Αλγόριθμοι και Πολυπλοκότητα (Χειμώνας 2016) υναμικός Προγραμματισμός 26

Π vs κβ υναμικός Προγραμματισμός και ιαίρει-και-βασίλευε επιλύουν προβλήματα συνδυάζοντας λύσεις κατάλληλα επιλεγμένων υπο-προβλημάτων. κβ είναι φύσει αναδρομική μέθοδος (top-down). κβ επιλύει υπο-προβλήματα ανεξάρτητα. Εφαρμόζεται όταν παράγονται ανεξάρτητα υπο-προβ/τα. Ειδάλλως ίδια υπο-προβλήματα λύνονται πολλές φορές: Σπατάλη υπολογιστικού χρόνου. Αλγόριθμοι και Πολυπλοκότητα (Χειμώνας 2016) υναμικός Προγραμματισμός 27

Π vs κβ Π «κτίζει» βέλτιστη λύση προβ/τος από βέλτιστες λύσεις υπο-προβ/των (bottom-up). Π ξεκινά με στοιχειώδη στιγμιότυπα. Συνδυάζει λύσεις για να βρει λύσεις σε μεγαλύτερα. Π εφαρμόζεται όταν υπο-προβ/τα επικαλύπτονται. Αποθηκεύει επιμέρους λύσεις γιαναμηνυπολογίζειπάλι. «Προγραμματισμός» διαδικασία συμπλήρωσης πίνακα με ενδιάμεσα αποτελέσματα (Bellman, 50 s). Π εφαρμόζεται όταν ισχύει αρχή βελτιστότητας. ιατύπωση αναδρομικής εξίσωσης για βέλτιστη λύση. Αναδρομική εξίσωση λύνεται bottom-up για βέλτιστη τιμή. Επιλογές κατά την επίλυση απαρτίζουν βέλτιστη λύση. Αλγόριθμοι και Πολυπλοκότητα (Χειμώνας 2016) υναμικός Προγραμματισμός 28

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

Πρόβλημα Πλανόδιου Πωλητή Αλγόριθμοι και Πολυπλοκότητα (Χειμώνας 2016) υναμικός Προγραμματισμός 30

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

Αρχή Βελτιστότητας Βέλτιστη περιοδεία ξεκινάει 1 i και συνεχίζει από i όλα τα σημεία Ν \{1, i } 1. Αυτό το τμήμα βέλτιστο με αυτή την ιδιότητα. ιαφορετικά, βελτιώνω τμήμα και περιοδεία συνολικά! Έστω L(i, S) ελάχιστο μήκος για να ξεκινήσω από i όλο το S 1, (i S). Αν S N \ {1}, τότε i 1 (το 1 προστίθεται τελευταίο). Εύκολα. Αλγόριθμοι και Πολυπλοκότητα (Χειμώνας 2016) υναμικός Προγραμματισμός 32

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

Παράδειγμα Βέλτιστη περιοδεία 1, 2, 4, 3 μήκους 35. Αλγόριθμοι και Πολυπλοκότητα (Χειμώνας 2016) υναμικός Προγραμματισμός 34

Υλοποίηση Μνήμη Θ(n 2 n ) Χρόνος Θ(n 2 2 n ) 20 σημεία: 20! = 2.4 10 18 20 2 2 20 = 4.2 10 8 Αλγόριθμοι και Πολυπλοκότητα (Χειμώνας 2016) υναμικός Προγραμματισμός 35