ΠΛΗ30 ΜΑΘΗΜΑ 1.4

42
ΠΛΗ30 ΕΝΟΤΗΤΑ 1: ΑΝΑΛΥΣΗ ΑΛΓΟΡΙΘΜΩΝ Μάθηµα 1.4: Ανάλυση Αναδροµικών Αλγορίθµων Η αναδροµική σχέση T(n)=aT(n/b)+f(n) ∆ηµήτρης Ψούνης ∆ηµήτρης Ψούνης

Upload: dimitris-psounis

Post on 19-Aug-2015

48 views

Category:

Education


1 download

TRANSCRIPT

Page 1: ΠΛΗ30 ΜΑΘΗΜΑ 1.4

ΠΛΗ30ΕΝΟΤΗΤΑ 1: ΑΝΑΛΥΣΗ ΑΛΓΟΡΙΘΜΩΝ

Μάθηµα 1.4: Ανάλυση Αναδροµικών Αλγορίθµων

Η αναδροµική σχέση T(n)=aT(n/b)+f(n)

∆ηµήτρης Ψούνης∆ηµήτρης Ψούνης

Page 2: ΠΛΗ30 ΜΑΘΗΜΑ 1.4

ΠΕΡΙΕΧΟΜΕΝΑ

Α. Σκοπός του Μαθήµατος

Β.Θεωρία

1. Αναδροµικοί Αλγόριθµοι

2∆ηµήτρης Ψούνης, ΠΛΗ30, Μάθηµα 1.4: Η αναδροµική σχέση T(n)=aT(n/b)+f(n)

1. Αναδροµικοί Αλγόριθµοι

1. Ο αλγόριθµος αναζήτησης BinarySearch

2. Ο αλγόριθµος ταξινόµησης MergeSort

2. Αναδροµικές Σχέσεις

Γ. Μεθοδολογία Ασκήσεων

1. Η αναδροµή T(n)=aT(n/b)+f(n)

1. Επίλυση µε το Θεώρηµα Κυριαρχίας

2. Επίλυση µε την Μέθοδο της Επανάληψης2. Επίλυση µε την Μέθοδο της Επανάληψης

∆.Ασκήσεις

Page 3: ΠΛΗ30 ΜΑΘΗΜΑ 1.4

Α. Σκοπός του Μαθήµατος

Οι στόχοι του µαθήµατος είναι:

3∆ηµήτρης Ψούνης, ΠΛΗ30, Μάθηµα 1.4: Η αναδροµική σχέση T(n)=aT(n/b)+f(n)

Επίπεδο Α Το θεώρηµα κυριαρχίας για την επίλυση της αναδροµικής σχέσης

T(n)=aT(n/b)+f(n)Επίπεδο ΒΗ µέθοδος επανάληψης για την επίλυση της αναδροµικής σχέσης

T(n)=aT(n/b)+f(n)Επίπεδο ΓΕπίπεδο ΓΟ αλγόριθµος ταξινόµησης MergeSortΟ αλγόριθµος αναζήτησης BinarySearch

Page 4: ΠΛΗ30 ΜΑΘΗΜΑ 1.4

Β. Θεωρία1. Αναδροµικοί Αλγόριθµοι

4∆ηµήτρης Ψούνης, ΠΛΗ30, Μάθηµα 1.4: Η αναδροµική σχέση T(n)=aT(n/b)+f(n)

Γενικότερα ένας αναδροµικός αλγόριθµος είναι ένας αλγόριθµος ο οποίος υλοποιείται από µία αναδροµική διαδικασία.υλοποιείται από µία αναδροµική διαδικασία. Αναδροµική λέγεται µια διαδικασία που κατά την διάρκεια της εκτέλεσής

της καλεί τον εαυτό της.Η γενική µορφή ενός αναδροµικού κώδικα φαίνεται στο σχήµα.

Παρατηρήστε ότι σε κάποιο σηµείο του σώµατος της διαδικασίας πρέπει να γίνεται κλήση στην ίδια την συνάρτηση:procedure recursive(n)

...

...

Θα µελετήσουµε δύο περίφηµους αναδροµικούς αλγόριθµους: Τον BinarySearch για την αναζήτηση στοιχείου σε µία ακολουθία Τον MergeSort για την ταξινόµηση ενός πίνακα αριθµών

... ΚΛΗΣΗ recursive(n-1)

...

...end procedure

Page 5: ΠΛΗ30 ΜΑΘΗΜΑ 1.4

Β. Θεωρία1. Αναδροµικοί Αλγόριθµοι1. Ο αλγόριθµος αναζήτησης BinarySearch (1.∆ιατύπωση και Λειτουργία)

5∆ηµήτρης Ψούνης, ΠΛΗ30, Μάθηµα 1.4: Η αναδροµική σχέση T(n)=aT(n/b)+f(n)

BinarySearch ή ∆υαδική Αναζήτηση: Είσοδος: Ταξινόµηµένος πίνακας A, στοιχείο x Είσοδος: Ταξινόµηµένος πίνακας A, στοιχείο xΈξοδος:

Αν το στοιχείο υπάρχει στον πίνακα, επιστρέφεται η θέση του στοιχείου x στον πίνακα Α.

Αν το στοιχείο δεν υπάρχει στον πίνακα, επιστρέφεται 0.

Λειτουργία του αλγορίθµου: Ο αλγόριθµος εξετάζει το µεσαίο στοιχείο του πίνακα και διακρίνει περιπτώσεις:πίνακα και διακρίνει περιπτώσεις: Αν το µεσαίο στοιχείο είναι το x, επιστρέφει την θέση του. Αν το x είναι µικρότερο από το µεσαίο στοιχείο τότε αναδροµικά ψάχνει

στο κοµµάτι του πίνακα από την αρχή µέχρι το µεσαίο στοιχείο Αν το x είναι µεγαλύτερο από το µεσαίο στοιχείο τότε αναδροµικά ψάχνει

στο κοµµάτι του πίνακα από το µεσαίο στοιχείο µέχρι το τέλος

