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

Σχετικά έγγραφα
Αλγόριθµοι και Πολυπλοκότητα

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

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

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

Ν. Μ. Μισυρλής. Τµήµα Πληροφορικής και Τηλεπικοινωνιών, Πανεπιστήµιο Αθηνών. Καθηγητής: Ν. Μ. Μισυρλής 29 Μαΐου / 18

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

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

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

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

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

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

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

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

ΕΠΛ 232 Αλγόριθµοι και Πολυπλοκότητα 2-1

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

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

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

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

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

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

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

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

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

Ενότητα 9 Ξένα Σύνολα που υποστηρίζουν τη λειτουργία της Ένωσης (Union-Find)

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

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

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

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

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

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

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

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

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

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

Βραχύτερα Μονοπάτια σε Γράφους (CLR, κεφάλαιο 25)

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

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

ΕΠΛ 232: Αλγόριθµοι και Πολυπλοκότητα. Κατ οίκον Εργασία 1 Σκελετοί Λύσεων

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

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

Εξαντλητική Απαρίθµηση

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

Γενικό πλάνο. Μαθηµατικά για Πληροφορική. Παράδειγµα αναδροµικού ορισµού. οµική επαγωγή ΠΑΡΑ ΕΙΓΜΑ. 3ο Μάθηµα

Μαθηµατικά για Πληροφορική

Ενότητα 9 Ξένα Σύνολα που υποστηρίζουν τη λειτουργία της Ένωσης (Union-Find)

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

Ασκήσεις για το µάθηµα «Ανάλυση Ι και Εφαρµογές»

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

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

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

3 Αναδροµή και Επαγωγή

1 Ορισµός ακολουθίας πραγµατικών αριθµών

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

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

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

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

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

Στοιχεία Αλγορίθµων και Πολυπλοκότητας

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

a 1d L(A) = {m 1 a m d a d : m i Z} a 11 a A = M B, B = N A, k=1

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

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

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

Heapsort Using Multiple Heaps

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

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

2 Αποδείξεις. 2.1 Εξαντλητική µέθοδος. Εκδοση 2005/03/22. Υπάρχουν πολλών ειδών αποδείξεις. Εδώ ϑα δούµε τις πιο κοινές:

Αναδροµή. Σε αυτήν την (βοηθητική) ενότητα θα µελετηθούν τα εξής : Η έννοια της αναδροµής Υλοποίηση και αποδοτικότητα Αφαίρεση της αναδροµής

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

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

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

Αριθμητικές Μέθοδοι σε Προγραμματιστικό Περιβάλλον (Εργαστήριο 4)

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

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

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

Branch and Bound. Branch and Bound

οµές εδοµένων 3 ο Εξάµηνο Τµήµα Πανεπιστήµιο Πληροφορικής Ιωαννίνων ΟΜΕΣ Ε ΟΜΕΝΩΝ

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

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

Ασκήσεις για το µάθηµα «Ανάλυση Ι και Εφαρµογές» (ε) Κάθε συγκλίνουσα ακολουθία άρρητων αριθµών συγκλίνει σε άρρητο αριθµό.

Επίλυση ενός τριδιαγώνιου γραµµικού συστήµατος Ax = d µε τη µέθοδο απαλοιφής του Gauss (µέθοδος του Thomas)

Η ΤΕΧΝΗ ΤΟΥ ΙΑΒΑΣΜΑΤΟΣ ΜΕΤΑΞΥ ΤΩΝ ΑΡΙΘΜΩΝ (ΠΑΡΕΜΒΟΛΗ ΚΑΙ ΠΡΟΣΕΓΓΙΣΗ)

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

Συναρτησιακές Εξαρτήσεις. Βάσεις εδοµένων Ευαγγελία Πιτουρά 1

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

επιστρέφει το αμέσως μεγαλύτερο από το x στοιχείο του S επιστρέφει το αμέσως μικρότερο από το x στοιχείο του S

HY118- ιακριτά Μαθηµατικά. Θεωρία γράφων / γραφήµατα. Τι έχουµε δει µέχρι τώρα. Υπογράφηµα Γράφοι

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

Εισαγωγή στους Αλγόριθµους. Αλγόριθµοι. Ιστορικά Στοιχεία. Ο πρώτος Αλγόριθµος. Παραδείγµατα Αλγορίθµων. Τι είναι Αλγόριθµος

ΓΡΑΜΜΙΚΗ ΑΛΓΕΒΡΑ ΙΙ (ΠΕΡΙΤΤΟΙ) Ασκησεις - Φυλλαδιο 5

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

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

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

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

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

ΓΡΑΜΜΙΚΗ ΑΛΓΕΒΡΑ Ι (ΑΡΤΙΟΙ) Ασκησεις - Φυλλαδιο 4

Αριθµητική Ανάλυση 1 εκεµβρίου / 43

