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

Σχετικά έγγραφα
ΑΛΓΟΡΙΘΜΟΙ Άνοιξη I. ΜΗΛΗΣ

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

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

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

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

Κεφάλαιο 4. Δυναµικός Προγραµµατισµός (Dynamic Programming) Χρησιµοποιήθηκε υλικό από τις αγγλικές διαφάνειες του Kevin Wayne.

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

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

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

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

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

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

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

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

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

HY380 Αλγόριθμοι και πολυπλοκότητα Hard Problems

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

ΚΥΠΡΙΑΚΗ ΕΤΑΙΡΕΙΑ ΠΛΗΡΟΦΟΡΙΚΗΣ CYPRUS COMPUTER SOCIETY ΠΑΓΚΥΠΡΙΟΣ ΜΑΘΗΤΙΚΟΣ ΔΙΑΓΩΝΙΣΜΟΣ ΠΛΗΡΟΦΟΡΙΚΗΣ 19/5/2007

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

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

Outline. 6 Edit Distance

ΚΥΠΡΙΑΚΗ ΕΤΑΙΡΕΙΑ ΠΛΗΡΟΦΟΡΙΚΗΣ CYPRUS COMPUTER SOCIETY ΠΑΓΚΥΠΡΙΟΣ ΜΑΘΗΤΙΚΟΣ ΔΙΑΓΩΝΙΣΜΟΣ ΠΛΗΡΟΦΟΡΙΚΗΣ 24/3/2007

Κεφάλαιο 4. Διαίρει και Βασίλευε (Divide and Conquer) Παύλος Εφραιμίδης V1.1,

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

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

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

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

Προγραμματισμός Αναδρομή

Αναδρομή (Recursion) Πώς να λύσουμε ένα πρόβλημα κάνοντας λίγη δουλειά και ανάγοντας το υπόλοιπο να λυθεί με τον ίδιο τρόπο.

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

Αλγόριθμοι Ταξινόμησης Μέρος 3

Matrices and Determinants

Κεφάλαιο 4. Διαίρει και Βασίλευε (Divide and Conquer) Χρησιµοποιήθηκε υλικό από τις αγγλικές διαφάνειες του Kevin Wayne.

Προγραμματισμός Αναδρομή

Ανάλυση Αλγορίθµων. Σύντοµη επανάληψη (ΕΠΛ 035).

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

ΕΛΛΗΝΙΚΗ ΔΗΜΟΚΡΑΤΙΑ ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΡΗΤΗΣ. Ψηφιακή Οικονομία. Διάλεξη 10η: Basics of Game Theory part 2 Mαρίνα Μπιτσάκη Τμήμα Επιστήμης Υπολογιστών

Αναδροµή (Recursion) ύο παρεξηγήσεις. Σκέψου Αναδροµικά. Τρίγωνο Sierpinski Μη αναδροµικός ορισµός;

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

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

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

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

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

