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

Σχετικά έγγραφα
ΕΙΣΑΓΩΓΗ ΣΤΗΝ ΑΝΑΛΥΣΗ ΑΛΓΟΡΙΘΜΩΝ

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

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

ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΥΠΡΟΥ ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ. ΘΕΩΡΗΤΙΚΗ ΑΣΚΗΣΗ 1 ΛΥΣΕΙΣ Ανάλυση Πολυπλοκότητας

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

Εισαγωγή στην Ανάλυση Αλγορίθμων (2-3)

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

Ασκήσεις (2) Άσκηση 1

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

Υπολογιστικά & Διακριτά Μαθηματικά

Τίτλος Μαθήματος: ΕΙΣΑΓΩΓΗ ΣΤΗΝ ΑΝΑΛΥΣΗ ΑΛΓΟΡΙΘΜΩΝ

ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΥΠΡΟΥ ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ. ΘΕΩΡΗΤΙΚΗ ΑΣΚΗΣΗ 1 ΛΥΣΕΙΣ Ανάλυση Πολυπλοκότητας

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

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

Διακριτά Μαθηματικά [Rosen, κεφ. 3] Γιάννης Εμίρης Τμήμα Πληροφορικής & Τηλεπικοινωνιών, ΕΚΠΑ Οκτώβριος 2018

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

1 Ανάλυση αλγορίθµων. 2 Συµβολισµοί O, Ω και Θ. 3 Αναδροµικές εξισώσεις

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

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

(Γραμμικές) Αναδρομικές Σχέσεις

(Γραμμικές) Αναδρομικές Σχέσεις

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

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

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

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

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

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

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

Διδάσκων: Κωνσταντίνος Κώστα Διαφάνειες: Δημήτρης Ζεϊναλιπούρ ΕΠΛ 035 Δομές Δεδομένων και Αλγόριθμοι για Ηλ. Μηχ. και Μηχ. Υπολ.

Διδάσκων: Παναγιώτης Ανδρέου

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

Διδάσκων: Παναγιώτης Ανδρέου

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

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

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

ρυθιμός αύξησης συναρτήσεων

Εισαγωγή στην Ανάλυση Αλγορίθμων (1) Διαφάνειες του Γ. Χ. Στεφανίδη

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

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

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

Ορθότητα Χωρική αποδοτικότητα. Βελτιστότητα. Θεωρητική ανάλυση Εμπειρική ανάλυση. Αλγόριθμοι - Τμήμα Πληροφορικής ΑΠΘ -4ο εξάμηνο 1

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

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

a n = 3 n a n+1 = 3 a n, a 0 = 1

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

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

(Γραμμικές) Αναδρομικές Σχέσεις

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

Δομές Δεδομένων. Δημήτρης Μιχαήλ. Ταξινόμηση. Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο

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

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

1η Σειρά Γραπτών Ασκήσεων

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

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

1o Φροντιστήριο ΗΥ240

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

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

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

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

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

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

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

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

Μεθοδολογία Επίλυσης Προβλημάτων ============================================================================ Π. Κυράνας - Κ.

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

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

Παντελής Μπουμπούλης, M.Sc., Ph.D. σελ. 2 math-gr.blogspot.com, bouboulis.mysch.gr

- ΟΡΙΟ - ΣΥΝΕΧΕΙΑ ΣΥΝΑΡΤΗΣΗΣ ΕΝΟΤΗΤΑ 6: ΜΗ ΠΕΠΕΡΑΣΜΕΝΟ ΟΡΙΟ ΣΤΟ

ίκτυα Ταξινόµησης (CLR κεφάλαιο 28)

Υπολογιστική Πολυπλοκότητα

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

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

P(n, r) = n! P(n, r) = n r. (n r)! n r. n+r 1 r n!

ΚΕΦΑΛΑΙΟ 3 ΤΟ ΔΙΩΝΥΜΙΚΟ ΘΕΩΡΗΜΑ

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

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

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

Ταχεία Ταξινόμηση Quick-Sort

Δομές Δεδομένων (Data Structures)

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

Ταξινόμηση. 1. Γρήγορη ταξινόμηση 2. Ταξινόμηση με Συγχώνευση. Εισαγωγή στην Ανάλυση Αλγορίθμων Μάγια Σατρατζέμη

Αλγόριθμοι Ταξινόμησης Μέρος 4

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

