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

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

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

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

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

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

ΔΥΑΔΙΚΗ ΑΝΑΖΗΤΗΣΗ & ΤΑΞΙΝΟΜΗΣΗ ΜΕ ΣΥΓΧΩΝΕΥΣΗ

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

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

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

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

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

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

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

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

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

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

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

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

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

Ταξινόμηση με συγχώνευση Merge Sort

ο ρόλος των αλγορίθμων στις υπολογιστικές διαδικασίες Παύλος Εφραιμίδης Δομές Δεδομένων και Αλγόριθμοι

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

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

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

περιεχόμενα υπολογιστικό πρόβλημα αλγόριθμοι παράδειγμα ταξινόμησης ταξινόμηση αλγόριθμοι τεχνολογία αλγορίθμων Παύλος Εφραιμίδης

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

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

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

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

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

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

Κλάσεις Πολυπλοκότητας

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

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

I student. Μεθοδολογική προσέγγιση και απαιτήσεις για την ανάπτυξη των αλγορίθμων δρομολόγησης Χρυσοχόου Ευαγγελία Επιστημονικός Συνεργάτης ΙΜΕΤ

Κεφάλαιο 1. Πέντε Αντιπροσωπευτικά Προβλήματα. Έκδοση 1.4, 30/10/2014. Χρησιμοποιήθηκε υλικό από τις αγγλικές διαφάνειες του Kevin Wayne.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Γ7.5 Αλγόριθμοι Αναζήτησης. Γ Λυκείου Κατεύθυνσης

Κεφάλαιο 8. NP και Υπολογιστική Δυσεπιλυσιμότητα. Χρησιμοποιήθηκε υλικό από τις αγγλικές διαφάνειες του Kevin Wayne.

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

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

Εισαγωγή στους Αλγόριθμους. Παύλος Εφραιμίδης, Λέκτορας

Τι είναι αλγόριθμος; Υποπρογράμματα (υποαλγόριθμοι) Βασικές αλγοριθμικές δομές

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

ΑΚΕΡΑΙΟΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ & ΣΥΝΔΥΑΣΤΙΚΗ ΒΕΛΤΙΣΤΟΠΟΙΗΣΗ ΚΕΦΑΛΑΙΟ 1

ΑΛΓΟΡΙΘΜΟΙ & ΣΤΟΙΧΕΙΑ ΠΟΛΥΠΛΟΚΟΤΗΤΑΣ

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

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

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

Fast Fourier Transform

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

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

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

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

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

Πληροφοριακά Συστήματα Διοίκησης. Επισκόπηση μοντέλων λήψης αποφάσεων Τεχνικές Μαθηματικού Προγραμματισμού

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

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

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

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

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

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

Ασυμπτωτικός Συμβολισμός

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

Κεφάλαιο 8. NP και Υπολογιστική Δυσεπιλυσιµότητα. Χρησιµοποιήθηκε υλικό από τις αγγλικές διαφάνειες του Kevin Wayne.

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

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

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

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

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

Περιεχόμενα. Ανάλυση προβλήματος. Δομή ακολουθίας. Δομή επιλογής. Δομή επανάληψης. Απαντήσεις. 1. Η έννοια πρόβλημα Επίλυση προβλημάτων...

Υπολογιστικό Πρόβληµα

ΠΟΛΛΑΠΛΑΣΙΑΣΜΟΣ (συνέχεια)

Αλγόριθμοι Ταξινόμησης Bubble Sort Quick Sort. Αντρέας Δημοσθένους Καθηγητής Πληροφορικής Ολυμπιάδα 2012

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

Επίλυση Προβλημάτων και Τεχνικές Αναζήτησης Εισαγωγή

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

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

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

Ασυμπτωτικός Συμβολισμός

εισαγωγικές έννοιες Παύλος Εφραιμίδης Δομές Δεδομένων και

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

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

ΠΕΡΙΕΧΟΜΕΝΑ. Ανάλυση προβλημάτων Μέθοδοι σχεδίασης αλγορίθμων Μέθοδος διαίρει και βασίλευε Δυναμικός προγραμματισμός Απληστη μέθοδος

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

Διάλεξη 19: Αλγόριθμοι ΤαξινόμησηςII. Διδάσκων: Παναγιώτης Ανδρέου

Ασυμπτωτικός Συμβολισμός

Transcript:

