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

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

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

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

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

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

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

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

Divide-and-Conquer algoritmer

Divide-and-Conquer algoritmer

DM02 Kogt ned. Kokken. Januar 2006

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

Algorithms & Architectures I 2. lektion

Danmarks Tekniske Universitet

Divide-and-Conquer algoritmer

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

Danmarks Tekniske Universitet

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

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

Dynamisk programmering

Danmarks Tekniske Universitet

Dynamisk programmering

02105 Eksamensnoter. Lasse Herskind S maj Sortering 3

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.

Skriftlig Eksamen DM507 Algoritmer og Datastrukturer

Algoritmer og datastrukturer Course No Cheat Sheet May 15, 2012

Danmarks Tekniske Universitet

Danmarks Tekniske Universitet

Analyse af algoritmer

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

Divide-and-Conquer algoritmer

Skriftlig Eksamen DM507 Algoritmer og Datastrukturer

Sortering i lineær tid

Danmarks Tekniske Universitet

DM507 - Algoritmer og datastrukturer

Danmarks Tekniske Universitet

Danmarks Tekniske Universitet

Danmarks Tekniske Universitet

Dynamisk programmering

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

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

Danmarks Tekniske Universitet

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

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

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

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

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

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

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

Danmarks Tekniske Universitet

Søgning og Sortering. Philip Bille

Skriftlig Eksamen Algoritmer og Datastrukturer (DM507)

Algoritmedesign med internetanvendelser ved Keld Helsgaun

Analyse af algoritmer. Analyse af algoritmer. Analyse af algoritmer. Køretid

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

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

Sortering af information er en fundamental og central opgave.

Sortering ved fletning (merge-sort)

Prioritetskøer. Prioritetskøer. Prioritetskøer. Prioritetskøer

Prioritetskøer. Prioritetskøer. Prioritetskøer. Prioritetskøer

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

Prioritetskøer. Prioritetskøer Træer og hobe Repræsentation af hobe Algoritmer på hobe Hobkonstruktion Hobsortering. Philip Bille

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

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. Eksempel: De n tal i sorteret orden

1. Redegør for Lister, stakke og køer mht struktur og komplexitet af de relevante operationer

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

Algoritmisk geometri

Sortering. De n tal i sorteret orden. Eksempel: Kommentarer:

Sortering. Eksempel: De n tal i sorteret orden

Sortering af information er en fundamental og central opgave.

Dynamisk programmering. Flere eksempler

Dynamisk programmering. Flere eksempler

Algoritmer og Datastrukturer 1. Gerth Stølting Brodal Aarhus Universitet

Reeksamen i Diskret Matematik

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

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

Prioritetskøer og hobe. Philip Bille

BRP Sortering og søgning. Hægtede lister

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

Danmarks Tekniske Universitet

Datastrukturer (recap)

Sammenhængskomponenter i grafer

Algoritmer og Datastrukturer 1. Gerth Stølting Brodal

Rolf Fagerberg. Forår 2014

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

Introduktion. Introduktion. Algoritmer og datastrukturer. Eksempel: Maksimalt tal

Skriftlig Eksamen Algoritmer og Datastrukturer 2 (2003-ordning)

Danmarks Tekniske Universitet

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

Algoritmer og Datastrukturer 1. Gerth Stølting Brodal

Rolf Fagerberg. Forår 2015

Danmarks Tekniske Universitet

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

Merging og Hashing (del I)

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

Rolf Fagerberg. Forår 2015

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

Danmarks Tekniske Universitet

Transkript:

Algorithms and Architectures I Rasmus Løvenstein Olsen (RLO), Jimmy Jessen Nielsen (JJE) Mm3: More about recurrences - 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 Lige lidt om linked lists og arrays først Rekursionstræer (fortsat) Eksempler Kompleksiteter med rekursionstræer Master metoden Anvendelse Bevisførelse Opgaver 3

Linked lists Hvorfor linked lister? Tillader at vi kan gemme data strukturer spredt over hele vores data hukommelse Bruges ofte i forhold til Stacks Køer Associative data strukturer Single linked lists 1 2 9 9 3 7 Hvis jeg nu vil indsætte/slette et element 1 2 9 9 3 7 9 9 4

Linked lists Double linked lists 1 2 9 9 3 7 Cirkulære linked lists 1 2 9 9 3 7 5

