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

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

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

ΑΛΓΟΡΙΘΜΟΙ. Ενότητα 12: Αντιμετώπιση Περιορισμών Αλγοριθμικής Ισχύος

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

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

Διοικητική Λογιστική

ΣΥΣΤΗΜΑΤΑ ΗΛΕΚΤΡΙΚΗΣ ΕΝΕΡΓΕΙΑΣ ΙIΙ

ΣΥΣΤΗΜΑΤΑ ΗΛΕΚΤΡΙΚΗΣ ΕΝΕΡΓΕΙΑΣ ΙIΙ

ΣΥΣΤΗΜΑΤΑ ΗΛΕΚΤΡΙΚΗΣ ΕΝΕΡΓΕΙΑΣ ΙIΙ

Θερμοδυναμική. Ανοικτά Ακαδημαϊκά Μαθήματα. Πίνακες Νερού σε κατάσταση Κορεσμού. Γεώργιος Κ. Χατζηκωνσταντής Επίκουρος Καθηγητής

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

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

Λογιστική Κόστους Ενότητα 12: Λογισμός Κόστους (2)

Εισαγωγή στους Αλγορίθμους Ενότητα 9η Άσκηση - Αλγόριθμος Prim

Λογιστική Κόστους Ενότητα 8: Κοστολογική διάρθρωση Κύρια / Βοηθητικά Κέντρα Κόστους.

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

Βάσεις Περιβαλλοντικών Δεδομένων

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

Ανοικτά Ακαδημαϊκά Μαθήματα στο ΤΕΙ Αθήνας. Βιοστατιστική (Ε) Ενότητα 3: Έλεγχοι στατιστικών υποθέσεων

Ανοικτά Ακαδημαϊκά Μαθήματα στο ΤΕΙ Αθήνας. Βιοστατιστική (Ε) Ενότητα 1: Καταχώρηση δεδομένων

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

Ανοικτά Ακαδημαϊκά Μαθήματα στο ΤΕΙ Αθήνας. Βιοστατιστική (Ε) Ενότητα 2: Περιγραφική στατιστική

Τίτλος Μαθήματος: Μαθηματική Ανάλυση Ενότητα Γ. Ολοκληρωτικός Λογισμός

Διεθνείς Οικονομικές Σχέσεις και Ανάπτυξη

Εισαγωγή στους Αλγορίθμους Ενότητα 9η Άσκηση - Αλγόριθμος Kruskal

Μηχανολογικό Σχέδιο Ι

Προγραμματισμός Η/Υ. Βασικές Προγραμματιστικές Δομές. ΤΕΙ Ιονίων Νήσων Τμήμα Τεχνολόγων Περιβάλλοντος Κατεύθυνση Τεχνολογιών Φυσικού Περιβάλλοντος

Διοίκηση Επιχειρήσεων

Εισαγωγή στην Διοίκηση Επιχειρήσεων

Διοίκηση Εξωτερικής Εμπορικής Δραστηριότητας

Εκκλησιαστικό Δίκαιο. Ενότητα 10η: Ιερά Σύνοδος της Ιεραρχίας και Διαρκής Ιερά Σύνοδος Κυριάκος Κυριαζόπουλος Τμήμα Νομικής Α.Π.Θ.

Βέλτιστος Έλεγχος Συστημάτων

Δομές Δεδομένων Ενότητα 1

Εφαρμογές πληροφορικής σε θέματα πολιτικού μηχανικού

ΕΛΛΗΝΙΚΗ ΔΗΜΟΚΡΑΤΙΑ ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΡΗΤΗΣ

Διοικητική Λογιστική

Θερμοδυναμική. Ανοικτά Ακαδημαϊκά Μαθήματα. Πίνακες Νερού Υπέρθερμου Ατμού. Γεώργιος Κ. Χατζηκωνσταντής Επίκουρος Καθηγητής

Ενδεικτικές λύσεις ασκήσεων διαχείρισης έργου υπό συνθήκες αβεβαιότητας

Ιστορία της μετάφρασης

Εισαγωγή στους Αλγορίθμους Ενότητα 11η Άσκηση - Σταθμισμένος Χρονοπρογραμματισμός Διαστημάτων

Εισαγωγή στην Διοίκηση Επιχειρήσεων

Εισαγωγή στην Διοίκηση Επιχειρήσεων

Διεθνείς Οικονομικές Σχέσεις και Ανάπτυξη

Μηχανολογικό Σχέδιο Ι

Κβαντική Επεξεργασία Πληροφορίας

ΗΛΕΚΤΡΟΝΙΚΗ ΙIΙ Ενότητα 6

Θεσμοί Ευρωπαϊκών Λαών Ι 19 ος -20 ος αιώνας

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

