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

Relaterede dokumenter
Analyse af algoritmer

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

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

Asymptotisk analyse af algoritmers køretider

Asymptotisk analyse af algoritmers køretider

02105 Eksamensnoter. Lasse Herskind S maj Sortering 3

Danmarks Tekniske Universitet

Grundlæggende køretidsanalyse af algoritmer

Danmarks Tekniske Universitet

Algoritmer og datastrukturer Course No Cheat Sheet May 15, 2012

Danmarks Tekniske Universitet

Grundlæggende Algoritmer og Datastrukturer. Analyseværktøjer [CLRS, 1-3.1]

Algoritmer og Datastrukturer 1

Danmarks Tekniske Universitet

Skriftlig Eksamen DM507 Algoritmer og Datastrukturer

Danmarks Tekniske Universitet

Skriftlig Eksamen DM507 Algoritmer og Datastrukturer

Divide-and-Conquer algoritmer

Danmarks Tekniske Universitet

Introduktion til datastrukturer. Introduktion til datastrukturer. Introduktion til datastrukturer. Datastrukturer

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

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

Søgning og Sortering. Philip Bille

Danmarks Tekniske Universitet

Prioritetskøer og hobe. Philip Bille

Mindste udspændende træ. Mindste udspændende træ. Introduktion. Introduktion

Dynamisk programmering

Datalogi C + Datastrukturer og Algoritmer

Sortering. Eksempel: De n tal i sorteret orden

Mindste udspændende træ

Reeksamen i Diskret Matematik

Sortering. Eksempel: De n tal i sorteret orden

Dynamisk programmering

Korteste veje. Introduktion Egenskaber for korteste veje Dijkstras algoritme Korteste veje på DAGs. Philip Bille

28 Algoritmedesign. Noter. PS1 -- Algoritmedesign

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.

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

Introduktion til DM507

Skriftlig Eksamen Algoritmer og Datastrukturer (dads)

Divide-and-Conquer algoritmer

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

Hamilton-veje og kredse:

14 Algoritmeanalyse. Noter. Algoritmebegrebet. Hvad er algoritmeanalyse? Problemstørrelse og køretid. Køretid for forskellige kontrolstrukturer.

DM507 Algoritmer og datastrukturer

Transkript:

Philip Bille Mål. At bestemme og forudsige resourceforbrug og korrekthed af algoritmer Eks. Virker min algoritme til at beregne korteste veje i grafer? Hvor hurtigt kører min algoritme til at søge efter approximativt matchende billeder i en billeddatabase? Skalerer den til 100000+ billeder? Løber min indekseringsalgoritme til DNA-sekvenser tør for hukommelse når jeg indekserer 1000 menneskergenomer? Hvor mange cache-misses genererer min sorteringsalgoritme? Køretid. Antallet af skridt som en algoritmen udfører på et input af størrelse n. Skridt. Læsning/skrivning til hukommelse x := y, A[i], i = i + 1,...) Arithmetiske/boolske operationer +,-,*,/,%,&&,, &,, ^,~) Sammenligninger <,>,=<, =>, =, ) Programflow if-then-else, while, for, goto, funktionskald,..) Terminologi. Køretid, tid, tidskompleksitet. Primært fokus. Korrekthed, køretid og pladsforbrug. Teoretisk og eksperimentiel analyse.

Køretid Værstefalds-køretid worst-case running time). Maksimal køretid over alle input af størrelse n. Bedstefalds-køretid best-case running time). Minimal køretid over alle input af størrelse n. Gennemsnitlige-køretid average-case running time). Gennemsnitlig køretid over alle input af størrelse n. Terminologi. Køretid = værstefalds-køretid medmindre vi eksplicit skriver andet). Andre varianter. Amortiseret, randomiseret, determinitisk, non-deterministisk, etc. Pladsforbrug. Antallet af lagerpladser som algoritmen bruger. Lager. Variable og pointere/referencer = 1 lagerplads. Tabel af længde k = k lagerpladser. Terminologi. Pladsforbrug, plads, pladskompleksitet, lagerplads, lager. Asymptotisk notation. Notation til at give grænser for funktioners asymptotiske vækst. Velegnet til analyse af algoritmer.

