Algorithms and Architectures I Rasmus Løvenstein Olsen (RLO), Jimmy Jessen Nielsen (JJE) Mm2: Rekursive algoritmer og rekurrens - October 10, 2008

Relaterede dokumenter
Algorithms and Architectures I Rasmus Løvenstein Olsen (RLO) Mm2: Rekursive algoritmer og rekurrens - October 12, 2010

Algorithms and Architectures I Rasmus Løvenstein Olsen (RLO), Jimmy Jessen Nielsen (JJE) Mm3: More about recurrences - October 10, 2008

Mm7: A little bit more about sorting - and more times for exercises - November 4, 2008

Mm6: More sorting algorithms: Heap sort and quick sort - October 29, 2008

Mm1: Introduction to analysis and design of algorithms - October 7, 2008

Algorithms and Architectures I Rasmus Løvenstein Olsen (RLO) Mm1: Introduction to analysis and design of algorithms - October 11, 2010

Mm8: Hash tables, Hashing and binary search trees - November 7, 2008

Mm4: Greedy algorithms, backtracking and more recurrences - October 21, 2008

Algorithms & Architectures I 2. lektion

Divide-and-Conquer algoritmer

Algorithms and Architectures I Rasmus Løvenstein Olsen (RLO), Jens Myrup Pedersen (JMP) Mm4: Sorting algorithms - October 23, 2009

Divide-and-Conquer algoritmer

Dynamisk programmering

Algorithms and Architectures I Rasmus Løvenstein Olsen (RLO) Mm8: Hash tables og Hashing - November 10, 2010

Dynamisk programmering

Mm5: Counting, probabilities and randomized algorithms - Oktober 24, 2008

Divide-and-Conquer algoritmer

28 Algoritmedesign. Noter. PS1 -- Algoritmedesign

Søgning og Sortering. Søgning Linæer søgning Binær søgning Sortering Indsættelsessortering Flettesortering. Philip Bille

DM02 Kogt ned. Kokken. Januar 2006

Mm1: Introduction to analysis and design of algorithms - October 6, 2009

Danmarks Tekniske Universitet

Dynamisk programmering

Opskriv følgende funktioner efter stigende orden med hensyn til O-notationen: (logn) 2 2 n 1/n (logn) n. n 2

Danmarks Tekniske Universitet

Rekursion og dynamisk programmering

Danmarks Tekniske Universitet

Algoritmisk geometri

Søgning og Sortering. Søgning og Sortering. Søgning. Linæer søgning

Sortering ved fletning (merge-sort)

Danmarks Tekniske Universitet

Opskriv følgende funktioner efter stigende orden med hensyn til O-notationen (bemærk at log n betegner totals logaritmen): n 2 (log n) 2 2.

Søgning og Sortering. Philip Bille

Intervalsøgning. Algoritmisk geometri. Motivation for intervaltræer. Intervalsøgning. Lad der være givet en database over ansatte i en virksomhed

BRP Sortering og søgning. Hægtede lister

Sortering. Sortering ved fletning (merge-sort) Del-og-hersk. Merge-sort

Målet for disse slides er at beskrive nogle algoritmer og datastrukturer relateret til at gemme og hente data effektivt.

Opskriv følgende funktioner efter stigende orden med hensyn til O-notationen: n+logn logn (logn) 7 (3/2) n

Danmarks Tekniske Universitet

Danmarks Tekniske Universitet

Grådige algoritmer. Et generelt algoritme-konstruktionsprincip ( paradigme ) for optimeringsproblemer.

Algoritmedesign med internetanvendelser ved Keld Helsgaun

Algoritmer og datastrukturer Course No Cheat Sheet May 15, 2012

Danmarks Tekniske Universitet

02105 Eksamensnoter. Lasse Herskind S maj Sortering 3

INSTITUT FOR DATALOGI, AARHUS UNIVERSITET. Det Naturvidenskabelige Fakultet EKSAMEN. Grundkurser i Datalogi

Målet for disse slides er at diskutere nogle metoder til at gemme og hente data effektivt.

Divide-and-Conquer algoritmer

Martin Olsen. DM507 Projekt Del I. 19. marts 2012 FOTO: Colourbox

Tilgang til data. To udbredte metoder for at tilgå data: Sekventiel tilgang Random access: tilgang via ID (key, nøgle) for dataelementer.

Tilgang til data. To udbredte metoder for at tilgå data: Sekventiel tilgang Random access: tilgang via ID (også kaldet key, nøgle) for dataelementer.

Sortering i lineær tid