Αν ένα πρόβλημα λύνεται από δύο ή περισσότερους αλγόριθμους, ποιος θα είναι ο καλύτερος; Με ποια κριτήρια θα τους συγκρίνουμε;

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

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

Transcript:

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

Μεθοδολογία αναδρομικών σχέσεων (Ι) Με επανάληψη της αναδρομής Έστω όπου r και a είναι σταθερές. Βρίσκουμε τη σχέση που εκφράζει την T(n) συναρτήσει της T(n-) την T(n) συναρτήσει της T(n-3) Γενικεύοντας βρίσκουμε την αναλυτική έκφραση της T(n): Αρχικά σημειώνουμε ότι η συνεπάγεται ότι Οπότε

Εικάζουμε ότι Γνωστό άθροισμα: 3

Μπορούμε να κάνουμε την επανάληψη από «κάτω προς τα πάνω» Κάτι τέτοιο θα μας οδηγούσε στην ίδια εικασία Έχουμε λοιπόν ότι: Αν r και τότε για κάθε φυσικό αριθμό n. (Απόδειξη με Μαθ. Επαγωγή) 4

Χρήσιμη Πρόταση: Αν r είναι μια θετική σταθερά (ανεξάρτητη του n) και t(n) είναι ο μεγαλύτερος όρος του αθροίσματος τότε αυτό το άθροισμα (των n όρων μιας Γεωμ. Προόδου) είναι O(t(n)). Απόδειξη: i) r < (οπότε t(n) = r 0 =) Έχουμε που είναι O() = O(t(n)). Ii) r > (οπότε t(n) = r n- ) Έχουμε Άρα, 5

Έστω τώρα η αναδρομή Με επανάληψη της αναδρομής έχουμε T(n) = rt(n ) + g(n) Άρα, για θετικές σταθερές a και r και μια συνάρτηση g(n), η λύση της γραμμικής αναδρομικής σχέσης ου βαθμού είναι 6

Παράδειγμα: Είναι με T(0) = 6

Παράδειγμα: Είναι 8

Μεθοδολογία αναδρομικών σχέσεων (ΙΙ) Στην προηγούμενη ενότητα αναλύσαμε αναδρομικές σχέσεις της μορφής Πρόκειται για αναδρομές που αντιστοιχούν σε αναλύσεις αναδρομικών αλγορίθμων όπου ένα πρόβλημα μεγέθους n καταφεύγοντας στην αναδρομική επίλυση ενός (ή περισσοτέρων τους ενός) προβλήματος μεγέθους n. Εξετάζουμε τώρα αναδρομές που ανακύπτουν από αναδρομικούς αλγόριθμους όπου προβλήματα μεγέθους n επιλύονται καταφεύγοντας στην αναδρομική επίλυση προβλημάτων μεγέθους n/m για συγκεκριμένο m. Πρόκειται για αναδρομικές σχέσεις της μορφής Μπορούμε να λύσουμε μια τέτοια αναδρομική εξίσωση με τη γνωστή μας μέθοδο επανάληψης της αναδρομής.

Παραδείγματα: Για να λύσουμε κάποιο πρόβλημα μεγέθους n i. λύνουμε υποπροβλήματα μεγέθους n/, και ii. κάνουμε n μονάδες επιπρόσθετου έργου Για να λύσουμε κάποιο πρόβλημα μεγέθους n i. λύνουμε υποπρόβλημα μεγέθους n/4, και ii. κάνουμε n μονάδες επιπρόσθετου έργου Τα παραδείγματα αυτά είναι ειδικές περιπτώσεις αναδρομικής σχέσης που προκύπτει κατά τη σχεδίαση ενός αλγορίθμου με τη γενική τεχνική «Διαίρει-και-Βασίλευε» (Divide and Conquer) 0

Διαίρει-και-Βασίλευε (Divide-and-Conquer) Διαίρει-και-Βασίλευε: γενική τεχνική σχεδίασης αλγορίθμων Διαίρει τα εισερχόμενα δεδομένα S σε δύο ή περισσότερα ξένα υποσύνολα S, S, Βασίλευε τα υποπροβλήματα που σχετίζονται με τα S, S, λύνοντάς τα αναδρομικά (ή με άμεσο τρόπο αν οι διαστάσεις τους είναι αρκετά μικρές). Συνδύαζε τις λύσεις για S, S, σε μια λύση για S. Το βασικό βήμα (base case) για την αναδρομή είναι υποπρόβλημα μιας σταθερής διάστασης. Η ανάλυση μπορεί να γίνει με χρήση αναδρομικών εξισώσεων

