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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Partition of weighted sets (problems with numbers)

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

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

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

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

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

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

Μοντελοποίηση προβληµάτων

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

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

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

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

Outline. 6 Edit Distance

Δυναμικός προγραμματισμός για δέντρα

ΜΑΘΗΜΑ / ΤΑΞΗ : ΔΟΜΗΜΕΝΟΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ / Γ ΕΠΑΛ ΣΕΙΡΑ: ΗΜΕΡΟΜΗΝΙΑ: 27/01/2013

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

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

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

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

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

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

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

1o Φροντιστήριο ΗΥ240

ΠΑΡΑΔΕΙΓΜΑΤΑ ΕΠΙΧΕΙΡΗΣΙΑΚΗΣ ΕΡΕΥΝΑΣ ΜΕ ΤΗ ΧΡΗΣΗ Η/Υ (3 ο Φυλλάδιο)

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

Αξιολόγηση Ευριστικών Αλγορίθµων

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

ΑΠΑΝΤΗΣΕΙΣ. H διαδικασία ανεύρεσης λογικών λαθών περιλαμβάνει : β- Σωστό. Διαπίστωση του είδους του λάθους γ- Σωστό δ- Λάθος

Μη γράφετε στο πίσω μέρος της σελίδας

ΣΥΝΔΥΑΣΤΙΚΗ ΒΕΛΤΙΣΤΟΠΟΙΗΣΗ

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

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

ΠΡΟΤΕΙΝΟΜΕΝΑ ΘΕΜΑΤΑ-ΦΡΟΝΤΙΣΤΗΡΙΟ ΑΚΑΔΗΜΑΪΚΟ ΕΠΑΛ- ΚΑΝΙΓΓΟΣ 13- ΤΗΛ

Αλγόριθμοι και πολυπλοκότητα Η Άπληστη Μέθοδος

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

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

Quicksort [Hoare, 62] Αλγόριθµοι & Πολυπλοκότητα (Χειµώνας 2011) Quicksort 1

Ανάλυση αλγορίθμων. Χρόνος εκτέλεσης: Αναμενόμενη περίπτωση. - απαιτεί γνώση της κατανομής εισόδου

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

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

Προγραµµατισµός ΙΙ. Ηγλώσσααντικειµενοστραφούς. ιδάσκων ηµήτριος Κατσαρός, Τµ. Μηχανικών Η/Υ, Τηλεπικοινωνιών & ικτύων Πανεπιστήµιο Θεσσαλίας

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

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

ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΥΠΡΟΥ ΕΠΛ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΜΕΘΟΔΩΝ ΕΠΙΛΥΣΗΣ ΠΡΟΒΛΗΜΑΤΩΝ

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

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

Μη γράφετε στο πίσω μέρος της σελίδας

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

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

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

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

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

που θα δώσει αποτέλεσµα 48, λόγω της αριστερής προσεταιριστικότητας των τελεστών / και *, ενώ η επιθυµητή αντικατάσταση θα ήταν η

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

Μεθόδων Επίλυσης Προβλημάτων

ΕΡΓΑΣΤΗΡΙΑΚΕΣ ΑΣΚΗΣΕΙΣ C ΣΕΙΡΑ 2 η

Ορισµός. Εστω συναρτήσεις: f : N R και g : N R. η f(n) είναι fi( g(n) ) αν υπάρχουν σταθερές C 1, C 2 και n 0, τέτοιες ώστε:

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

Η ΔΟΜΗ ΕΠΑΝΑΛΗΨΗΣ Εντολές Επανάληψης REPEAT UNTIL, FOR, WHILE

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

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

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

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

Εισαγωγή στον Προγραµµατισµό. Διάλεξη 3 η : Επίλυση Προβληµάτων Χειµερινό Εξάµηνο 2011

Αλγόριθµοι Brute-Force και Διεξοδική Αναζήτηση

Θεωρία Υπολογισµού Theory of Computation

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

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

ΠΛΕ075: Προηγμένη Σχεδίαση Αλγορίθμων και Δομών Δεδομένων. Λουκάς Γεωργιάδης

Φροντιστήριο 4 Σκελετοί Λύσεων

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

Εργαστήριο 6: Αναζήτηση, Ανάλυση Πολυπλοκότητας

ΕΝΟΤΗΤΑ 6 ΛΙΣΤΕΣ ΠΑΡΑΛΕΙΨΗΣ (SKIP LISTS)

Πανεπιστήμιο Πατρών Διατμηματικό Πρόγραμμα Μεταπτυχιακών Σπουδών Μαθηματικά των Υπολογιστών και των Αποφάσεων Διπλωματική εργασία ΚNAPSACK PROBLEM

Chapter 9: NP-Complete Problems

Κεφάλαιο 5ο: Εντολές Επανάληψης

Θέματα Προγραμματισμού Η/Υ

