1. ΠΛΗ30
ΕΝΟΤΗΤΑ 1: ΑΝΑΛΥΣΗ ΑΛΓΟΡΙΘΜΩΝ
Μάθηµα 1.4:
Ανάλυση Αναδροµικών Αλγορίθµων
Η αναδροµική σχέση T(n)=aT(n/b)+f(n)
∆ηµήτρης Ψούνης
2. ΠΕΡΙΕΧΟΜΕΝΑ
Α. Σκοπός του Μαθήµατος
Β.Θεωρία
1. Αναδροµικοί Αλγόριθµοι
1. Ο αλγόριθµος αναζήτησης BinarySearch
2. Ο αλγόριθµος ταξινόµησης MergeSort
2. Αναδροµικές Σχέσεις
Γ. Μεθοδολογία Ασκήσεων
1. Η αναδροµή T(n)=aT(n/b)+f(n)
1. Επίλυση µε το Θεώρηµα Κυριαρχίας
2. Επίλυση µε την Μέθοδο της Επανάληψης
∆.Ασκήσεις
2∆ηµήτρης Ψούνης, ΠΛΗ30, Μάθηµα 1.4: Η αναδροµική σχέση T(n)=aT(n/b)+f(n)
3. Α. Σκοπός του Μαθήµατος
Οι στόχοι του µαθήµατος είναι:
Επίπεδο Α
Το θεώρηµα κυριαρχίας για την επίλυση της αναδροµικής σχέσης
T(n)=aT(n/b)+f(n)
Επίπεδο Β
Η µέθοδος επανάληψης για την επίλυση της αναδροµικής σχέσης
T(n)=aT(n/b)+f(n)
Επίπεδο Γ
Ο αλγόριθµος ταξινόµησης MergeSort
Ο αλγόριθµος αναζήτησης BinarySearch
3∆ηµήτρης Ψούνης, ΠΛΗ30, Μάθηµα 1.4: Η αναδροµική σχέση T(n)=aT(n/b)+f(n)
4. Β. Θεωρία
1. Αναδροµικοί Αλγόριθµοι
4∆ηµήτρης Ψούνης, ΠΛΗ30, Μάθηµα 1.4: Η αναδροµική σχέση T(n)=aT(n/b)+f(n)
Γενικότερα ένας αναδροµικός αλγόριθµος είναι ένας αλγόριθµος ο οποίος
υλοποιείται από µία αναδροµική διαδικασία.
Αναδροµική λέγεται µια διαδικασία που κατά την διάρκεια της εκτέλεσής
της καλεί τον εαυτό της.
Η γενική µορφή ενός αναδροµικού κώδικα φαίνεται στο σχήµα.
Παρατηρήστε ότι σε κάποιο σηµείο του σώµατος της διαδικασίας πρέπει να
γίνεται κλήση στην ίδια την συνάρτηση:
Θα µελετήσουµε δύο περίφηµους αναδροµικούς αλγόριθµους:
Τον BinarySearch για την αναζήτηση στοιχείου σε µία ακολουθία
Τον MergeSort για την ταξινόµηση ενός πίνακα αριθµών
procedure recursive(n)
...
...
ΚΛΗΣΗ recursive(n-1)
...
...
end procedure
5. Β. Θεωρία
1. Αναδροµικοί Αλγόριθµοι
1. Ο αλγόριθµος αναζήτησης BinarySearch (1.∆ιατύπωση και Λειτουργία)
5∆ηµήτρης Ψούνης, ΠΛΗ30, Μάθηµα 1.4: Η αναδροµική σχέση T(n)=aT(n/b)+f(n)
BinarySearch ή ∆υαδική Αναζήτηση:
Είσοδος: Ταξινόµηµένος πίνακας A, στοιχείο x
Έξοδος:
Αν το στοιχείο υπάρχει στον πίνακα, επιστρέφεται η θέση του
στοιχείου x στον πίνακα Α.
Αν το στοιχείο δεν υπάρχει στον πίνακα, επιστρέφεται 0.
Λειτουργία του αλγορίθµου: Ο αλγόριθµος εξετάζει το µεσαίο στοιχείο του
πίνακα και διακρίνει περιπτώσεις:
Αν το µεσαίο στοιχείο είναι το x, επιστρέφει την θέση του.
Αν το x είναι µικρότερο από το µεσαίο στοιχείο τότε αναδροµικά ψάχνει
στο κοµµάτι του πίνακα από την αρχή µέχρι το µεσαίο στοιχείο
Αν το x είναι µεγαλύτερο από το µεσαίο στοιχείο τότε αναδροµικά ψάχνει
στο κοµµάτι του πίνακα από το µεσαίο στοιχείο µέχρι το τέλος
6. Β. Θεωρία
1. Αναδροµικοί Αλγόριθµοι
1. Ο αλγόριθµος αναζήτησης BinarySearch (2. Ψευδοκώδικας)
6∆ηµήτρης Ψούνης, ΠΛΗ30, Μάθηµα 1.4: Η αναδροµική σχέση T(n)=aT(n/b)+f(n)
Παρακάτω φαίνεται µία υλοποίηση της BinarySearch σε ψευδογλώσσα
procedure BinarySearch(A,x,start,finish)
if start>finish then
return 0
else
middle=(start+finish) div 2
if (x==A[middle]) then
return middle
else if (x<A[middle]) then
pos=BinarySearch(A,x,start,middle-1)
return pos
else if (x>A[middle]) then
pos=BinarySearch(A,x,middle+1,finish)
return pos
end if
end if
end procedure
8. Β. Θεωρία
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η αναδροµική κλήση για να έχουµε µία
παραπάνω σύγκριση)
Έπειτα γίνεται αναδροµική κλήση για πίνακα διάστασης
Άρα αφού για διάσταση n, έχουµε χρόνο T(n), για διάσταση
θέλουµε χρόνο
Έπειτα γίνεται ακόµη 1 πράξη.
Άρα η πολυπλοκότητα δίνεται από την αναδροµική σχέση:
Ειδικά όταν n=0 τότε γίνεται 1 πράξη (κριτήριο τερµατισµού)
1
2
−
n
1
2
−
n
−
1
2
n
T
91
2
)( +
−
=
n
TnT
9. Β. Θεωρία
1. Αναδροµικοί Αλγόριθµοι
1. Ο αλγόριθµος αναζήτησης BinarySearch (4. Ανάλυση)
9∆ηµήτρης Ψούνης, ΠΛΗ30, Μάθηµα 1.4: Η αναδροµική σχέση T(n)=aT(n/b)+f(n)
Τελικά η χειρότερη περίπτωση λύνεται από την αναδροµική σχέση:
Επειδή ωστόσο αυτή η σχέση είναι ιδιαίτερα περίπλοκη για να την λύσουµε,
την προσεγγίζουµε ως εξής:
Το είναι περίπου
Άρα προκύπτει η τελική αναδροµική σχέση:
Την οποία λύνουµε µε το θεώρηµα κυριαρχίας και προκύπτει ότι η
πολυπλοκότητά της είναι:
>+
−
=
=
0,91
2
0,1
)(
n
n
T
n
nT
1
2
−
n
2
n
>+
=
=
0,9
2
0,1
)(
n
n
T
n
nT
)(log)( nnT Θ=
10. Β. Θεωρία
1. Αναδροµικοί Αλγόριθµοι
2. Ο αλγόριθµος ταξινόµησης MergeSort (1.∆ιατύπωση και Λειτουργία)
10∆ηµήτρης Ψούνης, ΠΛΗ30, Μάθηµα 1.4: Η αναδροµική σχέση T(n)=aT(n/b)+f(n)
MergeSort ή Ταξινόµηση µε Συγχώνευση:
Είσοδος: πίνακας (αριθµών) A µε n στοιχεία
Έξοδος: ταξινόµηση των στοιχείων του πίνακα σε αύξουσα σειρά
Λειτουργία του αλγορίθµου: Ο αλγόριθµος:
Ταξινοµεί το αριστερό κοµµάτι του πίνακα
Ταξινοµεί το δεξί κοµµάτι του πίνακα
Συγχωνεύει τα δύο ταξινοµηµένα πλέον κοµµάτια σε µία ταξινοµηµένη
ακολουθία
Η ταξινόµηση κάθε κοµµατιού γίνεται µε αναδροµική κλήση της ίδιας
διαδικασίας.
11. Β. Θεωρία
1. Αναδροµικοί Αλγόριθµοι
2. Ο αλγόριθµος ταξινόµησης MergeSort (2. Ψευδοκώδικας)
11∆ηµήτρης Ψούνης, ΠΛΗ30, Μάθηµα 1.4: Η αναδροµική σχέση T(n)=aT(n/b)+f(n)
Παρακάτω φαίνεται µία υλοποίηση της MergeSort σε ψευδογλώσσα
Το κριτήριο τερµατισµού της αναδροµής είναι όταν ο πίνακας έχει το πολύ 2
στοιχεία.
Γίνονται 2 αναδροµικές κλήσεις για την ταξινόµηση του αριστερού και του
δεξιού κοµµατιού αντίστοιχα.
Έπειτα γίνεται συγχώνευση των δύο ακολουθιών µε την διαδικασία Merge
procedure MergeSort(A,start, finish)
if |A|<=2 then
Ταξινόµησε τον Α
else
middle=(start+finish) div 2
A1=MergeSort(A,start,middle)
A2=MergeSort(A,middle+1,finish)
A=Merge(A1,A2)
end if
end procedure
12. Β. Θεωρία
1. Αναδροµικοί Αλγόριθµοι
2. Ο αλγόριθµος ταξινόµησης MergeSort (2. Ψευδοκώδικας)
12∆ηµήτρης Ψούνης, ΠΛΗ30, Μάθηµα 1.4: Η αναδροµική σχέση T(n)=aT(n/b)+f(n)
Η διαδικασία Merge για την συγχώνευση δύο ήδη ταξινοµηµένων πινάκων
µπορεί να υλοποιηθεί ως εξής:
Παραπάνω θεωρούµε το |Α|=n, |B|=m
procedure Merge(A,Β)
i=1, j=1, k=1
while (i<=n AND j<=m)
if (ai<bj) then
ck=ai ; i=i+1
else
ck=bj ; j=j+1
end if
k=k+1
end while
Όσα στοιχεία του Α ή του B περισσεψαν τα βάζουµε στο τέλος του C
return C
end procedure
27. Β. Θεωρία
1. Αναδροµικοί Αλγόριθµοι
2. Ο αλγόριθµος ταξινόµησης MergeSort (4. Ανάλυση)
27∆ηµήτρης Ψούνης, ΠΛΗ30, Μάθηµα 1.4: Η αναδροµική σχέση T(n)=aT(n/b)+f(n)
Η πολυπλοκότητα της συνάρτησης Merge είναι:
Άρα η πολυπλοκότητα της MergeSort είναι:
Η οποία είναι ιδαίτερα περίπλοκη γι΄αυτό θεωρούµε ότι
Άρα απλοποιείται ως:
Η οποία λύνεται από το Θ.Κυριαρχίας και προκύπτει: Τ(n)=Θ(nlogn)
>Θ+
+
==Θ
=
2),(
22
21),1(
)(
nn
n
T
n
T
nήn
nT
222
nnn
≈
=
>Θ+
==Θ
=
2),(
2
2
21),1(
)(
nn
n
T
nήn
nT
)()( mnnT +Θ=
28. Γ. Μεθοδολογία Ασκήσεων
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ης περίπτωσης του Θ.Κ.) τότε αναγκαστικά χρησιµοποιούµε την
µέθοδο επανάληψης.
29. Γ. Μεθοδολογία Ασκήσεων
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, τότε:
Β) Αν τότε:
Γ) Αν για κάποια σταθερά ε>0
και για κάποια σταθερά c<1, τότε:
)()( log ε−
= ab
nOnf
)()( nf
b
n
aTnT +
=
( )ab
nnT log
)( Θ=
)()( log ab
nnf Θ=
( )nnnT ab
log)( log
⋅Θ=
)()( log ε+
Ω= ab
nnf
)(nfc
b
n
fa ⋅≤
⋅
( ))()( nfnT Θ=
30. Γ. Μεθοδολογία Ασκήσεων
1. Η αναδροµή T(n)=aT(n/b)+f(n)
1. Επίλυση µε το θεώρηµα κυριαρχίας
30∆ηµήτρης Ψούνης, ΠΛΗ30, Μάθηµα 1.4: Η αναδροµική σχέση T(n)=aT(n/b)+f(n)
Για την επίλυση µε το θεώρηµα της κυριαρχίας εργαζόµαστε ως εξής:
Εντοπίζουµε από την εκφώνηση τα a,b και f(n)
Υπόλογίζουµε το logba.
Συγκρίνουµε ασυµπτωτικά το f(n) µε την και:
Αν είµαστε στην Α’ περίπτωση
Αν είµαστε στην B’ περίπτωση
Αν είµαστε στην Γ’ περίπτωση (ΠΡΟΣΟΧΗ! Ότι πρέπει
να ελέγξουµε και την 2η συνθήκη)
ab
nnf log
)( <
ab
nnf log
)( =
ab
nnf log
)( >
ab
nlog
31. Γ. Μεθοδολογία Ασκήσεων
1. Η αναδροµή T(n)=aT(n/b)+f(n)
1. Επίλυση µε το θεώρηµα κυριαρχίας (Α’ περίπτωση)
31∆ηµήτρης Ψούνης, ΠΛΗ30, Μάθηµα 1.4: Η αναδροµική σχέση T(n)=aT(n/b)+f(n)
Εφόσον είµαστε στην Α’ περίπτωση διατυπώνουµε τελικά την απόδειξη
σύµφωνα µε τον ορισµό:
ΠΑΡΑ∆ΕΙΓΜΑ:
Να λύσετε την αναδροµή:
Λύση:
Έχω:
Ισχύει: για κάποια σταθερά ε>0
Άρα από την Α’ περίπτωση του Θεωρήµατος Κυριαρχίας έπεται ότι:
n
n
TnT +
=
2
8)(
)()( 3 ε−
== nOnnf
)()( 3
nnT Θ=
38loglog,)(,2,8 2 ===== annfba b
32. Γ. Μεθοδολογία Ασκήσεων
1. Η αναδροµή T(n)=aT(n/b)+f(n)
1. Επίλυση µε το θεώρηµα κυριαρχίας (Β’ περίπτωση)
32∆ηµήτρης Ψούνης, ΠΛΗ30, Μάθηµα 1.4: Η αναδροµική σχέση T(n)=aT(n/b)+f(n)
Εφόσον είµαστε στην Β’ περίπτωση διατυπώνουµε τελικά την απόδειξη
σύµφωνα µε τον ορισµό:
ΠΑΡΑ∆ΕΙΓΜΑ:
Να λύσετε την αναδροµή:
Λύση:
Έχω:
Ισχύει:
Άρα από την Β’ περίπτωση του Θεωρήµατος Κυριαρχίας έπεται ότι:
2
3
9)( n
n
TnT +
=
)()( 22
nnnf Θ==
)log()( 2
nnnT Θ=
29loglog,)(,3,9 3
2
===== annfba b
33. Γ. Μεθοδολογία Ασκήσεων
1. Η αναδροµή T(n)=aT(n/b)+f(n)
1. Επίλυση µε το θεώρηµα κυριαρχίας (Γ’ περίπτωση)
33∆ηµήτρης Ψούνης, ΠΛΗ30, Μάθηµα 1.4: Η αναδροµική σχέση T(n)=aT(n/b)+f(n)
Στην Γ’ περίπτωση πρέπει να ελέγξουµε και την 2η συνθήκη, δηλαδή να
αναζητήσουµε c>0 τέτοια ώστε . Η εύρεση του εύρους τιµών για
το c γίνεται αντικαθιστώντας τα a, b και την τιµή των f(n) και f(n/b).
ΠΑΡΑ∆ΕΙΓΜΑ:
Να λύσετε την αναδροµή:
Λύση:
Έχω:
Ισχύει: για κάποια σταθερά ε>0
Ελέγχω αν υπάρχει c<1 τέτοιο ώστε:
Άρα ισχύει για ½≤c<1.
Άρα από την Γ’ περίπτωση του Θεωρήµατος Κυριαρχίας έπεται ότι:
3
2
4)( n
n
TnT +
=
)()( 23 ε+
Ω== nnnf
)()( 3
nnT Θ=
24loglog,)(,2,4 2
3
===== annfba b
)(nfc
b
n
fa ⋅≤
⋅
cccn
n
cn
n
ncf
n
fncf
b
n
af ≤⇔≤⇔≤⇔≤
⇔≤
⇔≤
2
1
8
4
2
4
2
4)(
2
4)( 3
3
3
3
3
34. Γ. Μεθοδολογία Ασκήσεων
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), η οποία
γίνεται µε τα εξής βήµατα:
ΒΗΜΑΤΑ ΤΗΣ ΜΕΘΟ∆ΟΥ ΕΠΑΝΑΛΗΨΗΣ
1. Κάνουµε 3 εφαρµογές της αναδροµικής σχέσης (Μέχρι να φτάσουµε στην
µορφή )
2. Εκτίµηση της σειράς που προκύπτει µετά από k επαναλήψεις (Μας
καθοδηγεί ο όρος )
3. Υπολογίζουµε πότε σταµατάει η αναδροµή (Θέτω όπου n0 η συνθήκη
τερµατισµού της αναδροµής και λύνουµε ως προς k). Π.χ. αν n0=1 τότε
k=logbn
4. Αντικατάσταση του k στον αναδροµικό τύπο του βήµατος 2.
5. Υπολογισµός του αθροίσµατος που προέκυψε.
.......)( 3
+
⋅=
b
n
TnT
.......)( +
⋅= k
b
n
TnT
0n
b
n
k
=
35. Γ. Μεθοδολογία Ασκήσεων
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
nn
n
T
nT
αν
αν
=+++
=++
+
=
++
=+
+
=
+
=
n
nnn
Tn
nnn
T
n
nn
Tn
nn
T
n
n
TnT
3
5
3
5
3
5
3
5
33
55
3
5
3
5
33
55
3
5)(
2
2
3
3
23
2
2
2
2
232
2
33
5
3
33
5
3
3
5)(
nn
T
n
T
nn
T
n
T
n
n
TnT
+
=
+
=
+
=
ΠΡΟΧΕΙΡΟ
36. Γ. Μεθοδολογία Ασκήσεων
1. Η αναδροµή T(n)=aT(n/b)+f(n)
2. Επίλυση µε την µέθοδο επανάληψης (Βήµα 2: Εκτίµηση στο βήµα k)
36∆ηµήτρης Ψούνης, ΠΛΗ30, Μάθηµα 1.4: Η αναδροµική σχέση T(n)=aT(n/b)+f(n)
Στο 2ο βήµα εκτιµάµε την σειρά που θα προκύψει µετά από k επαναλήψεις
(Μας καθοδηγεί ο όρος
(pσυνέχειαp)
n
nnnn
T
n
nnn
T
k
k
k
k
+++++
=
==
=+++
=
−
−
3
5
3
5...
3
5
3
5
...
3
5
3
5
3
5
2
2
1
1
2
2
3
3
.......)( +
⋅= k
b
n
TnT
37. Γ. Μεθοδολογία Ασκήσεων
1. Η αναδροµή T(n)=aT(n/b)+f(n)
2. Επίλυση µε την µέθοδο επανάληψης (Βήµα 3: Υπολογισµός του k)
37∆ηµήτρης Ψούνης, ΠΛΗ30, Μάθηµα 1.4: Η αναδροµική σχέση T(n)=aT(n/b)+f(n)
Υπολογίζουµε πότε σταµατάει η αναδροµή (Θέτω όπου n0 η συνθήκη
τερµατισµού της αναδροµής και λύνουµε ως προς k).
(pσυνέχειαp)
Η αναδροµή σταµατά όταν
0n
b
n
k
=
nk
kn
n
n
n
k
k
k
3
33
33
log
3loglog
3loglog
3
1
3
=
⇒=
⇒=
⇒=
⇒=
38. Γ. Μεθοδολογία Ασκήσεων
1. Η αναδροµή T(n)=aT(n/b)+f(n)
2. Επίλυση µε την µέθοδο επανάληψης (Βήµα 4: Αντικατάσταση του k)
38∆ηµήτρης Ψούνης, ΠΛΗ30, Μάθηµα 1.4: Η αναδροµική σχέση T(n)=aT(n/b)+f(n)
Αντικαθιστούµε το k που βρήκαµε στην παράσταση που προέκυψε στο βήµα
2. Θα πρέπει να απαλειφθεί ο αναδροµικός όρος µε την συνθήκη
τερµατισµού της αναδροµής.
(pσυνέχειαp)
Θέτοντας k=log3n στην Τ(n) έχουµε:
( )
n
nnn
n
nnn
T
n
nnnn
TnT
n
nn
n
nn
n
n
n
n
+++++=
+++++=
+++++
=
−
−
−
−
−
−
3
5
3
5...
3
55
3
5
3
5...
3
515
3
5
3
5...
3
5
3
5)(
2
2
1log
1loglog
2
2
1log
1loglog
2
2
1log
1log
log
log
3
33
3
33
3
3
3
3
39. Γ. Μεθοδολογία Ασκήσεων
1. Η αναδροµή T(n)=aT(n/b)+f(n)
2. Επίλυση µε την µέθοδο επανάληψης (Βήµα 5: Υπολογισµός του αθροίσµατος)
39∆ηµήτρης Ψούνης, ΠΛΗ30, Μάθηµα 1.4: Η αναδροµική σχέση T(n)=aT(n/b)+f(n)
Υπολογίζουµε το άθροισµα που προκύπτει. Στην µέθοδο επανάληψης
προκύπτει πάντα γεωµετρική πρόοδος στις σταθερές που εµφανίζονται και
γι’ αυτό είναι χρήσιµη η σχέση:
(pσυνέχειαp)
Άρα
nnn
nn
n
n
nnn
n
n
nnn
nT
nn
n
n
n
i
inn
i
i
n
n
i i
i
nn
i i
in
n
nn
n
nn
5,166,15,15
166,1
166,1
5
66,15
3
5
5
3
5
5
3
55
3
5...
3
5
3
55
3
5
3
5...
3
55)(
33
3
3
3333
3333
3
33
3
33
loglog
11log
log
1log
0
log1log
0
log
1log
0
log1log
0
log
1log
1log
2
2log
2
2
1log
1loglog
−⋅⋅+=
−
−
+=
=+=
+=
=+=+=
=
+++++=
=+++++=
+−
−
=
−
=
−
=
−
=
−
−
−
−
∑∑
∑∑
∑=
+
−
−
=
n
i
n
i
x
x
x
0
1
1
1
nnnT nn
5,166,15,15)( 33 loglog
−⋅⋅+=
40. ∆. Ασκήσεις
Εφαρµογή 1
Υπολογίστε µία ασυµπτωτική εκτίµηση της πολυπλοκότητας των
αναδροµών:
40∆ηµήτρης Ψούνης, ΠΛΗ30, Μάθηµα 1.4: Η αναδροµική σχέση T(n)=aT(n/b)+f(n)
4
3
2
2
8)()
2
8)()
2
8)()
n
n
TnTC
n
n
TnTB
n
n
TnTA
+
=
+
=
+
=
41. ∆. Ασκήσεις
Εφαρµογή 2
Λύστε τις αναδροµές:
41∆ηµήτρης Ψούνης, ΠΛΗ30, Μάθηµα 1.4: Η αναδροµική σχέση T(n)=aT(n/b)+f(n)
3
2
2
5)()
2
5)()
n
n
TnTB
n
n
TnTA
+
=
+
=
42. ∆. Ασκήσεις
Εφαρµογή 3
Υπολογίστε την ακριβή πολυπλοκότητα των αναδροµών:
42∆ηµήτρης Ψούνης, ΠΛΗ30, Μάθηµα 1.4: Η αναδροµική σχέση T(n)=aT(n/b)+f(n)
=
>+
=
=
>+
=
1,1
1,
3
4
)()
1,1
1,
2
6
)()
2
n
nn
n
T
nTB
n
nn
n
T
nTA
αν
αν
αν
αν
43. Παράρτηµα
1. Η µέθοδος της αντικατάστασης
3. Εντοπισµός Άνω Φράγµατος
43∆ηµήτρης Ψούνης, ΠΛΗ30, Μάθηµα 1.4: Η αναδροµική σχέση T(n)=aT(n/b)+f(n)
Στην µέθοδο της αντικατάστασης:
«Μαντεύουµε» τη λύση της αναδροµής.
Επαληθεύουµε ότι η λύση που µαντέψαµε είναι ορθή (µε µαθηµατική επαγωγή)
αντικαθιστώντας την στον ορισµό του ασυµπτωτικού συµβολισµού.
ΒΗΜΑΤΑ ΤΗΣ ΜΕΘΟ∆ΟΥ ΑΝΤΙΚΑΤΑΣΤΑΣΗΣ ( π.χ. για )
1. Μαντεύουµε (ή µας δίνεται) η λύση της αναδροµικής σχέσης. [πχ ]
2. Άνω Φράγµα: Επαληθεύουµε ότι βρίσκοντας κατάλληλα c1,n1 έτσι ώστε η
σχέση να ισχύει επαγωγικά.
3. Κάτω Φράγµα: Επαληθεύουµε ότι βρίσκοντας κατάλληλα c2,n2 έτσι ώστε η
σχέση να ισχύει επαγωγικά.
4. Συνεπώς ισχύει µε την επιλογή των c1,c2 και θέτοντας n0=max{n1,n2}
Παρατήρηση:
Η µαντεψιά της λύσης της αναδροµής:
• Είτε εντοπίζεται λόγω µεγάλης εµπειρίας στη λύση αναδροµικών σχέσεων.
• Είτε, συνηθέστερα, µας δίνεται στην εκφώνηση.
44. Παράρτηµα
1. Η µέθοδος της αντικατάστασης
2. Παράδειγµα
44∆ηµήτρης Ψούνης, ΠΛΗ30, Μάθηµα 1.4: Η αναδροµική σχέση T(n)=aT(n/b)+f(n)
ΠΑΡΑ∆ΕΙΓΜΑ 1:
Να επαληθεύσετε ότι η λύση της αναδροµής: Τ n
2 , 1
1. 0 1
είναι Τ n Θ nlogn
Λύση:
Κάτω Φράγµα: Αναζητούµε $ , 0 έτσι ώστε:
Τ n 2
% 2c '()
c log * log 2
c '() * $
% c '() 1 * $
Συνεπώς απαιτείται 1 * $ % 0, έτσι ώστε: Τ n % $ '() , άρα πρέπει $ 1, ώστε:
Τ % c '()
Για την βάση της επαγωγής:
• n 1: Τ 1 1 % $ ⋅ 1 ⋅ log 1 0. Ισχύει για ./01 $
• n 2: Τ 2 4 % $ ⋅ 2 ⋅ log 2 $ ⋅ 2. Ισχύει για $ 2
• n 3: Τ 3 10 % $ ⋅ 3 ⋅ log3 $ ⋅ 4,75. Ισχύει για $ 2,1.
Συνεπώς ισχύει για % 1, c 1.
45. Παράρτηµα
1. Η µέθοδος της αντικατάστασης
2. Παράδειγµα
45∆ηµήτρης Ψούνης, ΠΛΗ30, Μάθηµα 1.4: Η αναδροµική σχέση T(n)=aT(n/b)+f(n)
ΠΑΡΑ∆ΕΙΓΜΑ 1:
Να επαληθεύσετε ότι η λύση της αναδροµής: Τ n
2 , 1
1. 0 1
είναι Τ n Θ nlogn
Λύση(;συνέχεια;):
Άνω Φράγµα: Αναζητούµε $6, 6 0 έτσι ώστε:
Τ n 2
2c6 '()
c6 log * log 2
c6 '() * $6
c6 '() 1 * $6
Συνεπώς απαιτείται 1 * $6 0, έτσι ώστε: Τ n $6 '() , άρα πρέπει $6 % 1, ώστε:
Τ c6 '()
Για την βάση της επαγωγής:
• n 1: Τ 1 1 $6 ⋅ 1 ⋅ log 1 0. ∆εν ισχύει.
• n 2: Τ 2 4 $6 ⋅ 2 ⋅ log 2 $6 ⋅ 2. Ισχύει για $6 % 2
• 3: Τ 3 10 $6 ⋅ 3 ⋅ log 3 $6 ⋅ 4,75. Ισχύει για $6 % 2,1.
Συνεπώς ισχύει για 6 % 2, $6 % 2,1
Άρα T n Θ nlogn µε 8 % 2, c6 % 2,1, c 1.
46. Παράρτηµα
1. Η µέθοδος της αντικατάστασης
3. Εντοπισµός Άνω Φράγµατος
46∆ηµήτρης Ψούνης, ΠΛΗ30, Μάθηµα 1.4: Η αναδροµική σχέση T(n)=aT(n/b)+f(n)
Πιο συχνή είναι η εφαρµογή της µεθόδου αντικατάστασης για τον εντοπισµό άνω φράγµατος.
Θα δούµε µερικά παραδείγµατα:
ΠΑΡΑ∆ΕΙΓΜΑ 2:
Να επαληθεύσετε ότι για την αναδροµική σχέση: Τ n 2 , 1
1. 1
ισχύει Τ n O nlogn
Λύση:
Τ n 2
2$ '()
2$ '()
$ '()
$ '() * $ '()2
$ '() 1 * $
Άρα πρέπει c % 1
Για την βάση της επαγωγής:
• n 1: Τ 1 1 $ ⋅ 1 ⋅ log 1 0. ∆εν ισχύει.
• n 2: Τ 2 4 $ ⋅ 2 ⋅ log 2 $ ⋅ 2. Ισχύει για $ % 2
• n 3: Τ 3 5 $ ⋅ 3 ⋅ log 3 $ ⋅ 4,75. Ισχύει για $ % 1,05.
Συνεπώς ισχύει για 8 % 2, $ % 2.
47. Παράρτηµα
1. Η µέθοδος της αντικατάστασης
3. Εντοπισµός Άνω Φράγµατος
47∆ηµήτρης Ψούνης, ΠΛΗ30, Μάθηµα 1.4: Η αναδροµική σχέση T(n)=aT(n/b)+f(n)
ΠΑΡΑ∆ΕΙΓΜΑ 3:
Να επαληθεύσετε ότι για την αναδρ. σχέση: Τ n 1 µε Τ 1 1, ισχύει Τ n Ο n
Προσπάθεια Λύσης:
Αναζητούµε $, 8 0 έτσι ώστε:
Τ n 1
$ $ 1
$ 1
Αποτυχία επίλυσης, διότι έπρεπε Τ n cn
Λύση:
Μαντεύουμε ότι $ * F
Τ n 1
$ * F $ * F 1
$ * 2F 1
Αρκεί λοιπόν *2F 1 G 0 άρα F
6
.
Π.χ. για b=1/2 ισχύει για κάθε $ % 0.
Για την βάση της επαγωγής:
• n 1: Τ 1 1 $ ⋅ 1. Ισχύει για c % 1.
• n 2: Τ 2 3 $ ⋅ 2. Ισχύει για $ % 1,5
• 3: Τ 3 5 $ ⋅ 3. Ισχύει για $ % 1,67.
Συνεπώς ισχύει για % 1, $ % 1,67
Άρα T n Θ nlogn µε 8 % 2, c6 % 2,1, c 1.
48. Ασκήσεις
Εφαρµογή 4
Έστω αναδροµικός αλγόριθµος που για να επιλύσει ένα πρόβληµα µε n δεδοµένα, επιλύει 3
υποπροβλήµατα µε n/3 δεδοµένα και έπειτα συνδυάζει τις λύσεις σε χρόνο 12n.
Λύστε την αναδροµική σχέση που εκφράζει την πολυπλοκότητα του προβλήµατος.
Επαληθεύστε την απάντηση για τον χρόνο εκτέλεσης, µε τη µέθοδο της αντικατάστασης,
προσδιορίζοντας επακριβώς τη σταθερά n0 και εκείνες (c1, c2) του ασυµπτωτικού
συµβολισµού. Ως αρχική συνθήκη, ισχύει ότι Τ(x)=1, για κάθε 0≤x≤1
48∆ηµήτρης Ψούνης, ΠΛΗ30, Μάθηµα 1.4: Η αναδροµική σχέση T(n)=aT(n/b)+f(n)