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

Μέγεθος: px
Εμφάνιση ξεκινά από τη σελίδα:

Download "Σχεδίαση και Ανάλυση Αλγορίθμων"

Transcript

1 Σχεδίαση και Ανάλυση Αλγορίθμων Ενότητα. Δυναμικός & Γραμμικός Προγραμματισμός Προβλήματα Ροές σε Δίκτυα Σταύρος Δ. Νικολόπουλος -7 Τμήμα Μηχανικών Η/Υ & Πληροφορικής Πανεπιστήμιο Ιωαννίνων Webpage:

2 Αλγοριθμικές Τεχνικές Δύο Σημαντικά Εργαλεία της Τέχνης των Αλγορίθμων Δυναμικός Προγραμματισμός Γραμμικός Προγραμματισμός

3 Δυναμικός & Γραμμικός Προγραμματισμός Τι έχουμε δει έως τώρα? Μερικές τεχνικές σχεδίασης αλγορίθμων, όπως: Διαίρει-και-Βασίλευε Άπληστη Επιλογή Το μειονέκτημα αυτών των τεχνικών είναι ότι μπορούν να χρησιμοποιηθούν για ειδικούς τύπους προβλημάτων!!! Δυναμικός Προγραμματισμός και Γραμμικός Προγραμματισμός Δύο Γενικές Αλγοριθμικές Τεχνικές!!!

4 Δυναμικός Προγραμματισμός Αλγοριθμική Τεχνική Δυναμικός Προγραμματισμός!!!!!

5 Δυναμικός Προγραμματισμός Αλγοριθμική Τεχνική Δυναμικός Προγραμματισμός Είναι Τεχνική Σχεδίασης Αλγορίθμων!!! με ευρύτατο πεδίο εφαρμογών! και με χρήση εκεί όπου άλλες πιο ειδικευμένες τεχνικές αποτυγχάνουν! Δεν είναι Τεχνική Προγραμματισμού!!!!!!!!

6 Δυναμικός Προγραμματισμός Γιατί αυτός ο όρος και η ονομασία Δυναμικός Προγραμματισμός???????? Επινοήθηκε από τον Richard Bellman το Τότε ο προγραμματισμός ήταν μια απόκρυφη, σπάνια δραστηριότητα την οποία ασκούσαν τόσο πολύ λίγοι που δεν άξιζε καν να την αναφέρουν. Ο όρος «προγραμματισμός» την εποχή εκείνη σήμαινε «σχεδιασμός ενεργειών» (planning), ενώ ο όρος «δυναμικός προγραμματισμός» σήμαινε «βέλτιστο σχεδιασμό πολλαπλών διεργασιών»!!!

7 Δυναμικός Προγραμματισμός Ας θυμηθούμε δύο γνωστά μας προβλήματα! Ακολουθία Fibonacci Ελάχιστες διαδρομές σε DAG r s u - v - x 8 t

8 Ακολουθία Fibonacci Δυναμικός Προγραμματισμός

9 Δυναμικός Προγραμματισμός Ακολουθία Fibonacci fib(n) if n = then return if n = then return return fib(n-) + fib(n-)

10 Δυναμικός Προγραμματισμός Ακολουθία Fibonacci fib(n) if n = then return if n = then return return fib(n-) + fib(n-)

11 Δυναμικός Προγραμματισμός Ακολουθία Fibonacci fib(n) if n = then return if n = then return return fib(n-) + fib(n-)

12 Δυναμικός Προγραμματισμός Ακολουθία Fibonacci fib(n) if n = then return if n = then return return fib(n-) + fib(n-)

13 Δυναμικός Προγραμματισμός Ακολουθία Fibonacci Fib(n) = fib(n-) + fib(n-)

14 Δυναμικός Προγραμματισμός Ακολουθία Fibonacci Fib() = fib() + fib() Fib(n) = fib(n-) + fib(n-)

15 Δυναμικός Προγραμματισμός Ακολουθία Fibonacci Fib() = fib() + fib() Fib(n) = fib(n-) + fib(n-)

16 Δυναμικός Προγραμματισμός Ακολουθία Fibonacci Fib() = fib() + fib() Fib(n) = fib(n-) + fib(n-)

17 Δυναμικός Προγραμματισμός Ακολουθία Fibonacci 8 Fib() = fib() + fib() Fib(n) = fib(n-) + fib(n-)

18 Δυναμικός Προγραμματισμός Ακολουθία Fibonacci i i- i- Fib(i) = fib(i-) + fib(i-) Μπορώ να λύσω ένα υποπρόβλημα εύκολα εάν έχω «βρει» και έχω «κρατήσει» τις λύσεις «μικρότερων» υποπροβλημάτων!!!

19 Δυναμικός Προγραμματισμός Ακολουθία Fibonacci Αλγόριθμος FIBONACCI i i- i- fib(n).... if n = then return if n = then return F() =, F() = {F πίνακας μήκους n} for i =,,, n F(i) = F(i-) + F(i-). return F(n) Κρατήστε αυτά τα στοιχεία του αλγορίθμου!!!

20 Δυναμικός Προγραμματισμός Ελάχιστες διαδρομές σε DAG Χαρακτηριστικό ενός DAG: Τοπολογική Ταξινόμηση r s u v x 8 t

21 Δυναμικός Προγραμματισμός Ελάχιστες διαδρομές σε DAG Χαρακτηριστικό ενός DAG: Τοπολογική Ταξινόμηση r s u v x t 8 Γιατί αυτό το Χαρακτηριστικό βοηθάει στον υπολογισμό των ε.δ από ένα κόμβο, έστω τον s?

22 Δυναμικός Προγραμματισμός Ελάχιστες διαδρομές σε DAG Χαρακτηριστικό ενός DAG: Τοπολογική Ταξινόμηση r s u v x t 8 Θέλουμε να υπολογίσουμε τις ε.δ από τον κόμβο s : d(r), d(s), d(u), d(v), d(x), d(t)

23 Δυναμικός Προγραμματισμός Ελάχιστες διαδρομές σε DAG Χαρακτηριστικό ενός DAG: Τοπολογική Ταξινόμηση r s u v x 8 Ας εστιάσουμε σε ένα κόμβο, έστω στον κόμβο x Ο μόνος τρόπος για να φθάσουμε στον x είναι μέσω των προκατόχων του, δηλ. των κόμβων v και u!!! t

24 Δυναμικός Προγραμματισμός Ελάχιστες διαδρομές σε DAG Χαρακτηριστικό ενός DAG: Τοπολογική Ταξινόμηση r s u v x t 8 Εάν έχουμε υπολογίσει τις τιμές d(r), d(s), d(u) και d(v) των αντίστοιχων ε.δ, μπορούμε βρούμε την ε.δ s ~> x, αρκεί μόνο να συγκρίνουμε τις δύο διαδρομές: d(x) = min{d(v) +, d(u) + }

25 Δυναμικός Προγραμματισμός Ελάχιστες διαδρομές σε DAG Μια τέτοια σχέση ισχύει για κόμβο!!! π.χ., για τον κόμβο t : r s u v d(t) = min{ d(x)+, d(v)+, d(u)+8 } Αν υπολογίσουμε τις τιμές d(.) με τη σειρά της Τοπoλογικής Ταξινόμησης τότε: Μπορώ να λύσω ένα υποπρόβλημα εύκολα εάν έχω «βρει» και έχω «κρατήσει» τις λύσεις «μικρότερων» υποπροβλημάτων!!! x 8 t

26 Δυναμικός Προγραμματισμός Ελάχιστες διαδρομές σε DAG Αλγόριθμος SP-DAG. Initialize(G,s) r s u v x 8. Topological-Sorting(G). για κάθε κόμβο x V-{s} σε τοπολογική σειρά: d(x) = min(u,x) E{d(u) + w(u,x)}. return d(.) Κρατήστε αυτά τα στοιχεία του αλγόριθμου!!! t

27 Δυναμικός Προγραμματισμός Ελάχιστες διαδρομές σε DAG Παρατηρήσεις!!! Ο αλγόριθμος SP-DAG επιλύει υποπροβλήματα, της μορφής: { d(x) x V-{s} } r s u v x d(x), d(x),, d(xi),, d(xn-), d(xn) Αρχίζει από το «μικρότερο» υποπρόβλημα και προσχωράει σε «μεγαλύτερα» υποπροβλήματα!!! Ένα υποπρόβλημα το θεωρούμε «μεγάλο» εάν πρέπει να λύσουμε πολλά άλλα υποπροβλήματα πριν φθάσουμε σε αυτό!!! 8 t

28 Δυναμικός Προγραμματισμός Χαρακτηριστικά Δυναμικού Προγραμματισμού Η Βασική Ιδέα!!!!!!!!

29 Δυναμικός Προγραμματισμός Χαρακτηριστικά Δυναμικού Προγραμματισμού Η Βασική Ιδέα!!!... Λύσης ενός προβλήματος Π με ΔΠ: Yπολογίζουμε ένα σύνολο υποπροβλημάτων του Π Eπινοούμε μια σχέση για την λύση ενός υποπροβλήματος Λύνουμε τα υποπροβλήματα ξεκινώντας από «μικρότερα», αποθηκεύουμε τις λύσεις τους, και προχωράμε προς «μεγαλύτερα» χρησιμοποιώντας τις αποθηκευμένες λύσεις των μικρότερων!!! Παίρνουμε τη λύση του αρχικού μας προβλήματος Π, λύνοντας όλα τα υποπροβλήματα με καθορισμένη σειρά!!!

30 Δυναμικός Προγραμματισμός Χαρακτηριστικά Δυναμικού Προγραμματισμού Τα προβλήματα βελτιστοποίησης όπου ο ΔΠ λειτουργεί καλά έχουν τα ακόλουθα Κοινά χαρακτηριστικά των προβλημάτων του ΔΠ : κοινά χαρακτηριστικά: Ιδιότητα Βέλτιστης υποδομής (Optimal substructure property): Μια βέλτιστη λύση του προβλήματος μπορεί να κατασκευαστεί από βέλτιστες λύσεις των υποπροβλημάτων του! Πολλαπλά Υποπροβλήματα : Το αρχικό πρόβλημα διασπάται, με πολλαπλούς τρόπους, σε ένα σύνολο απλούστερων υποπροβλημάτων!! Επικάλυψη Υποπροβλημάτων : Ανεξάρτητα υποπροβλήματα είναι δυνατόν να μοιράζονται βέλτιστες λύσεις κοινών υποπροβλημάτων!!!

31 Δυναμικός Προγραμματισμός Χαρακτηριστικά Δυναμικού Προγραμματισμού Θεμελιώδης Ιδιότητα του ΔΠ!!! Στο ΔΠ το «μοντέλο της τεχνικής» θα μπορούσαμε να το θεωρήσουμε ότι είναι ένα γράφημα G τύπου DAG!!! Οι κόμβοι του G αντιστοιχούν στα υποπροβλήματα και οι ακμές του στις εξαρτήσεις ανάμεσα σε αυτά: Α Β Το Α θεωρείται «μικρότερο» υποπρόβλημα από το Β, ή Για να λύσουμε το Β χρειαζόμαστε την λύση του Α!!!

32 Δυναμικός Προγραμματισμός Χαρακτηριστικά Δυναμικού Προγραμματισμού Θεμελιώδης Ιδιότητα του ΔΠ!!! Αυτό σημαίνει ότι υπάρχει διάταξη των υποπροβλημάτων και μια σχέση που δείχνει πως θα λυθεί ένα υποπρόβλημα έχοντας τις λύσεις «μικροτέρων» υποπροβλημάτων, δηλαδή, υποπροβλημάτων που εμφανίζονται νωρίτερα στη διάταξη! Διάταξη: Σχέση: Α Β C D Μεγάλο-ΥΠ = f(μικρότερα-υπ) E

33 Δυναμικός Προγραμματισμός Χαρακτηριστικά Δυναμικού Προγραμματισμού Διαίρει-και-Βασίλευε vs ΔΠ!!!

34 Δυναμικός Προγραμματισμός Χαρακτηριστικά Δυναμικού Προγραμματισμού Διαίρει-και-Βασίλευε vs ΔΠ!!! Στην τεχνική Δ-και-Β ένα Π μεγέθους n εκφράζεται συναντήσει υποπροβλημάτων Π(), Π(),, Π(k) που είναι σημαντικά μικρότερα, για παράδειγμα n/, και δεν επικαλύπτονται!!! Λόγω αυτής της απότομης μείωσης του μεγέθους του Π, το δένδρο της αναδρομής έχει: O(logn) βάθος O(n) πλήθος κόμβων!!!

35 Δυναμικός Προγραμματισμός Χαρακτηριστικά Δυναμικού Προγραμματισμού Διαίρει-και-Βασίλευε vs ΔΠ!!! Αντίθετα, στην τεχνική του ΔΠ τα υποπροβλήματα Π(), Π(),, Π(k) είναι ελάχιστα μικρότερα, για παράδειγμα το Π(i) βασίζεται στο Π(i-), και επικαλύπτονται!!! Π() Εδώ συνήθως, το δένδρο της αναδρομής έχει: Π() Π() Π() O(n) βάθος O(cn) πλήθος κόμβων, c> Π() Π() Π() Εκθετικό πλήθος κόμβων!!! Π()

36 Δυναμικός Προγραμματισμός Χαρακτηριστικά Δυναμικού Προγραμματισμού Ο ΔΠ είναι μια πολύ ισχυρή αλγοριθμική τεχνική!!!... με ευρύτατο πεδίο εφαρμογών!!! Συνοπτικά, στο ΔΠ: υπολογίζουμε ένα σύνολο υποπροβλημάτων του Π, λύνουμε κάθε υποπρόβλημα μία μόνο φορά, αποθηκεύουμε τη λύση του, και χρησιμοποιούμε αυτή, εάν χρειαστεί να το ξαναλύσουμε!!! Αποφεύγουμε έτσι να λύνουμε ξανά-και-ξανά πολλές φορές τα ίδια-και-ίδια υποπροβλήματα!!!

37 Προβλήματα Μέγιστες Αύξουσες Υποακολουθίες Διορθωτική Απόσταση Πολλαπλασιασμός Ακολουθίας Πινάκων Ελάχιστες Αξιόπιστες Διαδρομές Πανζευκτικές Ελάχιστες Διαδρομές Σακίδιο (knap-sack)

38 Δυναμικός Προγραμματισμός - Προβλήματα Μέγιστες Αύξουσες Υποακολουθίες Πρόβλημα Μας δίδεται μια ακολουθία n αριθμών Α = (a, a,, an) και μας ζητείται να υπολογίσουμε μία (γνησίως) αύξουσα υπακολουθία της Α με το μέγιστο μήκος. Μια ακολουθία Α = (ai, ai,, aik) είναι γνησίως αύξουσα υπακολουθία της Α εάν: ai < ai < < aik και i < i < < ik n

39 Δυναμικός Προγραμματισμός - Προβλήματα Μέγιστες Αύξουσες Υποακολουθίες Παράδειγμα Μια μέγιστη γνησίως αύξουσα υπακολουθία της Α = (,, 8,,,,, 7) είναι η Α = (,,, ) με μήκος. Οι υπακολουθίες Β = (,,, ) και C = (,,, 7) της Α δεν είναι ζητούμενες διότι δεν είναι γνησίως αύξουσες.

40 Μέγιστες Αύξουσες Υποακολουθίες Θα χρησιμοποιήσουμε ΔΠ Α = (,, 8,,,,, 7) 8 7 Θεμελιώδη Ιδιότητα του ΔΠ!!! Υπάρχει μια διάταξη των υποπροβλημάτων, και μια σχέση που δείχνει πως θα λυθεί ένα υποπρόβλημα έχοντας τις λύσεις «μικροτέρων» υποπροβλημάτων!!!

41 Μέγιστες Αύξουσες Υποακολουθίες Θα χρησιμοποιήσουμε ΔΠ Α = (,, 8,,,,, 7) 8 7 Επομένως Θεμελιώδες Κρίσιμο Ερώτημα!!! Ποια είναι τα υποπροβλήματα?... που θα μας οδηγήσουν σε μια βέλτιστη λύση του προβλήματός μας!!!

42 Μέγιστες Αύξουσες Υποακολουθίες Θα χρησιμοποιήσουμε ΔΠ Α = (,, 8,,,,, 7) 8 7 Μπορούμε να «συρρικνώσουμε» το αρχικό πρόβλημα με τον εξής τρόπο: Μπορούμε να εξετάσουμε τον υπολογισμό μέγιστων υπακολουθιών σε ακολουθίες Α(i) που αποτελούνται από τα i πρώτα στοιχεία της A, για i n

43 Μέγιστες Αύξουσες Υποακολουθίες Θα χρησιμοποιήσουμε ΔΠ Α = (,, 8,,,,, 7) 8 Ξεκινάμε λύνοντας το πρόβλημα στην ακολουθία Α() = () κατόπιν στην Α() = (, ), και τέλος στην Α(8) = (,, 8,,,,, 7)!!! 7