Danmarks Tekniske Universitet

Opskriv følgende funktioner efter stigende orden med hensyn til O-notationen: (logn) 5. 5n 2 5 logn. 2 logn

Grådige algoritmer. Et generelt algoritme-konstruktionsprincip ( paradigme ) for optimeringsproblemer.

Danmarks Tekniske Universitet

Opskriv følgende funktioner efter stigende orden med hensyn til O-notationen: n 3/2. n logn (3/2) n. 2 3logn (3/2) n

Opgave 1 (10%) I det følgende angiver log n 2-tals-logaritmen af n. Ja Nej. n+3n er O(2n)? n 6 er O(n 5 )? nlogn er O(n 2 /logn)? 4n 3 er O(3n 4 )?

Analyse af algoritmer

Grådige algoritmer. Et generelt algoritme-konstruktionsprincip ( paradigme ) for optimeringsproblemer.

Danmarks Tekniske Universitet

Opskriv følgende funktioner efter stigende orden med hensyn til O-notationen: 4 n n 3n n 2 /logn 5 n n (logn) 3n n 2 /logn 4 n n 5 n

6. december. Motivation. Internettet: Login til DIKU (med password) Handel med dankort Fortrolig besked Digital signatur

Opskriv følgende funktioner efter stigende orden med hensyn til O-notationen: 7 n 1/ log n. (log n) 4

Algoritmeanalyse. Øvre grænse for algoritme. Øvre grænse for problem. Nedre grænse for problem. Identificer essentiel(le) operation(er)

Sidste gang Motivation Definitioner Approximations-algoritme for knudeoverdækning Approximations-algoritme for TSP med trekantsulighed

Skriftlig Eksamen DM507 Algoritmer og Datastrukturer

Algoritmer og invarianter

DM507 - Algoritmer og datastrukturer

Sortering af information er en fundamental og central opgave.

Opskriv følgende funktioner efter stigende orden med hensyn til O-notationen: n 7 n 1 7 7/n. 7nlogn. 7n 7nlogn n7

Et generelt algoritme-konstruktionsprincip ( paradigme ) for optimeringsproblemer. Ideen er simpel:

Datastrukturer (recap)

INSTITUT FOR DATALOGI, AARHUS UNIVERSITET. Det Naturvidenskabelige Fakultet EKSAMEN. Grundkurser i Datalogi

INSTITUT FOR DATALOGI, AARHUS UNIVERSITET EKSAMEN. Grundkurser i Datalogi. Algoritmer og Datastrukturer 1 (2003-ordning)

Opskriv følgende funktioner efter stigende orden med hensyn til O-notationen: (logn) 7 n 1/2 2 n /n 3 2logn n 2 /logn

MODUL 8. Differensligninger. Forfattere: Michael ELMEGÅRD & Øistein WIND-WILLASSEN. Modulet er baseret på noter af Peter BEELEN.

Skriftlig Eksamen DM507 Algoritmer og Datastrukturer

Introduktion til DM507

DATALOGISK INSTITUT, AARHUS UNIVERSITET. Det Naturvidenskabelige Fakultet EKSAMEN. Grundkurser i Datalogi

DM507 Algoritmer og datastrukturer

DATALOGISK INSTITUT, AARHUS UNIVERSITET. Det Naturvidenskabelige Fakultet EKSAMEN. Grundkurser i Datalogi

DATALOGISK INSTITUT, AARHUS UNIVERSITET. Det Naturvidenskabelige Fakultet EKSAMEN. Grundkurser i Datalogi

Rolf Fagerberg. Forår 2015

Rolf Fagerberg. Forår 2015

DATALOGISK INSTITUT, AARHUS UNIVERSITET. Det Naturvidenskabelige Fakultet EKSAMEN. Grundkurser i Datalogi

DM02 opgaver ugeseddel 2

Løs til optimalitet i eksponentiel tid Find tilnærmet løsning i polynomiel tid

Rolf Fagerberg. Forår 2014

Binære søgetræer. Binære søgetræer. Nærmeste naboer. Nærmeste nabo

Opskriv følgende funktioner efter stigende orden med hensyn til O-notationen: 5n 4. logn. n 4n 5 n/logn. n n/logn 5n

INSTITUT FOR DATALOGI, AARHUS UNIVERSITET. Science and Technology EKSAMEN. Grundkurser i Datalogi. Algoritmer og Datastrukturer 1 (2003-ordning)

Danmarks Tekniske Universitet

