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

Σχετικά έγγραφα
Εισαγωγή στους Αλγορίθμους

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Κοινωνία & Υγεία Υγεία Πρόληψη Προαγωγή υγείας: Βαθμίδες πρόληψης

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

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

Αλγόριθμοι και πολυπλοκότητα Διαίρει και Κυρίευε

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

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

Γραμμική Άλγεβρα και Μαθηματικός Λογισμός για Οικονομικά και Επιχειρησιακά Προβλήματα

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

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

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

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

Αλγόριθμοι και πολυπλοκότητα Μελανέρυθρα δεντρα

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

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

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

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

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

Τεχνικό Σχέδιο - CAD. Τόξο Κύκλου. Τόξο Κύκλου - Έλλειψη. ΤΕΙ Ιονίων Νήσων Τμήμα Τεχνολόγων Περιβάλλοντος Κατεύθυνση Τεχνολογιών Φυσικού Περιβάλλοντος

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

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

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

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

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

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

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

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

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

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

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

Αλγόριθμοι και πολυπλοκότητα Ταχυταξινόμηση (Quick-Sort)

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

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

Αλγόριθμοι και πολυπλοκότητα Bucket-Sort και Radix-Sort

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

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

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

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

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

Αερισμός. Ενότητα 1: Αερισμός και αιμάτωση. Κωνσταντίνος Σπυρόπουλος, Καθηγητής Σχολή Επιστημών Υγείας Τμήμα Ιατρικής

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

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

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

Εισαγωγή στην Πληροφορική

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

Γραμμική Άλγεβρα και Μαθηματικός Λογισμός για Οικονομικά και Επιχειρησιακά Προβλήματα

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

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

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

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

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

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

Εισαγωγή στους Η/Υ. Ενότητα 2α: Χάρτης Karnaugh (Βοηθητικό υλικό)

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

Διδακτική των εικαστικών τεχνών Ενότητα 1

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

ΠΙΝΑΚΕΣ. Θερμοδυναμική 2012 Σελίδα 292

Σχεδίαση και Ανάλυση Αλγορίθμων Ενότητα 8: ΧΡΗΣΗ ΔΟΜΩΝ ΔΕΝΤΡΟΥ ΚΑΙ ΣΩΡΟΥ ΓΙΑ ΕΠΙΛΥΣΗ ΠΡΟΒΛΗΜΑΤΟΣ ΤΑΞΙΝΟΜΗΣΗΣ ΑΛΓΟΡΙΘΜΟΣ HEAPSORT

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

Προγραμματισμός Η/Υ. 6 η ενότητα: Συναρτήσεις. Τμήμα. Τεχνολόγων Περιβάλλοντος. ΤΕΙ Ιονίων Νήσων. Ανοικτά Ακαδημαϊκά Μαθήματα στο ΤΕΙ Ιονίων Νήσων

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

Εισαγωγή στην Πληροφορική

ΠΛΗΡΟΦΟΡΙΚΗ Ι Ενότητα 4: Συναρτήσεις

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

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

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

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

Θέματα Εφαρμοσμένης. Ενότητα 14.2: Η ψήφος στα πρόσωπα. Θεόδωρος Χατζηπαντελής Τμήμα Πολιτικών Επιστημών ΑΝΟΙΚΤΑ ΑΚΑΔΗΜΑΪΚΑ ΜΑΘΗΜΑΤΑ

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

Transcript:

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

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

Περίληψη και ανάγνωση Πολλαπλασιασμός αλληλουχίας πινάκων Η γενική τεχνική Το ακέραιο πρόβλημα του σακιδίου Δυναμικός Προγραμματισμός 2

Πολλαπλασιασμός αλληλουχίας πινάκων Δυναμικός προγραμματισμός είναι ένα γενικό παράδειγμα σχεδίασης αλγορίθμου. Είναι καλύτερα να σας δώσουμε ένα παράδειγμα, αντί να σας δώσουμε μία γενική τεχνική: Πολλαπλασιασμός αλληλουχίας πινάκων Ανασκόπηση:Πολλαπλασιασμός πινάκων. C = A*B Ο πίνακας A είναι d e διαστάσεων και ο πίνακας B είναι e f διαστάσεων Ο χρόνος είναι O(d e f ) e e B f j C[ i, j] e = k= 1 0 A[ i, k]* B[ k, j] d A i C i,j d Δυναμικός Προγραμματισμός 3 f