44 Μέγιστες Αύξουσες Υποακολουθίες Θα χρησιμοποιήσουμε ΔΠ Α = (,, 8,,,,, 7) 8 Ξεκινάμε λύνοντας το πρόβλημα στην ακολουθία Α() = () κατόπιν στην Α() = (, ) τέλος στην Α(8) = (,, 8,,,,, 7)!!! 7

45 Μέγιστες Αύξουσες Υποακολουθίες Θα χρησιμοποιήσουμε ΔΠ Α = (,, 8,,,,, 7) 8 7 Ξεκινάμε λύνοντας το πρόβλημα στην ακολουθία Α() = () κατόπιν στην Α() = (, ) στην Α() = (,, 8) και τέλος στην Α(8) = (,, 8,,,,, 7)!!! Λύση : (,,, 7)

46 Μέγιστες Αύξουσες Υποακολουθίες Θα χρησιμοποιήσουμε ΔΠ Α = (,, 8,,,,, 7) 8 7 Ξεκινάμε λύνοντας το πρόβλημα στην ακολουθία Α() = () κατόπιν στην Α() = (, ) στην Α() = (,, 8) και τέλος στην Α(8) = (,, 8,,,,, 7)!!! Λύση : (,,, 7)

47 Μέγιστες Αύξουσες Υποακολουθίες Θα χρησιμοποιήσουμε ΔΠ Α = (,, 8,,,,, 7) 8 7 Ορίζουμε: L(i) = μήκος της μέγιστης υπακολουθίας της ακολουθίας Α(i), i n

48 Μέγιστες Αύξουσες Υποακολουθίες Θα χρησιμοποιήσουμε ΔΠ Α = (,, 8,,,,, 7) 8 Ερώτημα!!! 7 L(i) Πως βρίσκουμε την βέλτιστη λύση για το υποπρόβλημα Α(i) έχοντας τις βέλτιστες λύσεις των υποπροβλημάτων Α(), Α(),, Α(i-)?

49 Μέγιστες Αύξουσες Υποακολουθίες Θα χρησιμοποιήσουμε ΔΠ Α = (,, 8,,,,, 7) 8 Ερώτημα!!! 7 L(i) Είναι απλό!!!... Αρκεί να εκφράσουμε το υποπρόβλημα Α(i) συναρτήσει των μικρότερων υποπροβλημάτων Α(), Α(),, Α(i-)!!!

50 Μέγιστες Αύξουσες Υποακολουθίες Θα χρησιμοποιήσουμε ΔΠ Α = (,, 8,,,,, 7) 8 Ορίστε πως!!! L(i) = + max k i-{l(k) : A[k] < A[i]} L(i) 7

51 Μέγιστες Αύξουσες Υποακολουθίες Αλγόριθμος Longest-Subsequence(A[..n]). C() =. for i to n for k to i- Συνολική Πολυπλοκότητα O(n) L[i] + max{l[k] : A[k] < A[i]}. return L[n]

52 Μέγιστες Αύξουσες Υποακολουθίες L(i) + max{l(k) : A[k] < A[i]} Παράδειγμα L() L() 8 L() + max{} L[] + = 7 όπου, ως συνήθως, η σύμβασή μας είναι ότι η μέγιστη τιμή ενός κενού συνόλου είναι!!!

53 Μέγιστες Αύξουσες Υποακολουθίες L(i) + max{l(k) : A[k] < A[i]} Παράδειγμα 8 L() L() L() L() + max{l(), L()} L[] + max{, } = 7

54 Μέγιστες Αύξουσες Υποακολουθίες L(i) + max{l(k) : A[k] < A[i]} Παράδειγμα 8 L() L() L() L() L() L() L() + max{l(), L(), L()} L[] + max{,, } = 7

55 Μέγιστες Αύξουσες Υποακολουθίες L(i) + max{l(k) : A[k] < A[i]} Παράδειγμα 8 L() L() L() L() L() L() L(7) 7 L(7) + max{l(), L(), L(), L(), L(), L()} L[7] + max{,,,,, } =

56 Μέγιστες Αύξουσες Υποακολουθίες L(i) + max{l(k) : A[k] < A[i]} Παράδειγμα 8 7 L() L() L() L() L() L() L(7) L(8) L(8) + max{l(), L(), L(), L(), L()} L[8] + max{,,,, } =

57 Μέγιστες Αύξουσες Υποακολουθίες L(i) + max{l(k) : A[k] < A[i]} Παράδειγμα 8 7 L(8) Α = (,, 8,,,,, 7) Λύση! (,,, 7)

58 Μέγιστες Αύξουσες Υποακολουθίες Εναλλακτική Λύση 8 Α = (,, 8,,,,, 7) Δημιουργούμε ένα γράφημα G με ΟΛΕΣ τις επιτρεπτές μεταβάσεις!!! 7

59 Μέγιστες Αύξουσες Υποακολουθίες Εναλλακτική Λύση 8 Παρατηρήστε ότι: () Το γράφημα G είναι DAG!!! 8 7 7

60 Μέγιστες Αύξουσες Υποακολουθίες Εναλλακτική Λύση 8 Παρατηρήστε ότι: () Το γράφημα G είναι DAG!!! () Υπάρχει - αντιστοιχία ανάμεσα στις αύξουσες υπακολουθίες και στις διαδρομές αυτού του DAG!!! 8 7 7

61 Μέγιστες Αύξουσες Υποακολουθίες Εναλλακτική Λύση 8 Παρατηρήστε ότι: () Το γράφημα G είναι DAG!!! () Υπάρχει - αντιστοιχία ανάμεσα στις αύξουσες υπακολουθίες και στις διαδρομές αυτού του DAG!!! Επομένως, το πρόβλημά μας ανάγεται στον υπολογισμό της μεγαλύτερης διαδρομής στο γράφημα G!!! Υπολογισμός: Μεγαλύτερης διαδρομής σε DAG!!! 7

62 Μέγιστες Αύξουσες Υποακολουθίες Εναλλακτική Λύση Μέγιστη Διαδρομή σε DAG 8 7

63 Μέγιστες Αύξουσες Υποακολουθίες Εναλλακτική Λύση Μέγιστη Διαδρομή σε DAG 8 7

64 Μέγιστες Αύξουσες Υποακολουθίες Εναλλακτική Λύση Μέγιστη Διαδρομή σε DAG 8 7

65 Μέγιστες Αύξουσες Υποακολουθίες Εναλλακτική Λύση Μέγιστη Διαδρομή σε DAG 8 7

66 Μέγιστες Αύξουσες Υποακολουθίες Εναλλακτική Λύση Μέγιστη Διαδρομή σε DAG 8 7

67 Μέγιστες Αύξουσες Υποακολουθίες Εναλλακτική Λύση Μέγιστη Διαδρομή σε DAG 8 7

68 Μέγιστες Αύξουσες Υποακολουθίες Εναλλακτική Λύση Μέγιστη Διαδρομή σε DAG 8 7

69 Μέγιστες Αύξουσες Υποακολουθίες Εναλλακτική Λύση Μέγιστη Διαδρομή σε DAG 8 7

70 Μέγιστες Αύξουσες Υποακολουθίες Εναλλακτική Λύση Μέγιστη Διαδρομή σε DAG 8 i L(i) L(i) = + max{l(k) : (k,i) E(G)}

71 Μέγιστες Αύξουσες Υποακολουθίες Εναλλακτική Λύση 8 Ορίστε ο αλγόριθμος:. για i =,,, n: L(i) = + max{l(k) : (k,i) E(G)}. return max i n{l(i)} L(i) = είναι το μήκος της μεγαλύτερης διαδρομής ή, ισοδύναμα, της μέγιστης αύξουσας υπακολουθίας, που τελειώνει στον κόμβο i =,,, n 7

72 Μέγιστες Αύξουσες Υποακολουθίες Εναλλακτική Λύση Α = (,, 8,,,,, 7) 8 7 Η μέγιστη αύξουσα υπακολουθία έχει μήκος

73 Μέγιστες Αύξουσες Υποακολουθίες Εναλλακτική Λύση Α = (,, 8,,,,, 7) 8 7 Ποια είναι η υπακολουθία?

74 Μέγιστες Αύξουσες Υποακολουθίες Εναλλακτική Λύση Α = (,, 8,,,,, 7) 8 Ποια είναι η υπακολουθία? 7

75 Μέγιστες Αύξουσες Υποακολουθίες Εναλλακτική Λύση Α = (,, 8,,,,, 7) 8 Ποια είναι η υπακολουθία? 7

76 Μέγιστες Αύξουσες Υποακολουθίες Εναλλακτική Λύση Α = (,, 8,,,,, 7) 8 Ποια είναι η υπακολουθία? 7

77 Μέγιστες Αύξουσες Υποακολουθίες Εναλλακτική Λύση Α = (,, 8,,,,, 7) 8 Ποια είναι η υπακολουθία? 7

78 Μέγιστες Αύξουσες Υποακολουθίες Εναλλακτική Λύση Α = (,, 8,,,,, 7) Λύση!!!... η υπακολουθία: (,,, 7) 7 Ποια είναι η υπακολουθία?

79 Μέγιστες Αύξουσες Υποακολουθίες Γιατί είναι ΔΠ? για i =,,, n: L(i) = + max{l(k) : (k,i) E(G)} Ορίσαμε, υποπροβλήματα: {L(i) : i n} που έχουν τη Θεμελιώδης Ιδιότητα του ΔΠ!!! Υπάρχει μια διάταξη των υποπροβλημάτων, και μια σχέση που δείχνει πως θα λυθεί ένα υποπρόβλημα έχοντας τις λύσεις «μικροτέρων» υποπροβλημάτων!!!

80 Μέγιστες Αύξουσες Υποακολουθίες Πολυπλοκότητα για i =,,, n: L(i) = + max{l(k) : (k,i) E(G)} Το αρχικό μας πρόβλημα λύνεται με ένα «πέρασμα» των n = A κόμβων Ο υπολογισμός του L(i) απαιτεί χρόνο ανάλογο του βαθμού εισόδου του κόμβου i του G Συνολικά, χρόνο τάξης Ε(G) O(n)

81 Δυναμικός Προγραμματισμός - Προβλήματα Διορθωτική Απόσταση Κίνητρο Όταν ένας ελεγκτής ορθογραφίας συναντά μια πιθανή ανορθόγραφη λέξη Λεξικό αα αn Ποια είναι η κατάλληλη έννοια της εγγύτητας δύο λέξεων ή συμβολοσειρών? εξετάζει το λεξικό του για άλλες λέξεις που είναι «κοντά» στην ανορθόγραφη!! ββ βm γγ γk ωω ωp

82 Δυναμικός Προγραμματισμός - Προβλήματα Διορθωτική Απόσταση Κίνητρο Ένα μέτρο της εγγύτητας ανάμεσα σε δύο λέξεις ή συμβολοσειρές α και β, είναι οι διορθώσεις που πρέπει να κάνουμε, έτσι ώστε α β ή β α Ποιες διορθώσεις μπορούμε να κάνουμε? Εισαγωγή συμβόλου Διαγραφή συμβόλου Αντικατάσταση συμβόλου πράξεις σε συμβολοσειρές

83 Δυναμικός Προγραμματισμός - Προβλήματα Διορθωτική Απόσταση Παράδειγμα Έστω οι δύο λέξεις SUNNY και SNOWY. Μπορούμε να πάρουμε την μία από την άλλη με διαφορετικά σύνολα αλλαγών/πράξεων : S U N N Y S N O W Y S U N N Y S N O W Y S U N N Y S N O W Y

84 Δυναμικός Προγραμματισμός - Προβλήματα Διορθωτική Απόσταση Παράδειγμα Έστω οι δύο λέξεις SUNNY και SNOWY. Μπορούμε να πάρουμε την μία από την άλλη με διαφορετικά σύνολα αλλαγών/πράξεων S U N N - Y S U N - - N Y S N O W Y - S N O W - Y

85 Δυναμικός Προγραμματισμός - Προβλήματα Διορθωτική Απόσταση Παράδειγμα Έστω οι δύο λέξεις SUNNY και SNOWY. Μπορούμε να πάρουμε την μία από την άλλη με διαφορετικά σύνολα αλλαγών/πράξεων S U N N - Y S U N - - N Y S U N N - Y S U N - - N Y

86 Δυναμικός Προγραμματισμός - Προβλήματα Διορθωτική Απόσταση Παράδειγμα Έστω οι δύο λέξεις SUNNY και SNOWY. Μπορούμε να πάρουμε την μία από την άλλη με διαφορετικά σύνολα αλλαγών/πράξεων S U N N - Y S U N - - N Y S N O W Y - S N O W - Y

87 Δυναμικός Προγραμματισμός - Προβλήματα Διορθωτική Απόσταση Παράδειγμα Έστω οι δύο λέξεις SUNNY και SNOWY. Μπορούμε να πάρουμε την μία από την άλλη με διαφορετικά σύνολα αλλαγών/πράξεων S - N O W Y - S N O W - Y S - N O W Y - S N O W - Y

88 Δυναμικός Προγραμματισμός - Προβλήματα Διορθωτική Απόσταση Παράδειγμα Έστω οι δύο λέξεις SUNNY και SNOWY. Μπορούμε να πάρουμε την μία από την άλλη με διαφορετικά σύνολα αλλαγών/πράξεων S U N N - Y S - N O W Y S N O W Y S U N N Y

89 Δυναμικός Προγραμματισμός - Προβλήματα Διορθωτική Απόσταση Παράδειγμα Έστω οι δύο λέξεις SUNNY και SNOWY. Μπορούμε να πάρουμε την μία από την άλλη με διαφορετικά σύνολα αλλαγών/πράξεων S U N N - Y S U N O W Y S N O W Y Εισαγωγή U S U N N Y

90 Δυναμικός Προγραμματισμός - Προβλήματα Διορθωτική Απόσταση Παράδειγμα Έστω οι δύο λέξεις SUNNY και SNOWY. Μπορούμε να πάρουμε την μία από την άλλη με διαφορετικά σύνολα αλλαγών/πράξεων S U N N - Y S U N Ν W Y S N O W Y S U N N Y Εισαγωγή U Αντικατάσταση του O σε Ν

91 Δυναμικός Προγραμματισμός - Προβλήματα Διορθωτική Απόσταση Παράδειγμα Έστω οι δύο λέξεις SUNNY και SNOWY. Μπορούμε να πάρουμε την μία από την άλλη με διαφορετικά σύνολα αλλαγών/πράξεων S U N N - Y S U N Ν - Y S N O W Y S U N N Y Εισαγωγή U Αντικατάσταση του O σε Ν Διαγραφή του W

92 Δυναμικός Προγραμματισμός - Προβλήματα Διορθωτική Απόσταση Ορίζουμε ως κόστος διόρθωσης δύο συμβολοσειρών α και β, το πλήθος των πράξεων που απαιτούνται για να πάρουμε από την μία στην άλλη!!! S U N N - Y S U N - - N Y S - N O W Y - S N O W - Y Κόστος Κόστος

93 Δυναμικός Προγραμματισμός - Προβλήματα Διορθωτική Απόσταση To ελάχιστο κόστος διόρθωσης δύο συμβολοσειρών ονομάζεται διορθωτική απόσταση (edit distance) αυτών. S U N N - Y S U N - - N Y S - N O W Y - S N O W - Y Κόστος Κόστος

94 Δυναμικός Προγραμματισμός - Προβλήματα Διορθωτική Απόσταση To ελάχιστο κόστος διόρθωσης δύο συμβολοσειρών ονομάζεται διορθωτική απόσταση (edit distance) αυτών. S U N N - Y S - N O W Y Κόστος Ε(SUNNY, SNOWY) =

95 Δυναμικός Προγραμματισμός - Προβλήματα Διορθωτική Απόσταση Πρόβλημα Μας δίνονται δύο συμβολοσειρές α και β με n και m σύμβολα, αντίστοιχα, α, α,, αn και β, β,, βm και μας ζητείται να υπολογίσουμε την διορθωτική απόσταση αυτών. Ε(α, β)

96 Διορθωτική Απόσταση Στο ΔΠ το πιο κρίσιμο ερώτημα είναι το εξής: Ποια είναι τα υποπροβλήματα? Όταν αυτά επιλέγονται ώστε να έχουν την Θεμελιώδη Ιδιότητα του ΔΠ!!! Υπάρχει μια διάταξη των υποπροβλημάτων, και μια σχέση που δείχνει πως θα λυθεί ένα υποπρόβλημα έχοντας τις λύσεις «μικροτέρων» υποπροβλημάτων!!! η διατύπωση ενός αλγόριθμου είναι εύκολη υπόθεση!!! Τότε, επαναληπτικά επιλύουμε τα υποπροβλήματα κατά σειρά αυξανόμενου μεγέθους!