Ανάλυση του Διαίρει-και-Βασίλευε Έστω T(n) ο χρόνος εκτέλεσης για ένα πρόβλημα μεγέθους n. Αν το n είναι αρκετά μικρό, έστω n c, όπου c = σταθ., η άμεση λύση απαιτεί σταθερό χρόνο τον οποίο γράφουμε O() ή Θ(). Ας υποθέσουμε ότι ο διαμελισμός του προβλήματος συνεπάγεται α υποπροβλήματα μεγέθους το καθένα /b του μεγέθους του αρχικού (συνήθως α = b =, π.χ Merge-Sort). Αν ο διαμελισμός απαιτεί χρόνο D(n) και το να συνδυαστούν οι λύσεις των υποπροβλημάτων για τη λύση του αρχικού προβλήματος απαιτεί χρόνο C(n) Tn ( ) Θ(), αν n c = n at + D( n) + C ( n), διαφορετικά b

Εφαρμογή: Ταξινόμηση με συνένωση (Merge-Sort) Ο Merge-Sort σε μια εισαγόμενη ακολουθία S με n στοιχεία συνίσταται στα τρία βήματα: Διαίρει: διαμέρισε την S σε ακολουθίες S και S με περίπου n/ στοιχεία η κάθε μία Βασίλευε: αναδρομικά ταξινόμησε τις S και S Συνδύαζε: συνένωσε τις S και S σε μία ταξινομημένη ακολουθία * Θεωρούμε τα στοιχεία των ακολουθιών S, S και S ως στοιχεία των μονοδιάστατων πινάκων A[.. n], A[.. n/ ], και A[ n/ +.. n ] αντίστοιχα.

Ταξινόμηση με συνένωση Merge-Sort A[.. n]. Αν n =, τέλος.. Αναδρομικά ταξινόμησε A[.. n/ ] και A[ n/ +.. n ]. 3. Συνένωσε τις ταξινομημένες λίστες. Χαρακτηριστική υπορουτίνα: Merge 4

Συνένωση δύο ταξινομημένων ακολουθιών 0 5

Συνένωση δύο ταξινομημένων ακολουθιών 0 6

Συνένωση δύο ταξινομημένων ακολουθιών 0 0

Συνένωση δύο ταξινομημένων ακολουθιών 0 0 8

Συνένωση δύο ταξινομημένων ακολουθιών 0 0 0

Συνένωση δύο ταξινομημένων ακολουθιών 0 0 0 0

Συνένωση δύο ταξινομημένων ακολουθιών 0 0 0 0

Συνένωση δύο ταξινομημένων ακολουθιών 0 0 0 0

Συνένωση δύο ταξινομημένων ακολουθιών 0 0 0 0 0 3

Συνένωση δύο ταξινομημένων ακολουθιών 0 0 0 0 0 4

Συνένωση δύο ταξινομημένων ακολουθιών 0 0 0 0 0 0 5

Συνένωση δύο ταξινομημένων ακολουθιών 0 0 0 0 0 0 6

Συνένωση δύο ταξινομημένων ακολουθιών 0 0 0 0 0 0 Υπολογιστικά, κάθε βήμα απαιτεί σταθερό χρόνο επειδή απλά συγκρίνουμε δύο στοιχεία (τα πρώτα κάθε φορά). Επειδή εκτελούμε n το πολύ βήματα, η συνένωση απαιτεί χρόνο Θ(n). Χρόνος = Θ(n) για συνένωση συνολικά n στοιχείων.

Merge Η διαδικασία που περιγράψαμε υποθέτει ότι οι δύο (υπο)συστοιχίες είναι ταξινομημένες και τις συνενώνει σε μία (υπο)συστοιχία. Δύο δείκτες αρχικοποιούνται για να δείχνουν στα πρώτα στοιχεία των υπό συνένωση συστοιχιών. Στη συνέχεια αυτά τα δύο στοιχεία συγκρίνονται, με το μικρότερο να προστίθεται στη νέα υπό διαμόρφωση συστοιχία και μετά ο δείκτης του μικρότερου στοιχείου αυξάνεται κατά για να δείχνει στο αμέσως επόμενο στοιχείο της (υπο)συστοιχίας από την οποία αντιγράφηκε. Αυτή η διαδικασία συνεχίζεται μέχρις ότου μια από τις (υπο)συστοιχίες εξαντληθεί οπότε τα εναπομείναντα στοιχεία της άλλης (υπο)συστοιχίας αντιγράφονται στο τέλος της νέας (υπο)συστοιχίας. 8

