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



Σχετικά έγγραφα
Αλγοριθμικές Τεχνικές

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Fast Fourier Transform

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

ΑΕΠΠ Ερωτήσεις θεωρίας

Ορισμένες Κατηγορίες Αλγορίθμων

Transcript:

Τεχνικές Σχεδιασμού Αλγορίθμων Αλγοριθμικές Τεχνικές Παύλος Εφραιμίδης, Λέκτορας http://pericles.ee.duth.gr Ορισμένες γενικές αρχές για τον σχεδιασμό αλγορίθμων είναι: Διαίρει και Βασίλευε (Divide and Conquer) Δυναμικός Προγραμματισμός (Dynamic Programming) Απληστία (Greedy) Αλγοριθμικές Τεχνικές Αλγοριθμικές Τεχνικές Brute Force Ας ξεκινήσουμε με μία προφανή τεχνική επίλυσης υπολογιστικών προβλημάτων: Δεδομένου ενός προβλήματος, εξετάζουμε μία - μία όλες τις πιθανές λύσεις του προβλήματος για να βρούμε τη σωστή ή βέλτιστη λύση. Η μέθοδος αυτή ονομάζεται brute force. Κατά κανόνα τα συνδυαστικά προβλήματα έχουν ένα πολύ μεγάλο (εκθετικό) αριθμόπιθανώνλύσεωνκαιεπομένωςη τεχνική αυτή δεν μπορεί να λύσει στιγμιότυπα πέρα από κάποιο μέγεθος. Παρατήρηση: Ητεχνικήbrute force δεν αξιοποιεί τα χαρακτηριστικά και τη δομή του προβλήματος για να μειώσει το απαιτούμενο υπολογιστικό έργο Διαίρει και Βασίλευε Διαίρει (Divide): Το πρόβλημα διαιρείται σε ένα πλήθος b υποπροβλημάτων (συνήθως b=) όσο δυνατόν ιδίου μεγέθους ή δυσκολίας Βασίλευε (Conquer): Κάθε πρόβλημα επιλύεται με αναδρομικό τρόπο (Στην πράξη πρέπει να είμαστε προσεκτικοί με την υλοποίηση της αναδρομής) Συνδύασε (Combine): Οι επιμέρους λύσεις συνδυάζονται για την επίλυση του αρχικού προβλήματος Αλγοριθμικές Τεχνικές Αλγοριθμικές Τεχνικές Παράδειγμα Ταξινόμηση Συγχώνευσης (MergeSort): Διαίρει: Το πρόβλημα μεγέθους N (με N αριθμούς) διαιρείται σε υποπροβλήματα μεγέθους N/ το καθένα Βασίλευε: Ταξινόμησε κάθε υποπρόβλημα εφαρμόζοντας αναδρομικά πάλι MergeSort Συνδύασε: Συγχώνευσε τους ταξινομημένους υποπίνακες σε έναν ενιαίο ταξινομημένο πίνακα Παράδειγμα MergeSort 7 8 9 7 7 8 9 8 7 8 9 5 9 7 8 9 6 7 8 9 7 8 9 βήμα Αλγοριθμικές Τεχνικές 5 Αλγοριθμικές Τεχνικές 6