Μονάδες 4. β. x=20 και y=10

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

Στόχοι και αντικείμενο ενότητας. Πέρασμα Πίνακα σε Συνάρτηση (συν.) Πέρασμα Πίνακα σε Συνάρτηση. #8.. Ειδικά Θέματα Αλγορίθμων

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

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

Ενότητα 1: Εισαγωγή Ασκήσεις και Λύσεις

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

Transcript:

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

Knapsack problems ΕΙΣΟΔΟΣ: Σακίδιο χωρητικότητας W και ένα σύνολο n αντικειμένων καθένα με βάρος w i και αξία v i (w i, v i και W είναι ακέραιοι) ΕΡΩΤΗΣΗ: Γεμίστε το σακίδιο με αντικείμενα που έχουν την μέγιστη αξία και χωράνε σε αυτό Items Weight w i Value v i Knapsack Capacity W W = 20 2 9 8 10 ΑΛΓΟΡΙΘΜΟΙ - ΑΝΟΙΞΗ 2017 - Ι. ΜΗΛΗΣ 10 DP III 2

Knapsack problems Τρείς (βασικές) παραλλαγές: 1. Κλασματικό (fractional) σακίδιο Τα αντικείμενα μπορούν να διαιρεθούν Μπορούμε να πάρουμε οποιοδήποτε κλάσμα του βάρους τους O(poly) άπληστος αλγόριθμος 2. Ακέραιο (integer) σακίδιο Τα αντικείμενα είναι αδιαίρετα Πολλά αντίγραφα κάθε αντικειμένου Μπορούμε να πάρουμε οποιοδήποτε αριθμό από καθένα O(nW) αλγόριθμος ΔΠ. 0-1 σακίδιο Τα αντικείμενα είναι αδιαίρετα Ένα αντίγραφο κάθε αντικειμένου Το παίρνουμε ή όχι O(nW) αλγόριθμος ΔΠ ΑΛΓΟΡΙΘΜΟΙ - ΑΝΟΙΞΗ 2017 - Ι. ΜΗΛΗΣ 10 DP III

Knapsack problems Fractional knapsack max å iîs v i i å x, s.t. w x W, and x Î iîs i i i [0,1] Integer Knapsack max å iîs v x, s.t. å w x W, and i i i i i 0 iîs x Î Ν 0-1 Knapsack max å iîs v i x i å, s.t. w x W, and x Î{0,1} iîs i i i ΑΛΓΟΡΙΘΜΟΙ - ΑΝΟΙΞΗ 2017 - Ι. ΜΗΛΗΣ 10 DP III

Fractional Knapsack Άπληστος αλγόριθμος: Πάρε το αντικείμενο με τη μεγαλύτερη αξία ανά μονάδα βάρους (v i /w i ) σε όσο περισσότερη ποσότητα επιτρέπει η χωρητικότητα του σακιδίου Σημείωση: Ο αλγόριθμος παίρνει ολόκληρο το βάρος των αντικειμένων που επιλέγει εκτός από το τελευταίο. Οptimal sub-structure ιδιότητα και Ορθότητα: βλ. Άπληστοι Αλγόριθμοι Πολυπλοκότητα: O(nlogn) ΑΛΓΟΡΙΘΜΟΙ - ΑΝΟΙΞΗ 2017 - Ι. ΜΗΛΗΣ 10 DP III

Fractional vs. 0-1 Knapsack Example W=0 20 v i /w i 6 W=0 0 20 10 20 ΑΛΓΟΡΙΘΜΟΙ - ΑΝΟΙΞΗ 2017 - Ι. ΜΗΛΗΣ 10 DP III 6

Integer Knapsack Υπο-πρόβλημα: ΟPT[w] =μέγιστη αξία για χωρητικότητα w=0,1,2,...,w Αντικείμενα με βάρος w k >w ΔΕΝ ΕΙΝΑΙ στη βέλτιστη λύση OPT[w] (δεν χωράνε στο w) OPT [ w] = 0, if w < min { wk } Αντικείμενα με βάρος w k w ΜΠΟΡΟΥΝ ΝΑ ΕΙΝΑΙ στη βέλτιστη λύση OPT[w] (χωράνε στο w) ΠΟΙΑ ΑΠΟ ΑΥΤΑ ΕΙΝΑΙ? k Έστω k ένα από τα αντικείμενα στη βέλτιστη λύση OPT[w] τότε OPT[w] = OPT[w-w k ] + v k ΠΟΙΟ ΕΙΝΑΙ το αντικείμενο k? Εξέτασε ΟΛΕΣ ΤΙΣ ΕΠΙΛΟΓΕΣ k: w k w OPT[ w] = max { OPT[ w- w k: w k w k ] + v k } ΑΛΓΟΡΙΘΜΟΙ - ΑΝΟΙΞΗ 2017 - Ι. ΜΗΛΗΣ 10 DP III 7