Γενικά Μαθηματικά Ι. Ενότητα 15: Ολοκληρώματα Με Ρητές Και Τριγωνομετρικές Συναρτήσεις Λουκάς Βλάχος Τμήμα Φυσικής

Μεθοδολογία Έρευνας Κοινωνικών Επιστημών Ενότητα 2: ΣΥΓΚΕΝΤΡΩΣΗ ΠΛΗΡΟΦΟΡΙΩΝ ΜΑΡΚΕΤΙΝΓΚ Λοίζου Ευστράτιος Τμήμα Τεχνολόγων Γεωπόνων-Kατεύθυνση

Διεθνείς Οικονομικές Σχέσεις και Ανάπτυξη

Βέλτιστος Έλεγχος Συστημάτων

Διαχείριση Πολιτισμικών Δεδομένων

Μυελού των Οστών Ενότητα #1: Ερωτήσεις κατανόησης και αυτόαξιολόγησης

Εισαγωγή στην Διοίκηση Επιχειρήσεων

Μαθηματικά Διοικητικών & Οικονομικών Επιστημών

Γενικά Μαθηματικά Ι. Ενότητα 12: Κριτήρια Σύγκλισης Σειρών. Λουκάς Βλάχος Τμήμα Φυσικής ΑΝΟΙΚΤΑ ΑΚΑΔΗΜΑΪΚΑ ΜΑΘΗΜΑΤΑ

Εκκλησιαστικό Δίκαιο

ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΗΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ

Διδακτική της Πληροφορικής

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

Βέλτιστος Έλεγχος Συστημάτων

Τεχνικό Σχέδιο - CAD

Λογιστική Κόστους Ενότητα 11: Λογισμός Κόστους (1)

Θεσμοί Ευρωπαϊκών Λαών Ι 19 ος -20 ος αιώνας

Ψηφιακή Επεξεργασία Εικόνων

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

Σχεδίαση και Ανάλυση Αλγορίθμων Ενότητα 4: ΑΝΑΠΑΡΑΣΤΑΣΗ ΔΕΔΟΜΕΝΩΝ - ΔΕΝΤΡΑ

Ενότητα. Εισαγωγή στις βάσεις δεδομένων

Εκκλησιαστικό Δίκαιο

Τεχνικό Σχέδιο - CAD

Εισαγωγή στην Διοίκηση Επιχειρήσεων

Βέλτιστος Έλεγχος Συστημάτων

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

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

Εισαγωγή στην Διοίκηση Επιχειρήσεων

Κβαντική Επεξεργασία Πληροφορίας

ΑΛΓΟΡΙΘΜΟΙ. Ενότητα 11: Περιορισμοί της Αλγοριθμικής Ισχύος

Διεθνείς Οικονομικές Σχέσεις και Ανάπτυξη

1 η Διάλεξη. Ενδεικτικές λύσεις ασκήσεων

Διεθνείς Οικονομικές Σχέσεις και Ανάπτυξη

Διδακτική Πληροφορικής

ΟΙΚΟΝΟΜΙΚΑ ΜΑΘΗΜΑΤΙΚΑ

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

Μάρκετινγκ Αγροτικών Προϊόντων

Αλγόριθμοι και πολυπλοκότητα Συγχωνευτική Ταξινόμηση

Λογιστική Κόστους Ενότητα 10: Ασκήσεις Προτύπου Κόστους Αποκλίσεων.

Διδακτική Πληροφορικής

Δυναμική και Έλεγχος E-L Ηλεκτρομηχανικών Συστημάτων

ΟΙΚΟΝΟΜΙΚΑ ΜΑΘΗΜΑΤΙΚΑ

ΠΛΗΡΟΦΟΡΙΚΗ Ι Ενότητα 7: Αλγόριθμοι γραμμικής άλγεβρας

Έλεγχος και Διασφάλιση Ποιότητας Ενότητα 4: Μελέτη ISO Κουππάρης Μιχαήλ Τμήμα Χημείας Εργαστήριο Αναλυτικής Χημείας

Λογιστική Κόστους Ενότητα 11: Λογισμός Κόστους

Διδακτική Πληροφορικής

Εφαρμογές των Τεχνολογιών της Πληροφορίας και των Επικοινωνιών στη διδασκαλία και τη μάθηση

Δομές Δεδομένων Ενότητα 3

Διδακτική Πληροφορικής

ΟΙΚΟΝΟΜΙΚΑ ΜΑΘΗΜΑΤΙΚΑ

Εισαγωγή στην Διοίκηση Επιχειρήσεων

Εισαγωγή στους Υπολογιστές

Transcript:

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

