Τεχνικές Σχεδιασµού Αλγορίθµων Αλγόριθµοι Παύλος Εφραιµίδης pefraimi@ee.duth.gr Ορισµένες γενικές αρχές για τον σχεδιασµό αλγορίθµων είναι: ιαίρει και Βασίλευε (Divide and Conquer) υναµικός Προγραµµατισµός (Dynamic Programming) Απληστία (Greedy) Αλγόριθµοι Τεχνικές Σχεδιασµού Αλγορίθµων Αλγόριθµοι Τεχνικές Σχεδιασµού Αλγορίθµων ιαίρει και Βασίλευε ιαίρει (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 (από κάτω προς τα επάνω) τρόπο. Σύνθεση της βέλτιστης λύσης από τα αποτελέσµατα των υπολογισµών Πολλαπλασιασµός Αλυσίδας Πινάκων Το πρόβληµα: ίνεται µια ακολουθία πινάκων Α,Α,...,Α n- και να ζητείται να βρεθεί ο βέλτιστος, από άποψη πολυπλοκότητας χρόνου, τρόπος υπολογισµού του γινοµένου Α Α Α n- Παραδοχή: Θεωρούµε ότι εάν ο Α i είναι d i d i+, το κόστος του γινοµένου Α i Α i+ είναι d i d i+ d i+ Αλγόριθµοι Τεχνικές Σχεδιασµού Αλγορίθµων 9 Αλγόριθµοι Τεχνικές Σχεδιασµού Αλγορίθµων Παράδειγµα () ίνονται τρεις πίνακες Α : διαστάσεων 5 Α : διαστάσεων 6 Α : διαστάσεων 6 και ζητείται να υπολογιστεί το γινόµενο Α Α Α Αλγόριθµοι Τεχνικές Σχεδιασµού Αλγορίθµων Παράδειγµα () Πιθανές Λύσεις: Ο πολλαπλασιασµός πινάκων είναι προσεταιριστική πράξη και εποµένως. Α Α Α = Α (Α Α ), και. Α Α Α = (Α Α ) Α Ποια από τις δύο πιθανές λύσεις να προτιµήσουµε; Πολυπλοκότητα: Η πολυπλοκότητα κάθε λύσης είναι. Α (Α Α ) µε κόστος 6 + 5 =88. (Α Α ) Α µε κόστος 5 6+ 5 6 =8 Βέλτιστη Λύση: Εποµένως η βέλτιστη ακολουθία για την εκτέλεση των υπολογισµών είναι η : (Α Α ) Α Αλγόριθµοι Τεχνικές Σχεδιασµού Αλγορίθµων
Πρώτη Προσπάθεια: Αναδροµή Πολλαπλασιασµός Αλυσίδας Πινάκων. Ας σχεδιάσουµε έναν αλγόριθµο... Έστω αλυσίδα πινάκων Α Α Α n- Τα πιθανά σενάρια για το τελευταίο πολλαπλασιασµό πινάκων που θα εκτελεστεί: (Α ) (Α Α Α n- ) (Α Α ) (Α Α n- )... (Α Α Α k- ) (Α k Α k+ Α n- )... (Α Α Α n- ) (Α n- ) Στη βέλτιστη λύση θα εκτελεστεί ένας από τους παραπάνω πολλαπλασιασµούς Έστω Π(n) η πολυπλοκότητα χρόνου για την εύρεση της καλύτερης ακολουθίας εκτέλεσης των πολλαπλασιασµών για n πίνακες Σηµείωση: Μας ενδιαφέρει να προσδιορίσουµε την πολυπολοκότητα χρόνου για την εύρεση της βέλτιστης ακολουθίας πολλαπλασιασµών, και όχι το κόστος τις εκτέλεσης των πολλαπλασιασµών αυτής της ακολουθίας Αναδροµική Σχέση Μπορούµε να διατυπώσουµε µια αναδροµική σχέση Τ(n) = ; Αλγόριθµοι Τεχνικές Σχεδιασµού Αλγορίθµων Αλγόριθµοι Τεχνικές Σχεδιασµού Αλγορίθµων Αναδροµική Σχέση Ας υποθέσουµε ότι ότι το ξεκίνηµα κάθε αναδροµικής κλήσης απαιτεί τουλάχιστον χρόνο και η επιλογή του σηµείου διαίρεσης µιας ακολουθίας πινάκων σε υποακολουθίες απαιτεί και αυτό τουλάχιστον χρόνο. Τότε: Τ(n) + ( Τ() + Τ(n-) + ) + ( Τ() + Τ(n-) + ) +... + ( Τ(n-) + Τ() + ) Τ(n) + Σ k n (Τ(k) + Τ(n-k) + ) Η λύση της αναδροµικής αυτή σχέσης δίνει: Τ(n) n-, δηλαδή εκθετικό χρόνο Συµπέρασµα: Εποµένως µε τον αναδροµικό αλγόριθµο που αναλύσαµε απαιτείται εκθετικός χρόνος για την εύρεση της βέλτιστης ακολουθίας εκτέλεσης των πολλαπλασιασµών πινάκων Αλγόριθµοι Τεχνικές Σχεδιασµού Αλγορίθµων 5 εύτερη Προσπάθεια: Με χρήση υναµικού Προγραµµατισµού Αλγόριθµοι Τεχνικές Σχεδιασµού Αλγορίθµων 6 Αλγόριθµος µε χρήση υναµικού Προγραµµατισµού Ησωστή αντιµετώπιση: Έστω Α i,j = Α i Α i+ Α j µε κόστος Μ i,j Τότε Α,n- = Α,k- Α k,n- και Μ,n- = Μ,k- +M k,n- + d d k d n Ισχύουν οι προϋποθέσεις του υναµικού Προγραµµατισµού (εάν τα υποπροβλήµατα δεν λύνονταν βέλτιστα ενώ η ολική λύση ήταν βέλτιστη, τότε µε τοπική αντικατάσταση θα προέκυπτε καλύτερη λύση!) Παράδειγµα Αλυσίδα 5 πινάκων: A A A A A A: 5x A: x A: x A: x A: x Αλγόριθµοι Τεχνικές Σχεδιασµού Αλγορίθµων 7 Αλγόριθµοι Τεχνικές Σχεδιασµού Αλγορίθµων 8
Παράδειγµα 6 6 Προγραµµατισµός ; υναµικός Προγραµµατισµός: Γιατί ο υναµικός Προγραµµατισµός έχει αυτό το όνοµα; Σχετίζεται µε τον προγραµµατισµό υπολογιστών, τις γλώσσες προγραµµατισµού κτλ; ΟΧΙ: Η λέξη προγραµµατισµός στον όρο «δυναµικός προγραµµατισµός» δεν έχει σχέση µε τον προγραµµατισµό υπολογιστών Προγραµµατισµός: Η λέξη προγραµµατισµός εδώ χρησιµοποιείται για να περιγράψει τη διαδικασία επίλυσης προβληµάτων, η οποία περιλαµβάνει τη διαδοχική λήψη βέλτιστων αποφάσεων Θα µπορούσε ίσως να χρησιµοποιείται η λέξη σχεδιασµός αντί της λέξης προγραµµατισµός Παρόµοιο θέµα χρήσης της λέξης προγραµµατισµός υπάρχει και στους όρους Γραµµικός Προγραµµατισµός, Ακέραιος Προγραµµατισµός, Μαθηµατικός Προγραµµατισµός κτλ. Αλγόριθµοι Τεχνικές Σχεδιασµού Αλγορίθµων 9 Αλγόριθµοι Τεχνικές Σχεδιασµού Αλγορίθµων υναµικός Προγραµµατισµός vs Πρόβληµα Βελτιστοποίησης Πρόβληµα Βελτιστοποίησης: ίνεται ένα πρόβληµα και ένα σύνολο αποδεκτών λύσεων Από το σύνολο πιθανών λύσεων, ποια είναι η καλύτερη; ίνονται συνήθως ένα πλήθος περιορισµών που πρέπει να ικανοποιεί η λύση µια συνάρτηση κόστους ή κέρδους µε την οποία κρίνεται πόσο καλή είναι η λύση ιαίρει και Βασίλευε Ο υναµικός Προγραµµατισµός µοιάζει µε την τεχνική του διαίρει και βασίλευε ΟΜΩΣ ΕΝ ΕΙΝΑΙ το ίδιο πράγµα! Το αρχικό πρόβληµα διασπάται σε ένα σύνολο υποπροβληµάτων είναι πιθανό ένα πρόβληµα να διασπαστεί σε πολλούς διαφορετικούς συνδυασµούς υποπροβληµάτων η λύση κάθε υποπροβλήµατος µπορεί να χρησιµοποιηθεί πολλές φορές στη διάρκεια της εκτέλεσης του αλγορίθµου Αλγόριθµοι Τεχνικές Σχεδιασµού Αλγορίθµων Αλγόριθµοι Τεχνικές Σχεδιασµού Αλγορίθµων Αρχή του Βέλτιστου Αρχή το Βέλτιστου (Principle of Optimality): Η βέλτιστη λύση των υποπροβληµάτων δίνει τη βέλτιστη λύση του συνολικού προβλήµατος Επικάλυψη Υποπροβληµάτων Υποπροβλήµατα µπορεί να µοιράζονται κοινά υπο-υποπροβλήµατα, και εποµένως η βέλτιστη λύση κάθε υποπροβλήµατος (όταν βρεθεί) αποθηκεύεται για πιθανή µελλοντική χρήση Αλγόριθµοι Τεχνικές Σχεδιασµού Αλγορίθµων Αλγόριθµοι Τεχνικές Σχεδιασµού Αλγορίθµων
Απληστία Ηαρχή της απληστίας (greedy) : O αλγόριθµος σε κάθε βήµα να επιλέγει µε κριτήριο τι είναι βέλτιστο για το συγκεκριµένο βήµα Γενική σχεδιαστική τεχνική: Μπορεί να οδηγήσει σε πολλούς διαφορετικούς αλγόριθµους για το ίδιο πρόβληµα Παραδείγµατα Εύρεση ελάχιστου γεννητικού δέντρου Για παράδειγµα στον αλγόριθµο του Prim επιλέγουµε σε κάθε βήµα την ελαφρύτερη από τις υποψήφιες γειτονικές ακµές Αλγόριθµοι Τεχνικές Σχεδιασµού Αλγορίθµων 5 Αλγόριθµοι Τεχνικές Σχεδιασµού Αλγορίθµων 6 Προγραµµατισµός Εργασιών (Scheduling) TSP Το Πρόβληµα του Πλανόδιου Πωλητή (Traveling Salesman Problem - TSP) Μια πιθανή εφαρµογή της αρχής της απληστίας στο πρόβληµα του Πλανόδιου Πωλητή είναι η εξής: Σε κάθε βήµα πήγαινε στην πόλη που είναι πλησιέστερη Αλγόριθµοι Τεχνικές Σχεδιασµού Αλγορίθµων 7 Αλγόριθµοι Τεχνικές Σχεδιασµού Αλγορίθµων 8 5