Integer Knapsack Αναδρομική σχέση OPT[ w] = ì 0, ï í ïmax { OPT[ w - îk: wk w w k ] + v k if w < min k }, otherwise { w } k Υπολόγισε OPT[0], OPT[1], OPT[2],..., OPT[W] ΑΛΓΟΡΙΘΜΟΙ - ΑΝΟΙΞΗ 2017 - Ι. ΜΗΛΗΣ 10 DP III 8

Integer Knapsack Int Knapsack (w,v,w) //--------- Τιµή βέλτιστης αξίας OPT[W]--------- for w=1 to W: OPT[w]= 0 for w=1 to W: for k=1 to n: if w ³ w k : if OPT[w] < OPT[w-w k ]+v k : OPT[w] = OPT[w-w k ]+v k best[w]=k return OPT[W] //-------- Βέλτιστη λύση (αντικείµενα) -------- w=w while w>0: return best[w] w = w - w best[w] ΠΟΛΥΠΛΟΚΟΤΗΤΑ: O(nW) ΟΧΙ ΠΟΛΥΩΝΥΜΙΚΗ ΑΛΓΟΡΙΘΜΟΙ - ΑΝΟΙΞΗ 2017 - Ι. ΜΗΛΗΣ 10 DP III 9

Integer Knapsack - Example k 1 2 w k 7 8 v k 10 11 W=12 if w > w k : if OPT[w] < OPT[w-w k ]+v k : OPT[w] = OPT[w-w k ]+v k best[w]=k Βέλτιστη αξία w 1 2 6 7 8 9 10 11 12 V[w] 0 0 8 10 11 12 1 1 16 best[w] - - 1 2 2 1 1 1 1 1 Βέλτιστη λύση (αντικείμενα): 1, 1, 1, 1, ( φορές το αντικείμενο 1) ΑΛΓΟΡΙΘΜΟΙ - ΑΝΟΙΞΗ 2017 - Ι. ΜΗΛΗΣ 10 DP III 10

Brute-force Υπάρχουν 2 n συνδυασμοί των n αντικειμένων Εξέτασέ τους ΟΛΟΥΣ και βρες αυτόν που χωράει στο σακίδιο και έχει την μεγαλύτερη αξία Για κάθε συνδυασμό χρόνος Ο(n) για να βρούμε το άθροισμα των βαρών και αξιών των αντικειμένων ΠΟΛΥΠΛΟΚΟΤΗΤΑ: O(n2 n ) Μπορούμε να κάνουμε καλύτερα? ΝΑΙ, Δυναμικός Προγραμματισμός ΑΛΓΟΡΙΘΜΟΙ - ΑΝΟΙΞΗ 2017 - Ι. ΜΗΛΗΣ 10 DP III 11

Υπο-πρόβλημα? 1) Μόνο με την χωρητικότητα (μικρότερη χωρητικότητα - όπως και στο ακέραιο σακίδιο OPT[w] = μέγιστη αξία για χωρητικότητα w=0,1,2,...,w Παράδειγμα: W=10 i w i v i 1 2 2 7 6 OPT(10) =12, αντικείμενα 2, Αλλά π.χ. OPT(6)=10, αντικείμενα 1,2 To αντικείμενο 1 είναι στην ΟPT(6) αλλά όχι στην ΟPT(10)! ΔΕΝ ΙΣΧΥΕΙ η optimal sub-structure ιδιότητα! ΑΛΓΟΡΙΘΜΟΙ - ΑΝΟΙΞΗ 2017 - Ι. ΜΗΛΗΣ 10 DP III 12

Υπο-πρόβλημα? 2) Mόνο με τα αντικείμενα (λιγότερα αντικείμενα) OPT[k] = μέγιστη αξία για τα αντικείμενα 1,2,...,k (τυχαία σειρά αντικειμένων) Παράδειγμα: W=10 i w i v i 1 2 2 7 6 OPT(2) =10, αντικείμενα 1,2 OPT()=12, αντικείμενα 2, To αντικείμενο 1 είναι στην ΟPT(2) αλλά όχι στην ΟPT()! ΔΕΝ ΙΣΧΥΕΙ η optimal sub-structure ιδιότητα! ΑΛΓΟΡΙΘΜΟΙ - ΑΝΟΙΞΗ 2017 - Ι. ΜΗΛΗΣ 10 DP III 1

Υπο-πρόβλημα? 1) Μόνο με την χωρητικότητα -- ΛΑΘΟΣ 2) Mόνο με τα αντικείμενα -- ΛΑΘΟΣ ) ΚΑΙ με την χωρητικότητα ΚΑΙ με τα αντικείμενα ΟPT [k,w] = βέλτιστη αξία για αντικείμενα 1,2,...,k ΚΑΙ χωρητικότητα w ΑΛΓΟΡΙΘΜΟΙ - ΑΝΟΙΞΗ 2017 - Ι. ΜΗΛΗΣ 10 DP III 1