Μεθοδολογία αναδρομικών σχέσεων (ΙΙΙ) Επανερχόμαστε στην επίλυση μιας αναδρομικής εξίσωσης με τη μέθοδο επανάληψης της αναδρομής. Παράδειγμα : (υποθέτουμε ότι το n είναι μια δύναμη του, δηλ. n = k )

Δέντρο Αναδρομής Επίλυση της T(n) = T(n/) + cn, όπου c > 0 (σταθ.) Σχηματίζω ένα δένδρο αναδρομής που δείχνει τις διαδοχικές αναδιπλώσεις της αναδρομής 30

Δέντρο Αναδρομής Αρχικά έχουμε το κόστος cn συν τα δύο υποπροβλήματα με κόστος το καθένα T(n/) cn T(n/) T(n/) 3

Δέντρο Αναδρομής Για κάθε υποπρόβλημα μεγέθους n/ έχουμε ένα κόστος n/ συν δύο υποπροβλήματα με κόστος το καθένα T(n/4) cn cn/ cn/ T(n/4) T(n/4) T(n/4) T(n/4) 3

Δέντρο Αναδρομής Συνεχίζουμε την αναδίπλωση μέχρι να γίνει το μέγεθος των υποπροβλημάτων = cn cn/ cn/ cn/4 cn/4 cn/4 cn/4 c 33

Δέντρο Αναδρομής n/ i = i = log n := lg n cn h = lg n cn/ cn/ cn/4 cn/4 cn/4 cn/4 c 34

Δέντρο Αναδρομής Επίλυση της T(n) = T(n/) + cn, όπου c > 0 (σταθ.) cn cn cn/ cn/ h = lg n cn/4 cn/4 cn/4 cn/4 c 35

Δέντρο Αναδρομής Επίλυση της T(n) = T(n/) + cn, όπου c > 0 (σταθ.) cn cn cn/ cn/ cn h = lg n cn/4 cn/4 cn/4 cn/4 c 36

Δέντρο Αναδρομής Επίλυση της T(n) = T(n/) + cn, όπου c > 0 (σταθ.) cn cn cn/ cn/ cn h = lg n cn/4 cn/4 cn/4 cn/4 cn c 3

Δέντρο Αναδρομής Επίλυση της T(n) = T(n/) + cn, όπου c > 0 (σταθ.) cn cn cn/ cn/ cn h = lg n cn/4 cn/4 cn/4 cn/4 cn c #φύλλων = n cn 38

Δέντρο Αναδρομής Επίλυση της T(n) = T(n/) + cn, όπου c > 0 (σταθ.) cn cn cn/ cn/ cn h = lg n cn/4 cn/4 cn/4 cn/4 cn c #φύλλων = n Δείτε Σημειώσεις-> Συνήθεις_τύποι_αναδρομικών_σχέσεων_στην_Ανάλυση_Αλγορίθμων_0.pdf cn cnlgn = Θ(nlgn)

Απόδειξη με το δένδρο αναδρομής 0 if n = T( n) = T( n / ) + n otherwise ταξινόμηση των μισών τμημάτων merging T(n) n T(n/) T(n/) (n/) T(n/4) T(n/4) T(n/4) T(n/4) log n 4(n/4)... T(n / k ) k (n / k )... T() T() T() T() T() T() T() T() n/ () n log n 40

Παράδειγμα Έστω η αναδρομική σχέση Με τη μέθοδο της επανάληψης έχουμε (υποθέτοντας ότι n = δύναμη του ) 4