Assalamu `alaikum wr. wb.

ΚΥΠΡΙΑΚΟΣ ΣΥΝΔΕΣΜΟΣ ΠΛΗΡΟΦΟΡΙΚΗΣ CYPRUS COMPUTER SOCIETY 21 ος ΠΑΓΚΥΠΡΙΟΣ ΜΑΘΗΤΙΚΟΣ ΔΙΑΓΩΝΙΣΜΟΣ ΠΛΗΡΟΦΟΡΙΚΗΣ Δεύτερος Γύρος - 30 Μαρτίου 2011

ΕΙΣΑΓΩΓΗ ΣΤΗ ΣΤΑΤΙΣΤΙΚΗ ΑΝΑΛΥΣΗ

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

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

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

Homework 8 Model Solution Section

Finite Field Problems: Solutions

Πρόβλημα 1: Αναζήτηση Ελάχιστης/Μέγιστης Τιμής

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

ΚΥΠΡΙΑΚΗ ΕΤΑΙΡΕΙΑ ΠΛΗΡΟΦΟΡΙΚΗΣ CYPRUS COMPUTER SOCIETY ΠΑΓΚΥΠΡΙΟΣ ΜΑΘΗΤΙΚΟΣ ΔΙΑΓΩΝΙΣΜΟΣ ΠΛΗΡΟΦΟΡΙΚΗΣ 6/5/2006

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

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

Ψηφιακή Οικονομία. Διάλεξη 11η: Markets and Strategic Interaction in Networks Mαρίνα Μπιτσάκη Τμήμα Επιστήμης Υπολογιστών

ΕΛΛΗΝΙΚΗ ΔΗΜΟΚΡΑΤΙΑ ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΡΗΤΗΣ. Ψηφιακή Οικονομία. Διάλεξη 7η: Consumer Behavior Mαρίνα Μπιτσάκη Τμήμα Επιστήμης Υπολογιστών

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

TMA4115 Matematikk 3

Συστήματα Διαχείρισης Βάσεων Δεδομένων

Reminders: linear functions

Διάλεξη 09: Αλγόριθμοι Ταξινόμησης I

CHAPTER 25 SOLVING EQUATIONS BY ITERATIVE METHODS

Section 8.3 Trigonometric Equations

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

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

ΑΛΓΟΡΙΘΜΟΙ Άνοιξη 2017

ΠΛΗ111. Ανοιξη Μάθηµα 9 ο. Ταξινόµηση. Τµήµα Ηλεκτρονικών Μηχανικών και Μηχανικών Υπολογιστών Πολυτεχνείο Κρήτης

Other Test Constructions: Likelihood Ratio & Bayes Tests

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

Example of the Baum-Welch Algorithm

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

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

Προγραµµατισµός. Αναδροµή (1/2)

ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ. Ταξινόµηση Mergesort Κεφάλαιο 8. Ε. Μαρκάκης Επίκουρος Καθηγητής

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

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

Λυσεις προβλημάτων τελικής φάσης Παγκύπριου Μαθητικού Διαγωνισμού Πληροφορικής 2007

The Simply Typed Lambda Calculus

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

καθ. Βασίλης Μάγκλαρης

Phys460.nb Solution for the t-dependent Schrodinger s equation How did we find the solution? (not required)

2 Composition. Invertible Mappings

EPL 603 TOPICS IN SOFTWARE ENGINEERING. Lab 5: Component Adaptation Environment (COPE)

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

Buried Markov Model Pairwise

(C) 2010 Pearson Education, Inc. All rights reserved.

Instruction Execution Times

Κεφάλαιο 8. NP και Υπολογιστική Δυσεπιλυσιμότητα. Παύλος Εφραιμίδης V1.1,

ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΥΠΡΟΥ ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ. ΘΕΩΡΗΤΙΚΗ ΑΣΚΗΣΗ 1 ΛΥΣΕΙΣ Ανάλυση Πολυπλοκότητας

Δημιουργία Λογαριασμού Διαχείρισης Business Telephony Create a Management Account for Business Telephony

PARTIAL NOTES for 6.1 Trigonometric Identities

SOLUTIONS TO MATH38181 EXTREME VALUES AND FINANCIAL RISK EXAM

Merge Sort (Ταξινόμηση με συγχώνευση) 6/14/2007 3:04 AM Merge Sort 1

Εισαγωγή στον Προγραμματισμό

ΕΚΠ 413 / ΕΚΠ 606 Αυτόνοµοι (Ροµ οτικοί) Πράκτορες

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

Διάλεξη 10: Αλγόριθμοι Ταξινόμησης II

Διδάσκων: Κωνσταντίνος Κώστα Διαφάνειες: Δημήτρης Ζεϊναλιπούρ

Transcript:

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

Dynamic Programming Richard Bellman (1953) Etymology (at that time; Bellman was studying multi-stage decision processes) Dynamic: relating to time Programming : what to do and when to do it Dynamic Programming: planning over time Bellman gave an impressive name to be accepted by the Secretary of Defense (Wilson) who didn t like math research ΑΛΓΟΡΙΘΜΟΙ - ΑΝΟΙΞΗ 2016 - Ι. ΜΗΛΗΣ 08 DP I 2

Dynamic Programming ΓΕΝΙΚΗ ΙΔΕΑ Ορισμός υπο-προβλημάτων ίδιας δομής με το αρχικό πρόβλημα επικαλυπτόμενα υπο-προβλήματα Optimal substructure Μία βέλτιστη λύση περιέχει/μπορεί να βρεθεί από τις βέλτιστες λύσεις των υπο-προβλημάτων της Λύσε τα υπο-προβλήματα αναδρομικά αρχίζοντας από μικρά/αρχικά υποπροβλήματα μέχρι το αρχικό πρόβλημα Γράψιμο μιας αναδρομικής σχέσης για τη βέλτιστη λύση Η αναδρομική σχέση δίνει μία σειρά (order) των υποπροβλημάτων τέτοια ώστε καθένα μπορεί να λυθεί δεδομένης των λύσεων μικρότερων υπο-προβλημάτων (που εμφανίζονται νωρίτερα στη σειρά). ΑΛΓΟΡΙΘΜΟΙ - ΑΝΟΙΞΗ 2016 - Ι. ΜΗΛΗΣ 08 DP I 3

Dynamic Programming ΑΛΓΟΡΙΘΜΟΣ Μετάφραση της αναδρομικής σχέσης σε έναν επαναληπτικό αλγόριθμο (ΠΟΤΕ αναδρομικό) Χρήση ενός πίνακα για την αποθήκευση ενδιάμεσων αποτελεσμάτων και επαναχρησιμοποίησης τους (memoization) Εύρεση πρώτα της τιμής της βέλτιστης λύσης π.χ. η μέγιστη αξία ενός σακιδίου Εύρεση της ίδιας της βέλτιστης λύσης π.χ. τα αντικείμενα που δίνουν τη μέγιστη αξία ενός σακιδίου ΑΛΓΟΡΙΘΜΟΙ - ΑΝΟΙΞΗ 2016 - Ι. ΜΗΛΗΣ 08 DP I 4

Algorithm design methods DIVIDE AND CONQUER Non overlapping sub-problems Recursion can be used GREEDY A sub-problem defines the next one A single (greedy) choice DYNAMIC PROGRAMMING Overlapping sub-problems Recursion is forbidden Many choices for a sub-problem OPTIMAL SUB-STRUCTURE ΑΛΓΟΡΙΘΜΟΙ - ΑΝΟΙΞΗ 2016 - Ι. ΜΗΛΗΣ 08 DP I 5

Algorithm design methods DIVIDE AND CONQUER Non overlapping sub-problems Recursion can be used Tree GREEDY A sub-problem defines the next one A single (greedy) choice Chain DYNAMIC PROGRAMMING Overlapping sub-problems Recursion is forbidden Many choices for a sub-problem OPTIMAL SUB-STRUCTURE DAG ΑΛΓΟΡΙΘΜΟΙ - ΑΝΟΙΞΗ 2016 - Ι. ΜΗΛΗΣ 08 DP I 6

Fibonacci numbers Fibonacci numbers: 0, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 5 th F N 2 4 th F 1 0 3 rd N 1 F 2 nd N 2 4 3 3 2 2 1 1 0 5 1 0 if if if 1 st call 12 th N N N 1 6 16 th 1 2 0 1 18 th 9 th 13 th 19 th 22 nd 2 3 0 RecursiveFib(N) if N<2: return N return fib1(n-1)+ fib1(n-2) 1 4 17 th 1 2 23 rd 0 24 th 25 th call Recursion? No, thanks! Τ(n) > 2 N/2 1 0 6 th 7 th 8 th 10 th 11 th 14 th 15 th 20 th 21 st ΑΛΓΟΡΙΘΜΟΙ - ΑΝΟΙΞΗ 2016 - Ι. ΜΗΛΗΣ 08 DP I 7

Fibonacci numbers F N F 1 0 N 1 F N 2 if if if N N N 1 2 0 IterativeFib(N) f[0]=0, f[1]:=1 for i=2 to N: f[i]=f[i-1]+f[i-2] return f[n] Γεμίζουμε ένα πίνακα με τις λύσεις των υπο-προβλημάτων 0 1 1 2 3 5 8 13 21 ΠΟΛΥΠΛΟΚΟΤΗΤΑ: Ο(Ν) Μνήμη= μέγεθος πίνακα = Ο(Ν) Εδώ 3 θέσεις μνήμης αρκούν = Ο(1) Ο(Ν) : εκθετική στο Ι =log N Υπάρχει αλγόριθμος Ο(log N) (1 ο μάθημα) ΑΛΓΟΡΙΘΜΟΙ - ΑΝΟΙΞΗ 2016 - Ι. ΜΗΛΗΣ 08 DP I 8

Maximum Sub-array ΕΙΣΟΔΟΣ: Πίνακας αριθμών Α[1..n] ΕΞΟΔΟΣ: Υπο-πίνακας Α[p..q] με το μέγιστο άθροισμα στοιχείων Θέλουμε να βρούμε δείκτες τέτοιους ώστε το V ( p, q) δηλαδή, V ( p, q) V ( p', q'), Παράδειγμα: Ιστορία κερδών q i p p, q 0 p q n A( i) να είναι μέγιστο 1 p' q' n Year 1 2 3 4 5 6 7 8 9 Profit -3 2 1-4 5 2-1 3-1 Να βρεθεί η περίοδος ετών με το μεγαλύτερο κέρδος: V(5,8)=9 ΑΛΓΟΡΙΘΜΟΙ - ΑΝΟΙΞΗ 2016 - Ι. ΜΗΛΗΣ 08 DP I 9

Maximum Sub-array Brute-force: O(n 3 ) Reuse of data: O(n 2 ) Divide & Conquer: O(n log n) A[1] m n 2 1 A[n] S 1 = MSA in A(1 m) A[ m] A[ m 1] S 2 = MSA in A(m+1 n) S 3 = MSA containing both A(m) and A(m+1) Dynamic Programming: O(n), Optimal Decompose the problem into smaller sub-problems of the same structure and solve them recursively starting from the trivial case(s) ΑΛΓΟΡΙΘΜΟΙ - ΑΝΟΙΞΗ 2016 - Ι. ΜΗΛΗΣ 08 DP I 10

Maximum Sub-array: DP Έστω E[i] η τιμή του MSA που τελειώνει στη θέση i To MSA του πίνακα Α είναι ένα από τα E[i] Vmax = max i { E[i] } To πρόβλημα ανάγεται στην εύρεση των E[i] DP: Εύρεση του E[i] με χρήση του E[i-1] Το E[i] περιέχει οπωσδήποτε το στοιχείο A[i] Δύο περιπτώσεις για το E[i]: Είτε περιέχει ΜΟΝΟ ΤΟ ΣΤΟΙΧΕΙΟ A[i]: E[i] = A[i] Ή περιέχει ΚΑΙ ΑΛΛΑ ΣΤΟΙΧΕΙΑ A[j, j+1,i-1,i]: E[i]=E[i-1] + A[i] Άρα E[i] = max { E[i-1]+A[i], A[i] }, με E[1]=A[1] Εάν έχετε την αναδρομική σχέση, έχετε και τον αλγόριθμο! ΑΛΓΟΡΙΘΜΟΙ - ΑΝΟΙΞΗ 2016 - Ι. ΜΗΛΗΣ 08 DP I 11

Maximum Sub-array: DP Example: E[i] = max { E[i-1]+A[i], A[i] }, E[1]=A[1] A[1..n] 31-41 59 26-53 58 97-93 -23 84 Maximum Sum for any sub Array ending at i th location: E[1..n] Vmax 31-10 59 85 32 90 187 94 71 155 Maximum so far: 31 31 59 85 85 90 187 187 187 187 ΑΛΓΟΡΙΘΜΟΙ - ΑΝΟΙΞΗ 2016 - Ι. ΜΗΛΗΣ 08 DP I 12

Maximum Sub-array: DP E(i) = max { E(i-1)+A[i], A[i] }, E(1)=A[1] MSA(A[1..n]) E[1]=A[1], Vmax=A[1] For i = 2 to n do E[i] = E[i-1]+A[i] if E[i] < A[i]: E[i] = A[i] if E[i] > Vmax: Vmax = E[i] ΠΟΛΥΠΛΟΚΟΤΗΤΑ: O(n) ΕΠΙΠΛΕΟΝ ΜΝΗΜΗ: O(n), για τον πίνακα E O(1), μία θέση/μεταβλητή Ε αρκεί ΑΛΓΟΡΙΘΜΟΙ - ΑΝΟΙΞΗ 2016 - Ι. ΜΗΛΗΣ 08 DP I 13

Maximum Sub-array: DP E(i) = max { E(i-1)+A[i], A[i] }, E(1)=A[1] MSA(A[1..n]) E[1]=A[1], Vmax=A[1], P[1]=1 For i = 2 to n do E[i] = E[i-1]+A[i], P[i]=P[i-1] if E[i] < A[i]: E[i] = A[i] P[i] = i if E[i] > Vmax: Vmax = E[i] p=p[i] q=i ΠΟΛΥΠΛΟΚΟΤΗΤΑ: O(n) ΕΠΙΠΛΕΟΝ ΜΝΗΜΗ: O(n), για τους πίνακες E, P Ποιοί είναι οι δείκτες του MSA A[p..q] Έστω P(i) ο δείκτης αρχής του E(i) O(1), δύο θέσεις/μεταβλητές Ε, P αρκούν ΑΛΓΟΡΙΘΜΟΙ - ΑΝΟΙΞΗ 2016 - Ι. ΜΗΛΗΣ 08 DP I 14

Coin Changing ΕΙΣΟΔΟΣ: Ποσό Ε και σύνολο n νομισμάτων με αξίες V={d 1, d 2, d 3,,d n } EΡΩΤΗΣΗ: Ο ελάχιστος αριθμός νομισμάτων με συνολική αξία E ΥΠΕΝΘΥΜΙΣΕΙΣ: 1. ΜΕΛΕΤΑΜΕ εισόδους με μικρότερη αξία το 1 ΤΟΤΕ υπάρχει πάντα λύση στο πρόβλημα E = 13, V= {10, 5, 2 }, ΑΔΥΝΑΤΟ OPT = βέλτιστο 2. Optimal Substructure : Η βέλτιστη λύση για ποσό Ε που χρησιμοποιεί νόμισμα αξίας d i περιέχει τη βέλτιστη λύση για το ποσό Ε-d i 3. Greedy algorithm: Διάλεξε πάντα το μεγαλύτερο νόμισμα που μπορείς Δεν δίνει πάντα την βέλτιστη λύση E = 40, V= {25, 20, 10, 5,1 }: E = 25 +10 +5, c=3, E = 220, OPT =2 ΠΟΤΕ? Canonical values system ΑΛΛΟΙΩΣ? ΔΥΝΑΜΙΚΟΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΑΛΓΟΡΙΘΜΟΙ - ΑΝΟΙΞΗ 2016 - Ι. ΜΗΛΗΣ 08 DP I 15

Coin Changing - DP Sub-problem? c[j]: o ελάχιστος αριθμός νομισμάτων για ποσό j c(e): το αρχικό πρόβλημα Εάν η βέλτιστη λύση για ποσό j χρησιμοποιεί ένα νόμισμα αξίας d i, τότε c[j] = 1 + c[j d i ] προφανώς c[0]= 0 Ποιας αξίας νόμισμα? Ελέγχουμε όλες τις αξίες/επιλογές n ΜΕΛΕΤΑΜΕ εισόδους με μικρότερη αξία το 1 ΑΛΓΟΡΙΘΜΟΙ - ΑΝΟΙΞΗ 2016 - Ι. ΜΗΛΗΣ 08 DP I 16

Coin Changing - DP Change(E,d[1..n]) c[0]=0 for j = 1 to E: c[j] = for i = 1 to n: if j d i and 1+c[j d i ] < c[j]: c[j] = 1+c[j d i ] return c Αποφεύγουμε τιμές c[j]<0, ελέγχοντας αν j d i ΠΟΛΥΠΛΟΚΟΤΗΤΑ: Ο(nE), ΟΧΙ πολυωνυμική! ΑΛΓΟΡΙΘΜΟΙ - ΑΝΟΙΞΗ 2016 - Ι. ΜΗΛΗΣ 08 DP I 17

Coin Changing Example: E=10, {1,3,4} c[0] =0 c[1] =1+ min { c[1-1], c[1-3], c[1-4] } =1, c[2] =1+ min { c[2-1], c[2-3], c[2-4] } =2, c[3] =1+ min { c[3-1], c[3-3], c[3-4] } =1, denom[1]=1 denom[2]=1 denom[3]=3 c[4] =1+ min { c[4-1], c[4-3], c[4-4] } =1, denom[4]=4 4 c[5] =1+ min { c[5-1], c[5-3], c[5-4] } =2, c[6] =1+ min { c[6-1], c[6-3], c[6-4] } =2, n denom[5]=1 denom[6]=3 c[7] =1+ min { c[7-1], c[7-3], c[7-4] } =2, denom[7]=3 3 c[8] =1+ min { c[8-1], c[8-3], c[8-4] } =2, c[9] =1+ min { c[9-1], c[9-3], c[9-4] } =3, denom[8]=4 denom[9]=1 c[10]=1+ min { c[10-1], c[10-3], c[10-4] } =3, denom[10]=3 3 ΑΛΓΟΡΙΘΜΟΙ - ΑΝΟΙΞΗ 2016 - Ι. ΜΗΛΗΣ 08 DP I 18

Coin Changing - DP Ποια είναι τα νομίσματα? denom[1..n]: η αξία του νομίσματος που έδωσε τη βέλτιστη λύση για το ποσό j Change(E,d[1..n]) c[0]=0 for j = 1 to E: c[j] = for i = 1 to n: if j d i j=e while j>0: output denom[j] j= j-denom[j] and 1+c[j d i ] < c[j]: c[j] = 1+c[j d i ] denom[j]=d i ΠΟΛΥΠΛΟΚΟΤΗΤΑ: Ο(nE), ΟΧΙ πολυωνυμική! ΑΛΓΟΡΙΘΜΟΙ - ΑΝΟΙΞΗ 2016 - Ι. ΜΗΛΗΣ 08 DP I 19