Δυναμικός Προγραμματισμός Δυναμικός Προγραμματισμός: Γενική σχεδιαστική στρατηγική για την επίλυση υπολογιστικών προβλημάτων Εφαρμογές: Χρησιμοποιείται κυρίως για προβλήματα βελτιστοποίησης Βασική Ιδέα: Βασίζεται στην επίλυση υποπροβλημάτων για να επιλύσει το αρχικό πρόβλημα Αςξεκινήσουμεμεέναπαράδειγμα Χαρακτηριστικά Ομοιότητα με Διαίρει και Βασίλευε Διάσπαση αρχικού προβλήματος σε μικρότερου μεγέθους υποπροβλήματα τα οποία επιλύονται αναδρομικά Διαφορά με Διαίρει και Βασίλευε Τα υποπροβλήματα δεν είναι ανεξάρτητα μεταξύ τους αλλά είναι δυνατόν να διαμοιράζονται κοινά μικρότερα υποπροβλήματα Λύσεις Υποπροβλημάτων Κάθευποπρόβλημαεπιλύεταιμόνομίαφοράκαιηλύσητου αποθηκεύεται, για συνακόλουθη χρήση, σε έναν πίνακα Αλγοριθμικές Τεχνικές 7 Αλγοριθμικές Τεχνικές 8 Βασικές Έννοιες Τυπικά χαρακτηριστικά: Απλά υποπροβλήματα: το πρόβλημα διασπάται σε ένα σύνολο υποπροβλημάτων, συνήθως, με περισσότερους του ενός τρόπους Αρχή του βέλτιστου: η ολική βέλτιστη λύση είναι αποτέλεσμα συνδυασμού βέλτιστων λύσεων υποπροβλημάτων Επικάλυψη υποπροβλημάτων: καθώς φαινομενικά ασυσχέτιστα υποπροβλήματα είναι δυνατόν να διαμοιράζονται βέλτιστες λύσεις κοινών υποπροβλημάτων, κάθε βέλτιστη λύση αποθηκεύεται για μελλοντική ενδεχόμενη χρήση Ανάπτυξη ενός αλγορίθμου δυναμικού προγραμματισμού Βασικά Βήματα. Χαρακτηρισμόςτηςδομήςμιαςβέλτιστηςλύσης. Αναδρομικόςορισμόςτηςτιμήςμιαςβέλτιστης λύσης. Υπολογισμόςτηςτιμήςτηςβέλτιστηςλύσηςμε bottom-up (από κάτω προς τα επάνω) τρόπο. Σύνθεση της βέλτιστης λύσης από τα αποτελέσματα των υπολογισμών Αλγοριθμικές Τεχνικές 9 Αλγοριθμικές Τεχνικές Πολλαπλασιασμός Αλυσίδας Πινάκων Το πρόβλημα: Δίνεται μια ακολουθία πινάκων Α,Α,...,Α n- καιναζητείταιναβρεθείοβέλτιστος, από άποψη πολυπλοκότητας χρόνου, τρόπος υπολογισμού του γινομένου Α Α Α n- Παραδοχή: Θεωρούμε ότι εάν ο Α i είναι d i d i+, το κόστος του γινομένου Α i Α i+ είναι d i d i+ d i+ Παράδειγμα () Δίνονται τρεις πίνακες Α : διαστάσεων 5 Α : διαστάσεων 6 Α : διαστάσεων 6 καιζητείταιναυπολογιστείτογινόμενο Α Α Α Αλγοριθμικές Τεχνικές Αλγοριθμικές Τεχνικές

