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

Slides:



Advertisements
Παρόμοιες παρουσιάσεις
Αλγόριθμοι σχεδίασης βασικών 2D σχημάτων (ευθεία)
Advertisements

Γραφήματα & Επίπεδα Γραφήματα
Ερωτηματολόγιο Συλλογής Απαιτήσεων Εφαρμογών Υψηλών Επιδόσεων
Θεωρία Γραφημάτων Θεμελιώσεις-Αλγόριθμοι-Εφαρμογές
ΜοντελοποίησηΈργα ΜαθήματαΑξιολόγηση Αναστοχασμος Μαθήματα.
Πιθανοκρατικοί Αλγόριθμοι
Ασκήσεις Συνδυαστικής
Γεωργαλλίδης Δημήτρης Καθηγητής Πληροφορικής
Πολυπλοκότητα Παράμετροι της αποδοτικότητας ενός αλγόριθμου:
Γιάννης Σταματίου Μη αποδοτική αναδρομή και η δυναμική προσέγγιση Webcast 8.
Καλή και δημιουργική χρονιά.
ΑΛΓΟΡΙΘΜΟΙ ΠΟΛΥΠΛΟΚΟΤΗΤΑ ΥΠΟΛΟΓΙΣΙΜΟΤΗΤΑ Εισαγωγή στις βασικές έννοιες
© GfK 2012 | Title of presentation | DD. Month
Αλγόριθμοι και Πολυπλοκότητα
Εισαγωγικές Έννοιες Διδάσκοντες: Σ. Ζάχος, Δ. Φωτάκης Επιμέλεια διαφανειών: Δ. Φωτάκης Σχολή Ηλεκτρολόγων Μηχανικών και Μηχανικών Υπολογιστών Εθνικό Μετσόβιο.
Επιλογή Διδάσκοντες: Σ. Ζάχος, Δ. Φωτάκης Επιμέλεια διαφανειών: Δ. Φωτάκης Σχολή Ηλεκτρολόγων Μηχανικών και Μηχανικών Υπολογιστών Εθνικό Μετσόβιο Πολυτεχνείο.
Αναγνώριση Προτύπων.
Κεφάλαιο 2ο Πεπερασμένα αυτόματα.
Γραφήματα & Επίπεδα Γραφήματα
Διαίρει και Βασίλευε πρόβλημα μεγέθους Ν διάσπαση πρόβλημα μεγέθους Ν-k πρόβλημα μεγέθους k.
Βάσεις Δεδομένων Ευαγγελία Πιτουρά 1 Συναρτησιακές Εξαρτήσεις.
Β΄ ΓΕΛ ΕισΑρχΕπ Η/Υ παρ – 2.2.5
Κοντινότεροι Κοινοί Πρόγονοι α βγ θ δεζ η π ν ι κλμ ρσ τ κκπ(λ,ι)=α, κκπ(τ,σ)=ν, κκπ(λ,π)=η κκπ(π,σ)=γ, κκπ(ξ,ο)=κ ξο κκπ(ι,ξ)=β, κκπ(τ,θ)=θ, κκπ(ο,μ)=α.
Διαίρει-και-Βασίλευε
Προσεγγιστικοί Αλγόριθμοι
TexPoint fonts used in EMF. Read the TexPoint manual before you delete this box.: AA A Δυναμικός Προγραμματισμός πρόβλημα μεγέθους Ν διάσπαση πρόβλημα.
Δομές Αναζήτησης TexPoint fonts used in EMF. Read the TexPoint manual before you delete this box.: AA A A A Χειριζόμαστε ένα σύνολο στοιχείων όπου το κάθε.
1 Α. Βαφειάδης Αναβάθμισης Προγράμματος Σπουδών Τμήματος Πληροφορικής Τ.Ε.Ι Θεσσαλονίκης Μάθημα Προηγμένες Αρχιτεκτονικές Υπολογιστών Κεφαλαίο Τρίτο Συστήματα.
ΑΝΑΛΥΣΗ ΠΡΟΒΛΗΜΑΤΟΣ ΚΕΦΑΛΑΙΟ 1ο ΚΕΦ. 1-ΑΝΑΛΥΣΗ ΠΡΟΒΛΗΜΑΤΟΣ ΑΕΠΠ.
Δομές Δεδομένων 1 Στοίβα. Δομές Δεδομένων 2 Στοίβα (stack)  Δομή τύπου LIFO: Last In - First Out (τελευταία εισαγωγή – πρώτη εξαγωγή)  Περιορισμένος.
ΜΑΘΗΜΑ: ΣΧΕΔΙΑΣΗ ΑΛΓΟΡΙΘΜΩΝ ΔΙΔΑΣΚΩΝ: Π. ΚΑΤΣΑΡΟΣ Δευτέρα, 12 Ιανουαρίου 2015Δευτέρα, 12 Ιανουαρίου 2015Δευτέρα, 12 Ιανουαρίου 2015Δευτέρα, 12 Ιανουαρίου.
Μεταθέσεις & Συνδυασμοί
Αλγόριθμοι και Πολυπλοκότητα
Γράφοι: Προβλήματα και Αλγόριθμοι
Σχεδιαση Αλγοριθμων - Τμημα Πληροφορικης ΑΠΘ - Κεφαλαιο 9ο1 Άπληστοι αλγόριθμοι βελτιστοποίησης Προβλήματα βελτιστοποίησης λύνονται με μια σειρά επιλογών.
ΓΕΝΙΚΕΣ ΟΔΗΓΙΕΣ ΔΙΔΑΣΚΑΛΙΑΣ & ΕΝΔΕΙΚΤΙΚΟΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΥΛΗΣ
Συνδυαστικά Κυκλώματα
Σέρρες,Ιούνιος 2009 Τίτλος: Αυτόματος έλεγχος στο Scilab: Ανάπτυξη πακέτου για εύρωστο έλεγχο. Ονοματεπώνυμο Σπουδάστριας: Ευαγγελία Δάπκα Επιβλέπων Καθηγητής.
ANAKOINWSH H 2η Ενδιάμεση Εξέταση μεταφέρεται στις αντί για , την 24 Νοεμβρίου στις αίθουσες ΧΩΔ και 110 λόγω μη-διαθεσιμότητας.
ΘΕΜΑΤΙΚΗ ΕΝΟΤΗΤΑ 2: ΘΕΜΑΤΑ ΘΕΩΡΗΤΙΚΗΣ ΕΠΙΣΤΗΜΗΣ Η/Υ
Προσεγγιστικοί Αλγόριθμοι για NP-Δύσκολα Προβλήματα
Ουρά Προτεραιότητας: Heap
Συντομότερες Διαδρομές
Διδάσκοντες: Σ. Ζάχος, Δ. Φωτάκης
Αλγόριθμοι: Σύγχρονες Τάσεις Ηλίας Κουτσουπιάς Τμήμα Πληροφορικής και Τηλεπικοινωνιών Πανεπιστήμιο Αθηνών.
Μηχανές Turing και Υπολογισιμότητα
Αλγόριθμοι - Τμήμα Πληροφορικής ΑΠΘ - Εξάμηνο 4ο
Ειδικά Θέματα Αλγορίθμων και Δομών Δεδομένων
Εθνικό και Καποδιστριακό Πανεπιστήμιο Αθηνών – Τμήμα Πληροφορικής και Τηλεπικοινωνιών 1 Κεφάλαιο 3 Η Σημασιολογία των Γλωσσών Προγραμματισμού Προπτυχιακό.
ΜΑΘΗΜΑ: ΣΧΕΔΙΑΣΗ ΑΛΓΟΡΙΘΜΩΝ ΔΙΔΑΣΚΩΝ: Π. ΚΑΤΣΑΡΟΣ Παρασκευή, 3 Απριλίου 2015Παρασκευή, 3 Απριλίου 2015Παρασκευή, 3 Απριλίου 2015Παρασκευή, 3 Απριλίου 2015Τμ.
Ελάχιστο Συνδετικό Δέντρο
Δομές Δεδομένων - Ισοζυγισμένα Δυαδικά Δένδρα (balanced binary trees)
Θεωρία Γράφων Θεμελιώσεις-Αλγόριθμοι-Εφαρμογές Κεφάλαιο 4: Συνδεσμικότητα Data Engineering Lab 1.
ΘΕΜΑΤΙΚΗ ΕΝΟΤΗΤΑ 2: ΘΕΜΑΤΑ ΘΕΩΡΗΤΙΚΗΣ ΕΠΙΣΤΗΜΗΣ Η/Υ
Υπολογιστική Πολυπλοκότητα Διδάσκοντες: Σ. Ζάχος, Δ. Φωτάκης Επιμέλεια διαφανειών: Δ. Φωτάκης Σχολή Ηλεκτρολόγων Μηχανικών και Μηχανικών Υπολογιστών Εθνικό.
Λεξικό, Union – Find Διδάσκοντες: Σ. Ζάχος, Δ. Φωτάκης Επιμέλεια διαφανειών: Δ. Φωτάκης Σχολή Ηλεκτρολόγων Μηχανικών και Μηχανικών Υπολογιστών Εθνικό Μετσόβιο.
Αναζήτηση Κατά Βάθος Διδάσκοντες: Σ. Ζάχος, Δ. Φωτάκης Επιμέλεια διαφανειών: Δ. Φωτάκης Σχολή Ηλεκτρολόγων Μηχανικών και Μηχανικών Υπολογιστών Εθνικό Μετσόβιο.
Quicksort Διδάσκοντες: Σ. Ζάχος, Δ. Φωτάκης Επιμέλεια διαφανειών: Δ. Φωτάκης Σχολή Ηλεκτρολόγων Μηχανικών και Μηχανικών Υπολογιστών Εθνικό Μετσόβιο Πολυτεχνείο.
Χρονική Πολυπλοκότητα και Μοντέλα
ΗΥ150 – ΠρογραμματισμόςΚώστας Παναγιωτάκης ΗΥ-150 Προγραμματισμός Αναδρομή (1/2)
Ασυμπτωτικός Συμβολισμός
ΔΥΝΑΜΙΚΟΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ 1. 2 Αλληλεπικαλυπτόμενα Υποπροβλήματα Όπως η Διαίρεση και Κυριαρχία, ο Δυναμικός Προγραμματισμός συνδυάζει λύσεις σε υποπροβλήματα.
ΔΥΑΔΙΚΗ ΑΝΑΖΗΤΗΣΗ & ΤΑΞΙΝΟΜΗΣΗ ΜΕ ΣΥΓΧΩΝΕΥΣΗ. Δυαδική αναζήτηση (Binary search) ΔΕΔΟΜΕΝΟ: ένα μεγάλο αρχείο που περιέχει τιμές z [0,1,…,n-1] ταξινομημένες.
Διδάσκων: Δρ. Τσίντζα Παναγιώτα
Αλγόριθμοι - Τμήμα Πληροφορικής ΑΠΘ - Εξάμηνο 4ο
Δυναμικός Προγραμματισμός
ΗΥ-150 Προγραμματισμός Αναδρομή (1/2).
Στοιχεία Χωρικής Πολυπλοκότητας
Μεταγράφημα παρουσίασης:

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

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