Αλγοριθμικές Τεχνικές Παύλος Εφραιμίδης, Λέκτορας http://pericles.ee.duth.gr Αλγοριθμικές Τεχνικές 1

Τεχνικές Σχεδιασμού Αλγορίθμων Ορισμένες γενικές αρχές για τον σχεδιασμό αλγορίθμων είναι: Διαίρει και Βασίλευε (Divide and Conquer) Δυναμικός Προγραμματισμός (Dynamic Programming) Απληστία (Greedy) Αλγοριθμικές Τεχνικές 2

Brute Force Ας ξεκινήσουμε με μία προφανή τεχνική επίλυσης υπολογιστικών προβλημάτων: Δεδομένου ενός προβλήματος, εξετάζουμε μία - μία όλες τις πιθανές λύσεις του προβλήματος για να βρούμε τη σωστή ή βέλτιστη λύση. Η μέθοδος αυτή ονομάζεται brute force. Κατά κανόνα τα συνδυαστικά προβλήματα έχουν ένα πολύ μεγάλο (εκθετικό) αριθμό πιθανών λύσεων και επομένως η τεχνική αυτή δεν μπορεί να λύσει στιγμιότυπα πέρα από κάποιο μέγεθος. Παρατήρηση: Ητεχνικήbrute force δεν αξιοποιεί τα χαρακτηριστικά και τη δομή του προβλήματος για να μειώσει το απαιτούμενο υπολογιστικό έργο Αλγοριθμικές Τεχνικές 3

Διαίρει και Βασίλευε Διαίρει (Divide): Το πρόβλημα διαιρείται σε ένα πλήθος b υποπροβλημάτων (συνήθως b=2) όσο δυνατόν ιδίου μεγέθους ή δυσκολίας Βασίλευε (Conquer): Κάθε πρόβλημα επιλύεται με αναδρομικό τρόπο (Στην πράξη πρέπει να είμαστε προσεκτικοί με την υλοποίηση της αναδρομής) Συνδύασε (Combine): Οι επιμέρους λύσεις συνδυάζονται για την επίλυση του αρχικού προβλήματος Αλγοριθμικές Τεχνικές 4

Παράδειγμα Ταξινόμηση Συγχώνευσης (MergeSort): Διαίρει: Το πρόβλημα μεγέθους N (με N αριθμούς) διαιρείται σε 2 υποπροβλήματα μεγέθους N/2 το καθένα Βασίλευε: Ταξινόμησε κάθε υποπρόβλημα εφαρμόζοντας αναδρομικά πάλι MergeSort Συνδύασε: Συγχώνευσε τους ταξινομημένους υποπίνακες σε έναν ενιαίο ταξινομημένο πίνακα Αλγοριθμικές Τεχνικές 5

Παράδειγμα MergeSort 10 11 13 7 8 9 10 2 10 11 13 7 8 9 10 2 10 11 13 7 8 9 10 2 3 1 2 4 8 10 10 11 7 13 6 5 8 9 7 10 11 13 2 8 9 10 7 9 12 11 2 10 βήμα 13 2 7 8 9 10 10 11 13 Αλγοριθμικές Τεχνικές 6

Δυναμικός Προγραμματισμός Δυναμικός Προγραμματισμός: Γενική σχεδιαστική στρατηγική για την επίλυση υπολογιστικών προβλημάτων Εφαρμογές: Χρησιμοποιείται κυρίως για προβλήματα βελτιστοποίησης Βασική Ιδέα: Βασίζεται στην επίλυση υποπροβλημάτων για να επιλύσει το αρχικό πρόβλημα Ας ξεκινήσουμε με ένα παράδειγμα Αλγοριθμικές Τεχνικές 7

Χαρακτηριστικά Ομοιότητα με Διαίρει και Βασίλευε Διάσπαση αρχικού προβλήματος σε μικρότερου μεγέθους υποπροβλήματα τα οποία επιλύονται αναδρομικά Διαφορά με Διαίρει και Βασίλευε Τα υποπροβλήματα δεν είναι ανεξάρτητα μεταξύ τους αλλά είναι δυνατόν να διαμοιράζονται κοινά μικρότερα υποπροβλήματα Λύσεις Υποπροβλημάτων Κάθε υποπρόβλημα επιλύεται μόνο μία φορά και η λύση του αποθηκεύεται, για συνακόλουθη χρήση, σε έναν πίνακα Αλγοριθμικές Τεχνικές 8