Πολλαπλασιασμός αλληλουχίας πινάκων Πολλαπλασιασμός αλληλουχίας πινάκων: Υπολογίζουμε το γινόμενο A=A 0 *A 1 * *A n-1 Οι πίνακες A i είναι διαστάσεων d i d i+1 Πρόβλημα:Πώς ομαδοποιούμε παρενθετικά τους όρους; Παράδειγμα Ο πίνακας B είναι διαστάσεων 3 100 Ο πίνακας C είναι διαστάσεων 100 5 Ο πίνακας D είναι διαστάσεων 5 5 Το γινόμενο (B*C)*D εκτελεί 1500 + 75 = 1575 διαδικασίες Το γινόμενο B*(C*D) εκτελεί 1500 + 2500 = 4000 διαδικασίες Δυναμικός Προγραμματισμός 4

Προσέγγιση απαρίθμησης Αλγόριθμος του πολ/μου αλληλουχίας πινάκων Δοκιμάστε όλους τους πιθανούς τρόπους να ομαδοποιήσετε παρενθετικά το A=A 0 *A 1 * *A n-1 Υπολογίστε των αριθμό των διαδικασιών για κάθε ένα από τους πιθανούς τρόπους. Επιλέξτε εκείνον που είναι καλύτερος Χρόνος Εκτέλεσης: Ο αριθμός των ομαδοποιήσεων είναι ίσος με το αριθμό των δυαδικών δέντρων με n κόμβους Αυτό είναι εκθετικό! Καλείται αριθμός Catalan, είναι σχεδόν 4 n. Αυτός δεν είναι καθόλου ικανοποιητικός αλγόριθμος! Δυναμικός Προγραμματισμός 5

Η άπληστη προσέγγιση Ιδέα #1: επιλέξτε επαναληπτικά το προϊόν που χρησιμοποιεί τις περισσότερες διαδικασίες. Αντιπαράδειγμα: Ο πίνακας A είναι 10 5 Ο πίνακας B είναι 5 10 Ο πίνακας C είναι 10 5 Ο πίνακας D είναι 5 10 Άπληστη Ιδέα #1 δίνει (A*B)*(C*D), το οποίο εκτελεί 500+1000+500 = 2000 διαδικασίες A*((B*C)*D) εκτελεί 500+250+250 = 1000 διαδικασίες Δυναμικός Προγραμματισμός 6

Άλλη μία άπληστη προσέγγιση Ιδέα #2: επιλέξτε επαναληπτικά το προϊόν που χρησιμοποιεί τις λιγότερες διαδικασίες. Αντιπαράδειγμα: Ο πίνακας A είναι 101 11 Ο πίνακας B είναι 11 9 Ο πίνακας C είναι 9 100 Ο πίνακας D είναι 100 99 Άπληστη ιδέα #2 δίνει A*((B*C)*D)), το οποίο εκτελεί 109989+9900+108900=228789 διαδικασίες (A*B)*(C*D) εκτελεί 9999+89991+89100=189090 διαδικασίες Η άπληστη προσέγγιση δεν μας δίνει την βέλτιστη τιμή. Δυναμικός Προγραμματισμός 7

Αναδρομική Προσέγγιση Καθορισμός υπο-προβλημάτων: Βρείτε τον καλύτερο τρόπο παρενθετικής ομαδοποίησης του γινομένου A i *A i+1 * *A j. Έστω N i,j το πλήθος των διαδικασιών που έγιναν από αυτό το υποπρόβλημα. ΗβέλτιστηλύσηγιαόλοτοπρόβλημαείναιN 0,n-1. Βελτιστοποίηση υπο-προβλήματος: Η βέλτιστηλύσημπορεί να καθοριστεί από τα βέλτιστα υπο-προβλήματα. Πρέπει να υπάρξει ένας τελικός πολλαπλασιασμός( ρίζα του δέντρου έκφρασης). Ο τελικός πολλαπλασιασμός είναι στον δείκτη i: (A 0 * *A i )*(A i+1 * *A n-1 ). Τότε η βέλτιστη λύση N 0,n-1 είναι το άθροισμα των δύο βέλτιστων υπο-προβλημάτων, N 0,i και N i+1,n-1 συντοχρόνοτοντελευταίο πολλαπλασιασμό. Αν η global βέλτιστηδενείχεαυτάταβέλτισταυπο-προβλήματα, θα μπορούσαμε να καθορίσουμε μία ακόμα καλύτερη «βέλτιστη» λύση. Δυναμικός Προγραμματισμός 8

