![Page 1: Mm2: Rekursive algoritmer og rekurrens - October 10, 2008kom.aau.dk/~rlo/lectures/algoAndArch08_fall_3sem/mm2_full.pdf · 3 Dagsorden • Introduktion til rekursion og rekursive algoritmer](https://reader036.vdocument.in/reader036/viewer/2022070802/5f02c49f7e708231d405ea0f/html5/thumbnails/1.jpg)
1
Algorithms and Architectures IRasmus Løvenstein Olsen (RLO) , Jimmy Jessen Nielsen (JJE)
Mm2: Rekursive algoritmer og rekurrens- October 10, 2008
![Page 2: Mm2: Rekursive algoritmer og rekurrens - October 10, 2008kom.aau.dk/~rlo/lectures/algoAndArch08_fall_3sem/mm2_full.pdf · 3 Dagsorden • Introduktion til rekursion og rekursive algoritmer](https://reader036.vdocument.in/reader036/viewer/2022070802/5f02c49f7e708231d405ea0f/html5/thumbnails/2.jpg)
2
Algorithms and Architectures II
1. Introduction to analysis and design of algorithms(RLO)2. Recursive algorithms and recurrences (RLO)3. More about recurrences (RLO)4. Greedy algorithms, backtracking and more recurrences(RLO)5. Counting, probabilities and randomized algorithms (RLO)6. More sorting algorithms: Heap sort and quick sort (RLO)7. A little bit more about sorting - and more times for exercises (RLO)8. Hash tables, Hashing and binary search trees (RLO)9. Binary search trees, red-black trees (JJE)10. Red-black trees continued + string matching (JJE)
![Page 3: Mm2: Rekursive algoritmer og rekurrens - October 10, 2008kom.aau.dk/~rlo/lectures/algoAndArch08_fall_3sem/mm2_full.pdf · 3 Dagsorden • Introduktion til rekursion og rekursive algoritmer](https://reader036.vdocument.in/reader036/viewer/2022070802/5f02c49f7e708231d405ea0f/html5/thumbnails/3.jpg)
3
Dagsorden
• Introduktion til rekursion og rekursive algoritmer• Divide and conquer taktikken• Eksempler på rekursive algoritmer
• Merge sort algoritmen• Fibonaccis tal• Hanois tårne• Factoriale tal• ….
• Substitutionsmetoden• Generelt om rekursive algoritmer• Opsummering og konklusion• Opgaver
![Page 4: Mm2: Rekursive algoritmer og rekurrens - October 10, 2008kom.aau.dk/~rlo/lectures/algoAndArch08_fall_3sem/mm2_full.pdf · 3 Dagsorden • Introduktion til rekursion og rekursive algoritmer](https://reader036.vdocument.in/reader036/viewer/2022070802/5f02c49f7e708231d405ea0f/html5/thumbnails/4.jpg)
4
Hanois tårne
• Du må kun flytte en ring ad gangen • På hver eneste pind må der aldrig være en større ring på en mindre
• Spørgsmål: • Hvordan ser algoritmen ud?• Hvor lang tid tager det?
![Page 5: Mm2: Rekursive algoritmer og rekurrens - October 10, 2008kom.aau.dk/~rlo/lectures/algoAndArch08_fall_3sem/mm2_full.pdf · 3 Dagsorden • Introduktion til rekursion og rekursive algoritmer](https://reader036.vdocument.in/reader036/viewer/2022070802/5f02c49f7e708231d405ea0f/html5/thumbnails/5.jpg)
5
Algoritme til løsning af Hanois tårne
• n-1 skiver flyttes (hvis n>1) fra pind A til pind C (ved hjælp af denne teknik).
• Skive n flyttes fra pind A til pind B. • De n-1 skiver flyttes atter (hvis n>1) fra pind C til pind B (igen ved
hjælp af denne teknik).
A B C
![Page 6: Mm2: Rekursive algoritmer og rekurrens - October 10, 2008kom.aau.dk/~rlo/lectures/algoAndArch08_fall_3sem/mm2_full.pdf · 3 Dagsorden • Introduktion til rekursion og rekursive algoritmer](https://reader036.vdocument.in/reader036/viewer/2022070802/5f02c49f7e708231d405ea0f/html5/thumbnails/6.jpg)
6
Fibonacci tal
• Fibonacci’s tal først beskrevetaf Leonardo da Pisa
• Tal udviklingen er beskrevetsåledes at
1,1 21 == FF
1 13
5
2
8
3;21 ≥+= −− nFFF nnn
![Page 7: Mm2: Rekursive algoritmer og rekurrens - October 10, 2008kom.aau.dk/~rlo/lectures/algoAndArch08_fall_3sem/mm2_full.pdf · 3 Dagsorden • Introduktion til rekursion og rekursive algoritmer](https://reader036.vdocument.in/reader036/viewer/2022070802/5f02c49f7e708231d405ea0f/html5/thumbnails/7.jpg)
7
Merge-sort algoritmen
• Baserer sig på merge algoritmen vi så på sidste gang
• Men lad os lige genopfriske hvordan den så udfør vi ser på hvordan vi kan sortere med den vha. rekursivitet
![Page 8: Mm2: Rekursive algoritmer og rekurrens - October 10, 2008kom.aau.dk/~rlo/lectures/algoAndArch08_fall_3sem/mm2_full.pdf · 3 Dagsorden • Introduktion til rekursion og rekursive algoritmer](https://reader036.vdocument.in/reader036/viewer/2022070802/5f02c49f7e708231d405ea0f/html5/thumbnails/8.jpg)
8
Merge algoritmen – grafisk representation
…… …
2 4 5 7 1 2 3 6
2 4 5 7 8 1 2 3 6 8L R 1 4 5 7 1 2 3 6
2 4 5 7 8 1 2 3 6 8L R
1 2 2 7 1 2 3 6
2 4 5 7 8 1 2 3 6 8L R
1 2 5 7 1 2 3 6
2 4 5 7 8 1 2 3 6 8L R
![Page 9: Mm2: Rekursive algoritmer og rekurrens - October 10, 2008kom.aau.dk/~rlo/lectures/algoAndArch08_fall_3sem/mm2_full.pdf · 3 Dagsorden • Introduktion til rekursion og rekursive algoritmer](https://reader036.vdocument.in/reader036/viewer/2022070802/5f02c49f7e708231d405ea0f/html5/thumbnails/9.jpg)
9
Merge algoritmen
Merge(A, p, q, r)
1 n1 = q-p+1 10 i=1
2 n2 = r-q 11 j=1
3 Make arrays L[1..n1+1], R[1..n2+1] 12 for k = p to r
4 for i = 1 to n1 13 do if L[i] ≤ R[j]
5 do L[i] = A[p+i-1] 14 then A[k] = L[i]
6 for j = 1 to n2 15 i = i+1
7 do R[j] = A[q+j] 16 else
8 L[n1+1] = Inf 17 j=j+1
9 R[n2+1] = Inf
![Page 10: Mm2: Rekursive algoritmer og rekurrens - October 10, 2008kom.aau.dk/~rlo/lectures/algoAndArch08_fall_3sem/mm2_full.pdf · 3 Dagsorden • Introduktion til rekursion og rekursive algoritmer](https://reader036.vdocument.in/reader036/viewer/2022070802/5f02c49f7e708231d405ea0f/html5/thumbnails/10.jpg)
10
Merge-sort algoritmen – grafisk representation
1 2 2 3 4 5 6 7
2 4 5 7 1 2 3 6
2 5 4 7 1 3 2 6
5 2 4 7 1 3 2 6
Merge-sort
Merge-sort
Merge-sort
Talrække (input)
![Page 11: Mm2: Rekursive algoritmer og rekurrens - October 10, 2008kom.aau.dk/~rlo/lectures/algoAndArch08_fall_3sem/mm2_full.pdf · 3 Dagsorden • Introduktion til rekursion og rekursive algoritmer](https://reader036.vdocument.in/reader036/viewer/2022070802/5f02c49f7e708231d405ea0f/html5/thumbnails/11.jpg)
11
Merge-sort
Merge-sort(A,p,r) Cost Tid
1 if p<r c1 Θ(1)
2 then q=(p+r)/2 c2 Θ(1)
3 Merge-Sort(A,p,q) c3 T(n/2)
4 Merge-Sort(A,q+1,r) c4 T(n/2)
5 Merge(A,p,q,r) c5 Θ(n)
p = start af arrayr = slut af array
![Page 12: Mm2: Rekursive algoritmer og rekurrens - October 10, 2008kom.aau.dk/~rlo/lectures/algoAndArch08_fall_3sem/mm2_full.pdf · 3 Dagsorden • Introduktion til rekursion og rekursive algoritmer](https://reader036.vdocument.in/reader036/viewer/2022070802/5f02c49f7e708231d405ea0f/html5/thumbnails/12.jpg)
12
Kompleksitet af merge – sort algoritmen
• Konklusion
• Kan også skrives som
• Men hvorfor det sidste?
⎩⎨⎧
>Θ+=Θ
=1;)()2/(21;)1(
)(nnnTn
nT
))(log()( 2 nnnT Θ=
![Page 13: Mm2: Rekursive algoritmer og rekurrens - October 10, 2008kom.aau.dk/~rlo/lectures/algoAndArch08_fall_3sem/mm2_full.pdf · 3 Dagsorden • Introduktion til rekursion og rekursive algoritmer](https://reader036.vdocument.in/reader036/viewer/2022070802/5f02c49f7e708231d405ea0f/html5/thumbnails/13.jpg)
13
Rekurens træ
Husk at vi her antager at opgaverne kommer som n = 2k
cn
cn/2 cn/2
cn/4 cn/4 cn/4 cn/4
c c c c c c c c
Log2(n)
n
cn
cn
cn
cn
![Page 14: Mm2: Rekursive algoritmer og rekurrens - October 10, 2008kom.aau.dk/~rlo/lectures/algoAndArch08_fall_3sem/mm2_full.pdf · 3 Dagsorden • Introduktion til rekursion og rekursive algoritmer](https://reader036.vdocument.in/reader036/viewer/2022070802/5f02c49f7e708231d405ea0f/html5/thumbnails/14.jpg)
14
Dagsorden
• Introduktion til rekursion og rekursive algoritmer• Divide and conquer taktikken• Eksempler på rekursive algoritmer
• Merge sort algoritmen• Fibonaccis tal• Hanois tårne• Factoriale tal• ….
• Substitutionsmetoden• Generelt om rekursive algoritmer• Opsummering og konklusion• Opgaver
![Page 15: Mm2: Rekursive algoritmer og rekurrens - October 10, 2008kom.aau.dk/~rlo/lectures/algoAndArch08_fall_3sem/mm2_full.pdf · 3 Dagsorden • Introduktion til rekursion og rekursive algoritmer](https://reader036.vdocument.in/reader036/viewer/2022070802/5f02c49f7e708231d405ea0f/html5/thumbnails/15.jpg)
15
Substitutions metoden
• Kan kun anvendes på simplere algoritmer hvor vi er i stand til at gætte en løsning, eller løsningsstruktur
• Metoden baserer sig på at udnytte gættet til at vise løsningen
• Metoden består af to trin1. Gæt en form af løsningen2. Brug af matematisk induktion til at finde konstanter og vis at
løsningen virker
![Page 16: Mm2: Rekursive algoritmer og rekurrens - October 10, 2008kom.aau.dk/~rlo/lectures/algoAndArch08_fall_3sem/mm2_full.pdf · 3 Dagsorden • Introduktion til rekursion og rekursive algoritmer](https://reader036.vdocument.in/reader036/viewer/2022070802/5f02c49f7e708231d405ea0f/html5/thumbnails/16.jpg)
16
Eksempel med gætte metoden
• Bestem øvre eller nedre grænse for en rekurrent algoritme med kompleksitet
• Et gæt vil være T(n) = O(nlog2(n))
• Metoden går nu ud på at bevise T(n) ≤ cnLog2(n)
• Men er det nu alt?
nnTnT += )2/(2)(
![Page 17: Mm2: Rekursive algoritmer og rekurrens - October 10, 2008kom.aau.dk/~rlo/lectures/algoAndArch08_fall_3sem/mm2_full.pdf · 3 Dagsorden • Introduktion til rekursion og rekursive algoritmer](https://reader036.vdocument.in/reader036/viewer/2022070802/5f02c49f7e708231d405ea0f/html5/thumbnails/17.jpg)
17
Nogle potentielle problemer….
• Ved induktiv bevisførelse skal vi nu vise løsningen holder
• Først finder vi et startspunkt, f.eks. n0 = 1• Med T(1) =1 som den grænsende funktion får vi• T(n=1) ≤ cnLog2(n) = cLog2(1) = 0• Men 1≥0 !!! Så n0 = 1 er ikke en god basis for bevis
• Men hvis vi vælger et n ≥ n0 > 1, f.eks. n = 2 og n = 3
• Dermed får vi følgende krav til konstanten c• T(2) = 4 ≤ 2cLog2(2)• T(3) = 5 ≤ 3cLog2(3)• Dvs. at c ≥2
![Page 18: Mm2: Rekursive algoritmer og rekurrens - October 10, 2008kom.aau.dk/~rlo/lectures/algoAndArch08_fall_3sem/mm2_full.pdf · 3 Dagsorden • Introduktion til rekursion og rekursive algoritmer](https://reader036.vdocument.in/reader036/viewer/2022070802/5f02c49f7e708231d405ea0f/html5/thumbnails/18.jpg)
18
Alternative gæt
• Hvad nu hvis vi har noget der ligner noget vi kender….?
• Konklusion:• Hvis vi kan omformulere et problem til noget vi kender,
kan vi også nemmere sige noget om dets kompleksitet
nknTnT ++= )2/(2)(
![Page 19: Mm2: Rekursive algoritmer og rekurrens - October 10, 2008kom.aau.dk/~rlo/lectures/algoAndArch08_fall_3sem/mm2_full.pdf · 3 Dagsorden • Introduktion til rekursion og rekursive algoritmer](https://reader036.vdocument.in/reader036/viewer/2022070802/5f02c49f7e708231d405ea0f/html5/thumbnails/19.jpg)
19
Et andet eksempel
• Eksempel
• Et gæt kunne være løsning O(n)• Så vi prøver at vise T(n) ≤ cn med et passende valg af c
• Konklusion:• Med passende valg af funktion og konstanter kan vi vise at
T(n) ≤ cn, og vi er alle glade
• Eller er vi altid det?
1)2/()2/()( ++= nTnTnT
![Page 20: Mm2: Rekursive algoritmer og rekurrens - October 10, 2008kom.aau.dk/~rlo/lectures/algoAndArch08_fall_3sem/mm2_full.pdf · 3 Dagsorden • Introduktion til rekursion og rekursive algoritmer](https://reader036.vdocument.in/reader036/viewer/2022070802/5f02c49f7e708231d405ea0f/html5/thumbnails/20.jpg)
20
Vær opmærksom på algoritmen
• Antag vores tidligere træ
• Hvad nu hvis vi gætter at T(n) ≤ cn, dvs. T(n) = O(n)?
• Konklusion:• Vær opmærksom på hvad i ved om algoritmen.
Vi kan ikke bare ”snyde” os til en simplere algoritme….(men vi kan godt snyde os selv☺)
nknTnT ++= )2/(2)(
![Page 21: Mm2: Rekursive algoritmer og rekurrens - October 10, 2008kom.aau.dk/~rlo/lectures/algoAndArch08_fall_3sem/mm2_full.pdf · 3 Dagsorden • Introduktion til rekursion og rekursive algoritmer](https://reader036.vdocument.in/reader036/viewer/2022070802/5f02c49f7e708231d405ea0f/html5/thumbnails/21.jpg)
21
Ændring af variable
• I nogle tilfælde ligner funktionen ikke helt, men alligevel lidt …..F.eks.
• Kan der gøres noget ved den så den ligner endnu mere?• Prøv m = log2(n), og se bort fra afrundingsfunktionen
• Hvis vi nu siger at S(m) = T(2m), så får vi noget vi kender
• Endelig kan vi også transformere kompleksiteten, således at
)(log)(2)( 2 nnTnT +=
mTT mm += )2(2)2( 2/
mmTmS += )2/(2)(
)))(Log(Log)(Log())(Log()()2()(
222
2
nnOmmOmSTnT m
====
![Page 22: Mm2: Rekursive algoritmer og rekurrens - October 10, 2008kom.aau.dk/~rlo/lectures/algoAndArch08_fall_3sem/mm2_full.pdf · 3 Dagsorden • Introduktion til rekursion og rekursive algoritmer](https://reader036.vdocument.in/reader036/viewer/2022070802/5f02c49f7e708231d405ea0f/html5/thumbnails/22.jpg)
22
Dagsorden
• Introduktion til rekursion og rekursive algoritmer• Divide and conquer taktikken• Eksempler på rekursive algoritmer
• Merge sort algoritmen• Fibonaccis tal• Hanois tårne• Factoriale tal• ….
• Substitutionsmetoden• Generelt om rekursive algoritmer• Opsummering og konklusion• Opgaver
![Page 23: Mm2: Rekursive algoritmer og rekurrens - October 10, 2008kom.aau.dk/~rlo/lectures/algoAndArch08_fall_3sem/mm2_full.pdf · 3 Dagsorden • Introduktion til rekursion og rekursive algoritmer](https://reader036.vdocument.in/reader036/viewer/2022070802/5f02c49f7e708231d405ea0f/html5/thumbnails/23.jpg)
23
Ekspandering af rekurrens
• Vi starter igen med følgende kompleksitet
• Efter induktion kan vi nu se at
• Antag at n sker i 2 potens, såsom 2k, dvs. n = 2k k=Log2(n), så kan kompleksiteten også skrives som
ncnTnT 2)2/(2)( +≤
nicnTnT ii2)2/(2)( +≤
)(Log)( 221 nncncnT +≤
![Page 24: Mm2: Rekursive algoritmer og rekurrens - October 10, 2008kom.aau.dk/~rlo/lectures/algoAndArch08_fall_3sem/mm2_full.pdf · 3 Dagsorden • Introduktion til rekursion og rekursive algoritmer](https://reader036.vdocument.in/reader036/viewer/2022070802/5f02c49f7e708231d405ea0f/html5/thumbnails/24.jpg)
24
Mere generelt om den type kompleksitet
• Den generelle forskrift for kompleksiteten
• Antag at n = bk, dvs. n forekommer i potenser af k med base b• Kan derfor også udskrives som en sum
• Note: For merge-sort algoritmen er a = b = 2, og d(n) = cn
)()/()(1)1(
ndbnaTnTT
+==
∑−
=
−+=1
0
)()(k
j
jkjk bdaanT
![Page 25: Mm2: Rekursive algoritmer og rekurrens - October 10, 2008kom.aau.dk/~rlo/lectures/algoAndArch08_fall_3sem/mm2_full.pdf · 3 Dagsorden • Introduktion til rekursion og rekursive algoritmer](https://reader036.vdocument.in/reader036/viewer/2022070802/5f02c49f7e708231d405ea0f/html5/thumbnails/25.jpg)
25
Homogene og partikulære løsninger
• Homogene løsning• Udtrykker prisen for at løse et delproblem• Eksakt løsning når d(n)=0 for alle n
• Partikulære løsning• Udtrykker prisen for at danne og kombinere delproblemerne• Hvis homogene løsning er større end partikulære løsning, så vokser
kompleksiteten i samme grad som den homogene løsning• Hvis den partikulære løsning vokser med mere end nε for ε>0, så vokser den
partikulære løsning med graden af d(n)• Hvis d(n) vokser med samme hastighed som den homogene løsning, eller med
maksimalt logk(n), så vokser den partikulære løsning med log(n) x d(n)
∑−
=
−+=1
0
)()(k
j
jkjk bdaanT
Homogeneløsning
Partikulæreløsning
![Page 26: Mm2: Rekursive algoritmer og rekurrens - October 10, 2008kom.aau.dk/~rlo/lectures/algoAndArch08_fall_3sem/mm2_full.pdf · 3 Dagsorden • Introduktion til rekursion og rekursive algoritmer](https://reader036.vdocument.in/reader036/viewer/2022070802/5f02c49f7e708231d405ea0f/html5/thumbnails/26.jpg)
26
Nogle flere gode råd som konsekvens
• Hvis den homogene løsning er størst vil en hurtigere måde at kombinere delproblemerne praktisk taget ingen effekt have.Derfor bør man således finde en måde at dele problemet i endnu mindre problemer, der hurtigere kan løses
• Hvis den partikulære løsning er størst vil en formindskelse i kompleksiteten af at splitte og/eller kombinere delproblemer have størst effekt. • For eksempel vil en reducering i kompleksitet af den del af algoritmen
der opdeler arrayet A i merge-sort til en nær lineær funktion, f.eks. d(n)=cn0.9, helt sikkert reducere den samlede kompleksitet.
• NB: Der gemmer sig nok en nobel pris eller lignende til den der kan opdage en merge algoritme med en sådan kompleksitet!!
![Page 27: Mm2: Rekursive algoritmer og rekurrens - October 10, 2008kom.aau.dk/~rlo/lectures/algoAndArch08_fall_3sem/mm2_full.pdf · 3 Dagsorden • Introduktion til rekursion og rekursive algoritmer](https://reader036.vdocument.in/reader036/viewer/2022070802/5f02c49f7e708231d405ea0f/html5/thumbnails/27.jpg)
27
Kogebog for multiplikative funktioner
• En funktion er benævnt multiplikativ hvis f(xy) = f(x)f(y)
• Overvej1. a > d(b): giver at den partikulære og homogene løsning er ens, fordi (1)
bliver O(ak) ~ O(nlogb(a)). I det tilfælde afhænger kompleksiteten mest af hvorledes problemet bliver opdelt, og ikke så meget af løsningen.
2. a = d(b): bliver udtrykket O(nLogb(d(b))Logb(n)) og i tilfældet med d(n)=nα, bliver det til O(nαLogb(n))
3. a < d(b): giver at den partikulære løsning dominerer, og dermed O(d(b)k) ~ O(nlogb(d(b))). I det tilfælde give det mening at se på at minimere d(n) og/eller a og b. Et specialtilfælde hvor d(n)=nα, giver en løsning O(nα) eller O(d(n))
1)(
)()(1
0 −
−=∑
−
=
−
bda
bdabdakkk
j
jkj (1)
![Page 28: Mm2: Rekursive algoritmer og rekurrens - October 10, 2008kom.aau.dk/~rlo/lectures/algoAndArch08_fall_3sem/mm2_full.pdf · 3 Dagsorden • Introduktion til rekursion og rekursive algoritmer](https://reader036.vdocument.in/reader036/viewer/2022070802/5f02c49f7e708231d405ea0f/html5/thumbnails/28.jpg)
28
Nogle eksempler #1
• Sammenlign de følgende kompleksiteter, med T(1)=11. T(n) = 4T(n/2) + n2. T(n) = 4T(n/2) + n2
3. T(n) = 4T(n/2) + n3
• I alle tre tilfælde gælder følgende:• a = 4• b = 2• Den homogene løsning er n2 pga. antagelsen om n = bk
• k = logb(n) gør at ak = alogb(n) = nlogb(a)
• Log2(4) = 2 giver et n2
![Page 29: Mm2: Rekursive algoritmer og rekurrens - October 10, 2008kom.aau.dk/~rlo/lectures/algoAndArch08_fall_3sem/mm2_full.pdf · 3 Dagsorden • Introduktion til rekursion og rekursive algoritmer](https://reader036.vdocument.in/reader036/viewer/2022070802/5f02c49f7e708231d405ea0f/html5/thumbnails/29.jpg)
29
Nogle eksempler #2
For 1) T(n) = 4T(n/2) + n:• d(n) = n betyder at d(b=2) = 2• Fordi a = 4 > d(b=2), er løsningen n2, dvs. T(n) er O(n2)
For 2) T(n) = 4T(n/2) + n2:• d(n) = n2, hvilket betyder at d(b=2) = 4• Fordi a = 4 = d(b=2), er løsningen nLogb(d(b))Logb(n)=n2Log2(n)
For 3) T(n)= 4T(n/2) + n3:• d(n) = n3, hvilket betyder at d(b=2) = 8• Fordi a = 4 < d(b=2), er løsningen af O(nLogb(d(b))) = O(n3)
![Page 30: Mm2: Rekursive algoritmer og rekurrens - October 10, 2008kom.aau.dk/~rlo/lectures/algoAndArch08_fall_3sem/mm2_full.pdf · 3 Dagsorden • Introduktion til rekursion og rekursive algoritmer](https://reader036.vdocument.in/reader036/viewer/2022070802/5f02c49f7e708231d405ea0f/html5/thumbnails/30.jpg)
30
Andre funktioner
• Eksempel• T(1) = 1• T(n) = 3T(n/2)+2n1.5
• 2n1.5 er ikke multiplikativ, men n1.5 er (se tavlenoter)
• Prøv derfor med U(n) = T(n)/2 for alle n
• U(1) = ½• U(n) = 3U(n/2)+n1.5
• Hvis U(1) var 1, ville løsningen være nlog2(3)<n1.59
• Vi kan nu vise at U(1) = ½ er mindre end n1.59/2, dermed O(n1.59)• Fordi d(b) = b1.5 = 2.83 < a er løsningen O(ak) = O(n1.59) (ak = nLogb(a))
![Page 31: Mm2: Rekursive algoritmer og rekurrens - October 10, 2008kom.aau.dk/~rlo/lectures/algoAndArch08_fall_3sem/mm2_full.pdf · 3 Dagsorden • Introduktion til rekursion og rekursive algoritmer](https://reader036.vdocument.in/reader036/viewer/2022070802/5f02c49f7e708231d405ea0f/html5/thumbnails/31.jpg)
31
Et andet eksempel
• Betragt• T(1) = 1• T(n) = 2T(n/2) + nLogb(n)
• Homogen løsning er n, fordi a = b = 2
• Problemet er d(n) = nLogb(n), derfor skal den partikulære løsning beregnes ”manuelt”
• Løsningen er således at den partikulære er O(nLog2(n)), der er større end den homogene løsning, er derfor T(n)
)1(2
)2log(22)(
1
1
0
1
0
+=
=
−
−
=
−−−
=
− ∑∑kk
bda
k
k
j
jkjkjk
j
jkj
![Page 32: Mm2: Rekursive algoritmer og rekurrens - October 10, 2008kom.aau.dk/~rlo/lectures/algoAndArch08_fall_3sem/mm2_full.pdf · 3 Dagsorden • Introduktion til rekursion og rekursive algoritmer](https://reader036.vdocument.in/reader036/viewer/2022070802/5f02c49f7e708231d405ea0f/html5/thumbnails/32.jpg)
32
Dagsorden
• Introduktion til rekursion og rekursive algoritmer• Divide and conquer taktikken• Eksempler på rekursive algoritmer
• Merge sort algoritmen• Fibonaccis tal• Hanois tårne• Factoriale tal• ….
• Substitutionsmetoden• Generelt om rekursive algoritmer• Opsummering og konklusion• Opgaver
![Page 33: Mm2: Rekursive algoritmer og rekurrens - October 10, 2008kom.aau.dk/~rlo/lectures/algoAndArch08_fall_3sem/mm2_full.pdf · 3 Dagsorden • Introduktion til rekursion og rekursive algoritmer](https://reader036.vdocument.in/reader036/viewer/2022070802/5f02c49f7e708231d405ea0f/html5/thumbnails/33.jpg)
33
Opsummering og konklusion på forelæsning
• Rekursive algoritmer bruges i forskellige situationer hvor samme principielle problem kan løses igen og igen• Hanois tårne• Fibonacci tal• Merge-sort algoritme
• Vi så på kompleksiten af rekursive algoritmer af typen
• Løsninger af denne type, baseret på• Substitution med gæt• Ændring af variable til noget der ligner tidligere• Generel omskrivning og analyse af rekursive algoritmer
• Homogene og partikulære løsninger• Omskrivninger til standard model
⎩⎨⎧
>Θ+=Θ
=1;)()2/(21;)1(
)(nnnTn
nT
![Page 34: Mm2: Rekursive algoritmer og rekurrens - October 10, 2008kom.aau.dk/~rlo/lectures/algoAndArch08_fall_3sem/mm2_full.pdf · 3 Dagsorden • Introduktion til rekursion og rekursive algoritmer](https://reader036.vdocument.in/reader036/viewer/2022070802/5f02c49f7e708231d405ea0f/html5/thumbnails/34.jpg)
34
Og endnu en at gå hjem på☺
http://xkcd.com/
![Page 35: Mm2: Rekursive algoritmer og rekurrens - October 10, 2008kom.aau.dk/~rlo/lectures/algoAndArch08_fall_3sem/mm2_full.pdf · 3 Dagsorden • Introduktion til rekursion og rekursive algoritmer](https://reader036.vdocument.in/reader036/viewer/2022070802/5f02c49f7e708231d405ea0f/html5/thumbnails/35.jpg)
35
Dagsorden
• Introduktion til rekursion og rekursive algoritmer• Divide and conquer taktikken• Eksempler på rekursive algoritmer
• Merge sort algoritmen• Fibonaccis tal• Hanois tårne• Factoriale tal• ….
• Substitutionsmetoden• Generelt om rekursive algoritmer• Opsummering og konklusion• Opgaver
![Page 36: Mm2: Rekursive algoritmer og rekurrens - October 10, 2008kom.aau.dk/~rlo/lectures/algoAndArch08_fall_3sem/mm2_full.pdf · 3 Dagsorden • Introduktion til rekursion og rekursive algoritmer](https://reader036.vdocument.in/reader036/viewer/2022070802/5f02c49f7e708231d405ea0f/html5/thumbnails/36.jpg)
36
Opgaver
• Opgaver fra Cormen• Opgave 4.1-1, 4.1-2, 4.1-3
• Opgaver fra Aho, Hopcroft og Ullman• Opgave 9.1, 9.2, 9.3, 9.4