Βασικές Έννοιες Τυπικά χαρακτηριστικά: Απλά υποπροβλήματα: το πρόβλημα διασπάται σε ένα σύνολο υποπροβλημάτων, συνήθως, με περισσότερους του ενός τρόπους Αρχή του βέλτιστου: η ολική βέλτιστη λύση είναι αποτέλεσμα συνδυασμού βέλτιστων λύσεων υποπροβλημάτων Επικάλυψη υποπροβλημάτων: καθώς φαινομενικά ασυσχέτιστα υποπροβλήματα είναι δυνατόν να διαμοιράζονται βέλτιστες λύσεις κοινών υποπροβλημάτων, κάθε βέλτιστη λύση αποθηκεύεται για μελλοντική ενδεχόμενη χρήση Αλγοριθμικές Τεχνικές 9

Ανάπτυξη ενός αλγορίθμου δυναμικού προγραμματισμού Βασικά Βήματα 1. Χαρακτηρισμός της δομής μιας βέλτιστης λύσης 2. Αναδρομικός ορισμός της τιμής μιας βέλτιστης λύσης 3. Υπολογισμόςτηςτιμήςτηςβέλτιστηςλύσηςμε bottom-up (από κάτω προς τα επάνω) τρόπο 4. Σύνθεση της βέλτιστης λύσης από τα αποτελέσματα των υπολογισμών Αλγοριθμικές Τεχνικές 10

Πολλαπλασιασμός Αλυσίδας Πινάκων Το πρόβλημα: Δίνεται μια ακολουθία πινάκων Α 0,Α 1,...,Α n-1 και να ζητείται να βρεθεί ο βέλτιστος, από άποψη πολυπλοκότητας χρόνου, τρόπος υπολογισμού του γινομένου Α 0 Α 1 Α n-1 Παραδοχή: Θεωρούμε ότι εάν ο Α i είναι d i d i+1, το κόστος του γινομένου Α i Α i+1 είναι d i d i+1 d i+2 Αλγοριθμικές Τεχνικές 11

Παράδειγμα (1) Δίνονται τρεις πίνακες Α 0 : διαστάσεων 5 4 Α 1 : διαστάσεων 4 6 Α 2 : διαστάσεων 6 2 και ζητείται να υπολογιστεί το γινόμενο Α 0 Α 1 Α 2 Αλγοριθμικές Τεχνικές 12

Παράδειγμα (2) Πιθανές Λύσεις: Ο πολλαπλασιασμός πινάκων είναι προσεταιριστική πράξη και επομένως 1. Α 0 Α 1 Α 2 = Α 0 (Α 1 Α 2 ), και 2. Α 0 Α 1 Α 2 = (Α 0 Α 1 ) Α 2 Ποια από τις δύο πιθανές λύσεις να προτιμήσουμε; Πολυπλοκότητα: Η πολυπλοκότητα κάθε λύσης είναι 1. Α 0 (Α 1 Α 2 ) με κόστος 4 6 2+ 5 4 2=88 2. (Α 0 Α 1 ) Α 2 με κόστος 5 4 6+ 5 6 2=180 Βέλτιστη Λύση: Επομένως η βέλτιστη ακολουθία για την εκτέλεση των υπολογισμών είναι η 1: Α 0 (Α 1 Α 2 ) Αλγοριθμικές Τεχνικές 13

Πολλαπλασιασμός Αλυσίδας Πινάκων. Ας σχεδιάσουμε έναν αλγόριθμο... Αλγοριθμικές Τεχνικές 14

Πρώτη Προσπάθεια: Αναδρομή Έστω αλυσίδα πινάκων Α 0 Α 1 Α n-1 Τα πιθανά σενάρια για το τελευταίο πολλαπλασιασμό πινάκων που θα εκτελεστεί: (Α 0 ) (Α 1 Α 2 Α n-1 ) (Α 0 Α 1 ) (Α 2 Α n-1 )... (Α 0 Α 1 Α k-1 ) (Α k Α k+1 Α n-1 )... (Α 0 Α 1 Α n-2 ) (Α n-1 ) Στη βέλτιστη λύση θα εκτελεστεί ένας από τους παραπάνω πολλαπλασιασμούς Έστω Π(n) η πολυπλοκότητα χρόνου για την εύρεση της καλύτερης ακολουθίας εκτέλεσης των πολλαπλασιασμών για n πίνακες Σημείωση: Μας ενδιαφέρει να προσδιορίσουμε την πολυπολοκότητα χρόνου για την εύρεση της βέλτιστης ακολουθίας πολλαπλασιασμών, και όχι το κόστος τις εκτέλεσης των πολλαπλασιασμών αυτής της ακολουθίας Αναδρομική Σχέση Μπορούμε να διατυπώσουμε μια αναδρομική σχέση Τ(n) = ; Αλγοριθμικές Τεχνικές 15