97 Διορθωτική Απόσταση Ποιο είναι ένα καλό υποπρόβλημα? Θέλουμε την Ε(α,β) ανάμεσα στις δύο συμβολοσειρές α[..n]=(α, α,, αn) και β[..m]= (β, β,, βm) Είναι αυτό που «προχωράει» τη λύση του συνολικού προβλήματος!!! Πρέπει να επινοήσουμε κάτι έξυπνο! Τι θα λέγατε να εξετάσουμε την Ε() σε προθέματα (prefix) των α και β!!!!!!!

98 Διορθωτική Απόσταση Ας πάρουμε δύο προθέματα (prefix) των α και β, μήκους i n και j m : α[..i]=(α, α,, αi) και β[..j]= (β, β,, βj) και ας συμβολίσουμε Ε(i,j) την διορθωτική απόσταση αυτού του υποπροβλήματος Παράδειγμα: E X P O N E N T I A L α[..7] P O L Y N O M I A L β[..] Το υποπρόβλημα: Ε(7,)

99 Διορθωτική Απόσταση Ας πάρουμε δύο προθέματα (prefix) των α και β, μήκους i n και j m : α[..i]=(α, α,, αi) και β[..j]= (β, β,, βj) και ας συμβολίσουμε Ε(i,j) την διορθωτική απόσταση αυτού του υποπροβλήματος Παράδειγμα: E X P O N E N T I A L α[..] P O L Y N O M I A L β[..] Το υποπρόβλημα: Ε(,)

100 Διορθωτική Απόσταση Ας πάρουμε δύο προθέματα (prefix) των α και β, μήκους i n και j m : α[..i]=(α, α,, αi) και β[..j]= (β, β,, βj) και ας συμβολίσουμε Ε(i,j) την διορθωτική απόσταση αυτού του υποπροβλήματος Παράδειγμα: E X P O N E N T I A L α[..] P O L Y N O M I A L β[..] Το υποπρόβλημα: Ε(,)

101 Διορθωτική Απόσταση Ας πάρουμε δύο προθέματα (prefix) των α και β, μήκους i n και j m : α[..i]=(α, α,, αi) και β[..j]= (β, β,, βj) και ας συμβολίσουμε Ε(i,j) την διορθωτική απόσταση αυτού του υποπροβλήματος Παράδειγμα: E X P O N E N T I A L α[..] P O L Y N O M I A L β[..] ΤΕΛΙΚΟΣ ΣΤΟΧΟΣ: E(, )

102 Διορθωτική Απόσταση Ας πάρουμε δύο προθέματα (prefix) των α και β, μήκους i n και j m : α[..i]=(α, α,, αi) και β[..j]= (β, β,, βj) και ας συμβολίσουμε Ε(i,j) την διορθωτική απόσταση αυτού του υποπροβλήματος Λύση: E X P O N E N - T I A L - - P O L Y N O M I A L ΤΕΛΙΚΟΣ ΣΤΟΧΟΣ: E(, ) =

103 Διορθωτική Απόσταση Θα πρέπει να εκφράσουμε το υποπρόβλημα Ε(i,j) συναρτήσει μικρότερων υποπροβλημάτων!!! Τι γνωρίζουμε για την βέλτιστη διόρθωση (στοίχιση) ανάμεσα στις συμβολοσειρές α[..i] και β[..j]? Γνωρίζουμε ότι για την δεξιότερη στήλη ισχύει μία από τις ακόλουθες τρεις περιπτώσεις : α[i] - ή β[j] ή α[i] β[j]

104 Διορθωτική Απόσταση Το κόστος σε κάθε περίπτωση : α[i] - ή β[j] ή α[i] β[j]

105 Διορθωτική Απόσταση Το κόστος σε κάθε περίπτωση : α[i] η Περίπτωση: ή β[j] ή α[i] β[j] Επιφέρει κόστος Και απομένει να διορθώσουμε (στοιχίσουμε) τις συμβολοσειρές α[..i-] και β[..j] Όμως, αυτό είναι ακριβώς το υποπρόβλημαμα Ε(i-, j)

106 Διορθωτική Απόσταση Το κόστος σε κάθε περίπτωση : α[i] η Περίπτωση: ή β[j] ή α[i] β[j] Επιφέρει κόστος Και απομένει να διορθώσουμε (στοιχίσουμε) τις συμβολοσειρές α[..i] και β[..j-] Όμως, αυτό είναι ακριβώς το υποπρόβλημα Ε(i, j-)

107 Διορθωτική Απόσταση Το κόστος σε κάθε περίπτωση : α[i] η Περίπτωση: ή β[j] ή α[i] β[j] Επιφέρει κόστος (εάν α[i] β[j]) ή κόστος (εάν α[i]=β[j]) Και απομένει να διορθώσουμε τις α[..i-] και β[..j-] Τώρα, το υποπρόβλημα είναι ακριβώς το Ε(i-, j-)

108 Διορθωτική Απόσταση Επομένως, έχουμε εκφράσει το Ε(i, j) συναρτήσει τριών μικροτέρων υποπροβλημάτων: Ε(i-, j) Ε(i, j-) Ε(i-, j-) Όμως, δεν γνωρίζουμε ποιο από αυτά είναι σωστό!!! Οπότε θα τα δοκιμάσουμε όλα και θα επιλέξουμε το καλύτερο: Ε(i,j) = min {+Ε(i-,j), +Ε(i,j-), { } +Ε(i-,j-)}

109 Διορθωτική Απόσταση Αλγόριθμος Edit-distance(a[..n],b[..m]). Initialize(). for i to n for j to m for i to n E(i,) = i for j to m E(,j) = j E(i,j) min {+E(i-,j), +E(i,j-), { } +E(i-,j-)}. return E(n,m)

110 Διορθωτική Απόσταση Αλγόριθμος Edit-distance(a[..n],b[..m]). Initialize(). for i to n for j to m Συνολική Πολυπλοκότητα E(i,j) min {+E(i-,j), +E(i,j-), { } +E(i-,j-)}. return E(n,m) O(nm)

111 Διορθωτική Απόσταση Παράδειγμα Δύο συμβολοσειρές E X P O N E N T I A L Υποπρόβλημα Ε(, ) P O L Y N O M I A L Το Ε(,) αντιστοιχεί στις συμβολοσειρές EXPO και POL Εδώ, θέσαμε το Ερώτημα!!! Τι ισχύει για την δεξιότερη στήλη σε μια βέλτιστη λύση του υποπροβλήματος Ε(,)?

112 Διορθωτική Απόσταση Παράδειγμα Δύο συμβολοσειρές Υποπρόβλημα Ε(, ) E X P O N E N T I A L P O L Y N O M I A L Τρεις περιπτώσεις μπορούν να ισχύουν: O - ή L ή O L Άρα, Ε(,) = min{+ε(,), +Ε(,), +Ε(,)}

113 Διορθωτική Απόσταση Παράδειγμα Οι λύσεις όλων των υποπροβλημάτων Ε(i,j) σχηματίζουν ένα διδιάστατο πίνακα ΛΥΣΗ Ε(,) = P O L Y N O M I A L 7 8 E 7 8 X 7 8 P 7 8 O 7 8 N 7 8 E 7 8 N T I A L

114 Διορθωτική Απόσταση Παράδειγμα Γενικά, όλα τα υποπροβλήματα Ε(i,j) σχηματίζουν έναν n m διδιάστατο πίνακα E X P O L Y N O j- j j+ M I A L m- m P O N i- E i N i+ Ε(i,j) T I ΛΥΣΗ A n- L n Διορθωτική απόσταση = Ε(n, m) Ε(n,m)

115 Διορθωτική Απόσταση Παράδειγμα Αλγόριθμος Edit-distance(a[..],b[..]) a[..] = E X P O N E N T I A L b[..] = P O L Y N O M I A L return E(,) = E X P O N E N - T I A L - - P O L Y N O M I A L

116 Δυναμικός Προγραμματισμός - Προβλήματα Πολλαπλασιασμός Ακολουθίας Πινάκων Έστω ότι θέλουμε να πολλαπλασιάσουμε πίνακες Α B C D διαστάσεων,, και Ο πολλαπλασιασμός πινάκων δεν είναι αντιμεταθετός (Α B B Α), αλλά είναι προσεταιριστηκός, που σημαίνει: (Α B) C = Α (B C) Μπορούμε να υπολογίσουμε το γινόμενο των πινάκων μας με πολλούς διαφορετικούς τρόπους!

117 Δυναμικός Προγραμματισμός - Προβλήματα Πολλαπλασιασμός Ακολουθίας Πινάκων Έστω ότι θέλουμε να πολλαπλασιάσουμε πίνακες Α B C D διαστάσεων,, και Ερώτημα!!! Υπάρχει διαφορά? Εάν ΝΑΙ!!! Ποιος τρόπος είναι ο καλύτερος?

118 Δυναμικός Προγραμματισμός - Προβλήματα Πολλαπλασιασμός Ακολουθίας Πινάκων Πολλαπλασιασμός Α B C D O πολλαπλασιασμός δύο πινάκων Α B διαστάσεων n m και m p απαιτεί n m p πολλαπλασιασμούς Διάταξη Παρενθέσεων Α Β C D Υπολογισμός Κόστους Κόστος Α ((B C) D) + +. (Α (B C)) D (Α B) (C D)

119 Δυναμικός Προγραμματισμός - Προβλήματα Πολλαπλασιασμός Ακολουθίας Πινάκων Πρόβλημα Μας δίδεται μια ακολουθία n πινάκων (συμβατών διαστάσεων) Α, Α,, Αn και μας ζητείται να υπολογίσουμε το γινόμενο Α Α Αn κάνοντας το ελάχιστο πλήθος πολλαπλασιασμών.

120 Πολλαπλασιασμός Ακολουθίας Πινάκων Από το εισαγωγικό παράδειγμα είδαμε ότι η σειρά των πολλαπλασιασμών επηρεάζει πολύ τον χρόνο επίλυσης του προβλήματος!!! Διάταξη Παρενθέσεων Α ((B C) D) (Α (B C)) D (Α B) (C D) Υπολογισμός Κόστους Κόστος Ερώτημα!!! Να ακολουθήσουμε άπληστη προσέγγιση? 7.??????

121 Πολλαπλασιασμός Ακολουθίας Πινάκων Άπληστη Τεχνική? Κανόνας : Επίλεξε κάθε φορά τον φθηνότερο διαθέσιμο πολλαπλασιασμό!!! Α Β Διάταξη Παρενθέσεων Υπολογισμός Κόστους Α ((B C) D) + + (Α (B C)) D + + D (Α B) (C D) + + C Φθηνότερος πολλαπλασιασμός : B C με κόστος Α B C D Α (B C) D Κόστος.. 7. Αποτυχία!!!

122 Πολλαπλασιασμός Ακολουθίας Πινάκων Άπληστη Τεχνική? Κανόνας : Επίλεξε κάθε φορά τον ακριβότερο διαθέσιμο πολλαπλασιασμό!!! Α Διάταξη Παρενθέσεων Υπολογισμός Κόστους Κόστος Β (Α B) C + Α (B C) + 8 C Ακριβότερος πολλαπλασιασμός : B C με κόστος Α B C Α (B C) Αποτυχία!!!

123 Πολλαπλασιασμός Ακολουθίας Πινάκων Άπληστη Τεχνική? Κανόνας : Επίλεξε τον πολλαπλασιασμό που απαλείφει την μεγαλύτερη διάσταση!!! Α Διάταξη Παρενθέσεων Υπολογισμός Κόστους Κόστος Β (Α B) C + Α (B C) + 8 C Πολλαπλασιασμός που απαλείφει μεγαλύτερης διάστασης : Α Β Α B C (Α B) C Αποτυχία!!!

124 Πολλαπλασιασμός Ακολουθίας Πινάκων Δυναμικός Προγραμματισμός!!! Πως θα βρούμε τη βέλτιστη σειρά των πολλαπλασιασμών όταν θέλουμε να υπολογίσουμε το γινόμενο n πινάκων Α Α Α Αn- Αn διαστάσεων m m, m m, m m,, mn- mn-, mn- mn. Παρατήρηση Μια διάταξη παρενθέσεων μπορεί να αναπαρασταθεί πολύ φυσικά με ένα δυαδικό δένδρο: οι πίνακες αντιστοιχούν στα φύλλα οι ενδιάμεσοι κόμβοι είναι τα ενδιάμεσα γινόμενα η ρίζα είναι το τελικό αποτέλεσμα

125 Πολλαπλασιασμός Ακολουθίας Πινάκων Παράδειγμα ((Α B) C) D) D Α ((B C) D) Α D D C Α Β (Α (B C)) D Β C Α Β C

126 Πολλαπλασιασμός Ακολουθίας Πινάκων Δένδρα - Διατάξεις ((Α B) C) D) D Α ((B C) D) Α D D C Α Β (Α (B C)) D Β C Α Β C Οι δυνατές διατάξεις με τις οποίες μπορεί να εκτελεστεί ο πολλαπλασιασμός n πινάκων αντιστοιχούν στα διαφορετικά πλήρη δυαδικά δένδρα n κόμβων Πόσα είναι τα δένδρα αυτά? Ω(n) Δυστυχώς, το πλήθος τους είναι εκθετικό!!!

127 Πολλαπλασιασμός Ακολουθίας Πινάκων Δένδρα - Διατάξεις ((Α B) C) D) D Α ((B C) D) Α D D C Α Β (Α (B C)) D Β C Α Β C Ένα από τα δένδρα αυτά είναι βέλτιστο!! Εάν το δένδρο T είναι βέλτιστο, τότε είναι βέλτιστα και τα υποδένδρα Τ και Τ της ρίζας του. Ερώτηση! Ποια είναι τα υποπροβλήματα που αντιστοιχούν στα υποδένδρα Τ και Τ του βέλτιστου δένδρου T?

128 Πολλαπλασιασμός Ακολουθίας Πινάκων Tα υποπροβλήματα που αντιστοιχούν στα υποδένδρα Τ και Τ της ρίζας ενός βέλτιστου δένδρου T είναι γινόμενα της μορφής: Α Α Αk (Τ) Αk+ Αk+ Αn (Τ) Γενικά, το υποπρόβλημα που αντιστοιχεί σε ένα υποδένδρο ενός βέλτιστου δένδρου T είναι γινόμενο της μορφής: Αi Αi+ Αj = Αi..j

129 Πολλαπλασιασμός Ακολουθίας Πινάκων Ορίζουμε C[i,j] = min κόστος του πολλαπλασιασμού Αi Αi+ Αj όπου κόστος είναι το πλήθος των πολλαπλασιασμών αυτού του υποπροβλήματος Το μικρότερο υποπρόβλημα το παίρνουμε όταν i = j, όπου σε αυτή την περίπτωση δεν έχουμε κάτι να πολλαπλασιάσουμε, οπότε C[i,j]=

130 Πολλαπλασιασμός Ακολουθίας Πινάκων Θεωρούμε το βέλτιστο υποδένδρο Τij, j > i, για το γινόμενο Αi Αi+ Αj Η ρίζα του υποδένδρου Τij χωρίσει το γινόμενο Αi Αi+ Αj Α Αi Αi+ Αk Β C Αk+ Αk+ Αj σε δύο τμήματα, για κάποιο k, i k j.

131 Πολλαπλασιασμός Ακολουθίας Πινάκων Τότε, το κόστος C[i,j] του υποδένδρου Τij θα είναι: το κόστος υπολογισμού των μερικών γινομένων Αi Αi+ Αk και Αk+ Αk+ Αj συν το κόστος του πολλαπλασιασμού των πινάκων Αi..k και Αk+..j που είναι mi- mk mj. Διάσταση Αi mi- mi Πρέπει απλώς να βρούμε το σημείο χωρισμού k για το οποίο το κόστος C[i,j] είναι το μικρότερο!!!

132 Πολλαπλασιασμός Ακολουθίας Πινάκων Τότε, το κόστος C[i,j] του υποδένδρου Τij θα είναι: το κόστος υπολογισμού των μερικών γινομένων Αi Αi+ Αk και Αk+ Αk+ Αj συν το κόστος του πολλαπλασιασμού των πινάκων Αi..k και Αk+..j που είναι mi- mk mj. Διάσταση Αi mi- mi C[i,j] = min i k j {C[i,k] + C[k+,j] + mi- mk mj}

133 Πολλαπλασιασμός Ακολουθίας Πινάκων Σχέση που δίδει τη λύση ενός υποπροβλήματος από «μικρότερα» υποπροβλήματα : C[i,j] = min i k j {C[i,k] + C[k+,j] + mi- mk mj} Αναδρομή? ΟΧΙ, ευχαριστώ!!! Ω(n)