Παράδειγμα () Πιθανές Λύσεις: Ο πολλαπλασιασμός πινάκων είναι προσεταιριστική πράξη και επομένως. Α Α Α = Α (Α Α ), και. Α Α Α = (Α Α ) Α Ποια από τις δύο πιθανές λύσεις να προτιμήσουμε; Πολυπλοκότητα: Ηπολυπλοκότητακάθελύσης είναι. Α (Α Α ) με κόστος 6 + 5 =88. (Α Α ) Α με κόστος 5 6+ 5 6 =8 Βέλτιστη Λύση: Επομένως η βέλτιστη ακολουθία για την εκτέλεση των υπολογισμών είναι η : Α (Α Α ) Αλγοριθμικές Τεχνικές Πολλαπλασιασμός Αλυσίδας Πινάκων. Ας σχεδιάσουμε έναν αλγόριθμο... Αλγοριθμικές Τεχνικές Πρώτη Προσπάθεια: Αναδρομή Έστω αλυσίδα πινάκων Α Α Α n- Τα πιθανά σενάρια για το τελευταίο πολλαπλασιασμό πινάκων που θα εκτελεστεί: (Α ) (Α Α Α n- ) (Α Α ) (Α Α n- )... (Α Α Α k- ) (Α k Α k+ Α n- )... (Α Α Α n- ) (Α n- ) Στηβέλτιστηλύσηθαεκτελεστείέναςαπότουςπαραπάνω πολλαπλασιασμούς Έστω Π(n) η πολυπλοκότητα χρόνου για την εύρεση της καλύτερης ακολουθίας εκτέλεσης των πολλαπλασιασμών για n πίνακες Σημείωση: Μας ενδιαφέρει να προσδιορίσουμε την πολυπολοκότητα χρόνου για την εύρεση της βέλτιστης ακολουθίας πολλαπλασιασμών, και όχι το κόστος τις εκτέλεσης των πολλαπλασιασμών αυτής της ακολουθίας Αναδρομική Σχέση Μπορούμε να διατυπώσουμε μια αναδρομική σχέση Τ(n) = ; Αλγοριθμικές Τεχνικές 5 Αναδρομική Σχέση Ας υποθέσουμε ότι ότι το ξεκίνημα κάθε αναδρομικής κλήσης απαιτεί τουλάχιστον χρόνο και η επιλογή του σημείου διαίρεσης μιας ακολουθίας πινάκων σε υποακολουθίες απαιτεί και αυτό τουλάχιστον χρόνο. Τότε: Τ(n) + ( Τ() + Τ(n-) + ) + ( Τ() + Τ(n-) + ) +... + ( Τ(n-) + Τ() + ) Τ(n) + Σ k n (Τ(k) + Τ(n-k) + ) Η λύση της αναδρομικής αυτή σχέσης δίνει: Τ(n) n-, δηλαδή εκθετικό χρόνο Συμπέρασμα: Με τον αναδρομικό αλγόριθμο που αναλύσαμε απαιτείται εκθετικός χρόνος για την εύρεση της βέλτιστης ακολουθίας εκτέλεσης των πολλαπλασιασμών πινάκων Αλγοριθμικές Τεχνικές 6 εύτερη Προσπάθεια: Με χρήση υναμικού Προγραμματισμού Αλγόριθμος με χρήση Δυναμικού Προγραμματισμού Η σωστή αντιμετώπιση: Έστω Α i,j = Α i Α i+ Α j με κόστος Μ i,j Τότε Α,n- = Α,k- Α k,n- και Μ,n- = Μ,k- +M k,n- + d d k d n Ισχύουν οι προϋποθέσεις του Δυναμικού Προγραμματισμού (εάν τα υποπροβλήματα δεν λύνονταν βέλτιστα ενώ η ολική λύση ήταν βέλτιστη, τότε με τοπική αντικατάσταση θα προέκυπτε καλύτερη λύση!) Αλγοριθμικές Τεχνικές 7 Αλγοριθμικές Τεχνικές 8

Παράδειγμα Παράδειγμα Αλυσίδα 5 πινάκων: A A A A A A: 5x A: x A: x A: x A: x 6 6 Αλγοριθμικές Τεχνικές 9 Αλγοριθμικές Τεχνικές Προγραμματισμός ; Δυναμικός Προγραμματισμός: Γιατί ο Δυναμικός Προγραμματισμός έχει αυτό το όνομα; Σχετίζεται με τον προγραμματισμό υπολογιστών, τις γλώσσες προγραμματισμού κτλ; ΟΧΙ: Η λέξη προγραμματισμός στον όρο «δυναμικός προγραμματισμός» δεν έχει σχέση με τον προγραμματισμό υπολογιστών Προγραμματισμός: Η λέξη προγραμματισμός εδώ χρησιμοποιείται γιαναπεριγράψειτηδιαδικασίαεπίλυσης Αλγοριθμικές Τεχνικές Πρόβλημα Βελτιστοποίησης Πρόβλημα Βελτιστοποίησης: Δίνεται ένα πρόβλημα και ένα σύνολο αποδεκτών λύσεων Απότοσύνολοπιθανώνλύσεων, ποια είναι η καλύτερη; Δίνονται συνήθως ένα πλήθος περιορισμών που πρέπει να ικανοποιεί η λύση μια συνάρτηση κόστους ή κέρδους με την οποία κρίνεται πόσο καλή είναι η λύση Αλγοριθμικές Τεχνικές Δυναμικός Προγραμματισμός vs Διαίρει και Βασίλευε Ο Δυναμικός Προγραμματισμός μοιάζει με την τεχνική του διαίρει και βασίλευε ΟΜΩΣ ΔΕΝ ΕΙΝΑΙτοίδιοπράγμα! Το αρχικό πρόβλημα διασπάται σε ένα σύνολο υποπροβλημάτων είναι πιθανό ένα πρόβλημα να διασπαστεί σε πολλούς διαφορετικούς συνδυασμούς υποπροβλημάτων ηλύσηκάθευποπροβλήματοςμπορείνα χρησιμοποιηθεί πολλές φορές στη διάρκεια της εκτέλεσης του αλγορίθμου Αρχή του Βέλτιστου Μια απαραίτητη προϋπόθεση για να μπορεί να εφαρμοστεί δυναμικός προγραμματισμός σε ένα υπολογιστικό πρόβλημα είναι η: Αρχή το Βέλτιστου (Principle of Optimality): Η βέλτιστη λύση των υποπροβλημάτων δίνει τη βέλτιστη λύση του συνολικού προβλήματος Αλγοριθμικές Τεχνικές Αλγοριθμικές Τεχνικές