Αναδρομική Σχέση Ας υποθέσουμε ότι ότι το ξεκίνημα κάθε αναδρομικής κλήσης απαιτεί τουλάχιστον χρόνο 1 και η επιλογή του σημείου διαίρεσης μιας ακολουθίας πινάκων σε 2 υποακολουθίες απαιτεί και αυτό τουλάχιστον χρόνο 1. Τότε: Τ(n) 1 + ( Τ(1) + Τ(n-1) + 1 ) + ( Τ(2) + Τ(n-2) + 1 ) +... + ( Τ(n-1) + Τ(1) + 1 ) Τ(n) 1 + Σ 1 k n (Τ(k) + Τ(n-k) + 1) Η λύση της αναδρομικής αυτή σχέσης δίνει: Τ(n) 2 n-1, δηλαδή εκθετικό χρόνο Συμπέρασμα: Με τον αναδρομικό αλγόριθμο που αναλύσαμε απαιτείται εκθετικός χρόνος για την εύρεση της βέλτιστης ακολουθίας εκτέλεσης των πολλαπλασιασμών πινάκων Αλγοριθμικές Τεχνικές 16

εύτερη Προσπάθεια: Με χρήση υναμικού Προγραμματισμού Αλγοριθμικές Τεχνικές 17

Αλγόριθμος με χρήση Δυναμικού Προγραμματισμού Η σωστή αντιμετώπιση: Έστω Α i,j = Α i Α i+1 Α j με κόστος Μ i,j Τότε Α 0,n-1 = Α 0,k-1 Α k,n-1 και Μ 0,n-1 = Μ 0,k-1 +M k,n-1 + d 0 d k d n Ισχύουν οι προϋποθέσεις του Δυναμικού Προγραμματισμού (εάν τα υποπροβλήματα δεν λύνονταν βέλτιστα ενώ η ολική λύση ήταν βέλτιστη, τότε με τοπική αντικατάσταση θα προέκυπτε καλύτερη λύση!) Αλγοριθμικές Τεχνικές 18

Παράδειγμα Αλυσίδα 5 πινάκων: A0 A1 A2 A3 A4 A0: 5x2 A1: 2x1 A2: 1x2 A3: 2x3 A4: 3x2 Αλγοριθμικές Τεχνικές 19

Αλγοριθμικές Τεχνικές 20 Παράδειγμα 0 4 12 0 3 12 6 0 2 16 12 4 0 1 32 31 20 10 0 0 4 3 2 1 0 4 4 4 3 3 4 3 2 2 2 2 2 1 1 2 2 2 1 0 0 4 3 2 1 0 4 3 2 1

Προγραμματισμός ; Δυναμικός Προγραμματισμός: Γιατί ο Δυναμικός Προγραμματισμός έχει αυτό το όνομα; Σχετίζεται με τον προγραμματισμό υπολογιστών, τις γλώσσες προγραμματισμού κτλ; ΟΧΙ: Η λέξη προγραμματισμός στον όρο «δυναμικός προγραμματισμός» δεν έχει σχέση με τον προγραμματισμό υπολογιστών Προγραμματισμός: Η λέξη προγραμματισμός εδώ χρησιμοποιείται γιαναπεριγράψειτηδιαδικασίαεπίλυσης Αλγοριθμικές Τεχνικές 21

Πρόβλημα Βελτιστοποίησης Πρόβλημα Βελτιστοποίησης: Δίνεται ένα πρόβλημα και ένα σύνολο αποδεκτών λύσεων Απότοσύνολοπιθανώνλύσεων, ποια είναι η καλύτερη; Δίνονται συνήθως ένα πλήθος περιορισμών που πρέπει να ικανοποιεί η λύση μια συνάρτηση κόστους ή κέρδους με την οποία κρίνεται πόσο καλή είναι η λύση Αλγοριθμικές Τεχνικές 22