Linked lists versus arrays Hvad er forskellen mellem linked lists og arrays? Arrays tillader tilfældig adgang i elementer Linked lists tillader kun sekventiel adgang til data elementer Linked lists er bedre end arrays til at holde dynamisk varierende data elementer Array Indeksering O(1) O(n) Linked list Indsæt/slet ved ender O(1) O(1)/O(n) Indsæt/slet i midten O(n) O(1) Persistent No Yes Lokalitet Fixed Dynamic For rekursive algoritmer er vi typisk interesseret i tilfældig indekserring af data elementer, for effektiv opdeling af opgaver... 6

Dagsorden Lige lidt om linked lists og arrays først Rekursionstræer (fortsat) Eksempler Kompleksiteter med rekursionstræer Master metoden Anvendelse Bevisførelse Opgaver 7

Generel opgaveløsning med rekursive algoritmer Initialisering af algoritmen: typisk har rekursive algoritmer behov for en statsværdi. Dette opnåes enten ved parameteroverførsel til funktionen, eller benytte en gateway funktion der ikke er rekursiv til at sætte initialværdier. Kontroller at den nuværende værdi(er) der bliver processeret passer til basis tilfældet. I det tilfælde, så processer og returner resultatet. Hvis ikke, så Omdefiner opgaven til mindre eller simplere delproblemer Kald algoritmen igen med del problemet Kombiner delresultaterne i forhold til det format svaret skal angives i Returner svaret 8

Rekursionstræer I et rekursionstræ representerer en enkelt knude, prisen for et enkelt delproblem Den totale pris for en algoritme er skabt ved summering af de enkelte niveauer og krydssummen af disse over hele træet Træerne egner sig godt til divide-and-conquer algoritmer og kan, som vi har set, danne basis for gode gæt ved bestemmelse af algoritme kompleksitet Hvis vi er omhyggelige, kan vi endog bruge rekursionstræer som endelig bevis på kompleksitetsalgoritme 9

Rekurens træ for merge sort algoritme 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 cn n 10

Et andet eksempel Den rekursive funktion T(n)=3T(n/4) + Θ(n 2 ) Antager at afrundinger ikke betyder noget... cn 2 T(n/4) T(n/4) T(n/4) cn 2 c(n/4) 2 c(n/4) 2 c(n/4) 2 T(n/16) T(n/16) T(n/16) T(n/16) T(n/16) T(n/16) T(n/16) T(n/16) T(n/16) 11

Og endelig det helt store træ cn 2 cn 2 c(n/4) 2 c(n/4) 2 c(n/4) 2 (3/16)cn 2 Log 4 (n) c(n/16) 2 c(n/16) 2 c(n/16) 2 c(n/16) 2 c(n/16) 2 c(n/16) 2 c(n/16) 2 c(n/16) 2 c(n/16) 2 (3/16) 2 cn 2 T(1) T(1) T(1) T(1) Θ(n Log3(4) ) n Log4(3) Og dermed bliver den her O(n 2 ) 12

Et lidt mere kompliceret eksempel Antag T(n) = T(n/3) + T(2n/3) + O(n) cn cn c(n/3) c(2n/3) cn Log 3/2 (n) c(n/9) c(2n/9) c(2n/9) c(4n/9) cn T(1) T(1) T(1) n Log4(3) Hvorfor bliver det ikke cnlog 3/2 (n)?! cnlog 3/2 (n) O(nLog 3/2 (n)) 13

Et lidt mere kompliceret eksempel #2 For store værdier af n, vil der uden tvivl forsvinde nogle grene i træet undervejs c(n/3) Tværsummen gennem hele forløbet er altså ikke cn, men mindskes... c(n/9) c(2n/9) T(1) c(2n/27) T(2n/27) T(4n/27) Men vi kan vise at T(n) < = dnlog 2 (n) for et godt valg af d Konklusion: Så længe d opfylder kravet d>=c/(log 2 (3)-(2/3)) 14

Dagsorden Lige lidt om linked lists og arrays først Rekursionstræer (fortsat) Eksempler Kompleksiteter med rekursionstræer Master metoden Anvendelse Bevisførelse Opgaver 15