Άδειες Χρήσης Το παρόν εκπαιδευτικό υλικό υπόκειται σε άδειες χρήσης Creative Commons. Για εκπαιδευτικό υλικό, όπως εικόνες, που υπόκειται σε άλλου τύπου άδειας χρήσης, η άδεια χρήσης αναφέρεται ρητώς. 2

Χρηματοδότηση Το παρόν εκπαιδευτικό υλικό έχει αναπτυχθεί στα πλαίσια του εκπαιδευτικού έργου του διδάσκοντα. Το έργο «Ανοικτά Ακαδημαϊκά Μαθήματα στο» έχει χρηματοδοτήσει μόνο τη αναδιαμόρφωση του εκπαιδευτικού υλικού. Το έργο υλοποιείται στο πλαίσιο του Επιχειρησιακού Προγράμματος «Εκπαίδευση και Δια Βίου Μάθηση» και συγχρηματοδοτείται από την Ευρωπαϊκή Ένωση (Ευρωπαϊκό Κοινωνικό Ταμείο) και από εθνικούς πόρους. 3

ΑΡΙΣΤΟΤΕΛΕΙΟ ΠΑΝΕΠΙΣΤΗΜΙΟ ΘΕΣΣΑΛΟΝΙΚΗΣ ΑΝΟΙΚΤΑ ΑΚΑΔΗΜΑΪΚΑ ΜΑΘΗΜΑΤΑ Δυναμικός Προγραμματισμός Διωνυμικοί συντελεστές, Αλγόριθμος Warshall, Αλγόριθμος Floyd, Βέλτιστα δυαδικά δέντρα αναζήτησης

Δυναμικός προγραμματισμός Ο Δυναμικός Προγραμματισμός προτάθηκε από τον Αμερικανό μαθηματικό Richard Bellman περί το 1950 για την επίλυση προβλημάτων βελτιστοποίησης «Προγραμματισμός» εδώ σημαίνει «σχεδιασμός» Η κύρια ιδέα είναι: να επιλύσουμε πολλά μικρότερα επικαλυπτόμενα προβλήματα να καταγράψουμε τις λύσεις σε ένα πίνακα ώστε το κάθε υποπρόβλημα να επιλύεται μόνο μια φορά να λάβουμε τη λύση στην τελική κατάσταση του πίνακα 5

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

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

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

Διωνυμικοί συντελεστές Αλγόριθμος βασισμένος στην ταυτότητα (a + b) n = C(n,0)a n b 0 +... + C(n,k)a n-k b k +... + C(n,n)a 0 b n Αναδρομή: C(n,k) = C(n-1,k) + C(n-1,k-1), n > k > 0 C(n,0) = 1, C(n,n) = 1 for n 0 0 1 2 k-1 k 0 1 1 1 1... n-1 C(n-1,k-1) C(n-1,k) n C(n,k) 9

Διωνυμικοί συντελεστές - ALGORITHM Binomial(n,k) ψευδοκώδικας // Computes C(n,k) by the dynamic programming algorithm // Input: A pair of nonnegative integers n >= k >= 0 // Output: The value of C(n,k) for i 0 to n do for j 0 to min(i,k) do return C[n,k] if j = 0 or j = i C[i,j] 1 Χρονική αποδοτικότητα: Θ(nk) Χωρική αποδοτικότητα: Θ(nk) else C[i,j] C[i-1, j-1] + C[i-1,j] 10

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

Αλγόριθμος Warshall (2) Κύρια ιδέα: υπάρχει ένα μονοπάτι μεταξύ των κορυφών i και j αν υπάρχει ακμή από την i στην j, υπάρχει μονοπάτι από την i στην j μέσω της κορυφής 1; υπάρχει μονοπάτι από την i στην j μέσω των κορυφών 1 ή/και 2;... υπάρχει μονοπάτι από την i στην j μέσω οποιασδήποτε από τις άλλες κορυφές 3 1 1 3 1 3 1 3 1 3 2 4 2 4 2 4 2 4 2 4 R 0 0 0 1 0 1 0 0 1 0 0 0 0 0 1 0 0 R 1 0 0 1 0 1 0 1 1 0 0 0 0 0 1 0 0 R 2 0 0 1 0 1 0 1 1 0 0 0 0 1 1 1 1 R 3 0 0 1 0 1 0 1 1 0 0 0 0 1 1 1 1 R 4 0 0 1 0 1 1 1 1 0 0 0 0 1 1 1 1 12

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

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

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

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

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

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

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

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