Τρίγωνο του Pascal Όταν έχω επαναλαμβανόμενα στιγμιότυπα, αποθηκεύω τιμές σε πίνακα και τις χρησιμοποιώ χωρίς να τις υπολογίζω πάλι. Θεαματική βελτίωση χρόνου εκτέλεσης! Σημαντικές απαιτήσεις σε μνήμη. Αλγόριθμοι & Πολυπλοκότητα (Χειμώνας 2011) Δυναμικός Προγραμματισμός

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

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

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

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

Αρχή Βελτιστότητας Αντικείμενα 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 στη βέλτιστη λύση! Αλγόριθμοι & Πολυπλοκότητα (Χειμώνας 2011) Δυναμικός Προγραμματισμός

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

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

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

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

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

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

Subset Sum και Διαμέριση Σύνολο φυσικών Α = {s1, …, sn} και 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) δίνει την απάντηση. Αλγόριθμοι & Πολυπλοκότητα (Χειμώνας 2011) Δυναμικός Προγραμματισμός

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

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

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

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

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

Αρχή Βελτιστότητας Συμβολίζουμε Βέλτιστη λύση υπολογίζει και για κάποιο και τελειώνει με #πολ/μών = d0  di  dn + #πολ/μών(Α1..i) + #πολ/μων(Ai+1..n) Επιμέρους γινόμενα Α1..i και Ai+1..n υπολογίζονται βέλτιστα. Έστω για κάθε γνωρίζουμε Τότε Γενική αναδρομική σχέση: Αλγόριθμοι & Πολυπλοκότητα (Χειμώνας 2011) Δυναμικός Προγραμματισμός

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

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

Υλοποίηση (bottom-up) Χρόνος Ο(n3) και μνήμη O(n2), μειώνεται σε Ο(n). Αλγόριθμοι & Πολυπλοκότητα (Χειμώνας 2011) Δυναμικός Προγραμματισμός

Υλοποίηση (top-down) Χρόνος Ω(2n) !

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

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

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

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

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

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

Αρχή Βελτιστότητας Έστω 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, …, για κάθε υποσύνολο αντίστοιχου μεγέθους. Αλγόριθμοι & Πολυπλοκότητα (Χειμώνας 2011) Δυναμικός Προγραμματισμός

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

Υλοποίηση Μνήμη Θ(n 2n) Χρόνος Θ(n2 2n) 20 σημεία: 20! = 2.41018 202 220 = 4.2108 Αλγόριθμοι & Πολυπλοκότητα (Χειμώνας 2011) Δυναμικός Προγραμματισμός