Master metoden Vi går lige tilbage til den her: T ( n) = at ( n / b) + f ( n) Så gælder flg. teorem (Master teoremet) 1. Hvis f(n) = O(n Logb(a-ε) ), hvor ε>0, så er T(n) = Θ(n Logb(a) ) 2. Hvis f(n) = Θ(n Logb(a) ), så er T(n) = Θ(n Logb(a) Log 2 (n)) 3. Hvis f(n) = Ω(n Logb(a+ε) ), hvor ε>0, samt af(n/b)<=cf(n) for c>1 og n er et stort tal, så er T(n) = Θ(f(n)) Teoremet kan anvendes som en kogebogsopskrift til løsning af kompleksiteter af rekursive algoritmer på (næsten) samme måde som tidligere set I det følgende undersøger vi dette teorem og den praktiske anvendelse af den 16

Master metoden - hvad betyder den? I alle tilfælde sammenligner vi f(n) med n Logb(a)!! Der er dog ikke blot tale om en simpel sammenligning. For ε!= 0 skal forholdet mellem f(n) og n Logb(a) ikke bare være større/mindre, men være præcis polynomisk større/mindre!! Det betyder f.eks. i 1. at f(n) skal være asymptotisk mindre med en faktor n ε og for 3. at f(n) skal være asymptotisk større med en faktor n ε udover de andre krav. Hvis disse krav ikke overholdes, så kan Master metoden ikke anvendes! I det følgende ser vi på hvad det betyder for os i praksis 17

Et par eksempler med master metoden Betragt T(n) = 9T(n/3) + n Vi ser at a = 9, b = 3 og f(n) = n Dermed har vi at n Logb(a) = n log3(9) = Θ(n 2 ) Vi prøver med flg. f(n) = O(n Log3(9) - ε ) kan ε sættes til 1, hvilket giver f(n) = O(n) = n Dermed er T(n) ifølge Master metode #1 givet ved T(n) = Θ(n Logb(a) ) = Θ(n 2 ) 18

Et par eksempler med master metoden #2 Betragt nu T(n) = T(2n/3) +1 Her er a = 1, b = 3/2, f(n) = 1 Vi ser at n Logb(a) = n Log3/2(1) = n 0 = 1 Vi prøver med f(n) = Θ(n Logb(a) ) = Θ(n Log3/2(1) ) = Θ(n 0 ) = Θ(1) Dermed ser det ud til at algoritmen falder under Master metoden #2, og kompleksiteten bliver dermed T(n) = Θ(n Logb(a) log 2 (n)) = Θ(log 2 (n)) 19

Et par eksempler med master metoden #3 Betragt T(n) = 3T(n/4) + nlog 2 (n) Her er a=3, b=4 og f(n) = nlog 2 (n) Vi ser at n Logb(a) = n Log4(3) = O(n 0.793 ) Vi prøver nu med f(n) = Ω(n Log4(3)+ε ), og med e 0.2, får vi f(n) = Ω(n Log4(3)+ε ) = Ω(n) Bemærk at vi ikke kan opnå noget med O(n Log4(3)-ε ) eller Θ(n Log4(3)-ε ) i forhold til f(n) = nlog 2 (n)!! (n 0.75-ε er praktisk talt noget rod ) Nu mangler vi bare at bevise af(n/b) cf(n) 20

Et par eksempler med master metoden #4 Og endelig den sidste, hvad med T(n) = 2T(n/2) + nlog 2 (n) a = 2, b = 2, f(n) = nlog 2 (n) n Logb(a) = n Log2(2) = O(n) Vi får igen med samme argument som sidst f(n) = Ω(n Log4(3)+ε ), og med e 0.2, får vi f(n) = Ω(n Log4(3)+ε ) = Ω(n) Nu mangler vi bare at bevise af(n/b) cf(n) Konklusion: Blot fordi den ligner en kendt, er det ikke sikker vi kender kompleksiteten af algoritmen!! 21

Bevis for Master metoden Beviset tager udgangspunkt i den funktion vi har set før: Θ(1) T ( n) = 2T ( n / 2) + Θ( n) Beviset baserer sig på to trin 1. Analyse af metoden under antagelse af n = 1, b, b 2, b 3,... 2. Generalisering af analysen til alle positive heltal af n Første del af beviset foregår over tre lemmaer ; n ; n = 1 > 1 22

Bevis for Master metoden #1 Første lemma Lad a >= 1 og b > 1, og lad f(n) være en positiv funktion med input n = b k Så vil den rekursive funktion T ( n) Θ(1) = 2T ( n / 2) + Θ( n) ; n ; n = 1 > 1 kunne opskrives som T ( n) = Θ( n log ( a) logb ( n) 1 j a j= 0 Beviset har vi egentlig set før, men lad os lige se det grafisk vha. et rekursionstræ b ) + f ( n / b j ) 23