Δυναμικός Προγραμματισμός vs Διαίρει και Βασίλευε Ο Δυναμικός Προγραμματισμός μοιάζει με την τεχνική του διαίρει και βασίλευε ΟΜΩΣ ΔΕΝ ΕΙΝΑΙτοίδιοπράγμα! Το αρχικό πρόβλημα διασπάται σε ένα σύνολο υποπροβλημάτων είναι πιθανό ένα πρόβλημα να διασπαστεί σε πολλούς διαφορετικούς συνδυασμούς υποπροβλημάτων η λύση κάθε υποπροβλήματος μπορεί να χρησιμοποιηθεί πολλές φορές στη διάρκεια της εκτέλεσης του αλγορίθμου Αλγοριθμικές Τεχνικές 23

Αρχή του Βέλτιστου Μια απαραίτητη προϋπόθεση για να μπορεί να εφαρμοστεί δυναμικός προγραμματισμός σε ένα υπολογιστικό πρόβλημα είναι η: Αρχή το Βέλτιστου (Principle of Optimality): Ηβέλτιστηλύσητων υποπροβλημάτων δίνει τη βέλτιστη λύση του συνολικού προβλήματος Αλγοριθμικές Τεχνικές 24

Επικάλυψη Υποπροβλημάτων Κατά την επίλυση ενός προβλήματος με δυναμικό προγραμματισμό, υποπροβλήματα που πρέπει να λυθούν μπορεί να μοιράζονται κοινά υπο-υποπροβλήματα, και επομένως η βέλτιστη λύση κάθε (υπο)- υποπροβλήματος (όταν βρεθεί) αποθηκεύεται για πιθανή μελλοντική χρήση Αλγοριθμικές Τεχνικές 25

Παράδειγμα: Το πρόβλημα του Σακιδίου (Knapsack) Αλγοριθμικές Τεχνικές 26

Καλοκαιράκι... Αλγοριθμικές Τεχνικές 27

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

Τι να πάρει κανείς μαζί; Τα εντελώς απαραίτητα... Όμως...... και άλλα πολλά! Αλγοριθμικές Τεχνικές 29

Το Σακίδιο Το σακίδιο όποια και αν είναι η μορφή του, έχει πεπερασμένη χωρητικότητα. Και κάποιος θα πρέπει να το κουβαλάει! Ποια αντικείμενα να επιλέξουμε για να τα πάρουμε μαζί μας με το σακίδιο; Αλγοριθμικές Τεχνικές 30

Το πρόβλημα του σακιδίου Αντικείμενα: Έστω ένα σύνολο S με n αντικείμενα α 1,α 2,...,α n Βάρος και Αξία: Κάθε αντικείμενο i έχει ένα βάρος w i (αγνοούμε το θέμα του όγκου) και μια αξία u i Συνολικό Βάρος: Μπορούμε να πάρουμε αντικείμενα συνολικού βάρους το πολύ W. Συνολική Αξία: Ποια αντικείμενα να τοποθετήσουμε στο σακίδιο ώστε να έχουμε τη μέγιστη συνολική αξία χωρίς το συνολικό βάρος να ξεπερνά την τιμή W; Αλγοριθμικές Τεχνικές 31

Ένα παράδειγμα Τρία αντικείμενα: Αντικείμενο Βάρος w i Αξία α 1 4 2 α 2 5 4 α 3 6 6 Μπορούμε να πάρουμε αντικείμενα συνολικού βάρους το πολύ W=10 κιλά. Ποια αντικείμενα να επιλέξουμε; Αλγοριθμικές Τεχνικές 32

Ας σχεδιάσουμε έναν αλγόριθμο Πόσες είναι όλες οι πιθανές λύσεις; Έστω ότι έχουμε μια «γρήγορη» υπολογιστική πλατφόρμα στη διάθεσή μας. Αντί να ψάξουμε για κάποια καλή μέθοδο επίλυσης, ας δοκιμάσουμε όλες τις πιθανές λύσεις και ας επιλέξουμε την καλύτερη Η μέθοδος αυτή ονομάζεται γενικά brute force μέθοδος. Έστω ότι έχουμε τη δυνατότητα να εξετάζουμε 10 10 = 10000000000 συνδυασμούς αντικειμένων το δευτερόλεπτο. Πόσο χρόνο θα χρειαστούμε για να λύσουμε οποιοδήποτε στιγμιότυπο του προβλήματος; Πρέπει να εξετάσουμε ποιο είναι το πλήθος των πιθανών συνδυασμών Αλγοριθμικές Τεχνικές 33