134 Πολλαπλασιασμός Ακολουθίας Πινάκων Σχέση που δίδει τη λύση ενός υποπροβλήματος από «μικρότερα» υποπροβλήματα C[i,j] = min i k j {C[i,k] + C[k+,j] + mi- mk mj} Δυναμικός Προγραμματισμός? ΝΑΙ, θα ήθελα!!! Ερώτηση: Πόσα υποπροβλήματα έχω? Ένα για κάθε ζεύγος (i, j) O(n)

135 Πολλαπλασιασμός Ακολουθίας Πινάκων Αλγόριθμος Matrix-Chain(). for i to n: C(i,i)=. for s to n- for i to n-s j i + s for k i to j Συνολική Πολυπλοκότητα O(n) C[i,j] min{c[i,k]+c[k+,j]+mi- mk mj}. return C[,n]

136 Πολλαπλασιασμός Ακολουθίας Πινάκων Παράδειγμα Α Α Α Α Α Α,7 7,87,7,87,,,7 7,, 7,,7,,, C[,] = C[,] =... C[,] =

137 Πολλαπλασιασμός Ακολουθίας Πινάκων Παράδειγμα Α Α Α Α Α Α,7 7,87,7,87,,,7 7,, 7,,7,,, C[,] = =,7 C[,] = =,... C[,] = =,

138 Πολλαπλασιασμός Ακολουθίας Πινάκων Παράδειγμα Α Α Α Α Α Α,7 7,87,7,87,,,7 7,, 7,,7,,,

139 Πολλαπλασιασμός Ακολουθίας Πινάκων Παράδειγμα Α Α Α Α Α Α,7 7,87,7,87,,,7 7,, 7,,7,,, C[,]+C[,]+ m m m =, C[,] = min C[,]+C[,]+ m m m = 7, C[,]+C[,]+ m m m =,7

140 Πολλαπλασιασμός Ακολουθίας Πινάκων Παράδειγμα Α Α Α Α Α Α,7 7,87,7,87,,,7 7,, 7,,7,,, Τελικό Αποτέλεσμα: C[,] =,

141 Πολλαπλασιασμός Ακολουθίας Πινάκων Παράδειγμα Α Α Α Α Α Α,7 7,87,7,87,,,7 7,, 7,,7,,, Ποια είναι η βέλτιστη λύση της Α Α Α?

142 Πολλαπλασιασμός Ακολουθίας Πινάκων Παράδειγμα Α Α Α Α Α Α,7 7,87,7,87,,,7 7,, 7,,7,,, C[,]+C[,]+ m m m =, C[,] = min C[,]+C[,]+ m m m = 7, C[,]+C[,]+ m m m =,7

143 Πολλαπλασιασμός Ακολουθίας Πινάκων Παράδειγμα Α Α Α Α Α Α,7 7,87,7,87,,,7, 7,,7,,, C[,]+C[,]+ m m m =, C[,] = min C[,]+C[,]+ m m m = 7, C[,]+C[,]+ m m m =,7

144 Πολλαπλασιασμός Ακολουθίας Πινάκων Παράδειγμα Α Α Α Α Α Α C[,] =, Α Α Α Α Α Α ( Α Α Α ) ( Α Α Α ) ( Α ( Α Α ) ) ( ( Α Α ) Α )

145 Δυναμικός Προγραμματισμός - Προβλήματα Σακίδιο Κατά την διάρκεια μιας κλοπής, ένας διαρρήκτης βρίσκει περισσότερα λάφυρα απ όσα περίμενε και πρέπει να αποφασίσει τι θα πάρει!!! Το «σακίδιό» του (knap-sack) μπορεί να μεταφέρει W κιλά!!! Υπάρχουν n είδη με βάρη w, w,, wn και αξία v, v,, vn

146 Δυναμικός Προγραμματισμός - Προβλήματα Σακίδιο Το ερώτημα που τον απασχολεί!!! Ποιος είναι ο πλέον πολύτιμος συνδυασμός ειδών που μπορεί να βάλει στο σακίδιό του? Το «σακίδιό» του (knap-sack) μπορεί να μεταφέρει W κιλά!!! Υπάρχουν n είδη με βάρη w, w,, wn και αξία v, v,, vn

147 Δυναμικός Προγραμματισμός - Προβλήματα Σακίδιο Παράδειγμα Έστω ότι το σακίδιο χωράει W = κιλά, και Είδος Βάρος Τιμή Α Β Γ Δ??????

148 Δυναμικός Προγραμματισμός - Προβλήματα Σακίδιο Παράδειγμα Δύο Εκδοχές Έστω W = κιλά, και Υπάρχουν απεριόριστες ποσότητες από κάθε είδος Είδος Βάρος Τιμή Α Β Γ Δ Υπάρχει μία μόνο ποσότητα από κάθε είδος

149 Δυναμικός Προγραμματισμός - Προβλήματα Σακίδιο Παράδειγμα Δύο Εκδοχές Έστω W = κιλά, και Υπάρχουν απεριόριστες ποσότητες από κάθε είδος Είδος Βάρος Τιμή Α Β Γ Δ Βέλτιστη Επιλογή από είδος Α w= από είδος Δ w= 8 Συνολική Τιμή 8

150 Δυναμικός Προγραμματισμός - Προβλήματα Σακίδιο Παράδειγμα Δύο Εκδοχές Έστω W = κιλά, και Είδος Βάρος Τιμή Α Β Γ Δ Βέλτιστη Επιλογή από είδος Α w= από είδος Γ w= Συνολική Τιμή Υπάρχει μία μόνο ποσότητα από κάθε είδος

151 Δυναμικός Προγραμματισμός - Προβλήματα Σακίδιο (knap-sack) Πρόβλημα Μας δίδεται ένα σύνολο n αντικειμένων S = {a, a,, an} με ακέραια βάρη wi και αξίες vi ( i n), και μία τιμή W, και μας ζητείται να υπολογίσουμε ένα υποσύνολο αντικειμένων S S με μέγιστη συνολική αξία C και με συνολικό βάρος W, δηλαδή, max C = Σa i S vi και Σa S wi W i

152 Σακίδιο : Με επανάληψη Ας μελετήσουμε την πρώτη εκδοχή του προβλήματος!!! και ας δούμε τι συμβαίνει όταν επιτρέπονται οι επαναλήψεις! Το κρίσιμο ερώτημα : Ποια είναι τα υποπροβλήματα? Μπορούμε να «συρρικνώσουμε» το αρχικό πρόβλημα με δύο τρόπους: () Μπορούμε να εξετάσουμε την περίπτωση σακιδίων μικρότερης χωρητικότητας w W ή () Την περίπτωση λιγότερων ειδών,,, i n

153 Σακίδιο : Με επανάληψη Ο πρώτος περιορισμός επιβάλει να έχουμε μικρότερες χωρητικότητες! Ορίζουμε: C(w) = Μax τιμή που παίρνουμε με σακίδιο χωρητικότητας w Ερώτημα!!! Μπορούμε να εκφράσουμε το υποπρόβλημα C(w) συναρτήσει μικρότερων υποπροβλημάτων???????

154 Σακίδιο : Με επανάληψη Έστω μια βέλτιστη λύση του υποπροβλήματος C(w), η οποία περιλαμβάνει : p,, i,, q τα είδη τέτοια ώστε wp+ + wi + + wq w με max τιμή C(w)= vp+ + vi + + vq Εάν η βέλτιστη λύση του υποπροβλήματος C(w) περιλαμβάνει το είδος i βάρους wi, τότε η αφαίρεση του i από το σακίδιο δίδει μια βέλτιστη λύση για το υποπρόβλημα C(w-wi)!!! Επομένως : Μπορούμε να πάρουμε το υποπρόβλημα C(w) από το μικρότερο C(wwi) προσθέτοντας την αξία vi του είδους wi, για κάποιο i

155 Σακίδιο : Με επανάληψη Με άλλα λόγια: Το υποπρόβλημα C(w) είναι απλώς το C(w- wi) + vi, για κάποιο i. Ποιο είναι αυτό το i? δεν γνωρίζουμε!!! Τότε, δεν έχουμε παρά να πάρουμε όλες τις δυνατότητες! Ορίστε πως!!! C(w) = max i : wi w {C(w-wi) + vi} όπου, ως συνήθως, η σύμβασή μας είναι ότι η μέγιστη τιμή ενός κενού συνόλου είναι!!!

156 Σακίδιο : Με επανάληψη Τελειώσαμε! ο αλγόριθμος τώρα γράφετε μόνος του και είναι ιδιαιτέρα κομψός!!! Αλγόριθμος Κnap-sack(w[..n], v[..n], W). C()= Συνολική Πολυπλοκότητα. for w to W C(w) max {C(w-w(i)) + v(i) : w(i) w}. return C(W) O(nW)

157 Σακίδιο : Με επανάληψη Παράδειγμα Είδος Βάρος Τιμή Χωρητικότητα Σακιδίου W = A B Γ Δ 7 Χωρητικότητες Σακιδίου w =,,,, i,, n 8

158 Σακίδιο : Με επανάληψη Παράδειγμα Είδος Βάρος Τιμή Χωρητικότητα Σακιδίου W = A B Γ Δ C(w)= max {C(w-w(i))+v(i): w(i) w} {,, } 8 C() C() C() C() C() Χωρητικότητα Σακιδίου w = 7 8 C() = C(-) + = C() = C(-) + = C() = C(-) + =

159 Σακίδιο : Με επανάληψη Παράδειγμα Είδος Βάρος Τιμή Χωρητικότητα Σακιδίου W = A B Γ Δ C(w)= max {C(w-w(i))+v(i): w(i) w} {,, } 8 C() C() C() C() C() C() 7 8 C() = C(-) + = C() = C(-) + = C() = C(-) + =

160 Σακίδιο : Με επανάληψη Παράδειγμα Είδος Βάρος Τιμή Χωρητικότητα Σακιδίου W = A B Γ Δ C(w)= max {C(w-w(i))+v(i): w(i) w} {,,, } 8 C() C() C() C() C() C() Χωρητικότητα Σακιδίου w = 7 8 C() = C(-) + = 7 C() = C(-) + = 8 C() = C(-) + = C() = C(-) + =

161 Σακίδιο : Με επανάληψη Παράδειγμα Είδος Βάρος Τιμή Χωρητικότητα Σακιδίου W = A B Γ Δ C(w)= max {C(w-w(i))+v(i): w(i) w} {,,, } 8 C() C() C() C() C() C() C() 7 8

162 Σακίδιο : Με επανάληψη Παράδειγμα Είδος Βάρος Τιμή Χωρητικότητα Σακιδίου W = A B Γ Δ C(w)= max {C(w-w(i))+v(i): w(i) w} 7 8 C() C() C() C() C() C() C() C(7) 8

163 Σακίδιο : Με επανάληψη Παράδειγμα Είδος Βάρος Τιμή Χωρητικότητα Σακιδίου W = A B Γ Δ C(w)= max {C(w-w(i))+v(i): w(i) w} C(7) C(8) C() C() C() C() C() C() C()

164 Σακίδιο : Με επανάληψη Παράδειγμα Είδος Βάρος Τιμή Χωρητικότητα Σακιδίου W = A B Γ Δ C(w)= max {C(w-w(i))+v(i): w(i) w} C(7) C(8) C() C() C() C() C() C() C() C()

165 Σακίδιο : Με επανάληψη Παράδειγμα Είδος Βάρος Τιμή Χωρητικότητα Σακιδίου W = A B Γ Δ C(w)= max {C(w-w(i))+v(i): w(i) w} C(7) C(8) C() C() C() C() C() C() C() C() C()

166 Σακίδιο : Με επανάληψη Παράδειγμα Είδος Βάρος Τιμή Χωρητικότητα Σακιδίου W = C(w)= max {C(w-w(i))+v(i): w(i) w} C() = 8 A B Γ Δ είδος Α αξίας είδη Δ συνολικής αξίας 8 8 C()

167 Σακίδιο : Με επανάληψη Ας μείνουμε λίγο ακόμα σε αυτή την εκδοχή του προβλήματος! Γνωρίζουμε ότι ένα πρόβλημα ΔΠ εκφράζεται με ένα γράφημα G τύπου DAG!!! Εύλογο ερώτημα!!! Ποιο είναι το DAG του προβλήματος του σακιδίου με επανάληψη???????

168 Σακίδιο : Με επανάληψη Το DAG του Προβλήματος Είδος Βάρος Τιμή Χωρητικότητα W = A B Γ Δ 7 Κόμβοι DAG Χωρητικότητα Σακιδίου W 8

169 Σακίδιο : Με επανάληψη Το DAG του Προβλήματος Είδος Βάρος Τιμή Χωρητικότητα W = A B Γ Δ C(w)= max {C(w-w(i))+v(i): w(i) w} 8 C() C() C() C() C() Χωρητικότητα Σακιδίου w = {,, } 7 8 C() = C(-) + = C() = C(-) + = C() = C(-) + =

170 Σακίδιο : Με επανάληψη Το DAG του Προβλήματος Είδος Βάρος Τιμή Χωρητικότητα W = A B Γ Δ C(w)= max {C(w-w(i))+v(i): w(i) w} 8 C() C() C() C() C() C() {,,, } 7 8 C() = C(-) + = 7 C() = C(-) + = 8 C() = C(-) + = C() = C(-) + =

171 Σακίδιο : Με επανάληψη Το DAG του Προβλήματος Είδος Βάρος Τιμή Χωρητικότητα W = A B Γ Δ C(w)= max {C(w-w(i))+v(i): w(i) w} {,,, } Σακίδιο με επανάληψη Max διαδρομή σε DAG

172 Σακίδιο : Με επανάληψη Το DAG του Προβλήματος Είδος Βάρος Τιμή Χωρητικότητα W = A B Γ Δ {Δ} λύση για w = με C(w) = Σακίδιο με επανάληψη Max διαδρομή σε DAG

173 Σακίδιο : Με επανάληψη Το DAG του Προβλήματος Είδος Βάρος Τιμή Χωρητικότητα W = A B Γ Δ {Β} λύση για w = με C(w) = Σακίδιο με επανάληψη Max διαδρομή σε DAG

174 Σακίδιο : Με επανάληψη Το DAG του Προβλήματος Είδος Βάρος Τιμή Χωρητικότητα W = A B Γ Δ {Δ,Δ} λύση για w = με C(w) = Σακίδιο με επανάληψη Max διαδρομή σε DAG

175 Σακίδιο : Με επανάληψη Το DAG του Προβλήματος Είδος Βάρος Τιμή Χωρητικότητα W = A B Γ Δ {Δ,Β} λύση για w = με C(w) = Σακίδιο με επανάληψη Max διαδρομή σε DAG

176 Σακίδιο : Με επανάληψη Το DAG του Προβλήματος Είδος Βάρος Τιμή Χωρητικότητα W = A B Γ Δ {Α} λύση για w = με C(w) = Σακίδιο με επανάληψη Max διαδρομή σε DAG

177 Σακίδιο : Με επανάληψη Το DAG του Προβλήματος Είδος Βάρος Τιμή Χωρητικότητα W = A B Γ Δ {Α,Δ,Δ} τελική λύση, C(w) = Σακίδιο με επανάληψη Max διαδρομή σε DAG 8

178 Σακίδιο : Χωρίς επανάληψη Ερχόμαστε τώρα στην δεύτερη εκδοχή του προβλήματος!!! και ας δούμε τι συμβαίνει όταν δεν επιτρέπονται οι επαναλήψεις! Η γνώση της τιμής του υποπροβλήματος C(w- wi) δεν μας βοηθάει τώρα!!! καθώς δεν γνωρίζουμε εάν το είδος i έχει ήδη χρησιμοποιηθεί ή όχι σε αυτό το υποπρόβλημα!!!

179 Σακίδιο : Χωρίς επανάληψη Ερχόμαστε τώρα στην δεύτερη εκδοχή του προβλήματος!!! και ας δούμε τι συμβαίνει όταν δεν επιτρέπονται οι επαναλήψεις! Επομένως, πρέπει να βελτιώσουμε την έννοια του υποπροβλήματος ώστε C(w- wi) να μεταφέρει πληροφορίες σχετικά με τα είδη που χρησιμοποιούνται σε αυτό!!!

180 Σακίδιο : Χωρίς επανάληψη Πως μπορούμε να το κάνουμε? Να προσθέσουμε μια δεύτερη παράμετρο, ας την πούμε j, j n, η οποία θα προσδιορίζει το σύνολο {,,, j} των j πρώτων ειδών από ένα σύνολο n συνολικά ειδών, οπότε: Ορίζουμε C(w, j) = Μax τιμή που παίρνουμε με σακίδιο χωρητικότητας w και με είδη,,, j Και τότε, Η απάντηση που ψάχνουμε είναι η C(W, n)!!!