Εισαγωγή. Οπως είδαµε για την εκκίνηση της Simplex χρειαζόµαστε µια Αρχική Βασική Εφικτή Λύση. υϊσµός

Θεωρία Αποφάσεων και Βελτιστοποίηση

Παράλληλοι Αλγόριθµοι

Transcript:

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

Εισαγωγή Ο δυναµικός προγραµµατισµός (dynamic programming), αποτελεί ένα ισχυρό εργαλείο, για την επίλυση συνδυαστικών προβληµάτων ϐελτιστοποίησης. Στον δυναµικό προγραµµατισµό, η επίλυση ενός προβλήµατος, προκύπτει από την λύση µικρότερων υποπροβληµάτων τα οποία αλληλοεπικαλύπτονται (overlapping subproblems). Κάθε υποπρόβληµα λύνεται µια µόνο ϕορά και η ϐέλτιστη λύση αποθηκεύεται σ ένα πίνακα. Καθηγητής: Ν. Μ. Μισυρλής () Αλγόριθµοι και Πολυπλοκότητα 28 Μαΐου 2015 2 / 45

Εισαγωγή Τέσσερα είναι τα ϐασικά ϐήµατα για την ανάπτυξη ενός αλγορίθµου δυναµικού προγραµµατισµού. 1 Χαρακτηρισµός της δοµής της ϐέλτιστης λύσης. 2 Αναδροµικός ορισµός της τιµής της ϐέλτιστης λύσης. 3 Υπολογισµός της τιµής της ϐέλτιστης λύσης από κάτω προς τα πάνω. 4 Κατασκευή της ϐέλτιστης λύσης µε χρήση πίνακα. Καθηγητής: Ν. Μ. Μισυρλής () Αλγόριθµοι και Πολυπλοκότητα 28 Μαΐου 2015 3 / 45

Βασικά Στοιχεία υναµικού Προγραµµατισµού Βέλτιστα διασπώµενη δοµή (optimal substructure) Κάθε υποστρατηγική µιας ϐέλτιστης στρατηγικής είναι και η ίδια ϐέλτιστη. Η ϐέλτιστη λύση ενός προβλήµατος, εµπεριέχει ϐέλτιστες λύσεις υποπροβληµάτων του. Καθηγητής: Ν. Μ. Μισυρλής () Αλγόριθµοι και Πολυπλοκότητα 28 Μαΐου 2015 4 / 45

Βέλτιστα διασπώµενη δοµή (optimal substructure) Μια µεθοδολογία για να ανακαλύψουµε την ϐέλτιστα διασπώµενη δοµή 1 Αποδεικνύουµε ότι µια οποιαδήποτε λύση στο πρόβληµα, συνίσταται στο να κάνουµε µια επιλογή. Η επιλογή αυτή οδηγεί σε ένα ή περισσότερα υποπροβλήµατα τα οποια πρέπει να επιλυθούν. 2 Θεωρούµε τώρα ότι έχουµε δεδοµένη την επιλογή η οποία οδηγεί στην ϐέλτιστη λύση, χωρίς να µας απασχολεί προς το παρόν, πως ορίζεται αυτή. 3 εδοµένης λοιπόν της επιλογής αυτής, ορίζουµε τα νέα υποπροβλήµατα. 4 Τέλος αποδεικνύουµε ότι όντως οι ϐέλτιστες λύσεις των υποπροβληµάτων αυτών οδηγούν στη ϐέλτιστη λύση του αρχικού προβλήµατος. Η απόδειξη γίνεται συνήθως µε εις άτοπον απαγωγή. Καθηγητής: Ν. Μ. Μισυρλής () Αλγόριθµοι και Πολυπλοκότητα 28 Μαΐου 2015 5 / 45

Βέλτιστα διασπώµενη δοµή (optimal substructure) Η τεχνική του δυναµικού προγραµµατισµού χρησιµοποιεί τη ϐέλτιστα διασπώµενη δοµή, από κάτω προς τα πάνω (bottom-up). Στην ουσία χρησιµοποιούµε µια αναδροµική σχέση ώστε να υπολογίσουµε τη ϐέλτιστη λύση του αρχικού προβλήµατος. Κριτήριο ανεξαρτησίας (independency) των υποπροβληµάτων: διασφαλίζει τη ϐέλτιστα διασπώµενη δοµή, δηλ. ότι η λύση ενός προβλήµατος δεν επηρεάζει τα υπόλοιπα. Καθηγητής: Ν. Μ. Μισυρλής () Αλγόριθµοι και Πολυπλοκότητα 28 Μαΐου 2015 6 / 45