Χαρακτηρισμός της εξίσωσης Το ολικό βέλτιστο πρέπει να καθοριστεί από τα βέλτιστα υπο-προβλήματα, ανάλογα με το που είναι ο τελικός πολλαπλασιασμός. Εξετάζουμε όλες τις πιθανές θέσεις για τον τελικό προγραμματισμό: Θυμηθείτε ότι ο A i είναι ένας d i d i+1 διαστάσεων πίνακας. Έτσι, ένας χαρακτηρισμός εξίσωσης για το N i,j είναι ο παρακάτω: N = i, j j+ i k< j min{ N + N + d d d } i, k k+ 1, j i k+ 1 1 Σημειώστε ότι τα υπο-προβλήματα δεν είναι ανεξάρτητα Επικάλυψη υπο-προβλημάτων. Δυναμικός Προγραμματισμός 9

Δυναμικός Προγραμματισμός Απεικόνιση Αλγορίθμου Η από κάτω προς τα πάνω κατασκευή συμπληρώνει τους N πίνακες από τις διαγώνιες Το N i,j παίρνει τιμές από τις προηγούμενες καταχωρήσεις στην i-οστη γραμμή και στην j-οστη στήλη. Συμπληρώνοντας σε κάθε καταχώρηση στον N πίνακα παίρνει O(n) χρόνο. Συνολικός χρόνος εκτέλεσης: O(n 3 ) Το να πάρουμε πραγματική παρενθετική ομαδοποίηση μπορεί να γίνει με το k για κάθε N καταχώρηση N i, j = j+ i k< j min{ Ni, k + Nk+ 1, j + didk+ 1d 1} N 0 1 2 i j n-1 0 1 i j n-1 Απάντηση Δυναμικός Προγραμματισμός 10

Δυναμικός Προγραμματισμός Αλγόριθμος Με την επικάλυψη υπο-προβλημάτων, δεν χρησιμοποιούμε αναδρομή. Αντ αυτού, κατασκευάζουμε βέλτιστα υποπροβλήματα από κάτω προ τα πάνω. Των N i,i είναι εύκολα, όποτε ας ξεκινήσουμε με αυτά Έπειτα κάντε τα προβλήματα μήκους 2,3, subproblems, και συνεχίστε. Χρόνος εκτέλεσης: O(n 3 ) Algorithm matrixchain(s): Input: ακολουθία S n πινάκων που θα πολλαπλασιαστούν. Output: αριθμός διαδικασιών σε μία βέλτιστη παρενθετική ομαδοποίηση της S for i 1 to n 1 do N i,i 0 for b 1 to n 1 do { b = j i είναι το μήκος του προβλήματος } for i 0 to n b 1 do j i + b N i,j + for k i to j 1 do N i,j min{n i,j, N i,k + N k+1,j + d i d k+1 d j+1 } return N 0,n 1 Δυναμικός Προγραμματισμός 11

Η Γενική Τεχνική Δυναμικού Προγραμματισμού Ισχύει για ένα πρόβλημα που αρχικά φαίνεται να απαιτεί πολύ χρόνο (πιθανόν εκθετικό), υπό τον όρο να έχουμε: Απλά υπο-προβλήματα: τα υπο-προβλήματα μπορούν να οριστούν από λίγες μεταβλητές, όπως j, k, l, m κ.τ.λ. Βελτιστοποίηση υπο-προβλημάτων : η global βέλτιστη τιμή μπορεί να οριστεί από βέλτιστα υποπροβλήματα Επικάλυψη υπο-προβλημάτων : τα υποπροβλήματα δεν είναι ανεξάρτητα, αλλά επικαλυπτόμενα (ως εκ τούτου,πρέπει να κατασκευαστούν από κάτω προς τα πάνω). Δυναμικός Προγραμματισμός 12

Το ακέραιο πρόβλημα του σακιδίου Δεδομένα: ένα σύνολο S από n στοιχεία, με κάθε στοιχείο έχω w i ένα θετικό βάρος b i ένα θετικό όφελος Σκοπός: διαλέξτε στοιχεία με μέγιστο συνολικό όφελος αλλά με βάρος το πολύ W. Αν δεν μας επιτρέπεται να παίρνουμε κλασματικά ποσά, τότε αυτό είναι το ακέραιο πρόβλημα του σακιδίου. Σε αυτή την περίπτωση, το T δηλώνει το σύνολο των στοιχείων που πήραμε Στόχος: μεγιστοποίηση του Περιορισμός: i T i T w i W b i Δυναμικός Προγραμματισμός 13