181 Σακίδιο : Χωρίς επανάληψη Πως μπορούμε να εκφράσουμε το υποπρόβλημα C(w, j) συναρτήσει μικροτέρων? Πολύ απλά εάν έχουμε μια βέλτιστη λύση με είδη από το σύνολο {,,, j-}, τότε το επόμενο είδος j ( j n) : είτε είναι απαραίτητο να πετύχουμε βέλτιστη λύση είτε όχι!!! Επομένως, C(w,j) = max {C(w, j-), C(w-wj, j-) + vj} Η δεύτερη περίπτωση καλείται μόνο όταν wj w

182 Σακίδιο : Χωρίς επανάληψη Και έτσι C(w,j) = max {C(w, j-), C(w-wj, j-) + vi} μπορέσαμε να εκφράσουμε το υποπρόβλημα C(w, j) συναρτήσει των μικροτέρων C(, j-) Τελειώσαμε! και σε αυτή την περίπτωση ο αλγόριθμος γράφετε πολύ εύκολα!!!

183 Σακίδιο : Χωρίς επανάληψη Αλγόριθμος Κnap-sack(w[..n], v[..n], W). Initialize(). for j to n for w to W for w to W C(w,) = for j to n C(,j) = if wj > w then C(w,j) C(w,j-) else C(w,j) max {C(w, j-), C(w-wj, j-) + vj}. return C(W,n)

184 Διορθωτική Απόσταση Παράδειγμα Είδος : : : : A B Γ Δ Βάρος Τιμή Στο παράδειγμά μας όπου έχουμε W = και είδη {Α, Β, Γ, Δ}, οι λύσεις όλων των υποπροβλημάτων C(i,j) σχηματίζουν έναν πίνακα. ΛΥΣΗ : Ε(,) = 7 8

185 Σακίδιο : Χωρίς επανάληψη Αλγόριθμος Κnap-sack(w[..n], v[..n], W) Ο αλγόριθμος συμπληρώνει ένα πίνακα διαστάσεων (W+) (n+) Συνολική Πολυπλοκότητα Κάθε καταχώρηση στον πίνακα απαιτεί Ο() χρόνο O(nW) Παρατήρηση Παρόλο που ο πίνακας αποθήκευσης των τιμών των υποπροβλημάτων είναι πολύ μεγαλύτερος από αυτόν του Αλγόριθμου Κnap-sack, ο χρόνος εκτέλεσης παραμένει ο ίδιος!!!

186 Σακίδιο : Χωρίς επανάληψη Αλγόριθμος Κnap-sack(w[..n], v[..n], W) Παρατήρηση Η πολυπλοκότητα χρόνου O(nW) είναι ψευδοπολυωνυμική, καθώς εξαρτάται από την τιμή W, η οποία μπορεί να είναι εκθετικά εξαρτώμενη από το n!!! Συνολική Πολυπλοκότητα O(nW) Το πρόβλημα Knap-sack ανήκει στην κλάση NPC ήτοι, δεν είναι γνωστό (και το πιθανότερο είναι να παραμείνει έτσι) πως μπορεί να λυθεί σε πολυωνυμικό χρόνο!!!

187 Δυναμικός Προγραμματισμός - Προβλήματα Ελάχιστες Αξιόπιστες Διαδρομές Κίνητρο Σε εφαρμογές συμβαίνει συχνά τα βάρη των ακμών και οι ελάχιστες διαδρομές να μην απεικονίζουν ολόκληρη την αλήθεια!!! Για παράδειγμα, σε ένα δίκτυο επικοινωνιών, ακόμα και αν τα βάρη των ακμών απεικονίζουν πιστά τις καθυστερήσεις μετάδοσης, μπορεί να υπάρχουν άλλοι παράγοντες που εμπλέκονται σε μια ε.δ!!!

188 Δυναμικός Προγραμματισμός - Προβλήματα Ελάχιστες Αξιόπιστες Διαδρομές Κίνητρο Θα μπορούσε, για παράδειγμα, κάθε επιπλέον ακμή στην ε.δ να είναι ένας παράγοντας «αβεβαιότητας» που ελλοχεύει κίνδυνους απώλειας πακέτων! Τότε, θα θέλαμε να αποφύγουμε διαδρομές με πάρα πολλές ακμές! s u x v t y

189 Δυναμικός Προγραμματισμός - Προβλήματα Ελάχιστες Αξιόπιστες Διαδρομές d(s,t)=(s,u,x,y,t) Κόστος Πλήθος ακμών s Κόστος Πλήθος ακμών s v u t y x x δ(s,t)=(s,y,t) u v t y

190 Δυναμικός Προγραμματισμός - Προβλήματα Ελάχιστες Αξιόπιστες Διαδρομές Πρόβλημα Έστω ένα έμβαρο γράφημα G, δύο κόμβοι του s και t, και ένας ακέραιος k. Θέλουμε να υπολογίσουμε μια ε.δ στο G s ~> t η οποία να χρησιμοποιεί το πολύ k ακμές!!!

191 Ελάχιστες Αξιόπιστες Διαδρομές Υπάρχει κάποιος αποτελεσματικός τρόπος να προσαρμόσουμε τον αλγόριθμο του Dijkstra στο νέο μας πρόβλημα? Μάλλον Όχι!!! Ο αλγόριθμος του Dijkstra εστιάζει στο μήκος κάθε ε.δ χωρίς να «θυμάται» το πλήθος των ακμών στη διαδρομή! Ακόμα και να το θυμόταν, δεν θα μπορούσε να επιλέξει την ελάχιστη με το πολύ k ακμές!!!

192 Ελάχιστες Αξιόπιστες Διαδρομές Μήπως ο Δυναμικός Προγραμματισμός μας λύνει το πρόβλημα? Ας ορίσουμε για κάθε κόμβο v και κάθε ακέραιο i k d(s,v,i) = d(v,i) να είναι το κόστος της ελάχιστης διαδρομής s ~> v η οποία να χρησιμοποιεί το πολύ i ακμές Προφανώς, ισχύει: d(s,) = d(v,) = v V

193 Ελάχιστες Αξιόπιστες Διαδρομές Πολύ φυσικά, η γενική εξίσωση ενημέρωσης, είναι: d(v,i) = min{d(v,i-), min (u,v) E {d(u,i-)+ w(u,v)}} Αυτό ήταν Τελειώσαμε!!! Ο αλγόριθμος πλέον γράφετε πολύ εύκολα, σχεδόν μόνος του!!!

194 Ελάχιστες Αξιόπιστες Διαδρομές Αλγόριθμος K-shortest-path(G,w, k). Initialize(). for i to k for each v V-{s} for each u Adj(v) for i to n C(i,) = C(s,) = d(v,i) min {C(v, i-), C(u, i-) + w(u,v)}. return C(k)

195 Ελάχιστες Αξιόπιστες Διαδρομές Παράδειγμα p - s - d(v,) = s p r x y t r -7 x t y

196 Ελάχιστες Αξιόπιστες Διαδρομές Παράδειγμα p - s - d(v,) = d(v,) = s p r x y t - r -7 x t y

197 Ελάχιστες Αξιόπιστες Διαδρομές Παράδειγμα p - s - d(v,) = d(v,) = d(v,) = s p r x y t - - r -7 x y d(y,) = min {d(y,), min (u,y) E {d(u,) + w(u,y)}} = min{, min{+, +, +}} = t

198 Ελάχιστες Αξιόπιστες Διαδρομές Παράδειγμα p - s - s p r x y t d(v,) = d(v,) = d(v,) = - - d(v,) = - d(y,) r -7 = min{, min{+, +, +}} = x t y

199 Ελάχιστες Αξιόπιστες Διαδρομές Παράδειγμα p - s - s p r x y t d(s,v,) d(s,v,) d(s,v,) - - d(s,v,) d(s,v,) - - r -7 x t y

200 Δυναμικός Προγραμματισμός - Προβλήματα Πανζευκτικές Ελάχιστες Διαδρομές Κίνητρο Σε πολλές εφαρμογές, χρειαζόμαστε να έχουμε όχι μόνο την ε.δ μεταξύ s ~> t ενός G τάξης n, αλλά μεταξύ κάθε ζεύγους κόμβων του!!! Μπορούμε να λύσουμε το πρόβλημα? Φυσικά ΝΑΙ!!! Εφαρμόζοντας n φορές τον αλγόριθμο των Bellman-Ford (επιτρέπονται αρνητικά βάρη)

201 Δυναμικός Προγραμματισμός - Προβλήματα Πανζευκτικές Ελάχιστες Διαδρομές Σε πόσο χρόνο? Ο Bellman-Ford εκτελείται σε O(nm) χρόνο, και επομένως: O(nm) Μπορούμε καλύτερα? ΝΑΙ!!! με τον αλγόριθμο των Floyd-Watshall ο οποίος βασίζεται σε ΔΠ, σε χρόνο: O(n)

202 Δυναμικός Προγραμματισμός - Προβλήματα Πανζευκτικές Ελάχιστες Διαδρομές Πρόβλημα Έστω ένα έμβαρο γράφημα G (με αρνητικά ακμικά βάρη) τάξης n και μεγέθους m. Θέλουμε να υπολογίσουμε τις ε.δ στο G x y για κάθε ζεύγος κόμβων (x, y), x, y V(G)!!!

203 Πανζευκτικές Ελάχιστες Διαδρομές Το να λύσουμε το πρόβλημα υπολογίζοντας όλο και περισσότερα ζεύγη κόμβων δε βοηθά, καθώς οδηγεί πίσω στον αλγόριθμο O(nm)!!! Κρίσιμο Ερώτημα ΔΠ Υπάρχει κάποιο καλό υποπρόβλημα για τον υπολογισμό των αποστάσεων μεταξύ κάθε ζεύγους κόμβων? Πρέπει να επινοήσουμε κάτι έξυπνο! να βρούμε μια νέα ιδέα!!!!!!!

204 Πανζευκτικές Ελάχιστες Διαδρομές Να μια ιδέα!!! Ας πάρουμε μια ε.δ x ~> y x u u u uk y Ενδιάμεσοι Κόμβοι Υποθέστε ότι δεν επιτρέπουμε ενδιάμεσους κόμβους!!! Τότε, μπορούμε να λύσουμε το πρόβλημα των π.ε.δ, καθώς για κάθε ζεύγος κόμβων x, y του G: η ε.δ x ~> y είναι η ακμή (x, y), εάν υπάρχει!!!

205 Πανζευκτικές Ελάχιστες Διαδρομές Να μια ιδέα!!! Ας πάρουμε μια ε.δ x ~> y x u u u uk y Ενδιάμεσοι Κόμβοι Εάν διευρύνουμε σταδιακά το σύνολο των ενδιάμεσων κόμβων, έναν κάθε φορά, ενημερώνοντας τα μήκη των ε.δ σε κάθε διεύρυνση, τι μπορούμε να πετύχουμε!!!

206 Πανζευκτικές Ελάχιστες Διαδρομές Να μια ιδέα!!! Ας πάρουμε μια ε.δ x ~> y x u u u uk y Ενδιάμεσοι Κόμβοι Μπορούμε να διευρύνουμε το σύνολο των ενδιάμεσων κόμβων έως να γίνει όλο το σύνολο κόμβων V!!! Τότε όμως έχουμε λύσει το πρόβλημα των π.ε.δ!!!

207 Πανζευκτικές Ελάχιστες Διαδρομές Τυποποίηση της ιδέας!!! Αριθμούμε τους κόμβους του V ως {,,,n} d(i,j,k) συμβολίζουμε το μήκος της ε.δ i ~> j με ενδιάμεσους κόμβους ΜΟΝΟ από το σύνολο {,,,k} Επομένως, d(i,j,) = w(i,j) εάν υπάρχει η ακμή (i,j)

208 Πανζευκτικές Ελάχιστες Διαδρομές Τι πρέπει να ελέγξουμε όταν επεκτείνουμε το ενδιάμεσο σύνολο κατά ένα κόμβο? {,,,k-} {,,,k} Πρέπει να επανεξετάσουμε όλα τα ζεύγη κόμβων i, j και να ελέγξουμε εάν η χρήση του k ως ενδιάμεσου κόμβου μας δίνει μια συντομότερη διαδρομή i ~> j d(i,k,k-) k d(k,j,k-) j i d(i,j,k-) αυτό είναι πολύ εύκολο!!!

209 Πανζευκτικές Ελάχιστες Διαδρομές Μια ε.δ i ~> j η οποία χρησιμοποιεί τον k μαζί με άλλους κόμβους χαμηλότερης αρίθμησης {,,,k-}, περνάει από τον k μία μόνο φορά!!! γιατί δεν υπάρχουν αρνητικοί κύκλοι d(i,k,k-) k d(k,j,k-) j i d(i,j,k-)

210 Πανζευκτικές Ελάχιστες Διαδρομές Έτσι, η χρήση του k ως ενδιάμεσου κόμβου μας δίνει μια συντομότερη διαδρομή i ~> j εάν και μόνο εάν: d(i,k,k-) + d(k,j,k-) < d(i,j,k-) d(i,k,k-) k d(k,j,k-) j i d(i,j,k-) οπότε η τιμή: d(i,j,k) θα πρέπει να ενημερωθεί ανάλογα!!!

211 Πανζευκτικές Ελάχιστες Διαδρομές Σχέση Επίλυσης Υποπροβλημάτων d(i,j,) = w(i,j) εάν υπάρχει η ακμή (i,j) Εξίσωση ενημέρωσης (ή αναδρομική σχέση) : w(i,j) if k = min {d(i,j,k-), d(i,k,k-) + d(k,j,k-)} if k d(i,j,k) =

212 Πανζευκτικές Ελάχιστες Διαδρομές Αλγόριθμος Floyd-Warshall All-pair-Shortest-Paths(G,w). Initialize(G). for k to n for i to n for j to k for i to n for j to n C(i,i) = for all (i,j) E d(i,j,) = w(i,j) d(i,j,k) min {d(i,j,k-), d(i,k,k-) + d(k,j,k-)}. return d(i,j,n)

213 Πανζευκτικές Ελάχιστες Διαδρομές Πολυπλοκότητα Το πιο χρονοβόρο βήμα:. for k to n for i to n for j to k d(i,j,k) min {d(i,j,k-), d(i,k,k-) + d(k,j,k-)} Συνολική Πολυπλοκότητα Αλγόριθμου: O(n)

214 Πανζευκτικές Ελάχιστες Διαδρομές Παράδειγμα d(i,j,) 8-7 -

215 Πανζευκτικές Ελάχιστες Διαδρομές Παράδειγμα d(i,j,) d(,,) = min {d(,,), d(,,) + d(,,)} = min {, + } =

216 Πανζευκτικές Ελάχιστες Διαδρομές Παράδειγμα d(i,j,) d(,,) = min {d(,,), d(,,) + d(,,)} = min {, + } =

217 Πανζευκτικές Ελάχιστες Διαδρομές Παράδειγμα d(i,j,) d(,,) = min {d(,,), d(,,) + d(,,)} = min {, + } =

218 Πανζευκτικές Ελάχιστες Διαδρομές Παράδειγμα d(i,j,) d(,,) = min {d(,,), d(,,) + d(,,)} = min {, + 7} =

219 Πανζευκτικές Ελάχιστες Διαδρομές Παράδειγμα d(i,j,)

220 Αλγοριθμικές Τεχνικές & Προβλήματα Ποιες Αλγοριθμικές Τεχνικές έχουμε δει έως τώρα? Αλγοριθμικές Τεχνικές, όπως: Διαίρει-και-Βασίλευε Άπληστη Επιλογή Πρόσφατα, προσθέσαμε και την τεχνική Δυναμικός Προγραμματισμός Α S U N N - Y S N O W Y Β C D

221 Αλγοριθμικές Τεχνικές & Προβλήματα Τι είδους Προβλήματα έχουμε δει έως τώρα? Προβλήματα των οποίων η λύση απαιτεί Αλγορίθμους για εργασίες βελτιστοποίησης, όπως: Ελάχιστες διαδρομές Ελάχιστα συνδετικά (επικαλυπτικά) δένδρα Μέγιστες αύξουσες υπακολουθίες, κλπ Ποιο το χαρακτηριστικό της λύσης του? Αναζητούμε λύση η οποία: (α) Ικανοποιεί ορισμένους περιορισμούς, και (β) Είναι η καλύτερη δυνατή ως προς κάποιο κριτήριο!!!

222 Γραμμικός Προγραμματισμός Σημαντικό Εργαλείο Τέχνης για τέτοια προβλήματα Βελτιστοποίησης Γραμμικός Προγραμματισμός - LP

223 Γραμμικός Προγραμματισμός Σημαντικό Εργαλείο Τέχνης για τέτοια προβλήματα Βελτιστοποίησης Γραμμικός Προγραμματισμός - LP Κύριο χαρακτηριστικό του LP Περιγράφει εργασίες βελτιστοποίησης στις οποίες: Οι Περιορισμοί και το Κριτήριο βελτιστοποίησης είναι Γραμμικές Συναρτήσεις!!!