Βέλτιστα διασπώµενη δοµή (optimal substructure) Εστω το µέγιστο απλό µονοπάτι q t, δυο µέγιστα απλά µονοπάτια p 1 : q r και p 2 : r t. Οµως το p 1 είναι το q s t r. Ο συνδυασµός των λύσεων δίνει µέγιστο µονοπάτι που δεν είναι απλό. εν υπάρχει λύση για το δεύτερο υποπρόβληµα άρα το αρχικό µας πρόβληµα δεν έχει λύση. Καθηγητής: Ν. Μ. Μισυρλής () Αλγόριθµοι και Πολυπλοκότητα 28 Μαΐου 2015 7 / 45

Το γράφηµα του σχήµατος δείχνει ότι δεν υπάρχει ϐέλτιστα διασπώµενη δοµή για το πρόβληµα του µέγιστου απλού µονοπατιού q r t s Καθηγητής: Ν. Μ. Μισυρλής () Αλγόριθµοι και Πολυπλοκότητα 28 Μαΐου 2015 8 / 45

Επικαλυπτόµενα υποπροβλήµατα (Overlapping subproblems) Το δεύτερο κριτήριο είναι των επικαλυπτόµενων υποπροβληµάτων. Κάθε αλγόριθµος δυναµικού προγραµµατισµού, παράγει πολυωνυµικό, πλήθος διαφορετικών υποπροβληµάτων. Κάθε ένα από τα υποπροβλήµατα εµφανίζεται, πιθανόν, αρκετές ϕορές. Μόλις επιλυθεί ένα υποπρόβληµα, η τιµή της ϐέλτιστης λύσης του, αποθηκεύεται σ ένα πίνακα. Οταν απαιτηθεί να επιλυθεί ξανά, τότε απλά ανακαλείται η τιµή της ϐέλτισης λύσης του υποπροβλήµατος από τον πίνακα (σε σταθερό χρόνο). Καθηγητής: Ν. Μ. Μισυρλής () Αλγόριθµοι και Πολυπλοκότητα 28 Μαΐου 2015 9 / 45

Επικαλυπτόµενα υποπροβλήµατα (Overlapping subproblems) Παρατηρήσεις εν ϑα πρέπει να δηµιουργείται σύγχυση ανάµεσα στην ιδιότητα της επικάλυψης µε αυτή της ανεξαρτησίας. περίπτωση 1: Το ίδιο υποπρόβληµα που εµφανίζεται περισσότερες ϕορές κατά την διάρκεια της εκτέλεσης. περίπτωση 2: Ανεξαρτησία των δεδοµένων του υποπροβλήµατος. Καθηγητής: Ν. Μ. Μισυρλής () Αλγόριθµοι και Πολυπλοκότητα 28 Μαΐου 2015 10 / 45

Εφαρµογές Χρονοδροµολόγηση γραµµής παραγωγής Ζητάµε να αποφασίσουµε από ποιούς σταθµούς ϑα περάσει το αυτοκίνητο έτσι ώστε να ελαχιστοποιήσουµε το χρόνο κατασκευής του. Εργοστάσιο κατασκευής αυτοκινήτων µε δύο γραµµές παραγωγής. e 1 S 1,1 S 1,2 S 1,3 S 1,n 1 S 1,n a 1,1 a 1,2 a 1,3 a a 1,n 1,n 1 t 1,1 t 1,2 t 1,3 t 1,n 1 x 1 Entrance e 2 t 2,1 t 2,2 t 2,3 t 2,n 1 a 2,1 a 2,2 a 2,3 a 2,n 1 a 2,n S 2,1 S 2,2 S 2,3 S 2,n 1 S 2,n x 2 Exit Καθηγητής: Ν. Μ. Μισυρλής () Αλγόριθµοι και Πολυπλοκότητα 28 Μαΐου 2015 11 / 45

Εφαρµογές Βήµα 1: Βέλτιστα διασπώµενη δοµή: Η ϐέλτιστη λύση του προβλήµατος της εύρεσης του συντοµότερου µονοπατίου µέχρι τον S 1j εµπεριέχει τις ϐέλτιστες λύσεις στα υποπροβλήµατα των συντοµότερων µονοπατιών προς τους σταθµούς S 1j 1 και S 2j 1. Καθηγητής: Ν. Μ. Μισυρλής () Αλγόριθµοι και Πολυπλοκότητα 28 Μαΐου 2015 12 / 45