Παράδειγμα Δεδομένα: Ένα σύνολο S από n στοιχεία, με κάθε στοιχείο έχω b i ένα θετικό όφελος w i - ένα θετικό βάρος Σκοπός: διαλέξτε στοιχεία με μέγιστο συνολικό όφελος αλλά με βάρος το πολύ W. σακίδιο Στοιχεία: Βάρη: Οφέλη: 1 2 3 4 5 4 in 2 in 2 in 6 in 2 in $20 $3 $6 $25 $80 κουτί βάρους 9 Λύση: στοιχείο 5 ($80, 2 in) στοιχείο 3 ($6, 2in) στοιχείο 1 ($20, 4in) Δυναμικός Προγραμματισμός 14

Ένας αλγόριθμος του ακέραιου προβλήματος του σακιδίου, Πρώτη Προσπάθεια S k : Σύνολό από στοιχεία που αριθμούνται από το 1 έως το k. Καθορισμός του B[k] = καλύτερη επιλογή από το S k. Πρόβλημα: δεν έχει βελτιστοποίηση υπο-προβλημάτων: Εξετάζουμε το σύνολο S={(3,2),(5,4),(8,5),(4,3),(10,9)} από (όφελος, βάρος) ζευγάρια και συνολικό βάρος W = 20 Καλύτερο για S 4 : Καλύτερο για S 5 : Δυναμικός Προγραμματισμός 15

Ένας αλγόριθμος του ακέραιου προβλήματος του σακιδίου, Δεύτερη Προσπάθεια S k : Σύνολό από στοιχεία που αριθμούνται από το 1 έως το k. Καθορισμός του B[k,w] ως η καλύτερη επιλογή από το S k με βάρος το πολύ w Καλά νέα: Αυτό έχει βελτιστοποίηση υπο-προβλήμάτων. B[ k, w] = max{ B[ k B[ k 1, w], 1, w] B[ k 1, w Π.χ., το καλύτερο υποσύνολο του S k με βάρος το πολύ w είναι ή το καλύτερο υποσύνολο του S k-1 με βάρος το πολύ w ή το καλύτερο υποσύνολο του S k-1 με βάρος το πολύ w w k συν το στοιχείο k w k ] + b k } if w k > else w Δυναμικός Προγραμματισμός 16

Αλγόριθμος του ακέραιου προβλήματος του σακιδίου B[ k 1, w] B[ k, w] = max{ B[ k 1, w], B[ k 1, w w Θυμηθείτε των καθορισμό του B[k,w] Όταν το B[k,w] καθοριστεί από τα B[k 1,*], μπορούμε να χρησιμοποιήσουμε δύο πίνακες αντί για έναν Χρόνος εκτέλεσης: O(nW). Δεν είναι αλγόριθμος πολυωνυμικού χρόνου ενώ το W μπορεί να είναι μεγαλύτερο Αυτό είναι ένας αλγόριθμος ψεύδο-πολυωνυμικού χρόνου k ] + b } k if w k Algorithm 01Knapsack(S, W): Input: σύνολο S από n στοιχεία με όφελος b i και βάρος w i ; Μέγιστο βάρος W Output: όφελος του καλύτερου υποσυνόλου του S με βάρος το πολύ W let A and B be arrays of length W + 1 for w 0 to W do B[w] 0 for k 1 to n do αντιγραφή του πίνακα B στον πίνακα A for w w k to W do if A[w w k ] + b k > A[w] then B[w] A[w w k ] + b k return B[W] Δυναμικός Προγραμματισμός 17 > else w

Τέλος Ενότητας

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

Σημειώματα

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

Σημείωμα Αναφοράς Copyright Πανεπιστήμιο Κρήτης, Ιωάννης Τόλλης 2015. «Αλγόριθμοι και πολυπλοκότητα. Δυναμικός Προγραμματισμός». Έκδοση: 1.0. Ηράκλειο 2015. Διαθέσιμο από τη δικτυακή διεύθυνση: https://opencourses.uoc.gr/courses/course/view.php?id=368

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