224 Γραμμικός Προγραμματισμός Παράδειγμα Βρες τις τιμές των μεταβλητών x και x οι οποίες max x + x με τους περιορισμούς x + x x + x -x + x Βέλτιστο Σημείο x, x Περιορισμοί Αντικειμενική Συνάρτηση Σύνολο Περιορισμών ή Εφικτών Λύσεων Γενικά, επειδή η ΑΣ είναι γραμμική, παίρνει max (ή min) σε γωνιακό σημείο του ΣΠ, εάν αυτό είναι φραγμένο!!!

225 Προβλήματα Γραμμικός Προγραμματισμός Μεγιστοποίηση Κέρδους Ένα εργοστάσιο παράγει δύο προϊόντα: Α και Β Ανά Μονάδα πώλησης: από το Α κερδίζει, και από το Β κερδίζει Οι ημερήσιες απαιτήσεις: για το Α είναι Μ, και για το Β είναι Μ το πολύ Επίσης, το εργοστάσιο μπορεί να παράγει συνολικά Μ/ημέρα! Πόση πρέπει να είναι η ημερήσια παραγωγή από κάθε προϊόν Α και Β, ώστε να επιτευχθεί το max κέρδος?

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

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

Διαβάστε περισσότερα

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

Σχεδίαση & Ανάλυση Αλγορίθμων Σχεδίαση & Ανάλυση Αλγορίθμων Ενότητα 4.2 Διαδρομές σε Γραφήματα Σταύρος Δ. Νικολόπουλος Τμήμα Μηχανικών Η/Υ & Πληροφορικής Πανεπιστήμιο Ιωαννίνων Webpage: www.cs.uoi.gr/~stavros Πρόβλημα Οδικό Δίκτυο

Διαβάστε περισσότερα

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

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

Διαβάστε περισσότερα

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

Αλγοριθμικές Τεχνικές. Brute Force. Διαίρει και Βασίλευε. Παράδειγμα MergeSort. Παράδειγμα. Τεχνικές Σχεδιασμού Αλγορίθμων Τεχνικές Σχεδιασμού Αλγορίθμων Αλγοριθμικές Τεχνικές Παύλος Εφραιμίδης, Λέκτορας http://pericles.ee.duth.gr Ορισμένες γενικές αρχές για τον σχεδιασμό αλγορίθμων είναι: Διαίρει και Βασίλευε (Divide and

Διαβάστε περισσότερα

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

Αλγόριθμοι - Τμήμα Πληροφορικής ΑΠΘ -4ο εξάμηνο 1 Αλγόριθμοι Δυναμικός Προγραμματισμός http://delab.csd.auth.gr/courses/algorithms/ Αλγόριθμοι - Τμήμα Πληροφορικής ΑΠΘ -4ο εξάμηνο 1 Δυναμικός προγραμματισμός Ο Δυναμικός Προγραμματισμός προτάθηκε από τον

Διαβάστε περισσότερα

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

Σχεδίαση Αλγορίθμων - Τμήμα Πληροφορικής ΑΠΘ -4ο εξάμηνο 1 Σχεδίαση Αλγορίθμων Δυναμικός Προγραμματισμός http://delab.csd.auth.gr/~gounaris/courses/ad Σχεδίαση Αλγορίθμων - Τμήμα Πληροφορικής ΑΠΘ -4ο εξάμηνο 1 Δυναμικός προγραμματισμός Ο Δυναμικός Προγραμματισμός

Διαβάστε περισσότερα

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

Αλγόριθμοι και πολυπλοκότητα Δυναμικός Προγραμματισμός ΕΛΛΗΝΙΚΗ ΔΗΜΟΚΡΑΤΙΑ ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΡΗΤΗΣ Αλγόριθμοι και πολυπλοκότητα Δυναμικός Προγραμματισμός Ιωάννης Τόλλης Τμήμα Επιστήμης Υπολογιστών Δυναμικός Προγραμματισμός Δυναμικός Προγραμματισμός 1 Περίληψη

Διαβάστε περισσότερα

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

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

Διαβάστε περισσότερα

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

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

Διαβάστε περισσότερα

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

Αλγοριθμικές Τεχνικές Αλγοριθμικές Τεχνικές Παύλος Εφραιμίδης, Λέκτορας http://pericles.ee.duth.gr Αλγοριθμικές Τεχνικές 1 Τεχνικές Σχεδιασμού Αλγορίθμων Ορισμένες γενικές αρχές για τον σχεδιασμό αλγορίθμων είναι: Διαίρει και

Διαβάστε περισσότερα

Outline. 6 Edit Distance

Outline. 6 Edit Distance Αλγόριθμοι και Πολυπλοκότητα Άπληστοι Αλγόριθμοι και Δυναμικός Προγραμματισμός Ασκήσεις CoReLab ΣΗΜΜΥ - Ε.Μ.Π. 16 Νοεμβρίου 216 (CoReLab - NTUA) Αλγόριθμοι - Ασκήσεις 16 Νοεμβρίου 216 1 / 52 Outline 1

Διαβάστε περισσότερα

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

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

Διαβάστε περισσότερα

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

Σχεδίαση & Ανάλυση Αλγορίθμων Σχεδίαση & Ανάλυση Αλγορίθμων Ενότητα 6 Γραμμικός Προγραμματισμός Σταύρος Δ. Νικολόπουλος Τμήμα Μηχανικών Η/Υ & Πληροφορικής Πανεπιστήμιο Ιωαννίνων Webpage: www.cs.uoi.gr/~stavros Γραμμικός Προγραμματισμός

Διαβάστε περισσότερα

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

Αλγόριθµοι και Πολυπλοκότητα Αλγόριθµοι και Πολυπλοκότητα Ν. Μ. Μισυρλής Τµήµα Πληροφορικής και Τηλεπικοινωνιών, Πανεπιστήµιο Αθηνών Καθηγητής: Ν. Μ. Μισυρλής () Αλγόριθµοι και Πολυπλοκότητα 28 Μαΐου 2015 1 / 45 Εισαγωγή Ο δυναµικός

Διαβάστε περισσότερα

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

Σχεδίαση και Ανάλυση Αλγορίθμων Σχεδίαση και Ανάλυση Αλγορίθμων Ενότητα 4.0 Επιλογή Αλγόριθμοι Επιλογής Select και Quick-Select Σταύρος Δ. Νικολόπουλος 2016-17 Τμήμα Μηχανικών Η/Υ & Πληροφορικής Πανεπιστήμιο Ιωαννίνων Webpage: www.cs.uoi.gr/~stavros

Διαβάστε περισσότερα

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

Προσεγγιστικοί Αλγόριθμοι Πολλά NP-πλήρη προβλήματα έχουν μεγάλο πρακτικό ενδιαφέρον. http://xkcd.com/287/ Πολλά NP-πλήρη προβλήματα έχουν μεγάλο πρακτικό ενδιαφέρον. Πως μπορούμε να αντιμετωπίσουμε το γεγονός ότι είναι απίθανη(;)

Διαβάστε περισσότερα

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

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

Διαβάστε περισσότερα

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

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

Διαβάστε περισσότερα

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

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

Διαβάστε περισσότερα

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

Τεχνικές Σχεδιασμού Αλγορίθμων Τεχνικές Σχεδιασμού Αλγορίθμων Διαίρει και Βασίλευε Δυναμικός Προγραμματισμός Απληστία Π. Μποζάνης ΤHMMY - Αλγόριθμοι 2014-2015 1 Διαίρει και Βασίλευε Βασικά Βήματα Διαίρει: Κατάτμηση του αρχικού προβλήματος

Διαβάστε περισσότερα

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

Εισαγωγή στους Αλγορίθμους Ενότητα 11η Εισαγωγή στους Αλγορίθμους Ενότητα 11η Διδάσκων Χρήστος Ζαρολιάγκης Καθηγητής Τμήμα Μηχανικών Η/Υ & Πληροφορικής Πανεπιστήμιο Πατρών Email: zaro@ceid.upatras.gr Δυναμικός Προγραμματισμός Σταθμισμένος Χρονοπρογραμματισμός

Διαβάστε περισσότερα

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

Δομές Δεδομένων & Αλγόριθμοι Θέματα Απόδοσης Αλγορίθμων 1 Η Ανάγκη για Δομές Δεδομένων Οι δομές δεδομένων οργανώνουν τα δεδομένα πιο αποδοτικά προγράμματα Πιο ισχυροί υπολογιστές πιο σύνθετες εφαρμογές Οι πιο σύνθετες εφαρμογές απαιτούν

Διαβάστε περισσότερα

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

Συντομότερες ιαδρομές Συντομότερες ιαδρομές ημήτρης Φωτάκης Σχολή Ηλεκτρολόγων Μηχανικών και Μηχανικών Υπολογιστών Εθνικό Μετσόβιο Πολυτεχνείο Συντομότερη ιαδρομή Κατευθυνόμενο G(V, E, w) με μήκη Μήκος διαδρομής Απόσταση d(u,

Διαβάστε περισσότερα

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

Αλγόριθµοι. Παράδειγµα. ιαίρει και Βασίλευε. Παράδειγµα MergeSort. Τεχνικές Σχεδιασµού Αλγορίθµων Τεχνικές Σχεδιασµού Αλγορίθµων Αλγόριθµοι Παύλος Εφραιµίδης pefraimi@ee.duth.gr Ορισµένες γενικές αρχές για τον σχεδιασµό αλγορίθµων είναι: ιαίρει και Βασίλευε (Divide and Conquer) υναµικός Προγραµµατισµός

Διαβάστε περισσότερα

Ειδικά θέματα Αλγορίθμων και Δομών Δεδομένων (ΠΛΕ073) Απαντήσεις 1 ου Σετ Ασκήσεων

Ειδικά θέματα Αλγορίθμων και Δομών Δεδομένων (ΠΛΕ073) Απαντήσεις 1 ου Σετ Ασκήσεων Ειδικά θέματα Αλγορίθμων και Δομών Δεδομένων (ΠΛΕ073) Απαντήσεις 1 ου Σετ Ασκήσεων Άσκηση 1 α) Η δομή σταθμισμένης ένωσης με συμπίεση διαδρομής μπορεί να τροποποιηθεί πολύ εύκολα ώστε να υποστηρίζει τις

Διαβάστε περισσότερα

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

Σχεδίαση & Ανάλυση Αλγορίθμων Σχεδίαση & Ανάλυση Αλγορίθμων Ενότητα 1 Αλγόριθμοι και Πολυπλοκότητα Σταύρος Δ. Νικολόπουλος Τμήμα Μηχανικών Η/Υ & Πληροφορικής Πανεπιστήμιο Ιωαννίνων Webpage: www.cs.uoi.gr/~stavros Εισαγωγή Ας ξεκινήσουμε

Διαβάστε περισσότερα

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

Συντομότερες Διαδρομές Συντομότερη Διαδρομή Συντομότερες Διαδρομές Διδάσκοντες: Σ Ζάχος, Δ Φωτάκης Επιμέλεια διαφανειών: Δ Φωτάκης Σχολή Ηλεκτρολόγων Μηχανικών και Μηχανικών Υπολογιστών Κατευθυνόμενο G(V, E, w) με μήκη Μήκος

Διαβάστε περισσότερα

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

Σχεδίαση & Ανάλυση Αλγορίθμων Σχεδίαση & Ανάλυση Αλγορίθμων Ενότητα 3 Αλγόριθμοι Επιλογής Σταύρος Δ. Νικολόπουλος Τμήμα Μηχανικών Η/Υ & Πληροφορικής Πανεπιστήμιο Ιωαννίνων Webpage: www.cs.uoi.gr/~stavros Αλγόριθμοι Επιλογής Γνωρίζουμε

Διαβάστε περισσότερα

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

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

Διαβάστε περισσότερα

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

Αλγόριθµοι και Πολυπλοκότητα Αλγόριθµοι και Πολυπλοκότητα Ν. Μ. Μισυρλής Τµήµα Πληροφορικής και Τηλεπικοινωνιών, Πανεπιστήµιο Αθηνών Καθηγητής: Ν. Μ. Μισυρλής () Αλγόριθµοι και Πολυπλοκότητα 30 Απριλίου 2015 1 / 48 Εύρεση Ελάχιστου

Διαβάστε περισσότερα

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

Αλγόριθμοι και Πολυπλοκότητα 7ο εξάμηνο Σ.Η.Μ.Μ.Υ. & Σ.Ε.Μ.Φ.Ε. http://www.corelab.ece.ntua.gr/courses/ 4η εβδομάδα: Εύρεση k-οστού Μικρότερου Στοιχείου, Master Theorem, Τεχνική Greedy: Knapsack, Minimum Spanning Tree, Shortest Paths

Διαβάστε περισσότερα

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

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

Διαβάστε περισσότερα

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

Δυναμικός Προγραμματισμός πρόβλημα μεγέθους Ν «Διαίρει και βασίλευε» : ανεξάρτητα υποπροβλήματα διάσπαση πρόβλημα μεγέθους k πρόβλημα μεγέθους Ν-k πρόβλημα μεγέθους Ν Σε κάποιες περιπτώσεις όμως τα υποπροβλήματα δεν είναι ανεξάρτητα

Διαβάστε περισσότερα

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

Σχεδίαση και Ανάλυση Αλγορίθμων Σχεδίαση και Ανάλυση Αλγορίθμων Ενότητα.0 Αλγοριθμική Τεχνική Απληστίας Ελάχιστες Διαδρομές Dijkstra, Bllman-Ford Ελάχιστα Συνδετικά Δένδρα Kruskal, Prim Σταύρος Δ. Νικολόπουλος 0- Τμήμα Μηχανικών Η/Υ

Διαβάστε περισσότερα

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

Θέματα Εφαρμογών Βάσεων Δεδομένων: Ιδιωτικότητα Δεδομένων Θέματα Εφαρμογών Βάσεων Δεδομένων: Ιδιωτικότητα Δεδομένων 3. Δυναμικός Προγραμματισμός Ζαγορίσιος Παναγώτης Παπαοικονόμου Χριστίνα Δυναμικός Προγραμματισμός Μέθοδος επίλυσης σύνθετων προβλημάτων. Όπως

Διαβάστε περισσότερα

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

3η Σειρά Γραπτών Ασκήσεων 1/48 3η Σειρά Γραπτών Ασκήσεων Αλγόριθμοι και Πολυπλοκότητα ΣΗΜΜΥ, Εθνικό Μετσόβιο Πολυτεχνείο 2/48 1 Άσκηση 1: Πομποί και Δέκτες 2 Άσκηση 2: Διακοπές στην Ικαρία 3 Άσκηση 3: Επιστροφή στη Γη 4 Άσκηση

Διαβάστε περισσότερα

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

Στην ενότητα αυτή θα µελετηθούν τα εξής θέµατα: υναµικός Προγραµµατισµός Στην ενότητα αυτή θα µελετηθούν τα εξής θέµατα: Σχεδιασµός αλγορίθµων µε υναµικό Προγραµµατισµό Το πρόβληµα του πολλαπλασιασµού πινάκων ΕΠΛ 3 Αλγόριθµοι και Πολυπλοκότητα 3- υναµικός

Διαβάστε περισσότερα

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

I 1 I 2 I 3 I 4 I 5 I 6 I 7 I 8 I 9 I 10 I 11 Αλγόριθμοι και Πολυπλοκότητα 2η Σειρά Γραπτών και Προγραμματιστικών Ασκήσεων CoReLab ΣΗΜΜΥ - Ε.Μ.Π. Δεκέμβριος 2016 (CoReLab - NTUA) Αλγόριθμοι - 2η σειρά ασκήσεων Δεκέμβριος 2016 1 / 65 Outline 1 Άσκηση

Διαβάστε περισσότερα

Περιεχόμενα. Δομές δεδομένων. Τεχνικές σχεδίασης αλγορίθμων. Εισαγωγή στον προγραμματισμό. Υποπρογράμματα. Επαναληπτικά κριτήρια αξιολόγησης

Περιεχόμενα. Δομές δεδομένων. Τεχνικές σχεδίασης αλγορίθμων. Εισαγωγή στον προγραμματισμό. Υποπρογράμματα. Επαναληπτικά κριτήρια αξιολόγησης Περιεχόμενα Δομές δεδομένων 37. Δομές δεδομένων (θεωρητικά στοιχεία)...11 38. Εισαγωγή στους μονοδιάστατους πίνακες...16 39. Βασικές επεξεργασίες στους μονοδιάστατους πίνακες...25 40. Ασκήσεις στους μονοδιάστατους

Διαβάστε περισσότερα

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