Introduktion. Algoritmer og datastrukturer Toppunkter Algoritme 1 Algoritme 2 Algoritme 3. Philip Bille

Sortering. Eksempel: De n tal i sorteret orden

Skriftlig Eksamen Algoritmer og Datastrukturer (DM507)

Et udtryk på formena n kaldes en potens med grundtal a og eksponent n. Vi vil kun betragte potenser hvor grundtallet er positivt, altså a>0.

Danmarks Tekniske Universitet

Grådige algoritmer. Et algoritme-konstruktionsprincip ( paradigme ) for optimeringsproblemer.

Sommeren 2001, opgave 1

Transkript:

Algorithms and Architectures I Rasmus Løvenstein Olsen (RLO), Jimmy Jessen Nielsen (JJE) Mm2: Rekursive algoritmer og rekurrens - October 10, 2008 1

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) 2

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 3

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? 4

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 5

Fibonacci tal Fibonacci s tal først beskrevet af Leonardo da Pisa Tal udviklingen er beskrevet således at 3 5 2 1 1 8 F = 1, F = 1 1 2 F n = Fn + F 2; n 1 n 3 6

Merge-sort algoritmen Baserer sig på merge algoritmen vi så på sidste gang Men lad os lige genopfriske hvordan den så ud før vi ser på hvordan vi kan sortere med den vha. rekursivitet 7

Merge algoritmen grafisk representation 2 4 5 7 1 2 3 6 L 2 4 5 7 1 2 3 6 R 1 4 5 7 1 2 3 6 8 8 1 2 5 7 1 2 3 6 L 2 4 5 7 8 1 2 3 6 8 R L 2 4 5 7 8 1 2 3 6 8 R 1 2 2 7 1 2 3 6 L 2 4 5 7 8 1 2 3 6 8 R 8

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 9

Merge-sort algoritmen grafisk representation Merge-sort Merge-sort 1 2 2 3 4 5 6 7 2 4 5 7 1 2 3 6 Merge-sort 2 5 4 7 1 3 2 6 5 2 4 7 1 3 2 6 Talrække (input) 10

Merge-sort Merge-sort(A,p,r) Cost Tid 1 if p<r c 1 Θ(1) 2 then q=(p+r)/2 c 2 Θ(1) 3 Merge-Sort(A,p,q) c 3 T(n/2) 4 Merge-Sort(A,q+1,r) c 4 T(n/2) 5 Merge(A,p,q,r) c 5 Θ(n) p = start af array r = slut af array 11

Kompleksitet af merge sort algoritmen Konklusion T ( n) Kan også skrives som Θ(1) = 2T ( n / 2) + Θ( n) ; n ; n T ( n) = Θ( n log2( n)) = 1 > 1 Men hvorfor det sidste? 12

Rekurens træ cn cn cn/2 cn/2 cn cn/4 cn/4 cn/4 cn/4 cn Log 2 (n) c c c c c c c c n cn Husk at vi her antager at opgaverne kommer som n = 2 k 13

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 14

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 trin 1. Gæt en form af løsningen 2. Brug af matematisk induktion til at finde konstanter og vis at løsningen virker 15

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(nlog 2 (n)) Metoden går nu ud på at bevise T(n) cnlog 2 (n) Men er det nu alt? T ( n) = 2T ( n / 2) + n 16

Nogle potentielle problemer. Ved induktiv bevisførelse skal vi nu vise løsningen holder Først finder vi et startspunkt, f.eks. n 0 = 1 Med T(1) =1 som den grænsende funktion får vi T(n=1) cnlog 2 (n) = clog 2 (1) = 0 Men 1 0!!! Så n 0 = 1 er ikke en god basis for bevis Men hvis vi vælger et n n 0 > 1, f.eks. n = 2 og n = 3 Dermed får vi følgende krav til konstanten c T(2) = 4 2cLog 2 (2) T(3) = 5 3cLog 2 (3) Dvs. at c 2 17

Alternative gæt Hvad nu hvis vi har noget der ligner noget vi kender.? T ( n) = 2T ( n / 2 + k) + n Konklusion: Hvis vi kan omformulere et problem til noget vi kender, kan vi også nemmere sige noget om dets kompleksitet 18

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? T( n) = T( n/ 2) + T( n/ 2) + 1 19

Vær opmærksom på algoritmen Antag vores tidligere træ T ( n) = 2T ( n / 2 + k) + n 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 ) 20