Page 6: ΠΛΗ30 ΜΑΘΗΜΑ 1.4

Β. Θεωρία1. Αναδροµικοί Αλγόριθµοι1. Ο αλγόριθµος αναζήτησης BinarySearch (2. Ψευδοκώδικας)

6∆ηµήτρης Ψούνης, ΠΛΗ30, Μάθηµα 1.4: Η αναδροµική σχέση T(n)=aT(n/b)+f(n)

Παρακάτω φαίνεται µία υλοποίηση της BinarySearch σε ψευδογλώσσα

procedure BinarySearch(A,x,start,finish)procedure BinarySearch(A,x,start,finish)

if start>finish then return 0

else middle=(start+finish) div 2if (x==A[middle]) then

return middleelse if (x<A[middle]) then

pos=BinarySearch(A,x,start,middle-1)return posreturn pos

else if (x>middle) thenpos=BinarySearch(A,x,middle+1,finish)return pos

end ifend if

end procedure

Page 7: ΠΛΗ30 ΜΑΘΗΜΑ 1.4

Β. Θεωρία1. Αναδροµικοί Αλγόριθµοι1. Ο αλγόριθµος αναζήτησης BinarySearch (3. Παράδειγµα Εκτέλεσης)

7∆ηµήτρης Ψούνης, ΠΛΗ30, Μάθηµα 1.4: Η αναδροµική σχέση T(n)=aT(n/b)+f(n)

Εκτελούµε τον αλγόριθµο ψάχνοντας το στοιχείο 11 στον πίνακα:1 2 3 4 5 6 7 8 9 10 11 12 13 14 15

Κλήση: BinarySearch(A,11,1,15): middle=(1+15) div 2=8. x<A[middle]

Αναδροµική Κλήση: BinarySearch(A,11,1,7) : middle=(1+7) div 2=4 x>A[middle]

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15

2 3 5 7 11 13 17 21 23 27 31 33 37 41 43

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15

2 3 5 7 11 13 17 21 23 27 31 33 37 41 43

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15

2 3 5 7 11 13 17 21 23 27 31 33 37 41 43

start

start

finish

finish

Αναδροµική Κλήση: BinarySearch(A,11,5,7) : middle=(5+7) div 2=6 x<A[middle]

Αναδροµική Κλήση: BinarySearch(A,11,5,5) : middle=(5+5) div 2=5 x=A[middle]

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15

2 3 5 7 11 13 17 21 23 27 31 33 37 41 43

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15

2 3 5 7 11 13 17 21 23 27 31 33 37 41 43

start

start

start=finish

finish

finish

Page 8: ΠΛΗ30 ΜΑΘΗΜΑ 1.4

Β. Θεωρία1. Αναδροµικοί Αλγόριθµοι1. Ο αλγόριθµος αναζήτησης BinarySearch (4. Ανάλυση)

8∆ηµήτρης Ψούνης, ΠΛΗ30, Μάθηµα 1.4: Η αναδροµική σχέση T(n)=aT(n/b)+f(n)

Καλύτερη περίπτωση: είναι όταν το στοιχείο x βρίσκεται ακριβώς στην µεσαία θέση του πίνακα. µεσαία θέση του πίνακα. Η πολυπλοκότητα είναι T(n)=5 άρα ασυµπτωτικά T(n)=Θ(1).

Χειρότερη περίπτωση: είναι όταν το στοιχείο x δεν υπάρχει στον πίνακα:Έστω T(n) η πολυπλοκότητα όταν ο πίνακας έχει διάσταση n.

Αρχικά θα γίνουν 8 πράξεις µέχρι να γίνει η αναδροµική κλήση(έστω ότι πάντα γίνεται και η 2η αναδροµική κλήση για να έχουµε µία παραπάνω σύγκριση)

Έπειτα γίνεται αναδροµική κλήση για πίνακα διάστασης 1−

n

Έπειτα γίνεται αναδροµική κλήση για πίνακα διάστασης Άρα αφού για διάσταση n, έχουµε χρόνο T(n), για διάσταση

θέλουµε χρόνοΈπειτα γίνεται ακόµη 1 πράξη.

Άρα η πολυπλοκότητα δίνεται από την αναδροµική σχέση: Ειδικά όταν n=0 τότε γίνεται 1 πράξη (κριτήριο τερµατισµού)

12

n

12

n

1

2

nT