ΕΙΣΑΓΩΓΗ ΣΤΗΝ ΑΝΑΛΥΣΗ ΑΛΓΟΡΙΘΜΩΝ ΕΙΣΑΓΩΓΗ ΣΤΗΝ ΑΝΑΛΥΣΗ ΑΛΓΟΡΙΘΜΩΝ Ενότητα 3: Ασυμπτωτικός συμβολισμός Μαρία Σατρατζέμη Τμήμα Εφαρμοσμένης Πληροφορικής Άδειες Χρήσης Το παρόν εκπαιδευτικό υλικό υπόκειται σε άδειες χρήσης Creative Commons.

Διαβάστε περισσότερα

Χαρακτηριστικά Δυναμικού Προγραμματισμού. Εισαγωγικά. 2 Δυναμικός Προγραμματισμός

Χαρακτηριστικά Δυναμικού Προγραμματισμού. Εισαγωγικά. 2 Δυναμικός Προγραμματισμός Δυναμικός Προγραμματισμός Τμήμα Ηλεκτρονικών Μηχ. & Μηχ. Υπολογιστών Φθινόπωρο 00 ΣΕΛ 40: Παράλληλοι Αλγόριθμοι και Software Διδάσκων: Τάσος Δημητρίου Δυναμικός Προγραμματισμός είχε υπολογιστεί προηγουμένως

Διαβάστε περισσότερα

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

Αλγόριθμοι και Πολυπλοκότητα Αλγόριθμοι και Πολυπλοκότητα Διαίρει και Βασίλευε Δημήτρης Μιχαήλ Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο Διαίρει και Βασίλευε Divide and Conquer Η τεχνική διαίρει και βασίλευε αναφέρεται

Διαβάστε περισσότερα

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

Σχεδίαση και Ανάλυση Αλγορίθμων Σχεδίαση και Ανάλυση Αλγορίθμων Ενότητα 10.0 Μετασχηματισμοί Υπολογιστικών Προβλημάτων Αναγωγές NP-πληρότητα Σταύρος Δ. Νικολόπουλος 2016-17 Τμήμα Μηχανικών Η/Υ & Πληροφορικής Πανεπιστήμιο Ιωαννίνων Webpage:

Διαβάστε περισσότερα

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

ΕΙΣΑΓΩΓΗ ΣΤΗΝ ΑΝΑΛΥΣΗ ΑΛΓΟΡΙΘΜΩΝ ΕΙΣΑΓΩΓΗ ΣΤΗΝ ΑΝΑΛΥΣΗ ΑΛΓΟΡΙΘΜΩΝ Ενότητα 13: Αλγόριθμοι-Μεγάλων ακεραίων- Εκθετοποίηση- Πολλαπλασιασμός πινάκων -Strassen Μαρία Σατρατζέμη Τμήμα Εφαρμοσμένης Πληροφορικής Άδειες Χρήσης Το παρόν εκπαιδευτικό

Διαβάστε περισσότερα

Γραμμικός Προγραμματισμός Μέθοδος Simplex

Γραμμικός Προγραμματισμός Μέθοδος Simplex ΕΘΝΙΚΟ ΜΕΤΣΟΒΙΟ ΠΟΛΥΤΕΧΝΕΙΟ Επιχειρησιακή Έρευνα Γραμμικός Προγραμματισμός Μέθοδος Simplex Η παρουσίαση προετοιμάστηκε από τον Ν.Α. Παναγιώτου Περιεχόμενα Παρουσίασης 1. Πρότυπη Μορφή ΓΠ 2. Πινακοποίηση

Διαβάστε περισσότερα

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

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

Διαβάστε περισσότερα

Παντελής Μπουμπούλης, M.Sc., Ph.D. σελ. 2 math-gr.blogspot.com, bouboulis.mysch.gr

Παντελής Μπουμπούλης, M.Sc., Ph.D. σελ. 2 math-gr.blogspot.com, bouboulis.mysch.gr VI Ολοκληρώματα Παντελής Μπουμπούλης, MSc, PhD σελ mth-grlogspotcom, ououlismyschgr ΜΕΡΟΣ Αρχική Συνάρτηση Ορισμός Έστω f μια συνάρτηση ορισμένη σε ένα διάστημα Δ Αρχική συνάρτηση ή παράγουσα της στο Δ

Διαβάστε περισσότερα

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

Σχεδίαση και Ανάλυση Αλγορίθμων Σχεδίαση και Ανάλυση Αλγορίθμων Ενότητα.0 Σταύρος Δ. Νικολόπουλος 06-7 Τμήμα Μηχανικών Η/Υ & Πληροφορικής Πανεπιστήμιο Ιωαννίνων Webpage: www.cs.uoi.gr/~stavros Ταξινόμηση Selection-Sort Bubble-Sort και

Διαβάστε περισσότερα

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

3η Σειρά Γραπτών Ασκήσεων 1/55 3η Σειρά Γραπτών Ασκήσεων Αλγόριθμοι και Πολυπλοκότητα ΣΗΜΜΥ, Εθνικό Μετσόβιο Πολυτεχνείο 2/55 1 Άσκηση 1: Πομποί και Δέκτες 2 Άσκηση 2: Διακοπές στην Ικαρία 3 Άσκηση 3: Επιστροφή στη Γη 4 Άσκηση

Διαβάστε περισσότερα

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

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

Διαβάστε περισσότερα

ΑΛΓΟΡΙΘΜΟΙ Άνοιξη I. ΜΗΛΗΣ

ΑΛΓΟΡΙΘΜΟΙ  Άνοιξη I. ΜΗΛΗΣ ΑΛΓΟΡΙΘΜΟΙ http://eclass.aueb.gr/courses/inf161/ Άνοιξη 216 - I. ΜΗΛΗΣ ΔΥΝΑΜΙΚΟΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΑΛΓΟΡΙΘΜΟΙ - ΑΝΟΙΞΗ 216 - Ι. ΜΗΛΗΣ 9 DP II 1 Dynamic Programming ΓΕΝΙΚΗ ΙΔΕΑ 1. Ορισμός υπο-προβλήματος/ων

Διαβάστε περισσότερα

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

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

Διαβάστε περισσότερα

Στοχαστικές Στρατηγικές. διαδρομής (1)

Στοχαστικές Στρατηγικές. διαδρομής (1) Στοχαστικές Στρατηγικές η ενότητα: Το γενικό πρόβλημα ελάχιστης διαδρομής () Τμήμα Μαθηματικών, ΑΠΘ Ακαδημαϊκό έτος 08-09 Χειμερινό Εξάμηνο Παπάνα Αγγελική Μεταδιδακτορική ερευνήτρια, ΑΠΘ & Πανεπιστήμιο

Διαβάστε περισσότερα

Αριθμητική Ανάλυση και Εφαρμογές

Αριθμητική Ανάλυση και Εφαρμογές Αριθμητική Ανάλυση και Εφαρμογές Διδάσκων: Δημήτριος Ι. Φωτιάδης Τμήμα Μηχανικών Επιστήμης Υλικών Ιωάννινα 07-08 Αριθμητική Παραγώγιση Εισαγωγή Ορισμός 7. Αν y f x είναι μια συνάρτηση ορισμένη σε ένα διάστημα

Διαβάστε περισσότερα

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

Μάθημα 20: Δυναμικός Προγραμματισμός (DP) Μάθημα 20: Δυναμικός Προγραμματισμός (DP) Γενικά Είναι μια γενική μεθοδολογία και δεν υπάρχει ένα πρότυπο διατύπωσης /επίλυσης προβλημάτων Αρχικά ξεκίνησε σαν μαθηματική μέθοδος για τη λήψη σειράς αλληλοσυνδεόμενων

Διαβάστε περισσότερα

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

Εισαγωγή στην Ανάλυση Αλγορίθμων Εισαγωγή στην Ανάλυση Αλγορίθμων (4) Μεθοδολογία αναδρομικών σχέσεων (Ι) Με επανάληψη της αναδρομής Έστω όπου r και a είναι σταθερές. Βρίσκουμε τη σχέση που εκφράζει την T(n) συναρτήσει της T(n-) την T(n)

Διαβάστε περισσότερα

Ποσοτικές Μέθοδοι στη Διοίκηση Επιχειρήσεων ΙΙ Σύνολο- Περιεχόμενο Μαθήματος

Ποσοτικές Μέθοδοι στη Διοίκηση Επιχειρήσεων ΙΙ Σύνολο- Περιεχόμενο Μαθήματος Ποσοτικές Μέθοδοι στη Διοίκηση Επιχειρήσεων ΙΙ Σύνολο- Περιεχόμενο Μαθήματος Χιωτίδης Γεώργιος Τμήμα Λογιστικής και Χρηματοοικονομικής Άδειες Χρήσης Το παρόν εκπαιδευτικό υλικό υπόκειται σε άδειες χρήσης

Διαβάστε περισσότερα

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

Σχεδίαση και Ανάλυση Αλγορίθμων Σχεδίαση και Ανάλυση Αλγορίθμων Ενότητα 3.0 Σταύρος Δ. Νικολόπουλος 0-7 Τμήμα Μηχανικών Η/Υ & Πληροφορικής Πανεπιστήμιο Ιωαννίνων Webpage: www.cs.uoi.gr/~stavros Διαίρει και Βασίλευε Quick-sort και Merge-sort

Διαβάστε περισσότερα

Διάλεξη 04: Παραδείγματα Ανάλυσης

Διάλεξη 04: Παραδείγματα Ανάλυσης Διάλεξη 04: Παραδείγματα Ανάλυσης Πολυπλοκότητας/Ανάλυση Αναδρομικών Αλγόριθμων Στην ενότητα αυτή θα μελετηθούν τα εξής επιμέρους θέματα: - Παραδείγματα Ανάλυσης Πολυπλοκότητας : Μέθοδοι, παραδείγματα

Διαβάστε περισσότερα

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

Στην ενότητα αυτή θα µελετηθούν τα εξής θέµατα: υναµικός Προγραµµατισµός Στην ενότητα αυτή θα µελετηθούν τα εξής θέµατα: Σχεδιασµός αλγορίθµων µε υναµικό Προγραµµατισµό Το πρόβληµα του πολλαπλασιασµού πινάκων ΕΠΛ 3 Αλγόριθµοι και Πολυπλοκότητα 3- υναµικός

Διαβάστε περισσότερα

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

ΕΙΣΑΓΩΓΗ ΣΤΗΝ ΑΝΑΛΥΣΗ ΑΛΓΟΡΙΘΜΩΝ ΕΙΣΑΓΩΓΗ ΣΤΗΝ ΑΝΑΛΥΣΗ ΑΛΓΟΡΙΘΜΩΝ Ενότητα 4: Αναδρομικές σχέσεις και ανάλυση αλγορίθμων Μαρία Σατρατζέμη Τμήμα Εφαρμοσμένης Πληροφορικής Άδειες Χρήσης Το παρόν εκπαιδευτικό υλικό υπόκειται σε άδειες χρήσης

Διαβάστε περισσότερα

Έστω ένας πίνακας με όνομα Α δέκα θέσεων : 1 η 2 η 3 η 4 η 5 η 6 η 7 η 8 η 9 η 10 η

Έστω ένας πίνακας με όνομα Α δέκα θέσεων : 1 η 2 η 3 η 4 η 5 η 6 η 7 η 8 η 9 η 10 η Μονοδιάστατοι Πίνακες Τι είναι ο πίνακας γενικά : Πίνακας είναι μια Στατική Δομή Δεδομένων. Δηλαδή συνεχόμενες θέσεις μνήμης, όπου το πλήθος των θέσεων είναι συγκεκριμένο. Στις θέσεις αυτές καταχωρούμε

Διαβάστε περισσότερα

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

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

Διαβάστε περισσότερα

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

Αλγόριθµοι και Πολυπλοκότητα Αλγόριθµοι και Πολυπλοκότητα Ενότητα 3 Αλγόριθµοι Γραφηµάτων Bellman Ford Ν. Μ. Μισυρλής Τµήµα Πληροφορικής και Τηλεπικοινωνιών, Καθηγητής: Ν. Μ. Μισυρλής Αλγόριθµοι και Πολυπλοκότητα - Ενότητα 3 Bellman

Διαβάστε περισσότερα

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

Εισαγωγή στους Αλγορίθμους Εισαγωγή στους Αλγορίθμους Ενότητα 7η Διδάσκων Χρήστος Ζαρολιάγκης Καθηγητής Τμήμα Μηχανικών Η/Υ & Πληροφορικής Πανεπιστήμιο Πατρών Email: zaro@ceid.upatras.gr Αλγόριθμοι Γραφημάτων Τοπολογική Διάταξη

Διαβάστε περισσότερα

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

I 1 I 2 I 3 I 4 I 5 I 6 I 7 I 8 I 9 I 10 I 11 Αλγόριθμοι και Πολυπλοκότητα 2η Σειρά Γραπτών και Προγραμματιστικών Ασκήσεων CoReLab ΣΗΜΜΥ - Ε.Μ.Π. Δεκέμβριος 2018 (CoReLab - NTUA) Αλγόριθμοι - 2η σειρά ασκήσεων Δεκέμβριος 2018 1 / 64 Outline 1 Άσκηση

Διαβάστε περισσότερα

Κατ οίκον Εργασία 2 Σκελετοί Λύσεων

Κατ οίκον Εργασία 2 Σκελετοί Λύσεων Κατ οίκον Εργασία 2 Σκελετοί Λύσεων 1. Ο αλγόριθµος κτίζει όλες τις δυνατές αναθέσεις εργασιών στους φοιτητές (υπάρχουν n! διαφορετικές αναθέσεις) και επιστρέφει εκείνη µε το µέγιστο βαθµό καταλληλότητας.

Διαβάστε περισσότερα

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

Αλγόριθµοι και Πολυπλοκότητα Αλγόριθµοι και Πολυπλοκότητα Ενότητα 5 υναµικός Προγραµµατισµός Ν. Μ. Μισυρλής Τµήµα Πληροφορικής και Τηλεπικοινωνιών, Καθηγητής: Ν. Μ. Μισυρλής Αλγόριθµοι και Πολυπλοκότητα - Ενότητα 5 1 / 49 Εισαγωγή

Διαβάστε περισσότερα

Ορθότητα Χωρική αποδοτικότητα. Βελτιστότητα. Θεωρητική ανάλυση Εμπειρική ανάλυση. Αλγόριθμοι - Τμήμα Πληροφορικής ΑΠΘ -4ο εξάμηνο 1

Ορθότητα Χωρική αποδοτικότητα. Βελτιστότητα. Θεωρητική ανάλυση Εμπειρική ανάλυση. Αλγόριθμοι - Τμήμα Πληροφορικής ΑΠΘ -4ο εξάμηνο 1 Ανάλυση Αλγορίθμων Θέματα Θέματα: Ορθότητα Χρονική αποδοτικότητα Χωρική αποδοτικότητα Βελτιστότητα Προσεγγίσεις: Θεωρητική ανάλυση Εμπειρική ανάλυση Αλγόριθμοι - Τμήμα Πληροφορικής ΑΠΘ -4ο εξάμηνο 1 Θεωρητική

Διαβάστε περισσότερα

Διάλεξη 04: Παραδείγματα Ανάλυσης Πολυπλοκότητας/Ανάλυση Αναδρομικών Αλγόριθμων

Διάλεξη 04: Παραδείγματα Ανάλυσης Πολυπλοκότητας/Ανάλυση Αναδρομικών Αλγόριθμων Διάλεξη 04: Παραδείγματα Ανάλυσης Πολυπλοκότητας/Ανάλυση Αναδρομικών Αλγόριθμων Στην ενότητα αυτή θα μελετηθούν τα εξής επιμέρους θέματα: - Παραδείγματα Ανάλυσης Πολυπλοκότητας : Μέθοδοι, παραδείγματα

Διαβάστε περισσότερα

Λύσεις 4ης Σειράς Ασκήσεων

Λύσεις 4ης Σειράς Ασκήσεων Λύσεις 4ης Σειράς Ασκήσεων Άσκηση 1 Αναγάγουμε τν Κ 0 που γνωρίζουμε ότι είναι μη-αναδρομική (μη-επιλύσιμη) στην γλώσσα: L = {p() η μηχανή Turing Μ τερματίζει με είσοδο κενή ταινία;} Δοσμένης της περιγραφής

Διαβάστε περισσότερα

ΕΠΛ231 Δομές Δεδομένων και Αλγόριθμοι 4. Παραδείγματα Ανάλυσης Πολυπλοκότητας Ανάλυση Αναδρομικών Αλγόριθμων

ΕΠΛ231 Δομές Δεδομένων και Αλγόριθμοι 4. Παραδείγματα Ανάλυσης Πολυπλοκότητας Ανάλυση Αναδρομικών Αλγόριθμων ΕΠΛ31 Δομές Δεδομένων και Αλγόριθμοι 4. Παραδείγματα Ανάλυσης Πολυπλοκότητας Ανάλυση Αναδρομικών Αλγόριθμων Διάλεξη 04: Παραδείγματα Ανάλυσης Πολυπλοκότητας/Ανάλυση Αναδρομικών Αλγόριθμων Στην ενότητα

