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

Slides:



Advertisements
Παρόμοιες παρουσιάσεις
Αναδρομικοί Αλγόριθμοι
Advertisements

Δομές Δεδομένων και Αλγόριθμοι
Αλγόριθμοι Αναζήτησης
Διακριτά Μαθηματικά ΙI Δέντρα
Θεωρία Γράφων Θεμελιώσεις-Αλγόριθμοι-Εφαρμογές
Μαθηματικοί Υπολογισμοί Χειμερινό Εξάμηνο η Διάλεξη Επίλυση Εξισώσεων Νοέμβρη 2002.
Αλγόριθμοι Ι Κάθε καλώς ορισμένη υπολογιστική διαδικασία, η οποία καλείται να επιλύσει ένα συγκεκριμένο πρόβλημα εντός πεπερασμένου χρόνου. Αλγόριθμος.
Γιάννης Σταματίου Μη αποδοτική αναδρομή και η δυναμική προσέγγιση Webcast 8.
Ο Αλγόριθμος FP-Growth. Αλγόριθμος FP-Growth Ο αλγόριθμος χρησιμοποιεί μια συμπιεσμένη αναπαράσταση της βάσης των συναλλαγών με τη μορφή ενός FP-δέντρου.
Αλγόριθμοι και Πολυπλοκότητα
Εισαγωγικές Έννοιες Διδάσκοντες: Σ. Ζάχος, Δ. Φωτάκης Επιμέλεια διαφανειών: Δ. Φωτάκης Σχολή Ηλεκτρολόγων Μηχανικών και Μηχανικών Υπολογιστών Εθνικό Μετσόβιο.
Διαίρει-και-Βασίλευε
Δυναμικός Προγραμματισμός
Προσεγγιστικοί Αλγόριθμοι
Εργαστήριο Δασικής Διαχειριστικής & Τηλεπισκόπησης ΠΑΡΟΥΣΙΑΣΗ ΔΥΝΑΜΙΚΟΥ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Διδάσκων Δημήτριος Καραμανώλης, Επίκουρος Καθηγητής ΔΥΝΑΜΙΚΟΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ.
TexPoint fonts used in EMF. Read the TexPoint manual before you delete this box.: AA A Δυναμικός Προγραμματισμός πρόβλημα μεγέθους Ν διάσπαση πρόβλημα.
ΕΠΛ Θεωρία και Πρακτική Μεταγλωττιστών5-1 Επίλυσης ασάφειας με εισαγωγή μη-τερματικών Π.χ. stmt = “if”, expr, “then”, stmt | “if”, expr, “then”,
ΜΑΘΗΜΑ: ΣΧΕΔΙΑΣΗ ΑΛΓΟΡΙΘΜΩΝ ΔΙΔΑΣΚΩΝ: Π. ΚΑΤΣΑΡΟΣ Δευτέρα, 12 Ιανουαρίου 2015Δευτέρα, 12 Ιανουαρίου 2015Δευτέρα, 12 Ιανουαρίου 2015Δευτέρα, 12 Ιανουαρίου.
ΕΠΛ 231 – Δομές Δεδομένων και Αλγόριθμοι12-1 Στην ενότητα αυτή θα μελετηθούν τα εξής επιμέρους θέματα: Ο αλγόριθμος του Prim και ο αλγόριθμος του Kruskal.
Σχεδιαση Αλγοριθμων - Τμημα Πληροφορικης ΑΠΘ - Κεφαλαιο 9ο1 Άπληστοι αλγόριθμοι βελτιστοποίησης Προβλήματα βελτιστοποίησης λύνονται με μια σειρά επιλογών.
Ενεργή επιλογή αλγορίθμου, Active Algorithm Selection, Feilong Chen and Rong Jin Εύα Σιταρίδη.
Σχεδίαση Αλγορίθμων - Τμήμα Πληροφορικής ΑΠΘ - Εξάμηνο 4ο1 Ωμή Βία Είναι μία άμεση προσέγγιση που βασίζεται στην εκφώνηση του προβλήματος και τους ορισμούς.
Συντομότερες Διαδρομές
Διδάσκοντες: Σ. Ζάχος, Δ. Φωτάκης
Γιάννης Σταματίου Αναδρομή και αναδρομικές σχέσεις
Αλγόριθμοι - Τμήμα Πληροφορικής ΑΠΘ - Εξάμηνο 4ο
ΒΕΣ 06: Προσαρμοστικά Συστήματα στις Τηλεπικοινωνίες © 2007 Nicolas Tsapatsoulis Προσαρμοστικοί Αλγόριθμοι Υλοποίησης Βέλτιστων Ψηφιακών Φίλτρων: Ο αναδρομικός.
Χωρικοί-χρονικοί συμβιβασμοί
Ο αλγόριθμος Bellman-Ford (επανεξετάζεται)
ΜΑΘΗΜΑ: ΣΧΕΔΙΑΣΗ ΑΛΓΟΡΙΘΜΩΝ ΔΙΔΑΣΚΩΝ: Π. ΚΑΤΣΑΡΟΣ Πέμπτη, 2 Απριλίου 2015Πέμπτη, 2 Απριλίου 2015Πέμπτη, 2 Απριλίου 2015Πέμπτη, 2 Απριλίου 2015Τμ. Πληροφορικής,
1 Βέλτιστη δρομολόγηση (optimal routing) Αντιμετώπιση της δρομολόγησης σαν «συνολικό» πρόβλημα βελτιστoποίησης. Γιατί: Η αλλαγή της δρομολόγησης μιας συνόδου.
ΜΑΘΗΜΑ: ΣΧΕΔΙΑΣΗ ΑΛΓΟΡΙΘΜΩΝ ΔΙΔΑΣΚΩΝ: Π. ΚΑΤΣΑΡΟΣ Παρασκευή, 3 Απριλίου 2015Παρασκευή, 3 Απριλίου 2015Παρασκευή, 3 Απριλίου 2015Παρασκευή, 3 Απριλίου 2015Τμ.
Θεωρία Γράφων Θεμελιώσεις-Αλγόριθμοι-Εφαρμογές Κεφάλαιο 2: Μονοπάτια και Κύκλοι (Hamilton) Data Engineering Lab.
Θεωρία Γράφων Θεμελιώσεις-Αλγόριθμοι-Εφαρμογές Κεφάλαιο 4: Συνδεσμικότητα Data Engineering Lab 1.
Ενότητα 1.2 Αναδρομικές Σχέσεις Σχεδίαση & Ανάλυση Αλγορίθμων.
Θεωρία Γράφων Θεμελιώσεις-Αλγόριθμοι-Εφαρμογές
ΜΑΘΗΜΑ: ΣΧΕΔΙΑΣΗ ΑΛΓΟΡΙΘΜΩΝ ΔΙΔΑΣΚΩΝ: Π. ΚΑΤΣΑΡΟΣ Τετάρτη, 15 Απριλίου 2015Τετάρτη, 15 Απριλίου 2015Τετάρτη, 15 Απριλίου 2015Τετάρτη, 15 Απριλίου 2015Τμ.
Χρονική Πολυπλοκότητα και Μοντέλα
ΗΥ150 – ΠρογραμματισμόςΚώστας Παναγιωτάκης ΗΥ-150 Προγραμματισμός Αναδρομή (1/2)
Αλγόριθμοι - Τμήμα Πληροφορικής ΑΠΘ - 4ο εξάμηνο1 Ανάλυση Αλγορίθμων b Θέματα: Ορθότητα Χρονική αποδοτικότητα Χωρική αποδοτικότητα Βελτιστότητα b Προσεγγίσεις:
Ασυμπτωτικός Συμβολισμός
ΔιαΙρεςη και κυριαρχια
ΕΠΛ 231 – Δομές Δεδομένων και Αλγόριθμοι13-1 Στην ενότητα αυτή θα μελετηθούν τα εξής επιμέρους θέματα: Ο αλγόριθμος Dijkstra για εύρεση βραχυτέρων μονοπατιών.
1 ΤΜΗΜΑ ΜΠΕΣ Αλγόριθμοι Αναζήτησης Εργασία 1 Τυφλή Αναζήτηση.
Δομές Δεδομένων 1 Θέματα Απόδοσης. Δομές Δεδομένων 2 Οργανώνοντας τα Δεδομένα  Η επιλογή της δομής δεδομένων και του αλγορίθμου επηρεάζουν το χρόνο εκτέλεσης.
Αλγόριθμοι - Τμήμα Πληροφορικής ΑΠΘ - 4ο εξάμηνο
Θεωρία Γράφων Θεμελιώσεις-Αλγόριθμοι-Εφαρμογές TSP, Μέτρα κεντρικότητας, Dijkstra Data Engineering Lab.
Ελαφρύτατες διαδρομές TexPoint fonts used in EMF. Read the TexPoint manual before you delete this box.: AA A AA A A.
ΔΥΝΑΜΙΚΟΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ 1. 2 Αλληλεπικαλυπτόμενα Υποπροβλήματα Όπως η Διαίρεση και Κυριαρχία, ο Δυναμικός Προγραμματισμός συνδυάζει λύσεις σε υποπροβλήματα.
ΗΥ150 – ΠρογραμματισμόςΞενοφών Ζαμπούλης ΗΥ-150 Προγραμματισμός Αναδρομή (1/2)
Σχεδίαση Αλγορίθμων - Τμήμα Πληροφορικής ΑΠΘ - 4ο εξάμηνο1 Ανάλυση Αλγορίθμων b Θέματα: Ορθότητα Χρονική αποδοτικότητα Χωρική αποδοτικότητα Βελτιστότητα.
ΔΥΑΔΙΚΗ ΑΝΑΖΗΤΗΣΗ & ΤΑΞΙΝΟΜΗΣΗ ΜΕ ΣΥΓΧΩΝΕΥΣΗ. Δυαδική αναζήτηση (Binary search) ΔΕΔΟΜΕΝΟ: ένα μεγάλο αρχείο που περιέχει τιμές z [0,1,…,n-1] ταξινομημένες.
Ηλεκτρική Οικονομία Σταμάτης Νικολόπουλος ΑΜ: 868 ΑΣΠΑΙΤΕ, 2015.
Γράφημα Συνδυαστικό αντικείμενο που αποτελείται από 2 σύνολα:
Μετασχημάτισε και Κυριάρχησε
Δυναμικός Κατακερματισμός
Επίλυση Προβλημάτων με Αναζήτηση
Θεωρία & Αλγόριθμοι Γράφων
ΜΥΥ105: Εισαγωγή στον Προγραμματισμό
Βελτιστοποίηση σε τρίλιζα Καταδίωξη/διαφυγή
Βέλτιστη δρομολόγηση (optimal routing)
Διδάσκων: Δρ. Τσίντζα Παναγιώτα
Data Science & Engineering Lab
Αλγόριθμοι - Τμήμα Πληροφορικής ΑΠΘ - Κεφάλαιο 9ο
Αλγόριθμοι - Τμήμα Πληροφορικής ΑΠΘ - Εξάμηνο 4ο
ΗΥ-150 Προγραμματισμός Αναδρομή (1/2).
Δυναμικός Κατακερματισμός
Αναδρομή Στην ενότητα αυτή θα μελετηθούν τα εξής επιμέρους θέματα:
Προβλήματα Εκχώρησης (Assignment Problems)
Μεταγράφημα παρουσίασης:

Δυναμικός Προγραμματισμός Αλγόριθμοι Δυναμικός Προγραμματισμός http://delab.csd.auth.gr/courses/algorithms/ Data Science & Engineering Lab

Δυναμικός προγραμματισμός Ο Δυναμικός Προγραμματισμός προτάθηκε από τον Αμερικανό μαθηματικό Richard Bellman περί το 1950 για την επίλυση προβλημάτων βελτιστοποίησης “Προγραμματισμός” εδώ σημαίνει “σχεδιασμός” Η κύρια ιδέα είναι: να επιλύσουμε πολλά μικρότερα επικαλυπτόμενα προβλήματα να καταγράψουμε τις λύσεις σε ένα πίνακα ώστε το κάθε υποπρόβλημα να επιλύεται μόνο μια φορά να λάβουμε τη λύση στην τελική κατάσταση του πίνακα Data Science & Engineering Lab

Παράδειγμα: αριθμοί Fibonacci f(n) = f(n-1) + f(n-2) Αναδρομικός υπολογισμός του n-οστού αριθμού Fibonacci (top-down) f(n) f(n-1) + f(n-2) f(n-2) + f(n-3) f(n-3) + f(n-4) ... Data Science & Engineering Lab

Παράδειγμα: αριθμοί Fibonacci (2) Επαναληπτικός υπολογισμός του n-οστού αριθμού Fibonacci (bottom-up): f(0) = 0 f(1) = 1 f(2) = 0+1 = 1 f(3) = 1+1 = 2 f(4) = 1+2 = 3 f(n-2) = f(n-1) = f(n) = f(n-1) + f(n-2) Data Science & Engineering Lab