912

)( +

= nTnT

Page 9: ΠΛΗ30 ΜΑΘΗΜΑ 1.4

Β. Θεωρία1. Αναδροµικοί Αλγόριθµοι1. Ο αλγόριθµος αναζήτησης BinarySearch (4. Ανάλυση)

9∆ηµήτρης Ψούνης, ΠΛΗ30, Μάθηµα 1.4: Η αναδροµική σχέση T(n)=aT(n/b)+f(n)

Τελικά η χειρότερη περίπτωση λύνεται από την αναδροµική σχέση:

= 0,1 n

Επειδή ωστόσο αυτή η σχέση είναι ιδιαίτερα περίπλοκη για να την λύσουµε, την προσεγγίζουµε ως εξής: Το είναι περίπου

Άρα προκύπτει η τελική αναδροµική σχέση:

>+

== 0,91

2

0,1)( n

nT

nnT

12

n

2

n

Άρα προκύπτει η τελική αναδροµική σχέση:

Την οποία λύνουµε µε το θεώρηµα κυριαρχίας και προκύπτει ότι η πολυπλοκότητά της είναι:

>+

=

= 0,92

0,1)( n

nT

nnT

)(log)( nnT Θ=

Page 10: ΠΛΗ30 ΜΑΘΗΜΑ 1.4

Β. Θεωρία1. Αναδροµικοί Αλγόριθµοι2. Ο αλγόριθµος ταξινόµησης MergeSort (1.∆ιατύπωση και Λειτουργία)

10∆ηµήτρης Ψούνης, ΠΛΗ30, Μάθηµα 1.4: Η αναδροµική σχέση T(n)=aT(n/b)+f(n)

MergeSort ή Ταξινόµηση µε Συγχώνευση: Είσοδος: πίνακας (αριθµών) A µε n στοιχεία Είσοδος: πίνακας (αριθµών) A µε n στοιχείαΈξοδος: ταξινόµηση των στοιχείων του πίνακα σε αύξουσα σειρά

Λειτουργία του αλγορίθµου: Ο αλγόριθµος: Ταξινοµεί το αριστερό κοµµάτι του πίνακα Ταξινοµεί το δεξί κοµµάτι του πίνακα Συγχωνεύει τα δύο ταξινοµηµένα πλέον κοµµάτια σε µία ταξινοµηµένη

ακολουθίαακολουθία

Η ταξινόµηση κάθε κοµµατιού γίνεται µε αναδροµική κλήση της ίδιας διαδικασίας.

Page 11: ΠΛΗ30 ΜΑΘΗΜΑ 1.4

Β. Θεωρία1. Αναδροµικοί Αλγόριθµοι2. Ο αλγόριθµος ταξινόµησης MergeSort (2. Ψευδοκώδικας)

11∆ηµήτρης Ψούνης, ΠΛΗ30, Μάθηµα 1.4: Η αναδροµική σχέση T(n)=aT(n/b)+f(n)

Παρακάτω φαίνεται µία υλοποίηση της MergeSort σε ψευδογλώσσα

procedure MergeSort(A,start, finish)procedure MergeSort(A,start, finish)

if |A|<=2 then Ταξινόµησε τον Α

else middle=(start+finish) div 2A1=MergeSort(A,start,middle)A2=MergeSort(A,middle+1,finish)A=Merge(A1,A2)

end if

Το κριτήριο τερµατισµού της αναδροµής είναι όταν ο πίνακας έχει το πολύ 2 στοιχεία.

Γίνονται 2 αναδροµικές κλήσεις για την ταξινόµηση του αριστερού και του δεξιού κοµµατιού αντίστοιχα.

Έπειτα γίνεται συγχώνευση των δύο ακολουθιών µε την διαδικασία Merge

end procedure

Page 12: ΠΛΗ30 ΜΑΘΗΜΑ 1.4

Β. Θεωρία1. Αναδροµικοί Αλγόριθµοι2. Ο αλγόριθµος ταξινόµησης MergeSort (2. Ψευδοκώδικας)

12∆ηµήτρης Ψούνης, ΠΛΗ30, Μάθηµα 1.4: Η αναδροµική σχέση T(n)=aT(n/b)+f(n)

Η διαδικασία Merge για την συγχώνευση δύο ήδη ταξινοµηµένων πινάκων µπορεί να υλοποιηθεί ως εξής:µπορεί να υλοποιηθεί ως εξής:procedure Merge(A,Β)

i=1, j=1, k=1while (i<=n AND j<=m)

if (ai<bj) thenck=ai ; i=i+1

else ck=bj ; j=j+1

end if

Παραπάνω θεωρούµε το |Α|=n, |B|=m

k=k+1end whileΌσα στοιχεία του Α ή του B περισσεψαν τα βάζουµε στο τέλος του Creturn C

end procedure

Page 13: ΠΛΗ30 ΜΑΘΗΜΑ 1.4

Β. Θεωρία1. Αναδροµικοί Αλγόριθµοι2. Ο αλγόριθµος ταξινόµησης MergeSort (3. Παράδειγµα Εκτέλεσης)

13∆ηµήτρης Ψούνης, ΠΛΗ30, Μάθηµα 1.4: Η αναδροµική σχέση T(n)=aT(n/b)+f(n)

Αναδροµική Κλήση MergeSort(Α,1,16)1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 161 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16

18 7 4 11 9 20 6 1 22 19 14 5 2 9 10 13

Page 14: ΠΛΗ30 ΜΑΘΗΜΑ 1.4

Β. Θεωρία1. Αναδροµικοί Αλγόριθµοι2. Ο αλγόριθµος ταξινόµησης MergeSort (3. Παράδειγµα Εκτέλεσης)

14∆ηµήτρης Ψούνης, ΠΛΗ30, Μάθηµα 1.4: Η αναδροµική σχέση T(n)=aT(n/b)+f(n)

Αναδροµική Κλήση MergeSort(Α,1,16)

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16

18 7 4 11 9 20 6 1 22 19 14 5 2 3 10 13

1 2 3 4 5 6 7 8

18 7 4 11 9 20 6 19 10 11 12 13 14 15 16

22 19 14 5 2 3 10 13

Page 15: ΠΛΗ30 ΜΑΘΗΜΑ 1.4

Β. Θεωρία1. Αναδροµικοί Αλγόριθµοι2. Ο αλγόριθµος ταξινόµησης MergeSort (3. Παράδειγµα Εκτέλεσης)

15∆ηµήτρης Ψούνης, ΠΛΗ30, Μάθηµα 1.4: Η αναδροµική σχέση T(n)=aT(n/b)+f(n)

Αναδροµική Κλήση (A,1,8)1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 161 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16

18 7 4 11 9 20 6 1 22 19 14 5 2 3 10 13

1 2 3 4 5 6 7 8

18 7 4 11 9 20 6 19 10 11 12 13 14 15 16

22 19 14 5 2 3 10 13

1 2 3 4

18 7 4 11

5 6 7 8

9 20 6 118 7 4 11 9 20 6 1

Page 16: ΠΛΗ30 ΜΑΘΗΜΑ 1.4

Β. Θεωρία1. Αναδροµικοί Αλγόριθµοι2. Ο αλγόριθµος ταξινόµησης MergeSort (3. Παράδειγµα Εκτέλεσης)

16∆ηµήτρης Ψούνης, ΠΛΗ30, Μάθηµα 1.4: Η αναδροµική σχέση T(n)=aT(n/b)+f(n)

Αναδροµική Κλήση (A,1,4)1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 161 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16

18 7 4 11 9 20 6 1 22 19 14 5 2 3 10 13

1 2 3 4 5 6 7 8

18 7 4 11 9 20 6 19 10 11 12 13 14 15 16

22 19 14 5 2 3 10 13

1 2 3 4

18 7 4 11

5 6 7 8

9 20 6 118 7 4 11 9 20 6 1

1 2

18 7

3 4

4 11

Page 17: ΠΛΗ30 ΜΑΘΗΜΑ 1.4

Β. Θεωρία1. Αναδροµικοί Αλγόριθµοι2. Ο αλγόριθµος ταξινόµησης MergeSort (3. Παράδειγµα Εκτέλεσης)

17∆ηµήτρης Ψούνης, ΠΛΗ30, Μάθηµα 1.4: Η αναδροµική σχέση T(n)=aT(n/b)+f(n)

Αναδροµική Κλήση (A,1,2): Ταξινοµηση του υποπίνακα1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 161 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16

18 7 4 11 9 20 6 1 22 19 14 5 2 3 10 13

1 2 3 4 5 6 7 8

18 7 4 11 9 20 6 19 10 11 12 13 14 15 16

22 19 14 5 2 3 10 13

1 2 3 4

18 7 4 11

5 6 7 8

9 20 6 118 7 4 11 9 20 6 1

1 2

7 18

3 4

4 11

Page 18: ΠΛΗ30 ΜΑΘΗΜΑ 1.4

Β. Θεωρία1. Αναδροµικοί Αλγόριθµοι2. Ο αλγόριθµος ταξινόµησης MergeSort (3. Παράδειγµα Εκτέλεσης)

18∆ηµήτρης Ψούνης, ΠΛΗ30, Μάθηµα 1.4: Η αναδροµική σχέση T(n)=aT(n/b)+f(n)

Αναδροµική Κλήση (A,3,4): Ταξινοµηση του υποπίνακα1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 161 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16

18 7 4 11 9 20 6 1 22 19 14 5 2 3 10 13

1 2 3 4 5 6 7 8

18 7 4 11 9 20 6 19 10 11 12 13 14 15 16

22 19 14 5 2 3 10 13

1 2 3 4

18 7 4 11

5 6 7 8

9 20 6 118 7 4 11 9 20 6 1

1 2

7 18

3 4

4 11

Page 19: ΠΛΗ30 ΜΑΘΗΜΑ 1.4

Β. Θεωρία1. Αναδροµικοί Αλγόριθµοι2. Ο αλγόριθµος ταξινόµησης MergeSort (3. Παράδειγµα Εκτέλεσης)

19∆ηµήτρης Ψούνης, ΠΛΗ30, Μάθηµα 1.4: Η αναδροµική σχέση T(n)=aT(n/b)+f(n)

Αναδροµική Κλήση (A,1,4): Συγχώνευση των δύο υποπινάκων1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 161 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16

18 7 4 11 9 20 6 1 22 19 14 5 2 3 10 13

1 2 3 4 5 6 7 8

18 7 4 11 9 20 6 19 10 11 12 13 14 15 16

22 19 14 5 2 3 10 13

1 2 3 4

4 7 11 18

5 6 7 8

9 20 6 14 7 11 18 9 20 6 1

1 2

7 18

3 4

4 11

Page 20: ΠΛΗ30 ΜΑΘΗΜΑ 1.4

Β. Θεωρία1. Αναδροµικοί Αλγόριθµοι2. Ο αλγόριθµος ταξινόµησης MergeSort (3. Παράδειγµα Εκτέλεσης)

20∆ηµήτρης Ψούνης, ΠΛΗ30, Μάθηµα 1.4: Η αναδροµική σχέση T(n)=aT(n/b)+f(n)

Αναδροµική Κλήση (A,5,8)1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 161 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16

18 7 4 11 9 20 6 1 22 19 14 5 2 3 10 13

1 2 3 4 5 6 7 8

18 7 4 11 9 20 6 19 10 11 12 13 14 15 16

22 19 14 5 2 3 10 13

1 2 3 4

4 7 11 18

5 6 7 8

9 20 6 14 7 11 18 9 20 6 1

1 2

7 18

3 4

4 11

5 6

9 20

7 8

6 1

Page 21: ΠΛΗ30 ΜΑΘΗΜΑ 1.4

Β. Θεωρία1. Αναδροµικοί Αλγόριθµοι2. Ο αλγόριθµος ταξινόµησης MergeSort (3. Παράδειγµα Εκτέλεσης)

21∆ηµήτρης Ψούνης, ΠΛΗ30, Μάθηµα 1.4: Η αναδροµική σχέση T(n)=aT(n/b)+f(n)

Αναδροµική Κλήση (A,5,6): Ταξινοµηση του υποπίνακα1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 161 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16

18 7 4 11 9 20 6 1 22 19 14 5 2 3 10 13

1 2 3 4 5 6 7 8

18 7 4 11 9 20 6 19 10 11 12 13 14 15 16

22 19 14 5 2 3 10 13

1 2 3 4

4 7 11 18

5 6 7 8

9 20 6 14 7 11 18 9 20 6 1

1 2

7 18

3 4

4 11

5 6

9 20

7 8

6 1

Page 22: ΠΛΗ30 ΜΑΘΗΜΑ 1.4

Β. Θεωρία1. Αναδροµικοί Αλγόριθµοι2. Ο αλγόριθµος ταξινόµησης MergeSort (3. Παράδειγµα Εκτέλεσης)

22∆ηµήτρης Ψούνης, ΠΛΗ30, Μάθηµα 1.4: Η αναδροµική σχέση T(n)=aT(n/b)+f(n)

Αναδροµική Κλήση (A,7,8): Ταξινοµηση του υποπίνακα1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 161 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16

18 7 4 11 9 20 6 1 22 19 14 5 2 3 10 13

1 2 3 4 5 6 7 8

18 7 4 11 9 20 6 19 10 11 12 13 14 15 16

22 19 14 5 2 3 10 13

1 2 3 4

4 7 11 18

5 6 7 8

9 20 6 14 7 11 18 9 20 6 1

1 2

7 18

3 4

4 11

5 6

9 20

7 8

1 6

Page 23: ΠΛΗ30 ΜΑΘΗΜΑ 1.4

Β. Θεωρία1. Αναδροµικοί Αλγόριθµοι2. Ο αλγόριθµος ταξινόµησης MergeSort (3. Παράδειγµα Εκτέλεσης)

23∆ηµήτρης Ψούνης, ΠΛΗ30, Μάθηµα 1.4: Η αναδροµική σχέση T(n)=aT(n/b)+f(n)

Αναδροµική Κλήση (A,5,8): Συγχώνευση των δύο υποπινάκων1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 161 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16

18 7 4 11 9 20 6 1 22 19 14 5 2 3 10 13

1 2 3 4 5 6 7 8

18 7 4 11 9 20 6 19 10 11 12 13 14 15 16

22 19 14 5 2 3 10 13

1 2 3 4

4 7 11 18

5 6 7 8

1 6 9 204 7 11 18 1 6 9 20

1 2

7 18

3 4

4 11

5 6

9 20

7 8

1 6

Page 24: ΠΛΗ30 ΜΑΘΗΜΑ 1.4

Β. Θεωρία1. Αναδροµικοί Αλγόριθµοι2. Ο αλγόριθµος ταξινόµησης MergeSort (3. Παράδειγµα Εκτέλεσης)

24∆ηµήτρης Ψούνης, ΠΛΗ30, Μάθηµα 1.4: Η αναδροµική σχέση T(n)=aT(n/b)+f(n)

Αναδροµική Κλήση (A,1,8): Συγχώνευση των δύο υποπινάκων1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 161 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16

18 7 4 11 9 20 6 1 22 19 14 5 2 3 10 13

1 2 3 4 5 6 7 8

1 4 6 7 9 11 18 209 10 11 12 13 14 15 16

22 19 14 5 2 3 10 13

1 2 3 4

4 7 11 18

5 6 7 8

1 6 9 204 7 11 18 1 6 9 20

1 2

7 18

3 4

4 11

5 6

9 20

7 8

1 6

Page 25: ΠΛΗ30 ΜΑΘΗΜΑ 1.4

Β. Θεωρία1. Αναδροµικοί Αλγόριθµοι2. Ο αλγόριθµος ταξινόµησης MergeSort (3. Παράδειγµα Εκτέλεσης)

25∆ηµήτρης Ψούνης, ΠΛΗ30, Μάθηµα 1.4: Η αναδροµική σχέση T(n)=aT(n/b)+f(n)

Αντίστοιχα θα γίνουν όλες οι αναδροµικές κλήσεις στο (9,16)1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 161 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16

18 7 4 11 9 20 6 1 22 19 14 5 2 3 10 13

1 2 3 4 5 6 7 8

1 4 6 7 9 11 18 209 10 11 12 13 14 15 16

2 3 5 10 13 14 19 22

1 2 3 4

4 7 11 18

5 6 7 8

1 6 9 20

9 10 11 12

5 14 19 22

13 14 15 16

2 3 10 134 7 11 18 1 6 9 20

1 2

7 18

3 4

4 11

5 6

9 20

7 8

1 6

5 14 19 22 2 3 10 13

9 10

19 22

11 12

5 14

13 14

2 3

15 16

10 13

Page 26: ΠΛΗ30 ΜΑΘΗΜΑ 1.4

Β. Θεωρία1. Αναδροµικοί Αλγόριθµοι2. Ο αλγόριθµος ταξινόµησης MergeSort (3. Παράδειγµα Εκτέλεσης)

26∆ηµήτρης Ψούνης, ΠΛΗ30, Μάθηµα 1.4: Η αναδροµική σχέση T(n)=aT(n/b)+f(n)

Αναδροµική Κλήση (A,1,16): Συγχώνευση των δύο υποπινάκων1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 161 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16

1 2 3 4 5 6 7 9 10 11 13 14 18 19 20 22

1 2 3 4 5 6 7 8

1 4 6 7 9 11 18 209 10 11 12 13 14 15 16

2 3 5 10 13 14 19 22

1 2 3 4

4 7 11 18

5 6 7 8

1 6 9 20

9 10 11 12

5 14 19 22

13 14 15 16

2 3 10 134 7 11 18 1 6 9 20

1 2

7 18

3 4

4 11

5 6

9 20

7 8

1 6

5 14 19 22 2 3 10 13

9 10

19 22

11 12

5 14

13 14

2 3

15 16

10 13

Page 27: ΠΛΗ30 ΜΑΘΗΜΑ 1.4

Β. Θεωρία1. Αναδροµικοί Αλγόριθµοι2. Ο αλγόριθµος ταξινόµησης MergeSort (4. Ανάλυση)

27∆ηµήτρης Ψούνης, ΠΛΗ30, Μάθηµα 1.4: Η αναδροµική σχέση T(n)=aT(n/b)+f(n)

Η πολυπλοκότητα της συνάρτησης Merge είναι:

)()( mnnT +Θ=

Άρα η πολυπλοκότητα της MergeSort είναι:

Η οποία είναι ιδαίτερα περίπλοκη γι΄αυτό θεωρούµε ότι

>Θ+

+

==Θ=

2),(22

21),1()(

nnn

Tn

T

nήn

nT

nnn ≈=

)()( mnnT +Θ=

Η οποία είναι ιδαίτερα περίπλοκη γι΄αυτό θεωρούµε ότι Άρα απλοποιείται ως:

Η οποία λύνεται από το Θ.Κυριαρχίας και προκύπτει: Τ(n)=Θ(nlogn)

222

nnn ≈

=

>Θ+

==Θ=

2),(2

2

21),1()(

nnn

T

nήnnT

Page 28: ΠΛΗ30 ΜΑΘΗΜΑ 1.4

Γ. Μεθοδολογία Ασκήσεων1. Η αναδροµή T(n)=aT(n/b)+f(n)

28∆ηµήτρης Ψούνης, ΠΛΗ30, Μάθηµα 1.4: Η αναδροµική σχέση T(n)=aT(n/b)+f(n)

Για την επίλυση της αναδροµικής σχέσης T(n)=aT(n/b)+f(n) υπάρχουν δύο τρόποι:τρόποι: Το θεώρηµα κυριαρχίας, το οποίο µε εύκολο τρόπο µας δίνει µια

ασυµπτωτική εκτίµηση της πολυπλοκότηταςΗ µέθοδος επανάληψης, µας δίνει την ακριβή συνάρτηση

πολυπλοκότητας (άρα µπορούµε να εξάγουµε και ασυµπτωτική εκτίµηση).

Συνεπώς: Αν µας ζητείται απλά η λύση της αναδροµής, προτιµάµε το θεώρηµα

κυριαρχίας.κυριαρχίας. Αν µας ζητείται ακριβής συνάρτηση πολυπλοκότητας απαιτείται η

µέθοδος επανάληψης Αν µας ζητείται ασυµπτωτική εκτίµηση της συνάρτησης πολυπλοκότητας

προτιµάµε το θεώρηµα κυριαρχίας Αν το θεώρηµα κυριάρχίας αποτύχει (µπορεί να συµβεί στην 2η συνθήκη

της 3ης περίπτωσης του Θ.Κ.) τότε αναγκαστικά χρησιµοποιούµε την µέθοδο επανάληψης.

Page 29: ΠΛΗ30 ΜΑΘΗΜΑ 1.4

Γ. Μεθοδολογία Ασκήσεων1. Η αναδροµή T(n)=aT(n/b)+f(n)1. Επίλυση µε το θεώρηµα κυριαρχίας

29∆ηµήτρης Ψούνης, ΠΛΗ30, Μάθηµα 1.4: Η αναδροµική σχέση T(n)=aT(n/b)+f(n)

Το θεώρηµα Κυριαρχίας (Master Theorem) είναι το εξής:

Θεώρηµα Κυριαρχίας: Έστω η αναδροµική εξίσωσηΘεώρηµα Κυριαρχίας: Έστω η αναδροµική εξίσωση

όπου a≥1, b>1 είναι σταθερές, και f(n) είναι µια ασυµπτωτικά θετική συνάρτηση. Τότε διακρίνονται οι ακόλουθες τρεις περιπτώσεις:

Α) Αν για κάποια σταθερά ε>0, τότε:)()( log ε−= abnOnf

)()( nfb

naTnT +

=

( )abnnT log)( Θ=

Β) Αν τότε:

Γ) Αν για κάποια σταθερά ε>0

και για κάποια σταθερά c<1, τότε:

)()( log abnnf Θ=( )nnnT ab log)( log ⋅Θ=

)()( log ε+Ω= abnnf

)(nfcb

nfa ⋅≤

⋅( ))()( nfnT Θ=

Page 30: ΠΛΗ30 ΜΑΘΗΜΑ 1.4

Γ. Μεθοδολογία Ασκήσεων1. Η αναδροµή T(n)=aT(n/b)+f(n)1. Επίλυση µε το θεώρηµα κυριαρχίας

30∆ηµήτρης Ψούνης, ΠΛΗ30, Μάθηµα 1.4: Η αναδροµική σχέση T(n)=aT(n/b)+f(n)

Για την επίλυση µε το θεώρηµα της κυριαρχίας εργαζόµαστε ως εξής: Εντοπίζουµε από την εκφώνηση τα a,b και f(n) Εντοπίζουµε από την εκφώνηση τα a,b και f(n) Υπόλογίζουµε το logba. Συγκρίνουµε ασυµπτωτικά το f(n) µε την και:

Αν είµαστε στην Α’ περίπτωση

Αν είµαστε στην B’ περίπτωση

abnnf log)( <

abnnf log)( =

abnlog

Αν είµαστε στην Γ’ περίπτωση (ΠΡΟΣΟΧΗ! Ότι πρέπει να ελέγξουµε και την 2η συνθήκη)

abnnf log)( >

Page 31: ΠΛΗ30 ΜΑΘΗΜΑ 1.4

Γ. Μεθοδολογία Ασκήσεων1. Η αναδροµή T(n)=aT(n/b)+f(n)1. Επίλυση µε το θεώρηµα κυριαρχίας (Α’ περίπτωση)

31∆ηµήτρης Ψούνης, ΠΛΗ30, Μάθηµα 1.4: Η αναδροµική σχέση T(n)=aT(n/b)+f(n)

Εφόσον είµαστε στην Α’ περίπτωση διατυπώνουµε τελικά την απόδειξη σύµφωνα µε τον ορισµό:σύµφωνα µε τον ορισµό:ΠΑΡΑ∆ΕΙΓΜΑ:Να λύσετε την αναδροµή:

Λύση:Έχω:

Ισχύει: για κάποια σταθερά ε>0

Άρα από την Α’ περίπτωση του Θεωρήµατος Κυριαρχίας έπεται ότι:

nn

TnT +

=2

8)(

)()( 3 ε−== nOnnf

)()( 3nnT Θ=

38loglog,)(,2,8 2 ===== annfba b

)()( 3nnT Θ=

Page 32: ΠΛΗ30 ΜΑΘΗΜΑ 1.4

Γ. Μεθοδολογία Ασκήσεων1. Η αναδροµή T(n)=aT(n/b)+f(n)1. Επίλυση µε το θεώρηµα κυριαρχίας (Β’ περίπτωση)

32∆ηµήτρης Ψούνης, ΠΛΗ30, Μάθηµα 1.4: Η αναδροµική σχέση T(n)=aT(n/b)+f(n)

Εφόσον είµαστε στην Β’ περίπτωση διατυπώνουµε τελικά την απόδειξη σύµφωνα µε τον ορισµό:σύµφωνα µε τον ορισµό:ΠΑΡΑ∆ΕΙΓΜΑ:Να λύσετε την αναδροµή:

Λύση:Έχω:

Ισχύει:

Άρα από την Β’ περίπτωση του Θεωρήµατος Κυριαρχίας έπεται ότι:

2

39)( n

nTnT +

=

)()( 22 nnnf Θ==

)log()( 2 nnnT Θ=

29loglog,)(,3,9 32 ===== annfba b

)log()( 2 nnnT Θ=

Page 33: ΠΛΗ30 ΜΑΘΗΜΑ 1.4

Γ. Μεθοδολογία Ασκήσεων1. Η αναδροµή T(n)=aT(n/b)+f(n)1. Επίλυση µε το θεώρηµα κυριαρχίας (Γ’ περίπτωση)

33∆ηµήτρης Ψούνης, ΠΛΗ30, Μάθηµα 1.4: Η αναδροµική σχέση T(n)=aT(n/b)+f(n)

Στην Γ’ περίπτωση πρέπει να ελέγξουµε και την 2η συνθήκη, δηλαδή να αναζητήσουµε c>0 τέτοια ώστε . Η εύρεση του εύρους τιµών για )(nfc

nfa ⋅≤⋅αναζητήσουµε c>0 τέτοια ώστε . Η εύρεση του εύρους τιµών για

το c γίνεται αντικαθιστώντας τα a, b και την τιµή των f(n) και f(n/b).

ΠΑΡΑ∆ΕΙΓΜΑ:Να λύσετε την αναδροµή:

Λύση:Έχω:

Ισχύει: για κάποια σταθερά ε>0

Ελέγχω αν υπάρχει c<1 τέτοιο ώστε:

3

24)( n

nTnT +

=

)()( 23 ε+Ω== nnnf

24loglog,)(,2,4 23 ===== annfba b

)(nfcb

fa ⋅≤

Ελέγχω αν υπάρχει c<1 τέτοιο ώστε:

Άρα ισχύει για ½≤c<1.Άρα από την Γ’ περίπτωση του Θεωρήµατος Κυριαρχίας έπεται ότι:

)()( 3nnT Θ=

cccnn

cnn

ncfn

fncfb

naf ≤⇔≤⇔≤⇔≤

⇔≤

⇔≤

2

1

8

4

24

24)(

24)( 3

3

33

3

Page 34: ΠΛΗ30 ΜΑΘΗΜΑ 1.4

Γ. Μεθοδολογία Ασκήσεων1. Η αναδροµή T(n)=aT(n/b)+f(n)2. Επίλυση µε την µέθοδο επανάληψης

34∆ηµήτρης Ψούνης, ΠΛΗ30, Μάθηµα 1.4: Η αναδροµική σχέση T(n)=aT(n/b)+f(n)

Η µέθοδος επανάληψης είναι µία µέθοδος υπολογισµού της συνάρτησης πολυπλοκότητας µιας αναδροµής της µορφής T(n)=aT(n/b)+f(n), η οποία πολυπλοκότητας µιας αναδροµής της µορφής T(n)=aT(n/b)+f(n), η οποία γίνεται µε τα εξής βήµατα:

ΒΗΜΑΤΑ ΤΗΣ ΜΕΘΟ∆ΟΥ ΕΠΑΝΑΛΗΨΗΣ1. Κάνουµε 3 εφαρµογές της αναδροµικής σχέσης (Μέχρι να φτάσουµε στην

µορφή )

2. Εκτίµηση της σειράς που προκύπτει µετά από k επαναλήψεις (Μας καθοδηγεί ο όρος )

.......)(3

+

⋅=b

nTnT

.......)( +

⋅=kb

nTnT

nn =3. Υπολογίζουµε πότε σταµατάει η αναδροµή (Θέτω όπου n0 η συνθήκη

τερµατισµού της αναδροµής και λύνουµε ως προς k). Π.χ. αν n0=1 τότε k=logbn

4. Αντικατάσταση του k στον αναδροµικό τύπο του βήµατος 2.

5. Υπολογισµός του αθροίσµατος που προέκυψε.

0nb

nk

=

Page 35: ΠΛΗ30 ΜΑΘΗΜΑ 1.4

Γ. Μεθοδολογία Ασκήσεων1. Η αναδροµή T(n)=aT(n/b)+f(n)2. Επίλυση µε την µέθοδο επανάληψης (Βήµα 1: 3 εφαρµογές του κανόνα)

35∆ηµήτρης Ψούνης, ΠΛΗ30, Μάθηµα 1.4: Η αναδροµική σχέση T(n)=aT(n/b)+f(n)

Στο 1ο βήµα εφαρµόζουµε τον αναδροµικό κανόνα 3 φορές και κάνουµε τις πράξεις που προκύπτουν.πράξεις που προκύπτουν.

Βοηθητικά στο πρόχειρο, υπολογίζουµε τους αναδροµικούς όρους µε αντικατάσταση στην αναδροµή

ΠΑΡΑ∆ΕΙΓΜΑ:Να λύσετε την αναδροµή:

Λύση:

=

>+

=

1,1

1,3

5)(

n

nnn

TnT

αν

αν

+= n

nTnT 5)( 5)( n

nTnT +=

ΠΡΟΧΕΙΡΟ

=+++

=++

+

=

++

=+

+

=

+

=

nnnn

Tnnnn

T

nnn

Tnnn

T

nTnT

35

35

35

35

3355

35

35

3355

35)(

22

33

232

22

2

232

2

335

3

335

3

35)(

nnT

nT

nnT

nT

nTnT

+

=

+

=

+

=

Page 36: ΠΛΗ30 ΜΑΘΗΜΑ 1.4

Γ. Μεθοδολογία Ασκήσεων1. Η αναδροµή T(n)=aT(n/b)+f(n)2. Επίλυση µε την µέθοδο επανάληψης (Βήµα 2: Εκτίµηση στο βήµα k)

36∆ηµήτρης Ψούνης, ΠΛΗ30, Μάθηµα 1.4: Η αναδροµική σχέση T(n)=aT(n/b)+f(n)

Στο 2ο βήµα εκτιµάµε την σειρά που θα προκύψει µετά από k επαναλήψεις (Μας καθοδηγεί ο όρος .......)( +

⋅= nTnT(Μας καθοδηγεί ο όρος

(…συνέχεια…)

nnnnn

T

nnnn

T

kk

kk +++++

=

==

=+++

=

−−

35

35...

35

35

...

35

35

35

22

11

22

33

.......)( +

⋅=kb

TnT

3333

Page 37: ΠΛΗ30 ΜΑΘΗΜΑ 1.4

Γ. Μεθοδολογία Ασκήσεων1. Η αναδροµή T(n)=aT(n/b)+f(n)2. Επίλυση µε την µέθοδο επανάληψης (Βήµα 3: Υπολογισµός του k)

37∆ηµήτρης Ψούνης, ΠΛΗ30, Μάθηµα 1.4: Η αναδροµική σχέση T(n)=aT(n/b)+f(n)

Υπολογίζουµε πότε σταµατάει η αναδροµή (Θέτω όπου n0 η συνθήκη τερµατισµού της αναδροµής και λύνουµε ως προς k).

0nb

nk

=

τερµατισµού της αναδροµής και λύνουµε ως προς k).

(…συνέχεια…)

Η αναδροµή σταµατά όταν nk

13

⇒=

⇒=

nk

kn

n

nk

k

3

33

33

log

3loglog

3loglog

3

=⇒=⇒=

⇒=

Page 38: ΠΛΗ30 ΜΑΘΗΜΑ 1.4

Γ. Μεθοδολογία Ασκήσεων1. Η αναδροµή T(n)=aT(n/b)+f(n)2. Επίλυση µε την µέθοδο επανάληψης (Βήµα 4: Αντικατάσταση του k)

38∆ηµήτρης Ψούνης, ΠΛΗ30, Μάθηµα 1.4: Η αναδροµική σχέση T(n)=aT(n/b)+f(n)

Αντικαθιστούµε το k που βρήκαµε στην παράσταση που προέκυψε στο βήµα 2. Θα πρέπει να απαλειφθεί ο αναδροµικός όρος µε την συνθήκη 2. Θα πρέπει να απαλειφθεί ο αναδροµικός όρος µε την συνθήκη τερµατισµού της αναδροµής.

(…συνέχεια…)

Θέτοντας k=log3n στην Τ(n) έχουµε:

nnn

nnnnn

TnTn

nn

n +++++

= −−

35

35...

35

35)(

22

1log1log

loglog

3

3

3

3

( )

nnnn

nnnn

T

nnn

nnn

+++++=

+++++=

−−

−−

35

35...

355

35

35...

3515

22

1log1loglog

22

1log1loglog

3

33

3

33

Page 39: ΠΛΗ30 ΜΑΘΗΜΑ 1.4

Γ. Μεθοδολογία Ασκήσεων1. Η αναδροµή T(n)=aT(n/b)+f(n)2. Επίλυση µε την µέθοδο επανάληψης (Βήµα 5: Υπολογισµός του αθροίσµατος)

39∆ηµήτρης Ψούνης, ΠΛΗ30, Μάθηµα 1.4: Η αναδροµική σχέση T(n)=aT(n/b)+f(n)

Υπολογίζουµε το άθροισµα που προκύπτει. Στην µέθοδο επανάληψης προκύπτει πάντα γεωµετρική πρόοδος στις σταθερές που εµφανίζονται και προκύπτει πάντα γεωµετρική πρόοδος στις σταθερές που εµφανίζονται και γι’ αυτό είναι χρήσιµη η σχέση:

(…συνέχεια…)

nn

nnnn

nnnn

nT

ni

nn in

nnn

nnn

5555

35...

35

355

35

35...

355)(

33

3

33

3

33

1loglog1loglog

1log1log

22log

22

1log1loglog

=+=+=

=

+++++=

=+++++=

−−

−−

−−

∑∑

∑=

+

−−=

n

i

ni

x

xx

0

1

1

1

Άρα

nnn

nn

nn

nnn

n

n

i

inn

i

in

n

i inn

i iin

5,166,15,15166,1

166,15

66,153

55

3

55

355

33

3

3

3333

3333

loglog11log

log

1log

0

log1log

0

log

1log

0

log1log

0

log

−⋅⋅+=−

−+=

=+=

+=

=+=+=

+−

=

=

=

=

∑∑

∑∑

nnnT nn 5,166,15,15)( 33 loglog −⋅⋅+=

Page 40: ΠΛΗ30 ΜΑΘΗΜΑ 1.4

∆. ΑσκήσειςΕφαρµογή 1

Υπολογίστε µία ασυµπτωτική εκτίµηση της πολυπλοκότητας των αναδροµών:

40∆ηµήτρης Ψούνης, ΠΛΗ30, Μάθηµα 1.4: Η αναδροµική σχέση T(n)=aT(n/b)+f(n)

αναδροµών:

4

3

2

28)()

28)()

28)()

nn

TnTC

nn

TnTB

nn

TnTA

+

=

+

=

+

=

Page 41: ΠΛΗ30 ΜΑΘΗΜΑ 1.4

∆. ΑσκήσειςΕφαρµογή 2

Λύστε τις αναδροµές:

41∆ηµήτρης Ψούνης, ΠΛΗ30, Μάθηµα 1.4: Η αναδροµική σχέση T(n)=aT(n/b)+f(n)

3

2

25)()

25)()

nn

TnTB

nn

TnTA

+

=

+

=

Page 42: ΠΛΗ30 ΜΑΘΗΜΑ 1.4

∆. ΑσκήσειςΕφαρµογή 3

Υπολογίστε την ακριβή πολυπλοκότητα των αναδροµών:

42∆ηµήτρης Ψούνης, ΠΛΗ30, Μάθηµα 1.4: Η αναδροµική σχέση T(n)=aT(n/b)+f(n)

>+

=

=

>+

=

1,3

4)()

1,1

1,2

6)()

2 nnn

TnTB

n

nnn

TnTA

αν

αν

αν

=

1,1

3nαν