Βέλτιστα Δυαδικά Δένδρα Algorithm OptimalBST(P[1...n]) Αναζήτησης (3) //Finds an optimal binary search tree by dynamic programming //Input: An array P[1...n] of search probabilities for a sorted list of n keys //Output: Average number of comparisons in successful searches in the optimal // BST and table R of subtrees' roots in the optimal BST. for i = 1 to n, do C[n+1,n]=0 C[i,i-1]=0 C[i,i]=P[i] R[i,i]=i 21

Βέλτιστα Δυαδικά Δένδρα Αναζήτησης (4) Algorithm OptimalBST(P[1...n]) - συνέχεια for d 1 to n-1 do //diagonal count for I 1 to n-d do j i+d minval for k i to j do if C[i,k-1]+C[k+1,j] < minval minval C[i,k-1]+C[k+1,j]; kmin k R[i,j] kmin sum P[i]; for s i+1 to j do sum sum + P[s] C[i,j] minval + sum return C[1,n], R 22

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

Το πρόβλημα του σάκου Δίνονται n στοιχεία με βάρη w 1,w 2,,w n, αξίες v 1,v 2,,v n και χωρητικότητα σάκου W. Να βρεθεί το πολυτιμότερο υποσύνολο των στοιχείων που χωρούν στο σάκο Λύση με εξαντλητική αναζήτηση Έστω ότι το V[i,j] δίνει τη βέλτιστη λύση για τα πρώτα i στοιχεία και χωρητικότητα j. Σκοπός είναι ο υπολογισμός του V[n,W] Αναδρομή { max{v[i-1,j],v i +V[i-1,j-w i ]} if j-w i 0 V[i,j] = V[i-1,j] if j-w i <0 24

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

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

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

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

Σημείωμα Αναφοράς Copyright, Ιωάννης Μανωλόπουλος, Αναστάσιος Γούναρης. «.». Έκδοση: 1.0. Θεσσαλονίκη 2015. Διαθέσιμο από τη δικτυακή διεύθυνση: http://eclass.auth.gr/courses/ocrs417/

Σημείωμα Αδειοδότησης Το παρόν υλικό διατίθεται με τους όρους της άδειας χρήσης Creative Commons Αναφορά - Μη Εμπορική Χρήση - Παρόμοια Διανομή 4.0 [1] ή μεταγενέστερη, Διεθνής Έκδοση. Εξαιρούνται τα αυτοτελή έργα τρίτων π.χ. φωτογραφίες, διαγράμματα κ.λ.π., τα οποία εμπεριέχονται σε αυτό και τα οποία αναφέρονται μαζί με τους όρους χρήσης τους στο «Σημείωμα Χρήσης Έργων Τρίτων». Ο δικαιούχος μπορεί να παρέχει στον αδειοδόχο ξεχωριστή άδεια να χρησιμοποιεί το έργο για εμπορική χρήση, εφόσον αυτό του ζητηθεί. Ως Μη Εμπορική ορίζεται η χρήση: που δεν περιλαμβάνει άμεσο ή έμμεσο οικονομικό όφελος από την χρήση του έργου, για το διανομέα του έργου και αδειοδόχο που δεν περιλαμβάνει οικονομική συναλλαγή ως προϋπόθεση για τη χρήση ή πρόσβαση στο έργο που δεν προσπορίζει στο διανομέα του έργου και αδειοδόχο έμμεσο οικονομικό όφελος (π.χ. διαφημίσεις) από την προβολή του έργου σε διαδικτυακό τόπο [1] http://creativecommons.org/licenses/by-nc-sa/4.0/

ΑΡΙΣΤΟΤΕΛΕΙΟ ΠΑΝΕΠΙΣΤΗΜΙΟ ΘΕΣΣΑΛΟΝΙΚΗΣ ΑΝΟΙΚΤΑ ΑΚΑΔΗΜΑΪΚΑ ΜΑΘΗΜΑΤΑ Τέλος ενότητας Επεξεργασία: Ανδρέας Κοσματόπουλος Θεσσαλονίκη, Αύγουστος 2015

ΑΡΙΣΤΟΤΕΛΕΙΟ ΠΑΝΕΠΙΣΤΗΜΙΟ ΘΕΣΣΑΛΟΝΙΚΗΣ Σημειώματα

Σημείωμα Ιστορικού Εκδόσεων Έργου Το παρόν έργο αποτελεί την έκδοση 1.00.

Διατήρηση Σημειωμάτων Οποιαδήποτε αναπαραγωγή ή διασκευή του υλικού θα πρέπει να συμπεριλαμβάνει: το Σημείωμα Αναφοράς το Σημείωμα Αδειοδότησης τη δήλωση Διατήρησης Σημειωμάτων το Σημείωμα Χρήσης Έργων Τρίτων (εφόσον υπάρχει) μαζί με τους συνοδευόμενους υπερσυνδέσμους.