Έχουμε, δες σελίδα 5, το άθροισμα των n όρων μιας Γεωμ. Προόδου είναι O(t(n)), όπου t(n) ο μεγαλύτερος όρος του αθροίσματος. Στην περίπτωση μας ο t(n) =/ <, άρα t(n)=, i = 0. 4 i n i n n n n n n n n n = = + + + + + = + + + + + log 0 log 3 0 log 3...... ( ) log 0 O i n i = = ( ) ) ( ) ( () ) ( log 0 log 0 n O no n T n n T n T i n i i n i = = + = + = = = Αλλά:

Παράδειγμα 3 Με τη μέθοδο της επανάληψης έχουμε (υποθέτοντας ότι n = δύναμη του 3) 43

Ας γενικεύσουμε λίγο: Ελάττωση κατά έναν σταθερό παράγοντα o. Λύνω τη σχέση για n = b k, k N * T(n) = T(n/b) + f(n) o. Η ασυμπτωτική λύση (για κάθε n) βρίσκεται με τη βοήθεια του θεωρήματος ομαλής συνάρτησης (βλ. παρακάτω). Για n = b k : T(b k ) = T(b k- ) + f(b k ) = T(b k- ) + f(b k- ) + f(b k ) = = T() + Για παράδειγμα, f(n) = f(n) = n k i= k i= i ( ) i ( ) f b f b = k = log n i ( ) k k k i= i= b i b n f b = b = b = b b b 44

Κριτήριο Ομαλότητας Ορισμός: Η μη αρνητική συνάρτηση f, ορισμένη στο σύνολο των φυσικών αριθμών, λέγεται ομαλή (smooth) αν f(n) f(n + ), για κάθε n n 0, και f(n) = Θ(f(n)). Παράδειγμα: Η συνάρτηση f(n) = n log n είναι ομαλή, αφού εύκολα μπορούμε να δούμε ότι είναι αύξουσα, και f(n) = n log (n) = n(log + log n) = (log)n + n log n = Θ(n log n). Θεώρημα: Αν f ομαλή, τότε f(bn) = Θ(f(n)), για κάθε ακέραιο b. Παραδείγματα: log n, n, n log n, n a με a 0, ενώ a n με a, και n! όχι. Θεώρημα (κριτήριο ομαλότητας): Έστω Τ συνάρτηση τελικά αύξουσα και f μια ομαλή συνάρτηση. Αν T(n) = Θ(f(n)) για τιμές του n που είναι δυνάμεις του b, με b, τότε T(n) = Θ(f(n)), n N. Ανάλογα συμπεράσματα ισχύουν για τις περιπτώσεις των Ο και Ω. 45

Κύριο Θεώρημα (Master Theorem) Το κύριο θεώρημα αποτελεί «συνταγή» για την επίλυση αναδρομικών σχέσεων την μορφής T(n) = at(n/b) + f(n), () όπου a, b > σταθερές και f(n), μια ασυμπτωτικά θετική συνάρτηση. Το Κ.Θ. απαιτεί την απομνημόνευση 3 περιπτώσεων και έτσι μπορεί να προσδιορίζει εύκολα τη λύση πολλών αναδρομικών σχέσεων. Η αναδρομική σχέση () περιγράφει τη χρονική εκτέλεση ενός αλγόριθμου που διαιρεί το δεδομένο πρόβλημα μεγέθους n σε a υποπροβλήματα το καθένα μεγέθους n/b, όπου a και b θετικές σταθερές. Τα a το πλήθος υποπροβλήματα επιλύονται αναδρομικά το καθένα σε χρόνο T(n/b). Το κόστος της διαίρεσης του προβλήματος και του συνδιασμού των αποτελεσμάτων των υποπροπροβλημάτων δίνεται από τη συνάρτηση f(n). Οσον αφορά το ζήτημα της τεχνικής αρτιότητας η αναδρομική σχέση στην πραγματικότητα δεν είναι καλά ορισμένη γιατί η ποσότητα n/b πιθανόν να μην έχει ακέραια τιμή. Η αντικατάσταση καθενός από τους όρους T(n/b) είτε από T( n/b ) είτε από T( n/b ) δεν επηρεάζει την ασυμπωτική συμπεριφορά, γι αυτό το λόγο παραλείπουμε τα ανώφλια και τα κατώφλια από αναδρομικές σχέσεις τύπου «διαίρει-και-βασίλευε» χάριν απλότητας. 46

Κύριο Θεώρημα (Master Theorem) Πολλές «Διαίρει-και-Βασίλευε» αναδρομικές σχέσεις έχουν τη μορφή: Tn ( ) c αν n d = at( n / b) + f ( n) αν n > d Έστω a, b ακέραιοι τέτοιοι, ώστε a, b >. Έστω επίσης ότι n/b συμβολίζει το n/b ή το n/b. To Τ(n) μπορεί να φραγεί ασυμπτωτικά: T( n) = Θ Θ ( log a n ) b αν ( log a n log n) b f αν f ( n) ( n) = = Θ ( log a ) b ε O n ( log a n ) b ε > 0 c < Θ ( f ( n) ) αν f ( n) af = Ω ( n / b) < cf ( log a+ n ) b ε ( n) AND και αν for large για μεγάλα n 4

Κύριο Θεώρημα (Master Theorem) Σε καθεμία από τις 3 περιπτώσεις συγκρίνουμε τη συνάρτηση a f(n) με τη συνάρτηση n log b Σε ποιοτικό επίπεδο, η λύση της αναδρομικής σχέσης καθορίζεται από τη μεγαλύτερη από τις δυο συναρτήσεις. a Περίπτωση. αν η μεγαλύτερη είναι η n log b τότε η λύση είναι logb a T n = Θ n ( ) ( ) Περίπτωση 3. αν η μεγαλύτερη είναι η f(n) τότε η λύση είναι T ( n) = Θ( f ( n) ) Περίπτωση. αν οι δυο συναρτήσεις είναι ισομεγέθεις πολλαπλασιάζουμε με ένα λογαριθμικό παράγοντα T ( ) ( log ) b a n = Θ n lg n = Θ f ( n) ( lg n) 48

Κύριο Θεώρημα (Master Theorem) a n log b Στην περ. δεν αρκεί η f(n) να είναι μικρότερη από την αλλά θα πρέπει να είναι πολυωνυμικά μικρότερη, δηλαδή η f(n) θα πρέπει να είναι ασυμπτωτικά μικρότερη της n log b κατά ένα παράγοντα n ε για κάποια σταθερά ε > 0. Στην περ. 3 δεν αρκεί η f(n) να είναι μεγαλύτερη από την αλλά θα πρέπει να είναι πολυωνυμικά μεγαλύτερη και να ικανοποιεί το κριτήριο ομαλότητας f(n/b) cf(n). Η συνθήκη αυτή ικανοποιείται από τις περισσότερες πολυωνυμικά φραγμένες συναρτήσεις που θα μελετήσουμε. Οι 3 περιπτώσεις δεν καλύπτουν όλες τις δυνατότητες για την f(n). Μεταξύ των περιπτώσεων και υπάρχει ένα χάσμα, και ανάλογα χάσμα μεταξύ των περιπτώσεων και 3. a a n log b 4

Κύριο Θεώρημα: Παραδείγματα (Ι) T(n) = T(n/3) + n a =, b = 3, f(n) = n n log b a = n log 3 = Θ(n ) f(n) = O(n log 3 - ε ), όπου ε =, οπότε περίπτωση : T ( n) = Θ ( log a ) ( a ε = ) b logb n εφόσον f ( n) O n T(n) = Θ(n ) 50

Κύριο Θεώρημα: Παραδείγματα (ΙI) T(n) = T(n/3) + a =, b = 3/, f(n) = n log b a = n log 3/ = n 0 = f(n) = Θ(n log b α ) = Θ(), οπότε περίπτωση : ( lg ) T ( n) = Θ n 5

Κύριο Θεώρημα: Παραδείγματα (ΙII) T(n) = 3T(n/4) + nlgn a = 3, b = 4, f(n) = nlgn n log b a = n log 4 3 = O(n 0,03 ) f(n) = Ω(n log 4 3+ε ), όπου ε 0., ισχύει η περίπτωση 3, υπό την προϋπόθεση ότι ισχύει και το κριτήριο ομαλότητας για τη συνάρτηση f(n). Για αρκετά μεγάλα n έχουμε ότι ( n b) = 3( n 4) lg( n 4) ( 3 4) n lg n cf ( n) af = για c = 3/4. Σύμφωνα με την περίπτωση 3 η λύση της αναδρομικής σχέσης είναι T ( n) = Θ( n lg n) 5

Κύριο Θεώρημα: Παραδείγματα (ΙV) T(n) = T(n/) + nlgn a =, b =, f(n) = nlgn Το κύριο θεώρημα δε μπορεί να εφαρμοσθεί για αυτή την αναδρομική σχέση n log b a = n Εκ πρώτης όψεως φαίνεται ότι η σχέση εμπίπτει στην περίπτωση 3, δεδομένου ότι η f(n) = nlgn είναι ασυμπτωτικά μεγαλύτερη της n log b a = n Το πρόβλημα είναι ότι δεν είναι πολυωνυμικά μεγαλύτερη. Ο λόγος f(n)/ n log b a = (nlgn) /n = lgn, είναι ασυμπτωτικά μικρότερος του n ε για οποιαδήποτε θετική σταθερά ε. Αρα η αναδρομική σχέση βρίσκεται στο χάσμα μεταξύ των περιπτώσεων και 3. 53