O-notation Def. = Ogn)) hvis cgn) for store n. O-notation Eks. = On 2 ) hvis cn 2 for store n. cgn) 5n 2 = On 2 )? 5n 2 5n 2 for store n. 5n 2 + 3 = On 2 )? 5n 2 + 3 6n 2 for store n. 5n 2 + 3n = On 2 )? 5n 2 + 3n 6n 2 for store n. 5n 2 + 3n 2 = On 2 )? 5n 2 + 3n 2 = 8n 2 8n 2 for store n. 5n 3 = On 2 )? 5n 3 cn 2 for alle konstanter c for store n. O-notation Def. = Ogn)) hvis cgn) for store n. Def. = Ogn)) hvis hvis der findes konstanter c, n0 > 0, således at for alle n n0 gælder at cgn) O-notation Notation. Ogn)) er en mængde af funktioner. Tænk på = som eller. Man kan skrive = On 2 ) men ikke On 2 ) =. cgn) n0

O-notation = Ogn)) hvis cgn) for store n. Opgave. Lad = 3n + 2n 3 - n 2 og hn) = 4n 2 + log n Basen på logaritmer er altid 2 medmindre andet er angivet). Hvilke af følgende udsagn er korrekte? = On) = On 3 ) = On 4 ) hn) = On 2 log n) hn) = On 2 ) hn) = O) = Ohn)) Ω-notation Def. = Ωgn)) hvis der findes konstanter c, n0 > 0, således at for alle n n0 gælder at cgn) cgn) n0 Θ-notation Def. = Θgn)) hvis er både Ogn)) og Ωgn)) Asymptotisk notation = Ogn)) hvis cgn) for store n. = Ωgn)) hvis cgn) for store n. = Θgn)) hvis er både Ogn)) og Ωgn)) c2 gn) c1 gn) Opgave. Hvilke af følgende udsagn er korrekte? log k n betegner log n) k ) n log 3 n = On 2 ) 2 n + 5n 7 = Ωn 3 ) n 2 n - 5)/5 = Θn 2 ) 4 n 1/100 = Ωn) n 3 /300 + 15 log n = Θn 3 ) 2 log n = On) log 2 n + n + 7 = Ωlog n)

Asymptotisk notation Nyttige egenskaber. Ethvert polynomie vokser proportionalt med det største led. Alle logaritmer er asymptotisk ens. a 0 + a 1 n + a 2 n 2 + + a d n d = n d ) log a n) = log b n log b a = log cn)) for alle konstanter a, b > 0 Enhver logaritme vokser langsommere end ethvert polynomie logn) =On d ) for alle d>0 Ethvert polynomie vokser langsommere end enhver eksponentialfunktion n d = Or n ) for alle d>0 og r>1 Typiske køretider for i = 1 to n < Θ1) tids operation > for i = 1 to n for j = 1 to n < Θ1) tids operation > for i = 1 to n for j = i to n < Θ1) tids operation > Typiske køretider T n) = T n/2) + 1) hvis n>1 1) hvis n =1 T n) = T n) = T n) = 2T n/2) + n) hvis n>1 1) hvis n =1 T n/2) + n) hvis n>1 1) hvis n =1 2T n/2) + 1) hvis n>1 1) hvis n =1

Eksperimentiel analyse Udfordring. Kan man eksperimentielt bestemme et godt bud på) køretiden? Fordoblingsteknik. Kør programmet for forskellige størrelser og mål køretiden manuelt eller automatisk). Kig på hvilken faktor køretiden vokser med når man fordobler størrelsen af input. Eks. Input vokser med faktor 2 Tid vokser med en faktor ~4. Algoritmen har kvadratisk køretid: Tn) = cn 2 T2n) = c2n) 2 = c2 2 n 2 = c4n 2 T2n)/Tn) = 4 n Tid i min Ratio 5000 0-10000 0.2-20000 0.6 3 40000 2.3 3.8 80000 9.4 4 160000 37.8 4