Υπο-πρόβλημα: ΟPT [k,w]=βέλτιστη αξία για αντικείμενα 1,2,,k ΚΑΙ χωρητικότητα w Εξετάζουμε το (νέο) αντικείμενο k: Αντικείμενο k με βάρος w k >w ΔΕΝ ΕΙΝΑΙ στη βέλτιστη λύση OPT[k,w] (δεν χωράει στο w) ΟPT[k,w] = OPT[k-1, w] Αντικείμενο k με βάρος w k w ΜΠΟΡEI NΑ ΕΙΝΑΙ στη βέλτιστη λύση OPT[k,w] (χωράει στο w) ΔΥΟ ΕΠΙΛΟΓΕΣ ΔΕΝ ΤΟ ΠΑΙΡΝΟΥΜΕ : ΟPT[k,w] = OPT[k-1, w] ΤΟ ΠΑΙΡΝΟΥΜΕ : ΟPT[k,w]= V[k-1, w-w k ] +v k OPT[k,w] = max { OPT[k-1, w], OPT[k-1, w-w k ] +v k } ΑΛΓΟΡΙΘΜΟΙ - ΑΝΟΙΞΗ 2017 - Ι. ΜΗΛΗΣ 10 DP III 1

Αναδρομική σχέση OPT[ k, w] = ì if k = 0 or w = 0 ï 0 ï ï OPT[ k -1, w] if k, w ³ 1and wk > w í ï ïmax{ OPT[ k -1, w], OPT[ k -1, w - wk ] + vk} ï î if k, w ³ 1and wk w ΑΛΓΟΡΙΘΜΟΙ - ΑΝΟΙΞΗ 2017 - Ι. ΜΗΛΗΣ 10 DP III 16

0-1 Knapsack Value (w,v,w) //--------- Τιµή βέλτιστης αξίας OPT[n,W] --------- for w = 0 to W: OPT[0,w]= 0 for k = 0 to n: OPT[k,0] = 0 for w = 1 to W do if w k w: // item k can be in the solution return OPT[n,W] OPT[k,w]= max { v k + OPT[k-1,w-w k ], OPT[k-1,w]} else: OPT[k,w]= OPT[k-1,w] // w k > w ΠΟΛΥΠΛΟΚΟΤΗΤΑ: O(nW), OΧΙ ΠΟΛΥΩΝΥΜΙΚΗ ΑΛΓΟΡΙΘΜΟΙ - ΑΝΟΙΞΗ 2017 - Ι. ΜΗΛΗΣ 10 DP III 17

Item Weight w i n = W = Value v i 1 2 2 OPT[k,w] k w 0 1 2 0 0 0 0 0 0 0 1 0 0 2 0 0 7 0 0 7 0 0 7 6 if w k w: OPT[k,w]:= max { v k + OPT[k-1,w-w k ], OPT[k-1,w] else: OPT[k,w]:= OPT[k-1,w] ΑΛΓΟΡΙΘΜΟΙ - ΑΝΟΙΞΗ 2017 - Ι. ΜΗΛΗΣ 10 DP III 18

0-1 Knapsack (w,b,w) //--------- Τιµή βέλτιστης αξίας OPT[n,W] ---------...... //--------- Βέλτιστη λύση (αντικείµενα) ---------- k=n, w=w, S={} While k 0 and w 0: if OPT[k,w] OPT[k-1,w]: S=S U {k} k=k-1 return S w=w-w k ΠΟΛΥΠΛΟΚΟΤΗΤΑ? ΑΛΓΟΡΙΘΜΟΙ - ΑΝΟΙΞΗ 2017 - Ι. ΜΗΛΗΣ 10 DP III 19

Item Weight w i n = W = Value v i 1 2 2 OPT[k,w] k w 0 1 2 0 0 0 0 0 0 0 1 0 0 2 0 0 7 0 0 7 0 0 7 6 while k 0 and w 0: if OPT [k,w] OPT [k-1,w] : S= S U {k} w=w-w k k=k-1 ΑΛΓΟΡΙΘΜΟΙ - ΑΝΟΙΞΗ 2017 - Ι. ΜΗΛΗΣ 10 DP III 20

n = w k 0 1 2 W = 0 0 0 0 0 0 Item Weight w i Value v i 1 2 0 0 0 0 0 0 0 1 2 0 2 0 7 7 7 6 while k 0 and w 0: if OPT [k,w] OPT [k-1,w] : S= S U {k} w=w-w k k=k-1 ΑΛΓΟΡΙΘΜΟΙ - ΑΝΟΙΞΗ 2017 - Ι. ΜΗΛΗΣ 10 DP III 21