Επικάλυψη Υποπροβλημάτων Κατά την επίλυση ενός προβλήματος με δυναμικό προγραμματισμό, υποπροβλήματα που πρέπει να λυθούν μπορεί να μοιράζονται κοινά υπο-υποπροβλήματα, και επομένως η βέλτιστη λύση κάθε (υπο)- υποπροβλήματος (όταν βρεθεί) αποθηκεύεται για πιθανή μελλοντική χρήση Παράδειγμα: Το πρόβλημα του Σακιδίου (Knapsack) Αλγοριθμικές Τεχνικές 5 Αλγοριθμικές Τεχνικές 6 Καλοκαιράκι... Camping Αλγοριθμικές Τεχνικές 7 Αλγοριθμικές Τεχνικές 8 Τι να πάρει κανείς μαζί; Τα εντελώς απαραίτητα... Το Σακίδιο Το σακίδιο όποια και αν είναι η μορφή του, έχει πεπερασμένη χωρητικότητα. Και κάποιος θα πρέπει να το κουβαλάει! Όμως...... και άλλα πολλά! Ποια αντικείμενα να επιλέξουμε για να τα πάρουμε μαζί μας με το σακίδιο; Αλγοριθμικές Τεχνικές 9 Αλγοριθμικές Τεχνικές 5