Παραδείγματα αλγορίθμων Δυν. Προγραμματισμού Υπολογισμός διωνυμικών συντελεστών Αλυσιδωτός πολλαπλασιασμός πινάκων Κατασκευή δυαδικών δένδρων αναζήτησης Αλγόριθμος Warshall’s για μεταβατική κλειστότητα Αλγόριθμος Floyd για συντομότερα μονοπάτια Δύσκολα διακριτά προβλήματα βελτιστοποίησης: εκδοχή προβλήματος περιοδεύοντας πωλητή εκδοχή προβλήματος σάκου Data Science & Engineering Lab

Δυωνυμικοί συντελεστές Αλγόριθμος βασισμένος στην ταυτότητα (a + b)n = C(n,0)anb0 + . . . + C(n,k)an-kbk + . . . + C(n,n)a0bn Αναδρομη: C(n,k) = C(n-1,k) + C(n-1,k-1), n > k > 0 C(n,0) = 1, C(n,n) = 1 for n  0 0 1 2 . . . k-1 k 0 1 1 1 1 . n-1 C(n-1,k-1) C(n-1,k) n C(n,k Data Science & Engineering Lab

Δυωνυμικοί συντελεστές - ψευδοκώδικας Χρονική αποδοτικότητα: Θ(nk) Χωρική αποδοτικότητα: Θ(nk) Data Science & Engineering Lab

Data Science & Engineering Lab Αλγόριθμος Warshall Υπολογίζει τη μεταβατική κλειστότητα μιας σχέσης, δηλ. όλα τα μονοπάτια ενός κατευθυνόμενου γράφου Παράδειγμα: 3 4 2 1 3 4 2 1 0 0 1 0 1 0 0 1 0 0 0 0 0 1 0 0 0 0 1 0 1 1 1 1 0 0 0 0 Data Science & Engineering Lab

Αλγόριθμος Warshall (2) Κύρια ιδέα: υπάρχει ένα μονοπάτι μεταξύ των κορυφών i και j αν υπάρχει ακμή από την i στην j, υπάρχει μονοπάτι από την i στην j μέσω της κορυφής 1; υπάρχει μονοπάτι από την i στην j μέσω των κορυφών 1 ή/και 2; ... υπάρχει μονοπάτι από την i στην j μέσω οποιασδήποτε από τις άλλες κορυφές 3 4 2 1 3 4 2 1 3 4 2 1 3 4 2 1 3 4 2 1 R0 0 0 1 0 1 0 0 1 0 0 0 0 0 1 0 0 R1 0 0 1 0 1 0 1 1 0 0 0 0 0 1 0 0 R2 0 0 1 0 1 0 1 1 0 0 0 0 1 1 1 1 R3 0 0 1 0 1 0 1 1 0 0 0 0 1 1 1 1 R4 0 0 1 0 1 1 1 1 0 0 0 0 Data Science & Engineering Lab

Αλγόριθμος Warshall (3) Στο k-οστό στάδιο βρίσκουμε αν υπάρχει ένα μονοπάτι μεταξύ των κορυφών i, j χρησιμοποιώντας μόνο τις κορυφές 1,…,k R(k-1)[i,j] (μονοπάτι μόνο με 1 ,…,k-1) R(k)[i,j] = or (R(k-1)[i,k] & R(k-1)[k,j]) (μονοπάτι από i σε k και από k σε i χρησιμοποιώντας μόνο τις 1,…,k-1) { k i kth stage j Data Science & Engineering Lab

Αλγόριθμος Warshall - παράδειγμα 3 4 2 1 0 0 1 0 1 0 0 1 0 0 0 0 0 1 0 0 0 0 1 0 1 0 1 1 0 0 0 0 0 1 0 0 R(0) = R(1) = 0 0 1 0 1 0 1 1 0 0 0 0 1 1 1 1 0 0 1 0 1 0 1 1 0 0 0 0 1 1 1 1 0 0 1 0 1 1 1 1 0 0 0 0 R(2) = R(3) = R(4) = Data Science & Engineering Lab

Αλγόριθμος Warshall - ψευδοκώδικας Algorithm Warshall(A[1..n,1..n]) R(0)A for k1 to n do for i1 to n do for j1 to n do R(k)[i,j]  R(k-1)[i,j] or R(k-1)[i,k] and R(k-1)[k,j] return R(k) Χρονική αποτελεσματικότητα: Θ(n3) Χωρική αποτελεσματικότητα: Θ(n2) – επαναχρησιμοποίηση χώρου Data Science & Engineering Lab

Αλγόριθμος Floyd: “All pairs shortest paths” Να βρούμε τα συντομότερα μονοπάτια μεταξύ όλων των κορυφών ενός ζυγισμένου γράφου Ιδέα: να βρούμε τη λύση μέσω μιας σειράς πινάκων D(0), D(1), … χρησιμοποιώντας ένα αρχικό υποσύνολο κορυφών ως ενδιάμεσες Παράδειγμα: 3 4 2 1 6 5 Data Science & Engineering Lab

Αλγόριθμος Floyd - παράδειγμα 3 1 2 6 7 4 0 ∞ 3 ∞ 2 0 ∞ ∞ ∞ 7 0 1 6 ∞ ∞ 0 0 ∞ 3 ∞ 2 0 5 ∞ ∞ 7 0 1 6 ∞ 9 0 D(0) = D(1) = 0 ∞ 3 ∞ 2 0 5 ∞ 9 7 0 1 6 ∞ 9 0 0 10 3 4 2 0 5 6 9 7 0 1 6 16 9 0 0 10 3 4 2 0 5 6 7 7 0 1 6 16 9 0 D(2) = D(3) = D(4) = Data Science & Engineering Lab

Data Science & Engineering Lab Αλγόριθμος Floyd Algorithm Floyd(W[1..n,1..n]) DW for k1 to n do for i1 to n do for j1 to n do D[i,j]min(D[i,j],D[i,k]+D[k,j]) return D Χρονική και Χωρική αποτελεσματικότητα Πότε δεν δουλεύει? Αρχή της βελτιστότητας Data Science & Engineering Lab

Βέλτιστα Δυαδικά Δένδρα Αναζήτησης Τα κλειδιά δεν αναζητώνται ισοπίθανα Έστωσαν τα κλειδιά A,B,C,D με πιθανότητες 0.1, 0.2, 0.4, 0.3 Ποιο είναι το μέσο κόστος αναζήτησης σε κάθε πιθανή δομή ? Πόσες διαφορετικές δομές μπορούν να παραχθούν με n κόμβους ? Καταλανικός αριθμός C(n)=comb(2n,n)/(n+1) Data Science & Engineering Lab

Βέλτιστα Δυαδικά Δένδρα Αναζήτησης (2) Το C[i,j] δίνει το μικρότερο μέσο κόστος αναζήτησης σε ένα δένδρο με τα στοιχεία από i μέχρι j Με βάση της αρχή της βελτιστότητας, το βέλτιστο δένδρο αναζήτησης παράγεται με βάση την αναδρομική εξίσωση: C[i,j] = min{C[i,k-1]+C[k+1,j]} + Σps για 1≤i≤j≤n και i≤k≤j C[i,i] = pi Data Science & Engineering Lab

Βέλτιστα Δυαδικά Δένδρα Αναζήτησης (3) Data Science & Engineering Lab

Βέλτιστα Δυαδικά Δένδρα Αναζήτησης (4) Παράδειγμα: κλειδί A B C D πιθανότητα 0.1 0.2 0.4 0.3 i j 1 2 3 4 .1 .4 1.1 1.7 .2 .8 1.4 1.0 .3 5 i j 1 2 3 4 5 B A C D βέλτιστο BST Χρονική αποτελεσματικότητα: Θ(n3) αλλά μπορεί να μειωθεί σε Θ(n2) αν εκμεταλλευτούμε την μονοτονικότητα στον πίνακα ριζών. Χωρική αποτελεσματικότητα: Θ(n2) Data Science & Engineering Lab

Data Science & Engineering Lab Το πρόβλημα του σάκου Δίνονται n στοιχεία με βάρη w1,w2,…,wn, αξίες v1,v2,…,vn και χωρητικότητα σάκου W. Να βρεθεί το πολυτιμότερο υποσύ-νολο των στοιχείων που χωρούν στο σάκο Λύση με εξαντλητική αναζήτηση Έστω ότι το V[i,j] δίνει τη βέλτιστη λύση για τα πρώτα i στοιχεία και χωρητικότητα j. Σκοπός είναι ο υπολογισμός του V[n,W] Αναδρομή max{V[i-1,j],vi+V[i-1,j-wi]} if j-wi≥0 V[i,j] = V[i-1,j] if j-wi<0 { Data Science & Engineering Lab

Το πρόβλημα του σάκου (2) Παράδειγμα W=5 Χρονική και Χωρική αποτελεσματικότητα i,j 1 2 3 4 5 ? είδος βάρος αξία 1 2 12 10 3 20 4 15 Data Science & Engineering Lab

Data Science & Engineering Lab Συναρτήσεις Μνήμης Ένα μειονέκτημα του δυναμικού προγραμμα-τισμού είναι ότι επιλύει υποπροβλήματα που δεν χρειάζονται τελικά Μια εναλλακτική τεχνική είναι ο συνδυασμός της top-down με την bottom-up προσέγγιση (δηλ. αναδρομή συν ένα πίνακα προσωρινών αποτελεσμάτων) Data Science & Engineering Lab

Data Science & Engineering Lab Συναρτήσεις Μνήμης (2) Algorithm MFKnapsack(i,j) if V[i,j]<0 if j<Weights[i] value MFKnapack[i-1,j] else valuemax{MFKnapsack(i-1,j), Values[i] + MFKnapsack[i-1,j-Weights[i]]} V[i,j]value return V[i,j] Data Science & Engineering Lab

Data Science & Engineering Lab Συναρτήσεις Μνήμης (3) Παράδειγμα W=5 Χρονική και Χωρική αποτελεσματικότητα: παραμένουν ίδιες i,j 1 2 3 4 5 ? είδος βάρος αξία 1 2 12 10 3 20 4 15 Data Science & Engineering Lab