Διαβάστε περισσότερα

ΔΥΝΑΜΙΚΟΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ

ΔΥΝΑΜΙΚΟΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΔΥΝΑΜΙΚΟΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ Εισαγωγή Ο Δυναμικός Προγραμματισμός (ΔΠ) είναι μία υπολογιστική μέθοδος η οποία εφαρμόζεται όταν πρόκειται να ληφθεί μία σύνθετη απόφαση η οποία προκύπτει από τη σύνθεση επιμέρους

Διαβάστε περισσότερα

Αλγόριθμοι Γραφημάτων

Αλγόριθμοι Γραφημάτων Αλγόριθμοι Γραφημάτων 1. Συντομότατα μονοπάτια 2. Αλγόριθμος Bellman-Ford 3. Αλγόριθμος Dijkstra 4. Floyd-Warshall Εισαγωγή στην Ανάλυση Αλγορίθμων Μάγια Σατρατζέμη Single-Source Shortest Path Πρόβλημα:

Διαβάστε περισσότερα

a n = 3 n a n+1 = 3 a n, a 0 = 1

a n = 3 n a n+1 = 3 a n, a 0 = 1 Διακριτά Μαθηματικά ΙΙ Χρήστος Νομικός Τμήμα Μηχανικών Η/Υ και Πληροφορικής Πανεπιστήμιο Ιωαννίνων 2018 Χρήστος Νομικός ( Τμήμα Μηχανικών Η/Υ Διακριτά και Πληροφορικής Μαθηματικά Πανεπιστήμιο ΙΙ Ιωαννίνων

Διαβάστε περισσότερα

Χρήστος Ι. Σχοινάς Αν. Καθηγητής ΔΠΘ. Συμπληρωματικές σημειώσεις για το μάθημα: «Επιχειρησιακή Έρευνα ΙΙ»

Χρήστος Ι. Σχοινάς Αν. Καθηγητής ΔΠΘ. Συμπληρωματικές σημειώσεις για το μάθημα: «Επιχειρησιακή Έρευνα ΙΙ» Χρήστος Ι. Σχοινάς Αν. Καθηγητής ΔΠΘ Συμπληρωματικές σημειώσεις για το μάθημα: «Επιχειρησιακή Έρευνα ΙΙ» 2 ΔΥΝΑΜΙΚΟΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ Προβλήματα ελάχιστης συνεκτικότητας δικτύου Το πρόβλημα της ελάχιστης

Διαβάστε περισσότερα

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

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

Διαβάστε περισσότερα

Θεμελιώδη Θέματα Επιστήμης Υπολογιστών

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

Διαβάστε περισσότερα

ΠΑΝΕΠΙΣΤΗΜΙΟ ΜΑΚΕΔΟΝΙΑΣ ΟΙΚΟΝΟΜΙΚΩΝ ΚΑΙ ΚΟΙΝΩΝΙΚΩΝ ΕΠΙΣΤΗΜΩΝ ΤΜΗΜΑ ΕΦΑΡΜΟΣΜΕΝΗΣ ΠΛΗΡΟΦΟΡΙΚΗΣ ΤΕΧΝΗΤΗ ΝΟΗΜΟΣΥΝΗ

ΠΑΝΕΠΙΣΤΗΜΙΟ ΜΑΚΕΔΟΝΙΑΣ ΟΙΚΟΝΟΜΙΚΩΝ ΚΑΙ ΚΟΙΝΩΝΙΚΩΝ ΕΠΙΣΤΗΜΩΝ ΤΜΗΜΑ ΕΦΑΡΜΟΣΜΕΝΗΣ ΠΛΗΡΟΦΟΡΙΚΗΣ ΤΕΧΝΗΤΗ ΝΟΗΜΟΣΥΝΗ ΠΑΝΕΠΙΣΤΗΜΙΟ ΜΑΚΕΔΟΝΙΑΣ ΟΙΚΟΝΟΜΙΚΩΝ ΚΑΙ ΚΟΙΝΩΝΙΚΩΝ ΕΠΙΣΤΗΜΩΝ ΤΜΗΜΑ ΕΦΑΡΜΟΣΜΕΝΗΣ ΠΛΗΡΟΦΟΡΙΚΗΣ ΤΕΧΝΗΤΗ ΝΟΗΜΟΣΥΝΗ Τελικές εξετάσεις Πέμπτη 27 Ιουνίου 2013 10:003:00 Έστω το πάζλ των οκτώ πλακιδίων (8-puzzle)

Διαβάστε περισσότερα

Διαχείριση Εφοδιαστικής Αλυσίδας ΙΙ

Διαχείριση Εφοδιαστικής Αλυσίδας ΙΙ Διαχείριση Εφοδιαστικής Αλυσίδας ΙΙ 1 η Διάλεξη: Αναδρομή στον Μαθηματικό Προγραμματισμό 2019, Πολυτεχνική Σχολή Εργαστήριο Συστημάτων Σχεδιασμού, Παραγωγής και Λειτουργιών Περιεχόμενα 1. Γραμμικός Προγραμματισμός

Διαβάστε περισσότερα

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

4η Γραπτή Ασκηση Αλγόριθμοι και Πολυπλοκότητα CoReLab ΣΗΜΜΥ 3/2/2019 CoReLab (ΣΗΜΜΥ) 4η Γραπτή Ασκηση 3/2/ / 37 4η Γραπτή Άσκηση Αλγόριθμοι και Πολυπλοκότητα CoReLab ΣΗΜΜΥ 3/2/2019 CoReLab (ΣΗΜΜΥ) 4η Γραπτή Άσκηση 3/2/2019 1 / 37 Άσκηση 1 Πρέπει να βρούμε όλες τις καλές προτάσεις φίλων για τον i ανάμεσα σε όλους

Διαβάστε περισσότερα

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

Αλγόριθµοι και Πολυπλοκότητα Αλγόριθµοι και Πολυπλοκότητα Ν. Μ. Μισυρλής Τµήµα Πληροφορικής και Τηλεπικοινωνιών, Πανεπιστήµιο Αθηνών Καθηγητής: Ν. Μ. Μισυρλής () Αλγόριθµοι και Πολυπλοκότητα 23 Μαρτίου 2017 1 / 20 Επιλογή Το πρόβληµα

Διαβάστε περισσότερα

ΑΚΕΡΑΙΟΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ & ΣΥΝΔΥΑΣΤΙΚΗ ΒΕΛΤΙΣΤΟΠΟΙΗΣΗ ΚΕΦΑΛΑΙΟ 1

ΑΚΕΡΑΙΟΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ & ΣΥΝΔΥΑΣΤΙΚΗ ΒΕΛΤΙΣΤΟΠΟΙΗΣΗ ΚΕΦΑΛΑΙΟ 1 ΑΚΕΡΑΙΟΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ & ΣΥΝΔΥΑΣΤΙΚΗ ΒΕΛΤΙΣΤΟΠΟΙΗΣΗ ΚΕΦΑΛΑΙΟ 1 1 Βελτιστοποίηση Στην προσπάθεια αντιμετώπισης και επίλυσης των προβλημάτων που προκύπτουν στην πράξη, αναπτύσσουμε μαθηματικά μοντέλα,

Διαβάστε περισσότερα

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

Αλγόριθµοι και Πολυπλοκότητα Αλγόριθµοι και Πολυπλοκότητα Ν. Μ. Μισυρλής Τµήµα Πληροφορικής και Τηλεπικοινωνιών, Πανεπιστήµιο Αθηνών Καθηγητής: Ν. Μ. Μισυρλής () Αλγόριθµοι και Πολυπλοκότητα 6 Μαΐου 2015 1 / 42 Εύρεση Ελάχιστου Μονοπατιού

Διαβάστε περισσότερα

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

4η Γραπτή Ασκηση Αλγόριθμοι και Πολυπλοκότητα CoReLab ΣΗΜΜΥ 7 Φεβρουαρίου 2017 CoReLab (ΣΗΜΜΥ) 4η Γραπτή Ασκηση 7 Φεβρουαρίου / 38 4η Γραπτή Άσκηση Αλγόριθμοι και Πολυπλοκότητα CoReLab ΣΗΜΜΥ 7 Φεβρουαρίου 2017 CoReLab (ΣΗΜΜΥ) 4η Γραπτή Άσκηση 7 Φεβρουαρίου 2017 1 / 38 Άσκηση 1 Πρέπει να βρούμε όλες τις καλές προτάσεις φίλων για τον

Διαβάστε περισσότερα

Επιχειρησιακή Έρευνα

Επιχειρησιακή Έρευνα ΕΛΛΗΝΙΚΗ ΔΗΜΟΚΡΑΤΙΑ Ανώτατο Εκπαιδευτικό Ίδρυμα Πειραιά Τεχνολογικού Τομέα Επιχειρησιακή Έρευνα Ενότητα #: Δυναμικός Προγραμματισμός Αθανάσιος Σπυριδάκος Καθηγητής Τμήμα Διοίκησης Επιχειρήσεων Άδειες Χρήσης

Διαβάστε περισσότερα

Άσκηση 1. Ψευδοκώδικας Kruskal. Παρακάτω βλέπουμε την εφαρμογή του στο παρακάτω συνδεδεμένο γράφημα.

Άσκηση 1. Ψευδοκώδικας Kruskal. Παρακάτω βλέπουμε την εφαρμογή του στο παρακάτω συνδεδεμένο γράφημα. Άσκηση 1 Ψευδοκώδικας Kruskal Παρακάτω βλέπουμε την εφαρμογή του στο παρακάτω συνδεδεμένο γράφημα. Αντιστοιχίζω τους κόμβους με αριθμούς από το 0 έως το 4. 2Η ΕΡΓΑΣΙΑ ΑΛΓΟΡΙΘΜΟΙ & ΠΟΛΥΠΛΟΚΟΤΗΤΑ - MAY 2018

Διαβάστε περισσότερα

Προβλήματα, αλγόριθμοι, ψευδοκώδικας

Προβλήματα, αλγόριθμοι, ψευδοκώδικας Προβλήματα, αλγόριθμοι, ψευδοκώδικας October 11, 2011 Στο μάθημα Αλγοριθμική και Δομές Δεδομένων θα ασχοληθούμε με ένα μέρος της διαδικασίας επίλυσης υπολογιστικών προβλημάτων. Συγκεκριμένα θα δούμε τι

Διαβάστε περισσότερα

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

Γραμμικός Προγραμματισμός Μια εταιρεία παράγει κέικ δύο κατηγοριών, απλά και πολυτελείας: Ένα απλό κέικ αποδίδει κέρδος 1 ευρώ. Ένα κέικ πολυτελείας αποδίδει κέρδος 6 ευρώ. Η καθημερινή ζήτηση του απλού κέικ είναι 200. Η καθημερινή

Διαβάστε περισσότερα

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

Αλγόριθμοι και Δομές Δεδομένων (Ι) (εισαγωγικές έννοιες) Ιόνιο Πανεπιστήμιο Τμήμα Πληροφορικής Εισαγωγή στην Επιστήμη των Υπολογιστών 2015-16 Αλγόριθμοι και Δομές Δεδομένων (Ι) (εισαγωγικές έννοιες) http://di.ionio.gr/~mistral/tp/csintro/ Μ.Στεφανιδάκης Τι είναι

Διαβάστε περισσότερα

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

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

Διαβάστε περισσότερα

Σημειωματάριο Δευτέρας 4 Δεκ. 2017

Σημειωματάριο Δευτέρας 4 Δεκ. 2017 Σημειωματάριο Δευτέρας 4 Δεκ. 2017 Ο αλγόριθμος Floyd-Warshall για την έυρεση όλων των αποστάσεων σε ένα γράφημα με βάρη στις ακμές Συνεχίσαμε σήμερα το θέμα της προηγούμενης Τετάρτης. Έχουμε ένα γράφημα

Διαβάστε περισσότερα

ΑΛΓΟΡΙΘΜΟΙ Άνοιξη I. ΜΗΛΗΣ

ΑΛΓΟΡΙΘΜΟΙ  Άνοιξη I. ΜΗΛΗΣ ΑΛΓΟΡΙΘΜΟΙ http://eclass.aueb.gr/courses/inf161/ Άνοιξη 2016 - I. ΜΗΛΗΣ ΔΥΝΑΜΙΚΟΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΑΛΓΟΡΙΘΜΟΙ - ΑΝΟΙΞΗ 2016 - Ι. ΜΗΛΗΣ 08 DP I 1 Dynamic Programming Richard Bellman (1953) Etymology (at

Διαβάστε περισσότερα

Προβλήματα Μεταφορών (Transportation)

Προβλήματα Μεταφορών (Transportation) Προβλήματα Μεταφορών (Transportation) Παραδείγματα Διατύπωση Γραμμικού Προγραμματισμού Δικτυακή Διατύπωση Λύση Γενική Μέθοδος Simplex Μέθοδος Simplex για Προβλήματα Μεταφοράς Παράδειγμα: P&T Co ΗεταιρείαP&T

Διαβάστε περισσότερα

Διδάσκων: Παναγιώτης Ανδρέου

Διδάσκων: Παναγιώτης Ανδρέου Διάλεξη 04: ΠαραδείγματαΑνάλυσης Πολυπλοκότητας/Ανάλυση Αναδρομικών Αλγόριθμων Στην ενότητα αυτή θα μελετηθούν τα εξής επιμέρους θέματα: -Παραδείγματα Ανάλυσης Πολυπλοκότητας : Μέθοδοι, παραδείγματα -Γραμμική

Διαβάστε περισσότερα

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

Αλγόριθμοι και Πολυπλοκότητα Αλγόριθμοι και Πολυπλοκότητα Άπληστοι Αλγόριθμοι Δημήτρης Μιχαήλ Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο Άπληστοι Αλγόριθμοι Είναι δύσκολο να ορίσουμε ακριβώς την έννοια του άπληστου

Διαβάστε περισσότερα

max c 1 x 1 + c 2 x c n x n υπό a 11 x 1 + a 12 x a 1n x n b 1 a 21 x 1 + a 22 x a 2n x n b 2 a m1 x 1 + a m2 x a mn x n b m

max c 1 x 1 + c 2 x c n x n υπό a 11 x 1 + a 12 x a 1n x n b 1 a 21 x 1 + a 22 x a 2n x n b 2 a m1 x 1 + a m2 x a mn x n b m Υπολογιστικές Μέθοδοι στη Θεωρία Αποφάσεων Ενότητα 10 Εισαγωγή στον Ακέραιο Προγραμματισμό Αντώνης Οικονόμου Τμήμα Μαθηματικών Πανεπιστήμιο Αθηνών Προπτυχιακό πρόγραμμα σπουδών 29 Φεβρουαρίου 2016 Προβλήματα

Διαβάστε περισσότερα

Θεωρία Παιγνίων και Αποφάσεων. Ενότητα 5: Εύρεση σημείων ισορροπίας σε παίγνια μηδενικού αθροίσματος. Ε. Μαρκάκης. Επικ. Καθηγητής

Θεωρία Παιγνίων και Αποφάσεων. Ενότητα 5: Εύρεση σημείων ισορροπίας σε παίγνια μηδενικού αθροίσματος. Ε. Μαρκάκης. Επικ. Καθηγητής Θεωρία Παιγνίων και Αποφάσεων Ενότητα 5: Εύρεση σημείων ισορροπίας σε παίγνια μηδενικού αθροίσματος Ε. Μαρκάκης Επικ. Καθηγητής Περίληψη Παίγνια μηδενικού αθροίσματος PessimisIc play Αμιγείς max-min και

Διαβάστε περισσότερα

Επιχειρησιακή Έρευνα I

Επιχειρησιακή Έρευνα I Επιχειρησιακή Έρευνα I Κωστής Μαμάσης Παρασκευή 09:00 12:00 Σημειώσεις των Α. Platis, K. Mamasis Περιεχόμενα 1. Εισαγωγή 2. Γραμμικός Προγραμματισμός 1. Μοντελοποίηση 2. Μέθοδος Simplex 1. Αλγόριθμός Simplex

Διαβάστε περισσότερα

Θεωρία Γραφημάτων Θεμελιώσεις-Αλγόριθμοι-Εφαρμογές

Θεωρία Γραφημάτων Θεμελιώσεις-Αλγόριθμοι-Εφαρμογές Θεωρία Γραφημάτων Θεμελιώσεις-Αλγόριθμοι-Εφαρμογές Ενότητα 1 ΕΙΣΑΓΩΓΗ ΣΤΗ ΘΕΩΡΙΑ ΓΡΑΦΗΜΑΤΩΝ Σταύρος Δ. Νικολόπουλος 2017-18 www.cs.uoi.gr/~stavros Σχετικά με το Μάθημα Ώρες γραφείου: Δευτέρα Παρασκευή

Διαβάστε περισσότερα