Rekurens træ over vores generelle funktion f(n) f(n) f(n/b) f(n/b) f(n/b) af(n/b) Log b (n) f(n/b 2 ) f(n/b 2 ) f(n/b 2 ) f(n/b 2 ) f(n/b 2 ) f(n/b 2 ) f(n/b 2 ) f(n/b 2 ) f(n/b 2 ) a 2 f(n/b 2 ) Θ(1) Θ(1) Θ(1) Θ(1) Θ(1) Θ(1) Θ(1) Θ(1) Θ(n logb(a) ) n Logb(a) Total: Θ( n log b ( a) ) + logb ( n) 1 j a j= 0 f ( n / b j ) 24

Andet lemma Lad a >= 1 og b > 1, og lad f(n) være en positiv funktion med input n = b k Betragt funktionen g(n) g( n) logb ( n) 1 j a j= 0 så kan vi sige 1. Hvis f(n) = O(n Logb(a-ε) ), hvor ε>0, så er g(n) = O(n Logb(a) ) 2. Hvis f(n) = Θ(n Logb(a) ), så er g(n) = Θ(n Logb(a) Log 2 (n)) 3. Hvis af(n/b)<=cf(n) for c<1 og for alle n>=b, så er g(n) = Θ(f(n)) = f ( n / b j ) 25

Trejde lemma Lad a >= 1 og b > 1, og lad f(n) være en positiv funktion med input n = b k Betragt igen den rekursive funktion T ( n) Θ(1) at ( n / b) + Θ( n) ; n = 1 ; n = b = i Så kan vi med grænsedefinitionerne på hhv. O, Θ og Ω bevise at 1. Hvis f(n) = O(n Logb(a-ε) ), hvor ε>0, så er T(n) = Θ(n Logb(a) ) 2. Hvis f(n) = Θ(n Logb(a) ), så er T(n) = Θ(n Logb(a) Log 2 (n)) 3. Hvis f(n) = Ω(n Logb(a+ε) ), hvor ε>0, samt af(n/b)<=cf(n) for c>1 og n er et stort tal, så er T(n) = Θ(f(n)) 26

Bevis for Master metoden #2 Vi skal nu fokusere på øvre og nedre grænser af T ( n) = at ( n / b) + f ( n) T ( n) = at ( n / b) + f ( n) 27

Rekurens træ over vores generelle funktion f(n) f(n) f(n 1 ) f(n 1 ) f(n 1 ) af(n 1 ) Log b (n) f(n 2 ) f(n 2 ) f(n 2 ) f(n 2 ) f(n 2 ) f(n 2 ) f(n 2 ) f(n 2 ) f(n 2 ) a 2 f(n 2 ) Θ(1) Θ(1) Θ(1) Θ(1) Θ(1) Θ(1) Θ(1) Θ(1) Θ(n logb(a) ) n Logb(a) n = n n ; j = 0 > j 1 / b ; j 0 Total: Θ( n log b ( a) ) + logb ( n) 1 j a j= 0 f ( n j ) 28

Andet lemma (gentaget, og dog) Lad a >= 1 og b > 1, og lad f(n) være en positiv funktion med input n = b k Betragt funktionen g(n) g( n) = logb ( n) 1 j a j= 0 f ( n så kan vi sige 1. Hvis f(n) = O(n Logb(a-ε) ), hvor ε>0, så er g(n) = O(n Logb(a) ) 2. Hvis f(n) = Θ(n Logb(a) ), så er g(n) = Θ(n Logb(a) Log 2 (n)) 3. Hvis af(n/b)<=cf(n) for c<1 og for alle n>=b, så er g(n) = Θ(f(n)) j ) 29

Opsummering af dagens lektion Vi kiggede på arrays og linked lister og deres egenskaber Hvilke egenskaber de forskellige data strukturer har Fordele, ulemper og anvendelsesområder Vi kiggede lidt mere på rekursive algoritmer Træstrukturer som analyse af algoritme kompleksitet Master metoden Anvendelse Bevisførelse 30

Og et sidste dagens lille hik Recursion See "Recursion". eller med indbygget terminering Recursion If you still don't get it, See: "Recursion". 31

Opgaver Opgave 4.2-1, 4.2-2, 4.2-3 Opgaver 4-1, 4-4, 4-6 32