Ændring af variable I nogle tilfælde ligner funktionen ikke helt, men alligevel lidt.. F.eks. T ( n) = 2T ( n) + log 2( n) Kan der gøres noget ved den så den ligner endnu mere? Prøv m = log 2 (n), og se bort fra afrundingsfunktionen T (2 Hvis vi nu siger at S(m) = T(2 m ), så får vi noget vi kender m m / 2 ) = 2T (2 ) + m S ( m) = 2T ( m / 2) + m Endelig kan vi også transformere kompleksiteten, således at T ( n) = T (2 m ) = O(Log = S( m) 2 ( n)log = O( mlog 2 (Log 2 2 ( n))) ( m)) 21

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 22

Ekspandering af rekurrens Vi starter igen med følgende kompleksitet Efter induktion kan vi nu se at T ( n) 2T ( n / 2) + c2n i i T ( n) 2 T ( n / 2 ) + ic Antag at n sker i 2 potens, såsom 2 k, dvs. n = 2 k k=log 2 (n), så kan kompleksiteten også skrives som 2 n T ( n) c1n + c2nlog2( n) 23

24 Mere generelt om den type kompleksitet Den generelle forskrift for kompleksiteten Antag at n = b k, 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) n d b n at n T T + = = = + = 1 0 ) ( ) ( k j j k j k b d a a n T

Homogene og partikulære løsninger Homogene løsning Homogene løsning T ( n) = a k k 1 j= 0 k j 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 log k (n), så vokser den partikulære løsning med log(n) x d(n) + a j d( b Partikulære løsning ) 25

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)=cn 0.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!! 26

Kogebog for multiplikative funktioner En funktion er benævnt multiplikativ hvis f(xy) = f(x)f(y) Overvej k a d( b) a 1 d( b) k 1 j k j a d( b ) = j= 0 1. a > d(b): giver at den partikulære og homogene løsning er ens, fordi (1) bliver O(a k ) ~ O(n logb(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(n Logb(d(b)) Log b (n)) og i tilfældet med d(n)=n α, bliver det til O(n α Log b (n)) 3. a < d(b): giver at den partikulære løsning dominerer, og dermed O(d(b) k ) ~ O(n logb(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)) k (1) 27

Nogle eksempler #1 Sammenlign de følgende kompleksiteter, med T(1)=1 1. T(n) = 4T(n/2) + n 2. T(n) = 4T(n/2) + n 2 3. T(n) = 4T(n/2) + n 3 I alle tre tilfælde gælder følgende: a = 4 b = 2 Den homogene løsning er n 2 pga. antagelsen om n = b k k = log b (n) gør at a k = a logb(n) = n logb(a) Log 2 (4) = 2 giver et n 2 28

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 n 2, dvs. T(n) er O(n 2 ) For 2) T(n) = 4T(n/2) + n 2 : d(n) = n 2, hvilket betyder at d(b=2) = 4 Fordi a = 4 = d(b=2), er løsningen n Logb(d(b)) Log b (n)=n 2 Log 2 (n) For 3) T(n)= 4T(n/2) + n 3 : d(n) = n 3, hvilket betyder at d(b=2) = 8 Fordi a = 4 < d(b=2), er løsningen af O(n Logb(d(b)) ) = O(n 3 ) 29

Andre funktioner Eksempel T(1) = 1 T(n) = 3T(n/2)+2n 1.5 2n 1.5 er ikke multiplikativ, men n 1.5 er (se tavlenoter) Prøv derfor med U(n) = T(n)/2 for alle n U(1) = ½ U(n) = 3U(n/2)+n 1.5 Hvis U(1) var 1, ville løsningen være n log2(3) <n 1.59 Vi kan nu vise at U(1) = ½ er mindre end n 1.59 /2, dermed O(n 1.59 ) Fordi d(b) = b 1.5 = 2.83 < a er løsningen O(a k ) = O(n 1.59 ) (a k = n Logb(a) ) 30

Et andet eksempel Betragt T(1) = 1 T(n) = 2T(n/2) + nlog b (n) Homogen løsning er n, fordi a = b = 2 Problemet er d(n) = nlog b (n), derfor skal den partikulære løsning beregnes manuelt k 1 j= 0 a j d( b k j ) = = k 1 j= 0 2 k( k + 1) log(2 Løsningen er således at den partikulære er O(nLog 2 (n)), der er større end den homogene løsning, er derfor T(n) 2 k 1 j 2 k j k j ) 31

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 32

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 Θ(1) T ( n) = 2T ( n / 2) + Θ( n) ; n ; n = 1 > 1 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 33

Og endnu en at gå hjem på http://xkcd.com/ 34

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 35

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 36