Πλήθος συνδυασμών Έστω το παράδειγμα με τα τρία αντικείμενα Οι πιθανές λύσεις είναι 8:, {α 1 }, {α 2 }, {α 3 }, {α 1, α 2 }, {α 3, α 1 }, {α 2, α 3 }, {α 1, α 2, α 3 } Γενικά, για κάθε αντικείμενο έχουμε 2 επιλογές να το συμπεριλάβουμε στο σακίδιο να μην το συμπεριλάβουμε Επομένως για n αντικείμενα έχουμε 2 επιλογές για το πρώτο αντικείμενο επί 2 επιλογές για το δεύτερο αντικείμενο επί... 2 επιλογές για το n-οστό αντικείμενο. Σύνολο: 2 n επιλογές Αλγοριθμικές Τεχνικές 34

Χρόνος επίλυσης με brute force μέθοδο Έστω ότι εξετάζουμε 10 10 =10000000000 συνδυασμούς ανά δευτερόλεπτο n 10 30 50 500 Συνδυασμοί 2 10 =1024 (Kilo) 2 30 (Giga) 2 50 (Peta) 2 500 10 150 Χρόνος (προσεγγ.) 100nsec 0.1sec 2.77 ώρες 10 116 φορές την ηλικία του σύμπαντος* * Με βάση εκτίμηση από το βιβλίο Applied Cryptography, B. Schneier Αλγοριθμικές Τεχνικές 35

Αλγόριθμος με χρήση δυναμικού προγραμματισμού Για κάθε k=1,..n, έστω: S = { a, a,..., a } k 1 2 k Ορίζουμε το σύνολο: S kw, S k που επιτυγχάνει τη μέγιστη δυνατή ωφέλεια για συνολικό βάρος ακριβώς w. V kw, Τότε η βέλτιστη λύση ολόκληρου του προβλήματος είναι: v = max{ V } max nw, w W Αλγοριθμικές Τεχνικές 36

Αναδρομική Σχέση 0, k = 0 V = kw, V, k 1, w w< max{ V, V v }, k 1, w k 1, w w k w + διαφορετικά k k Αλγοριθμικές Τεχνικές 37

Πολυπλοκότητα Θεώρημα 2.2: Το πρόβλημα του σακιδίου 0-1 επιλύεται με δυναμικό προγραμματισμό εντός χρόνου O(nW). Οαλγόριθμοςέχειψευδοπολυωνυμική πολυπλοκότητα, διότι αν και εξαρτάται πολυωνυμικά από το μέγεθος του στιγμιοτύπου προβλήματος, εξαρτάται και από το μέγεθος του αριθμού W που εμφανίζεται στο στιγμιότυπο. Αλγοριθμικές Τεχνικές 38

Η αλγοριθμική τεχνική της ΑΠΛΗΣΤΙΑΣ Αλγοριθμικές Τεχνικές 39

Απληστία Η αρχή της απληστίας (greedy) : O αλγόριθμος σε κάθε βήμα να επιλέγει με κριτήριο τι είναι βέλτιστο για το συγκεκριμένο βήμα Γενική σχεδιαστική τεχνική: Μπορεί να οδηγήσει σε πολλούς διαφορετικούς αλγόριθμους για το ίδιο πρόβλημα Αλγοριθμικές Τεχνικές 40

Παραδείγματα Εύρεση ελάχιστου γεννητικού δέντρου Για παράδειγμα στον αλγόριθμο του Prim επιλέγουμε σε κάθε βήμα την ελαφρύτερη από τις υποψήφιες γειτονικές ακμές Αλγοριθμικές Τεχνικές 41

TSP Το Πρόβλημα του Πλανόδιου Πωλητή (Traveling Salesman Problem - TSP) Μια πιθανή εφαρμογή της αρχής της απληστίας στο πρόβλημα του Πλανόδιου Πωλητή είναι η εξής: Σε κάθε βήμα πήγαινε στην πλησιέστερη από τις πόλεις που δεν έχεις ακόμα επισκεφτεί Αλγοριθμικές Τεχνικές 42

Αναφορές-Πηγές Βιβλίο του μαθήματος: Κεφάλαιο 2 Introduction to Algorithms, Μέρος των κεφαλαίων 2, 15 και 16 Algorithm Design, Kleinberg and Tardos, Κεφάλαιο 6 Αλγοριθμικές Τεχνικές 43