Εφαρµογές Βήµα 2: Αναδροµικός ορισµός της τιµής της ϐέλτιστης λύσης Ορίζουµε τον πίνακα f διάστασης 2 n, όπου στη ϑέση f ij (i = 1, 2 και j = 1, 2,..., n) αποθηκεύουµε τον ελάχιστο χρόνο µέχρι και τον σταθµό S ij. Η ϐέλτιστη λύση: f = min{f 1n + x 1, f 2n + x 2 } (1) ύο αναδροµικές σχέσεις που υπολογίζουν τις δύο γραµµές του πίνακα f. f 1j = { e1 + a 11 j = 1 min{f 1j 1 + a 1j, f 2j 1 + t 2j 1 + a 1j } j 2 (2) και όµοια: f 2j = { e2 + a 21 j = 1 min{f 2j 1 + a 2j, f 1j 1 + t 1j 1 + a 2j } j 2 (3) Καθηγητής: Ν. Μ. Μισυρλής () Αλγόριθµοι και Πολυπλοκότητα 28 Μαΐου 2015 13 / 45

Εφαρµογές Βήµα 3: Υπολογισµός του ελάχιστου χρόνου από (1), (2) ή (3) T 1 (n) = T 2 (n) = T 1 (n 1)+T 2 (n 1). Αρα T 1 (n) = T 2 (n) = Ω(2 n ). Μπορούµε να κάνουµε καλύτερα από εκθετικό χρόνο Ναι. Αποθηκεύουµε κάθε τιµή f ij σε ένα πίνακα (διαστάσεων 2 n) Ανακαλούµε κάθε ϕορά την τιµή από κάποιο προηγούµενο ϐήµα. Βέλτιστη διαδροµή σε χρόνοθ(n). Καθηγητής: Ν. Μ. Μισυρλής () Αλγόριθµοι και Πολυπλοκότητα 28 Μαΐου 2015 14 / 45

1. f 11 e 1 + a 1,1 2. f 21 e 2 + a 2,1 3. for j = 2 to n do 4. if f 1,j 1 + a 1,j f 2,j 1 + t 2,j 1 + a 1,j then 5. f 1j = f 1,j 1 + a 1,j 6. l 1j = 1 7. else 8. f 1j = f 2,j 1 + t 2,j 1 + a 1,j 9. l 1j = 2 10. end if 11. if f 2,j 1 + a 2,j f 1,j 1 + t 1,j 1 + a 2,j then 12. f 2j = f 2,j 1 + a 2,j 13. l 2j = 2 14. else 15. f 2j = f 1,j 1 + t 1,j 1 + a 2,j 16. l 2j = 1 17. end if 18. if f 1n + x 1 f 2n + x 2 then 19. f = f 1n + x 1 20. l = 1 21. else 22. f = f 2n + x 2 23. l = 2 24. end if Καθηγητής: Ν. Μ. Μισυρλής () Αλγόριθµοι και Πολυπλοκότητα 28 Μαΐου 2015 15 / 45

S 1,1 S 1,2 S 1,3 S 1,4 S 1,5 S 1,6 assembly line 1 7 9 3 4 8 4 enter 2 4 2 3 1 3 4 3 2 1 2 2 1 exit 2 assembly line 2 8 5 6 4 5 7 S 2,1 S 2,2 S 2,3 S 2,4 S 2,5 S 2,6 1 2 3 4 5 6 2 3 4 5 6 f 1 [j] 9 18 20 24 32 35 l 1 [j] 1 2 1 1 2 f 2 [j] 12 16 22 25 30 37 l 2 [j] 1 2 1 1 2 f = 38 l = 1 Καθηγητής: Ν. Μ. Μισυρλής () Αλγόριθµοι και Πολυπλοκότητα 28 Μαΐου 2015 16 / 45

Αλυσιδωτός πολλαπλασιασµός πινάκων Ζητάµε να υπολογίσουµε το γινόµενο A 1 A 2...A n (4) όσο το δυνατόν πιο αποδοτικά (µε το λιγότερο δυνατό κόστος). Το κόστος πολλαπλασιασµού δύο πινάκων A, B µε διαστάσεις p q και q r αντίστοιχα, είναι p q r. Το κόστος του πολλαπλασιασµόυ µεταβαλλεται ανάλογα µε τη σειρά που ϑα εκτελέσουµε τους πολλαπλασιασµούς. Παράδειγµα: Εστω το γινόµενο A 1 A 2 A 3 A 4. (A 1 ((A 2 A 3 ) A 4 )) ή ((A 1 A 2 ) (A 3 A 4 )) Καθηγητής: Ν. Μ. Μισυρλής () Αλγόριθµοι και Πολυπλοκότητα 28 Μαΐου 2015 17 / 45

Αλυσιδωτός πολλαπλασιασµός πινάκων Ασκηση: Να δειχθεί ότι ο υπολογισµός του αριθµού των παρενθετοποιήσεων δίδεται από την αναδροµή: T(n) = Επίσης να δειχθέι ότι η λύση είναιω(2 n ). { 1 αν, n = 1 n 1 k=1 T(k)T(n k), αν n 2 (5) Καθηγητής: Ν. Μ. Μισυρλής () Αλγόριθµοι και Πολυπλοκότητα 28 Μαΐου 2015 18 / 45

Αλυσιδωτός πολλαπλασιασµός πινάκων Βήµα 1: Βέλτιστα διασπώµενη δοµή Βήµα 1: Βέλτιστα διασπώµενη δοµή ϑα χρησιµοποιήσουµε τον συµβολισµό A ij εννοώντας το γινόµενο A i A i+1...a j όπου i j. Συµβολικά έχουµε: cost(a ij ) = cost(a ik )+cost(a k+1,j )+cost(a ik A k+1,j ) (6) Η ϐέλτιστη παρενθετοποίηση του γινοµένου A ij είναι αυτή που προκύπτει από την ϐέλτιστη παρενθετοποίηση των γινοµένων A ik και A k+1,j. Η ϐέλτιστη λύση του προβλήµατος µας, έγκειται στον υπολογισµό του ελαχίστου κόστους της παρενθετοποίησης του γινοµένου A 1n. Καθηγητής: Ν. Μ. Μισυρλής () Αλγόριθµοι και Πολυπλοκότητα 28 Μαΐου 2015 19 / 45

Αλυσιδωτός πολλαπλασιασµός πινάκων Βήµα 2: Αναδροµικός ορισµός της τιµής της ϐέλτιστης λύσης Ο πίνακας A ik έχει διαστάσεις p i 1 p k και αντίστοιχα ο A k+1,j, p k p j cost(a ik A k+1,j ) = p i 1 p k p j. 1 i k < j n Ορίζουµε τον πίνακα m διάστασης n n, όπου στη ϑέση m[i, j] αποθηκεύουµε το ελάχιστο κόστος που απαιτείται για τον υπολογισµό του γινοµένου A ij. Στη ϑέση m[1, n] αποθηκεύεται το ελάχιστο κόστος υπολογισµού του γινοµένου A 1n. m[i, j] = min i k<j {m[i, k]+m[k + 1, j]+p i 1 p k p j }. Καθηγητής: Ν. Μ. Μισυρλής () Αλγόριθµοι και Πολυπλοκότητα 28 Μαΐου 2015 20 / 45

Αλυσιδωτός πολλαπλασιασµός πινάκων Βήµα 2: Αναδροµικός ορισµός της τιµής της ϐέλτιστης λύσης Συνοπτικά λοιπόν έχουµε: { 0, i = j m[i, j] = { min i k<j m[i, k]+m[k + 1, j]+p i 1 p k p j }, i < j (7) Καθηγητής: Ν. Μ. Μισυρλής () Αλγόριθµοι και Πολυπλοκότητα 28 Μαΐου 2015 21 / 45

Αλυσιδωτός πολλαπλασιασµός πινάκων Η 7 υλοποιείται ως εξής: ΑΝΑ ΡΟΜΙΚΗ ΑΚΟΛΟΥΘΙΑ ΠΙΝΑΚΩΝ(p, i, j) 1. Αν i = j 2. τότε επιστροφή 0 3. m[i, j] = 4. Για k = i έως j 1 5. q =ΑΝΑ ΡΟΜΙΚΗ ΑΚΟΛΟΥΘΙΑ ΠΙΝΑΚΩΝ(p, i, k) 6. + ΑΝΑ ΡΟΜΙΚΗ ΑΚΟΛΟΥΘΙΑ ΠΙΝΑΚΩΝ(p, k + 1, n) 7. +p i 1 p k p j 8. αν q < m[i, j] 9. τότε m[i, j] = q 10. επιστροφή m[i, j] Καθηγητής: Ν. Μ. Μισυρλής () Αλγόριθµοι και Πολυπλοκότητα 28 Μαΐου 2015 22 / 45

Αλυσιδωτός πολλαπλασιασµός πινάκων T(1) 1 n 1 T(n) 1+ (T(k)+T(n k)+1), n > 1 k=1 n 1 T(n) 2 T(i)+ n k=1 Μέθοδος αντικατάστασης Θα δείξουµε ότι Βάση: n = 1 έχουµε T(n) 2 n 1 T(1) 2 0 = 1 το οποίο ισχύει. Βήµα: Για n 2 έχουµε Καθηγητής: Ν. Μ. Μισυρλής () Αλγόριθµοι και Πολυπλοκότητα 28 Μαΐου 2015 23 / 45

Αλυσιδωτός πολλαπλασιασµός πινάκων- Μέθοδος αντικατάστασης Εποµένως n 1 T(n) 2 2 i 1 + n i=1 n 2 = 2 2 i + n i=0 = 2(2 0 + 2 1 + +2 n 2 )+n ( ) 2 n 2 2 2 0 = + n 2 1 = 2(2 n 1 1)+n = 2 n + n 2 2 n 1 T(n) = Ω(2 n ). Καθηγητής: Ν. Μ. Μισυρλής () Αλγόριθµοι και Πολυπλοκότητα 28 Μαΐου 2015 24 / 45

Υποµνηµατισµός Η ϐασική ιδέα είναι να υποµνηµατίσουµε τον ϕυσικό, αλλά ϐραδύ, αναδροµικό αλγόριθµο. Τηρούµε έναν πίνακα µε λύσεις υποπροβληµάτων Ενας υποµνηµατικός αναδροµικός αλγόριθµος τηρεί ένα στοιχείο πίνακα για τη λύση του κάθε υποπροβλήµατος. Το κάθε στοιχείο πίνακα αρχικά περιέχει µια ειδική τιµή η οποία υποδεικνύει ότι το στοιχείο δεν έχει ακόµα συµπληρωθεί. Οταν το αντίστοιχο υποπρόβληµα απαντάται για πρώτη ϕορά κατά την εκτέλεση του αναδροµικού αλγορίθµου, υπολογίζεται η λύση του και κατόπιν αποθηκεύεται στον πίνακα. Στη συνέχεια, κάθε ϕορά που απαντάται ξανά το συγκεκριµένο υποπρόβληµα, απλώς ανακαλείται και επιστρέφεται η τιµή που είναι αποθηκευµένη στον πίνακα. Καθηγητής: Ν. Μ. Μισυρλής () Αλγόριθµοι και Πολυπλοκότητα 28 Μαΐου 2015 25 / 45

Υποµνηµατισµός ΥΠΟΜΝΗΜΑΤΙΚΗ ΑΚΟΛΟΥΘΙΑ ΠΙΝΑΚΩΝ(p) 1. n µήκος[p] 1 2. Για i 1 έως n 3. για j 1 έως n 4. m[i, j] 5. επιστροφή ΑΝΑΚΛΗΣΗ ΑΛΛΗΛΟΥΧΙΑΣ(p, 1, n) Καθηγητής: Ν. Μ. Μισυρλής () Αλγόριθµοι και Πολυπλοκότητα 28 Μαΐου 2015 26 / 45

Υποµνηµατισµός ΑΝΑΚΛΗΣΗ ΑΛΛΗΛΟΥΧΙΑΣ(p, i, j) 1. αν m[i, j] < 2. τότε επιστροφή m[i, j] 3. αν i = j 4. m[i, j] 0 5. άλλως για k i έως j 1 6. q ΑΝΑΚΛΗΣΗ ΑΛΛΗΛΟΥΧΙΑΣ(p, i, k) 7. +ΑΝΑΚΛΗΣΗ ΑΛΛΗΛΟΥΧΙΑΣ(p, k + 1, j)+p i 1 p k p j 8. αν q < m[i, j] 9. τότε m[i, j] q 10. επιστροφή m[i, j] Καθηγητής: Ν. Μ. Μισυρλής () Αλγόριθµοι και Πολυπλοκότητα 28 Μαΐου 2015 27 / 45

1 4 1 1 2 4 1 2 3 4 1 3 4 4 2 2 3 4 2 3 4 4 1 1 2 2 3 3 4 4 1 1 2 3 1 2 3 3 3 3 4 4 2 2 3 3 2 2 3 3 1 1 2 2 Καθηγητής: Ν. Μ. Μισυρλής () Αλγόριθµοι και Πολυπλοκότητα 28 Μαΐου 2015 28 / 45

Αλυσιδωτός πολλαπλασιασµός πινάκων Βήµα 3: Υπολογισµός του ελαχίστου κόστους Matrix Chain Order(p) 1. n = length[p] 1 2. for i = 1 to n do 3. m[i, i] = 0 4. end for 5. for l = 2 to n do 6. for i = 1 to n l + 1 do 7. j = i + l 1 8. m[i, j] = 9. for k = i to j 1 do 10. q = m[i, k]+m[k + 1, j]+p i 1 p k p j Καθηγητής: Ν. Μ. Μισυρλής () Αλγόριθµοι και Πολυπλοκότητα 28 Μαΐου 2015 29 / 45

Αλυσιδωτός πολλαπλασιασµός πινάκων 11. if q < m[i, j] then 12. m[i, j] = q 13. s[i, j] = k 14. end if 15. end for 16. end for 17. end for 18. return m, s Βήµα 4: Κατασκευή της ϐέλτιστης λύσης Καθηγητής: Ν. Μ. Μισυρλής () Αλγόριθµοι και Πολυπλοκότητα 28 Μαΐου 2015 30 / 45

Καθηγητής: Ν. Μ. Μισυρλής () Αλγόριθµοι και Πολυπλοκότητα 28 Μαΐου 2015 31 / 45

Print Optimal Parents(s, i, j) 1. if i = j then 2. τύπωσε Α i 3. else 4. τύπωσε ( 5. Print Optimal Parents(s, i, s[i, j]) 6. Print Optimal Parents(s, s[i, j]+1, j) 7. τύπωσε ) 8. end if Καθηγητής: Ν. Μ. Μισυρλής () Αλγόριθµοι και Πολυπλοκότητα 28 Μαΐου 2015 32 / 45

Το πρόβληµα του σακιδίου Ενα σύνολο X = {x 1, x 2,...,x n } από n αντικείµενα το καθένα έχει ϐάρος a i και ένα κέρδος c i, i = 1, 2,...,n. ίνεται ένας ακέραιος W. Ζητάµε να επιλέξουµε ένα υποσύνολο Y X τέτοιο ώστε x i Y c i = max και επιπλέον x i Y a i W. Το πρόβληµα αυτό είναι N P hard. Θα δώσουµε αλγόριθµο δυναµικού προγραµµατισµού, που επιλύει το πρόβληµα αυτό σε ψευδοπολυωνυµικό χρόνο. Καθηγητής: Ν. Μ. Μισυρλής () Αλγόριθµοι και Πολυπλοκότητα 28 Μαΐου 2015 33 / 45

Το πρόβληµα του σακιδίου Βήµα 1: Βέλτιστα διασπώµενη δοµή P k (y) = { max k c j x j, j=1 k j=1 } a j x j y, x j = 0 ή 1 (8) 0 y W, 1 k n Καθηγητής: Ν. Μ. Μισυρλής () Αλγόριθµοι και Πολυπλοκότητα 28 Μαΐου 2015 34 / 45

Το πρόβληµα του σακιδίου Βήµα 2: Αναδροµικός ορισµός της τιµής της ϐέλτιστης λύσης Εστω f k (y) η τιµή της ϐέλτιστης λύσης του υποπροβλήµατος P k (y). Τότε { fk (y) } αν a k+1 > y f k+1 (y) = max {f k (y), f k (y a k+1 )+c k+1, διαφορετικά (9) για 1 k n και 0 y W. Η ϐέλτιστη λύση του προβλήµατος P n (W) έχει την τιµή f n (W). Καθηγητής: Ν. Μ. Μισυρλής () Αλγόριθµοι και Πολυπλοκότητα 28 Μαΐου 2015 35 / 45

Αναδροµικός Αλγόριθµος ΚΟΣΤΟΣ(k, y) 1 αν k = 1 τότε 2 αν a 1 > y τότε 3 f(1, y) 0 4 άλλως 5 f(1, y) c 1 6 άλλως 7 αν a k+1 > y τότε 8 f(k, y) ΚΟΣΤΟΣ(k, y) 9 άλλως 10 f(k, y) max{κοστοσ(k, y), ΚΟΣΤΟΣ(k, y a k+1 )+c k+1 } 11 Επιστροφή f(k, y) Καθηγητής: Ν. Μ. Μισυρλής () Αλγόριθµοι και Πολυπλοκότητα 28 Μαΐου 2015 36 / 45

Απόδειξη Ορθότητας Επαγωγή Βάση. Για k = 1 έχουµε, λόγω των 1-5 ΚΟΣΤΟΣ(1, y) = { 0, αν a1 > y c 1, διαφορετικά ή, λόγω της (9) ΚΟΣΤΟΣ(1, y) = f 1 (y), 0 y W. Επαγωγικό Βήµα Υποθέτουµε ότι ισχύει ΚΟΣΤΟΣ(k, y) = f k (y), 0 y W. (10) και ϑα δείξουµε ότι ΚΟΣΤΟΣ(k + 1, y) = f k+1 (y), 0 y W. (11) Καθηγητής: Ν. Μ. Μισυρλής () Αλγόριθµοι και Πολυπλοκότητα 28 Μαΐου 2015 37 / 45

Ορθότητα Εχουµε, λόγω των 7-10, ότι { ΚΟΣΤΟΣ(k, y), αν a ΚΟΣΤΟΣ(k + 1, y) = k+1 > y max{κοστοσ(k, y), ΚΟΣΤΟΣ(k, y a k+1 )+c k+1 } (12) Λόγω της επαγωγικής υπόθεσης (10) έχουµε και ΚΟΣΤΟΣ(k, y) = f k (y) ΚΟΣΤΟΣ(k, y a k+1 ) = f k (y a k+1 ) (13) Η (12), λόγω της (13) δίνει την (11). Πολυπλοκότητα T(n) = Ω(2 n ) Καθηγητής: Ν. Μ. Μισυρλής () Αλγόριθµοι και Πολυπλοκότητα 28 Μαΐου 2015 38 / 45

Το πρόβληµα του σακιδίου Βήµα 3: Υπολογισµός της ϐέλτιστης λύσης 1. 2. 3. 4. 5. 6. 7. 8. 9. DYNAMIC KNAPSACK(A, C, W) n = length(c) for y = 0 to W do if a 1 > y then f 1(y) = 0 else f 1(y) = c 1 end if end for for k = 1 to n 1do Καθηγητής: Ν. Μ. Μισυρλής () Αλγόριθµοι και Πολυπλοκότητα 28 Μαΐου 2015 39 / 45

Το πρόβληµα του σακιδίου 10. for y = 0 to W do 11. if a k+1 > y then 12. f k+1(y) = f k(y) 13. x y k+1 = 0 14. else if f k(y) > f k(y a k+1)+c k+1 15. f k+1(y) = f k(y) 16. x y k+1 = 0 17. else 18. f k+1(y) = f k(y a k+1)+c k+1 19. x y k+1 = 1 20. end if 21. end for 22. end for 23. return f, x Καθηγητής: Ν. Μ. Μισυρλής () Αλγόριθµοι και Πολυπλοκότητα 28 Μαΐου 2015 40 / 45

Το πρόβληµα του σακιδίου Πολυπλοκότητα T(n) = O(nW) Καθηγητής: Ν. Μ. Μισυρλής () Αλγόριθµοι και Πολυπλοκότητα 28 Μαΐου 2015 41 / 45

Παράδειγµα Βήµα 4: Κατασκευή της ϐέλτιστης λύσης Αντικείµενα µε ϐάρη και αξίες (9, 20),(8, 16),(6, 11),(5, 9),(4, 7),(1, 1) 1 2 3 4 5 6 7 8 9 10 11 12 1 0(0) 0(0) 0(0) 0(0) 0(0) 0(0) 0(0) 0(0) 20(1) 20(1) 20(1) 20(1) 2 0(0) 0(0) 0(0) 0(0) 0(0) 0(0) 0(0) 16(1) 20(0) 20(0) 20(0) 20(0) 3 0(0) 0(0) 0(0) 0(0) 0(0) 11(1) 11(1) 16(0) 20(0) 20(0) 20(0) 20(0) 4 0(0) 0(0) 0(0) 0(0) 9(1) 11(0) 11(0) 16(0) 20(0) 20(0) 20(0) 20(0) 5 0(0) 0(0) 0(0) 7(1) 9(0) 11(0) 11(0) 16(0) 20(0) 20(0) 20(0) 23(1) 6 1(1) 1(1) 1(1) 7(0) 9(0) 11(0) 12(1) 16(0) 20(0) 21(1) 21(1) 23(0) Καθηγητής: Ν. Μ. Μισυρλής () Αλγόριθµοι και Πολυπλοκότητα 28 Μαΐου 2015 42 / 45

Το πρόβληµα του σακιδίου Βήµα 4: Κατασκευή της ϐέλτιστης λύσης Αλγόριθµος κατασκευής ϐέλτιστης λύσης από τον πίνακα Καθηγητής: Ν. Μ. Μισυρλής () Αλγόριθµοι και Πολυπλοκότητα 28 Μαΐου 2015 43 / 45

Το πρόβληµα του σακιδίου Construct Knapsack(x) 1. τύπωσε: αξία ϐέλτιστης λύσης: f n (W) 2. τύπωσε Αντικείµενα στην λύση: 3. while W > 0 do 4. if xk W = 1 then 5. τύπωσε: k 6. W = W a k 7. end if 8. k = k 1 9. end while Καθηγητής: Ν. Μ. Μισυρλής () Αλγόριθµοι και Πολυπλοκότητα 28 Μαΐου 2015 44 / 45

Το πρόβληµα του σακιδίου Βήµα 4: Κατασκευή της ϐέλτιστης λύσης (9, 20),(8, 16),(6, 11),(5, 9),(4, 7),(1, 1) 1 2 3 4 5 6 7 8 9 10 11 12 1 0(0) 0(0) 0(0) 0(0) 0(0) 0(0) 0(0) 0(0) 20(1) 20(1) 20(1) 20(1) 2 0(0) 0(0) 0(0) 0(0) 0(0) 0(0) 0(0) 16(1) 20(0) 20(0) 20(0) 20(0) 3 0(0) 0(0) 0(0) 0(0) 0(0) 11(1) 11(1) 16(0) 20(0) 20(0) 20(0) 20(0) 4 0(0) 0(0) 0(0) 0(0) 9(1) 11(0) 11(0) 16(0) 20(0) 20(0) 20(0) 20(0) 5 0(0) 0(0) 0(0) 7(1) 9(0) 11(0) 11(0) 16(0) 20(0) 20(0) 20(0) 23(1) 6 1(1) 1(1) 1(1) 7(0) 9(0) 11(0) 12(1) 16(0) 20(0) 21(1) 21(1) 23(0) Πίνακασ: Παράδειγµα υπολογισµού της ϐέλτιστης λύσης. Με έντονα γράµµατα έχουν σηµειωθεί οι ϑέσεις του πίνακα που περνάει ο αλγόριθµος ώστε να τυπώσει την ϐέλτιστη λύση, που είναι η επιλογή των αντικειµένων 2, 5 µε συνολικό κέρδος 23. Καθηγητής: Ν. Μ. Μισυρλής () Αλγόριθµοι και Πολυπλοκότητα 28 Μαΐου 2015 45 / 45