ΠΛΗ30 ΜΑΘΗΜΑ 1.4
TRANSCRIPT
ΠΛΗ30ΕΝΟΤΗΤΑ 1: ΑΝΑΛΥΣΗ ΑΛΓΟΡΙΘΜΩΝ
Μάθηµα 1.4: Ανάλυση Αναδροµικών Αλγορίθµων
Η αναδροµική σχέση T(n)=aT(n/b)+f(n)
∆ηµήτρης Ψούνης∆ηµήτρης Ψούνης
ΠΕΡΙΕΧΟΜΕΝΑ
Α. Σκοπός του Μαθήµατος
Β.Θεωρία
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. Επίλυση µε την Μέθοδο της Επανάληψης
∆.Ασκήσεις
Α. Σκοπός του Μαθήµατος
Οι στόχοι του µαθήµατος είναι:
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
Β. Θεωρία1. Αναδροµικοί Αλγόριθµοι
4∆ηµήτρης Ψούνης, ΠΛΗ30, Μάθηµα 1.4: Η αναδροµική σχέση T(n)=aT(n/b)+f(n)
Γενικότερα ένας αναδροµικός αλγόριθµος είναι ένας αλγόριθµος ο οποίος υλοποιείται από µία αναδροµική διαδικασία.υλοποιείται από µία αναδροµική διαδικασία. Αναδροµική λέγεται µια διαδικασία που κατά την διάρκεια της εκτέλεσής
της καλεί τον εαυτό της.Η γενική µορφή ενός αναδροµικού κώδικα φαίνεται στο σχήµα.
Παρατηρήστε ότι σε κάποιο σηµείο του σώµατος της διαδικασίας πρέπει να γίνεται κλήση στην ίδια την συνάρτηση:procedure recursive(n)
...
...
Θα µελετήσουµε δύο περίφηµους αναδροµικούς αλγόριθµους: Τον BinarySearch για την αναζήτηση στοιχείου σε µία ακολουθία Τον MergeSort για την ταξινόµηση ενός πίνακα αριθµών
... ΚΛΗΣΗ recursive(n-1)
...
...end procedure
Β. Θεωρία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 είναι µεγαλύτερο από το µεσαίο στοιχείο τότε αναδροµικά ψάχνει
στο κοµµάτι του πίνακα από το µεσαίο στοιχείο µέχρι το τέλος
Β. Θεωρία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
Β. Θεωρία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
Β. Θεωρία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
Β. Θεωρία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 Θ=
Β. Θεωρία1. Αναδροµικοί Αλγόριθµοι2. Ο αλγόριθµος ταξινόµησης MergeSort (1.∆ιατύπωση και Λειτουργία)
10∆ηµήτρης Ψούνης, ΠΛΗ30, Μάθηµα 1.4: Η αναδροµική σχέση T(n)=aT(n/b)+f(n)
MergeSort ή Ταξινόµηση µε Συγχώνευση: Είσοδος: πίνακας (αριθµών) A µε n στοιχεία Είσοδος: πίνακας (αριθµών) A µε n στοιχείαΈξοδος: ταξινόµηση των στοιχείων του πίνακα σε αύξουσα σειρά
Λειτουργία του αλγορίθµου: Ο αλγόριθµος: Ταξινοµεί το αριστερό κοµµάτι του πίνακα Ταξινοµεί το δεξί κοµµάτι του πίνακα Συγχωνεύει τα δύο ταξινοµηµένα πλέον κοµµάτια σε µία ταξινοµηµένη
ακολουθίαακολουθία
Η ταξινόµηση κάθε κοµµατιού γίνεται µε αναδροµική κλήση της ίδιας διαδικασίας.
Β. Θεωρία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
Β. Θεωρία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
Β. Θεωρία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
Β. Θεωρία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
Β. Θεωρία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
Β. Θεωρία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
Β. Θεωρία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
Β. Θεωρία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
Β. Θεωρία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
Β. Θεωρία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
Β. Θεωρία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
Β. Θεωρία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
Β. Θεωρία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
Β. Θεωρία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
Β. Θεωρία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
Β. Θεωρία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
Β. Θεωρία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
Γ. Μεθοδολογία Ασκήσεων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ης περίπτωσης του Θ.Κ.) τότε αναγκαστικά χρησιµοποιούµε την µέθοδο επανάληψης.
Γ. Μεθοδολογία Ασκήσεων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 Θ=
Γ. Μεθοδολογία Ασκήσεων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)( >
Γ. Μεθοδολογία Ασκήσεων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 Θ=
Γ. Μεθοδολογία Ασκήσεων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 Θ=
Γ. Μεθοδολογία Ασκήσεων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
Γ. Μεθοδολογία Ασκήσεων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
=
Γ. Μεθοδολογία Ασκήσεων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
+
=
+
=
+
=
Γ. Μεθοδολογία Ασκήσεων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
Γ. Μεθοδολογία Ασκήσεων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
=⇒=⇒=
⇒=
Γ. Μεθοδολογία Ασκήσεων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
Γ. Μεθοδολογία Ασκήσεων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 −⋅⋅+=
∆. ΑσκήσειςΕφαρµογή 1
Υπολογίστε µία ασυµπτωτική εκτίµηση της πολυπλοκότητας των αναδροµών:
40∆ηµήτρης Ψούνης, ΠΛΗ30, Μάθηµα 1.4: Η αναδροµική σχέση T(n)=aT(n/b)+f(n)
αναδροµών:
4
3
2
28)()
28)()
28)()
nn
TnTC
nn
TnTB
nn
TnTA
+
=
+
=
+
=
∆. ΑσκήσειςΕφαρµογή 2
Λύστε τις αναδροµές:
41∆ηµήτρης Ψούνης, ΠΛΗ30, Μάθηµα 1.4: Η αναδροµική σχέση T(n)=aT(n/b)+f(n)
3
2
25)()
25)()
nn
TnTB
nn
TnTA
+
=
+
=
∆. ΑσκήσειςΕφαρµογή 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αν