Το πρόβλημα του σακιδίου Αντικείμενα: Έστω ένα σύνολο S με n αντικείμενα α,α,...,α n Βάρος και Αξία: Κάθε αντικείμενο i έχει ένα βάρος w i (αγνοούμε το θέμα του όγκου) και μια αξία u i Συνολικό Βάρος: Μπορούμε να πάρουμε αντικείμενα συνολικού βάρους το πολύ W. Συνολική Αξία: Ποια αντικείμενα να τοποθετήσουμε στο σακίδιο ώστε να έχουμε τη μέγιστη συνολική αξία χωρίς το συνολικό βάρος να ξεπερνά την τιμή W; Τρία αντικείμενα: Ένα παράδειγμα Αντικείμενο Βάρος w i Αξία α α 5 α 6 6 Μπορούμε να πάρουμε αντικείμενα συνολικού βάρους το πολύ W= κιλά. Ποια αντικείμενα να επιλέξουμε; Αλγοριθμικές Τεχνικές Αλγοριθμικές Τεχνικές Ας σχεδιάσουμε έναν αλγόριθμο Πόσες είναι όλες οι πιθανές λύσεις; Έστω ότι έχουμε μια «γρήγορη» υπολογιστική πλατφόρμα στη διάθεσή μας. Αντί να ψάξουμε για κάποια καλή μέθοδο επίλυσης, ας δοκιμάσουμε όλες τις πιθανές λύσεις και ας επιλέξουμε την καλύτερη Η μέθοδος αυτή ονομάζεται γενικά brute force μέθοδος. Έστω ότι έχουμε τη δυνατότητα να εξετάζουμε = συνδυασμούς αντικειμένων το δευτερόλεπτο. Πόσο χρόνο θα χρειαστούμε για να λύσουμε οποιοδήποτε στιγμιότυπο του προβλήματος; Πρέπει να εξετάσουμε ποιο είναι το πλήθος των πιθανών συνδυασμών Πλήθος συνδυασμών Έστω το παράδειγμα με τα τρία αντικείμενα Οι πιθανές λύσεις είναι 8:, {α }, {α }, {α }, {α, α }, {α, α }, {α, α }, {α, α, α } Γενικά, για κάθε αντικείμενο έχουμε επιλογές να το συμπεριλάβουμε στο σακίδιο να μην το συμπεριλάβουμε Επομένως για n αντικείμενα έχουμε επιλογές για το πρώτο αντικείμενο επί επιλογές για το δεύτερο αντικείμενο επί... επιλογές για το n-οστό αντικείμενο. Σύνολο: n επιλογές Αλγοριθμικές Τεχνικές Αλγοριθμικές Τεχνικές Χρόνος επίλυσης με brute force μέθοδο Έστω ότι εξετάζουμε = συνδυασμούς ανά δευτερόλεπτο n 5 5 Συνδυασμοί = (Kilo) (Giga) 5 (Peta) 5 5 Χρόνος (προσεγγ.) nsec.sec.77 ώρες 6 φορές την ηλικία του σύμπαντος* * Με βάση εκτίμηση από το βιβλίο Applied Cryptography, B. Schneier Αλγοριθμικές Τεχνικές 5 Αλγόριθμος με χρήση δυναμικού προγραμματισμού Για κάθε k=,..n, έστω: Sk = { a, a,..., ak} Ορίζουμε το σύνολο: Skw, Sk που επιτυγχάνει τη μέγιστη δυνατή ωφέλεια V kw, για συνολικό βάρος ακριβώς w. Τότεηβέλτιστηλύσηολόκληρουτουπροβλήματοςείναι: v = max{ V } max nw, w W Αλγοριθμικές Τεχνικές 6 6

V kw, = Αναδρομική Σχέση, k = Vk, w, w< w max{ V, V v }, k, w k, w w + k k διαφορετικά k Πολυπλοκότητα Θεώρημα.: Το πρόβλημα του σακιδίου - επιλύεται με δυναμικό προγραμματισμό εντός χρόνου O(nW). Οαλγόριθμοςέχειψευδοπολυωνυμική πολυπλοκότητα, διότι αν και εξαρτάται πολυωνυμικά από το μέγεθος του στιγμιοτύπου προβλήματος, εξαρτάται και από το μέγεθος του αριθμού W που εμφανίζεται στο στιγμιότυπο. Αλγοριθμικές Τεχνικές 7 Αλγοριθμικές Τεχνικές 8 Απληστία Η αλγοριθμική τεχνική της ΑΠΛΗΣΤΙΑΣ Ηαρχήτηςαπληστίας(greedy) : O αλγόριθμος σε κάθε βήμα να επιλέγει με κριτήριο τι είναι βέλτιστο για το συγκεκριμένο βήμα Γενική σχεδιαστική τεχνική: Μπορεί να οδηγήσει σε πολλούς διαφορετικούς αλγόριθμους για το ίδιο πρόβλημα Αλγοριθμικές Τεχνικές 9 Αλγοριθμικές Τεχνικές Παραδείγματα Εύρεση ελάχιστου γεννητικού δέντρου Για παράδειγμα στον αλγόριθμο του Prim επιλέγουμε σε κάθε βήμα την ελαφρύτερη από τις υποψήφιες γειτονικές ακμές TSP Το Πρόβλημα του Πλανόδιου Πωλητή (Traveling Salesman Problem - TSP) Μια πιθανή εφαρμογή της αρχής της απληστίας στο πρόβλημα του Πλανόδιου Πωλητή είναι η εξής: Σε κάθε βήμα πήγαινε στην πλησιέστερη από τιςπόλειςπουδενέχειςακόμαεπισκεφτεί Αλγοριθμικές Τεχνικές Αλγοριθμικές Τεχνικές 7

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