Analyse av Algoritmer

Like dokumenter
LO118D Forelesning 2 (DM)

Kjøretidsanalyse. Hogne Jørgensen

Divide-and-Conquer II

Løsningsforslag for Obligatorisk Oppgave 2. Algoritmer og Datastrukturer ITF20006

Algoritme-Analyse. Asymptotisk ytelse. Sammenligning av kjøretid. Konstanter mot n. Algoritme-kompeksitet. Hva er størrelsen (n) av et problem?

Spenntrær, oppsummert: Kruskal: Traverserer ikke. Plukker kanter i hytt og vær Prim: Legger alltid til den noden som er nærmest treet

Quicksort. Lars Vidar Magnusson Kapittel 7 Quicksort Randomisert Quicksort Analyse av Quicksort

Heapsort. Lars Vidar Magnusson Kapittel 6 Heaps Heapsort Prioritetskøer

Sortering i Lineær Tid

Ninety-nine bottles. Femte forelesning. I dagens forelesning: Mest matematiske verktøy. Først: Asymptotisk notasjon. Så: Rekurrensligninger.

Divide-and-Conquer. Lars Vidar Magnusson

Introduksjon til Algoritmeanalyse

MAT1030 Diskret Matematikk

Forelesning 29: Kompleksitetsteori

Om Kurset og Analyse av Algoritmer

INF oktober Dagens tema: Uavgjørbarhet. Neste uke: NP-kompletthet

INF oktober Stein Krogdahl. Altså: Hva kan ikke gjøres raskt (med mindre P = NP)

INF Algoritmer: Design og effektivitet

Kontinuasjonseksamen i fag SIF8010 Algoritmer og Datastrukturer Torsdag 9. August 2001, kl

INF2220: Time 8 og 9 - Kompleksitet, beregnbarhet og kombinatorisk søk

Grunnleggende Grafalgoritmer

Kompleksitet. IN algoritmer og datastrukturer Plenumstime / repetisjon

Kompleksitetsanalyse Helge Hafting Opphavsrett: Forfatter og Stiftelsen TISIP Lærestoffet er utviklet for faget LO117D Algoritmiske metoder

INF Stein Krogdahl. NB: Det som under forelesningen ble kalt et vitne er nå omdøpt til et sertifikat.

Turingmaskiner en kortfattet introduksjon. Christian F Heide

Forelesning 31. Dag Normann mai Informasjon. Kompleksitetsteori

Kompleksitetsanalyse

Kompleksitet og Beregnbarhet

LØSNINGSFORSLAG, EKSAMEN I ALGORITMER OG DATASTRUKTURER (IT1105)

MAT1030 Forelesning 17

Forelesning 30: Kompleksitetsteori

Forelesning 14. Rekursjon og induksjon. Dag Normann februar Oppsummering. Oppsummering. Beregnbare funksjoner

MAT1030 Diskret matematikk

Turingmaskiner en kortfattet introduksjon. Christian F Heide

Lineære likningssystemer og matriser

Kompleksitetsteori reduksjoner

LO118D Forelesning 12 (DM)

ALGORITMER OG DATASTRUKTURER

ALGORITMER OG DATASTRUKTURER

Løsningsforslag for utvalgte oppgaver fra kapittel 3

MA1102 Grunnkurs i analyse II Vår 2019

Eksamen i tdt4120 Algoritmer og datastrukturer

Matematikk 1 (TMA4100)

Studentnummer: Side 1 av 1. Løsningsforslag, Eksamen i TDT4120 Algoritmer og datastrukturer August 2005

Eksamensoppgave i TDT4120 Algoritmer og datastrukturer

Avsluttende eksamen i IT1105/TDT4120 Algoritmer og datastrukturer

Rekurrens. MAT1030 Diskret matematikk. Rekurrens. Rekurrens. Eksempel. Forelesning 16: Rekurrenslikninger. Dag Normann

Løsningsforslag for eksamen i fag TDT4120 Algoritmer og datastrukturer Tirsdag 9. desember 2003, kl

Grådige algoritmer. Lars Vidar Magnusson Kapittel 16. Aktivitetvelgingsproblemet Huffmankoder

Hashtabeller. Lars Vidar Magnusson Kapittel 11 Direkte adressering Hashtabeller Chaining Åpen-adressering

Repetisjon og mer motivasjon. MAT1030 Diskret matematikk. Repetisjon og mer motivasjon

PG4200 Algoritmer og datastrukturer forelesning 3. Lars Sydnes 29. oktober 2014

Eksamensoppgave i TDT4120 Algoritmer og datastrukturer

Eksamenshefte TDT4120 Algoritmer og datastrukturer

Dictionary er et objekt som lagrer en samling av data. Minner litt om lister men har klare forskjeller:

Lars Vidar Magnusson

NP-komplett, hva nå?

Propabilistisk Analyse og Randomiserte Algoritmer

MAT1030 Forelesning 30

Tillegg til kapittel 11: Mer om relasjoner

Avsluttende eksamen i TDT4120 Algoritmer og datastrukturer

Eksamensoppgave i TDT4120 Algoritmer og datastrukturer

Eksamensoppgave i TDT4120 Algoritmer og datastrukturer

Repetisjon. MAT1030 Diskret Matematikk. Oppsummering. Oppsummering. Forelesning 15: Rekursjon og induksjon. Roger Antonsen

Løsningsforslag for utvalgte oppgaver fra kapittel 9

Grunnleggende Matematiske Operasjoner

Ekstra ark kan legges ved om nødvendig, men det er meningen at svarene skal få plass i rutene på oppgavearkene. Lange svar teller ikke positivt.

Algoritmer og datastrukturer Kapittel 1 - Delkapittel 1.8

Løsningsforslag for Obligatorisk Oppgave 3. Algoritmer og Datastrukturer ITF20006

Eksamensoppgave i TDT4120 Algoritmer og datastrukturer

ALGORITMER OG DATASTRUKTURER

TDT4105 Informasjonsteknologi, grunnkurs

Eksamensoppgave i TDT4120 Algoritmer og datastrukturer

Avgjørbarhet / Uavgjørbarhet

6 Determinanter TMA4110 høsten 2018

Grafteori. MAT1030 Diskret Matematikk. Repetisjon og mer motivasjon. Repetisjon og mer motivasjon. Forelesning 23: Grafteori.

INF2220: Time 12 - Sortering

MAT1030 Forelesning 23

Matriser. Kapittel 4. Definisjoner og notasjon

Forelesning 23. MAT1030 Diskret Matematikk. Repetisjon og mer motivasjon. Repetisjon og mer motivasjon. Forelesning 23: Grafteori.

Øvingsforelesning 7. Resten av kombinatorikk, litt modulusregning, rekurrenser og induksjon og MP13 eller MP18. TMA4140 Diskret Matematikk

MAT1030 Diskret Matematikk

Algoritmer - definisjon

Øvingsforelesning 6. Sorteringsalgoritmer. Kristian Veøy

Ikke lineære likninger

deeegimnoorrrsstt Sjette forelesning

INF3170 Forelesning 1

Læringsmål og pensum. Algoritmeeffektivitet

TDT4110 Informasjonsteknologi grunnkurs: Tema: Algoritmer i praksis. Professor Alf Inge Wang

Morfologi i Binære Bilder II

TMA4100 Matematikk 1, høst 2013

Mengder, relasjoner og funksjoner

Uke 4: z-transformasjonen

Forelesning 19 torsdag den 23. oktober

Øvingsforelesning 3: Splitt og hersk. Daniel Solberg

Forelesning 1 mandag den 18. august

Morfologi i Binære Bilder

MAT1030 Diskret Matematikk

Løsningsforslag øving 6

Eksamensoppgave i TDT4120 Algoritmer og datastrukturer

Transkript:

Analyse av Algoritmer Lars Vidar Magnusson 10.1.2014 Asymptotisk notasjon (kapittel 3) Kompleksitetsklasser Uløselige problem

Asymptotisk Notasjon Asymptotisk analyse innebærer å finne en algoritmes kjøretid for store nok inputstørrelser til å gjøre alt annet enn algoritmens order of growth neglisjerbart. Asymptotisk notasjon benyttes for å antyde en algoritmes kjøretid når inputstørrelsen blir stor nok. Navnet kommer fra det faktum at vi ser på grenser.

Θ-Notasjon Definisjon Gitt en funksjon g(n) så er Θ(g(n)) et sett av funksjoner Θ(g(n)) = {f (n) : det finnes positive konstanter c 1, c 2 og n 0 slik at 0 c 1 g(n) f (n) c 2 g(n) for alle n > n 0 } Siden Θ(g(n)) er et sett er det vanlig å skrive f (n) Θ(g(n)) hvis f (n) er i Θ(g(n)). Når man analyserer algoritmer er det også vanlig med f (n) = Θ(g(n)).

Θ-Notasjon Eksempel Figure : Et eksempel på en funkjson f (n) Θ(g(n))

Θ-Notasjon Vi kan se både i definisjonen av Θ-notasjon og eksempelet på forrige side at hvis f (n) Θ(g(n)) så er f (n) lik g(n) innenfor en konstant faktor. Vi sier at g(n) er en asymptotisk stram grense (asymptotically tight bound) for f (n).

Hvordan Finne Θ(f (n)) Forrige forelesning analyserte vi Insertion-Sort og kom fram til at i hverstefall er algoritmen kvadratisk. Jeg sa at vi kunne neglisjere de lavere-ordens leddene i utregningen av kjøretiden. La oss se på et eksempel som viser at 1 2 n2 3n = Θ(n 2 ). For å gjøre det må vi finne de tre positive konstantene c 1, c 2 og n 0. Dividering med n 2 gir c 1n 2 1 2 n2 3n c 2n 2 n > n 0 c 1 1 2 3 n c2 En løsning på denne ulikheten vil være å sette c 1 = 1/14, c 2 = 1/2 og n 0 = 7.

Hvordan Finne Θ(f (n)) Vi har polynomisk funksjon f (n) = an 2 + bn + c hvor a, b og c er konstanter og a > 0. Ved å neglisjere de lavere-ordens leddene ender vi opp med f (n) = Θ(n 2 ). Formelt kan vi vise at dette stemmer ved å sette c 1 = a/4, c 2 = 7a/4 og n 0 = 2max( b /a, c /a) og sjekke at det oppfyller ulikheten i definisjonen. Generelt kan vi si for alle polynomer p(n) = d i=0 a in i, hvor a i er konstanter og a d > 0, at p(n) = Θ(n d ). Alle konstanter er et 0-ordens polynom, så vi kan si at alle konstanter er Θ(n 0 ) = Θ(1).

Hvordan Finne Θ(f (n)) - Telle Løkker Å finne Θ(f (n)) når f (n) er en enkel algoritme som f.eks Insertion-Sort reduseres oppgaven til å telle løkker. En løkke gjennom hele inputstørrelsen n gir Θ(n) En løkke gjennom halve inputstørrelsen n gir Θ(n) En løkke gjennom hele inputstørrelsen n to ganger gir Θ(n) Forskjeller i konstanter kan neglisjeres! En løkke gjennom hele inputstørrelsen n med en indre løkke gjennom den samme størrelsen gir Θ(n 2 ) En løkke gjennom hele inputstørrelsen n med en indre løkke gjennom den samme størrelsen med en indre løkke gjennom den samme størrelsen gir Θ(n 3 )

Θ(Insertion-Sort) Som vi gikk gjennom forrige forelesning er Insertion-Sort i hverstefall Θ(n 2 ). Vi kan derimot ikke si at Insertion-Sort er Θ(n 2 ) for alle input siden vi vet at i bestefall er algoritmen Θ(n). Å telle løkker vil ofte bare lede til asymptotisk grense for hverstefall input.

O-Notasjon Definisjon Θ-notasjon avgrenser en funksjon både ovenfra og underfra. Når vi bare har en øvre grense benytter vi O-notasjon (big-oh). Vi sier da at vi har en asymptotisk øvre grense. O(g(n)) = {f (n) : det finnes positive konstanter c og n 0 slik at 0 f (n) cg(n) for alle n > n 0 } Hvis f (n) = Θ(g(n)) så er f (n) = O(g(n)) men ikke nødvendigvis omvendt En lineær funksjon f (n) = n er O(n 2 ) men ikke Θ(n 2 ) Θ(g(n)) O(g(n)) O-notasjon er velegnet for å telle løkker siden teknikken egner seg for å finne asymptotisk grense for hverstefall input, og siden O notasjon bare gir en øvre grense i.e. vi finner øvre grense for hverstefall input.

O-Notasjon Eksempel Figure : Et eksempel på en funkjson f (n) O(g(n))

Ω-Notasjon Definisjon Hvor O-notasjon benyttes når vi har en øvre grense, benyttes Ω-notasjon når vi har en nedre grense i.e en asymptotisk nedre grense. O(g(n)) = {f (n) : det finnes positive konstanter c og n 0 slik at 0 cg(n) f (n) for alle n > n 0 } Hvis f (n) = Θ(g(n)) så er f (n) = Ω(g(n)), men ikke nødvendigvis omvendt. En kvadratisk funksjon f (n) = n 2 er Ω(n) men ikke Θ(n) Ω-notasjon egner seg for å gi en nedre grense for kjøretid for alle input i.e. en nedre grense for bestefall input.

Ω-Notasjon Eksempel Figure : Et eksempel på en funkjson f (n) Ω(g(n))

Koblingen Mellom Θ-, O- og Ω-notasjon Vi har allerede sett på koblingen mellom Θ- og O-notasjon, og Θ- og Ω-notasjon. Her kommer et teorem som utfyller det vi allerede har etablert. Teorem For hvilke som helst to funksjoner f (n) og g(n) så har vi f (n) = Θ(n) hvis og bare hvis f (n) = O(g(n)) og f (n) = Ω(g(n)). Dette teoremet kan benyttes for å bevise asymptotisk stram grense.

o-notasjon O-notasjon gir en asymptotisk øvre grense som kan være tett (tight). o-notasjon gir en øvre grense som ikke er tett. o(g(n)) = {f (n) : for alle konstanter c > 0 det finnes en konstant n 0 > 0 slik at 0 f (n) < cg(n) for alle n > n 0 } Holder for alle konstanter c > 0 f (n) blir insignifikant i forhold til g(n) når n går mot uendelig f (n) lim n g(n) = 0

ω-notasjon Ω-notasjon gir en asymptotisk nedre grense som kan være tett (tight). ω-notasjon gir en nedre grense som ikke er tett. ω(g(n)) = {f (n) : for alle konstanter c > 0 det finnes en konstant n 0 > 0 slik at 0 cg(n) < f (n) for alle n > n 0 } Holder for alle konstanter c > 0 g(n) blir insignifikant i forhold til f (n) når n går mot uendelig f (n) lim n g(n) = f (n) ω(g(n)) hvis og bare hvis g(n) o(f (n))

Asymptotisk Notasjon Egenskaper Alle de asymptotiske notasjonene er transitive e.g. f (n) = Θ(g(n)) og g(n) = Θ(h(n)) impliserer f (n) = Θ(h(n)). De tre store er også refleksive e.g. f (n) = Θ(f (n)). Symmetri er mulig på to måter Normal symmetri e.g. f (f ) = Θ(g(n)) hvis og bare hvis g(n) = Θ(f (n)) Transponert symmetri e.g. f (n) = O(g(n)) hvis og bare hvis g(n) = Ω(f (n))

Asymptotisk Notasjon vs Sammenligning Det er vanlig å relatere asymptotisk notasjon til sammenligning mellom flyttall. f (n) = O(g(n)) er som a b f (n) = Ω(g(n)) er som a b f (n) = Θ(g(n)) er som a = b f (n) = o(g(n)) er som a < b f (n) = ω(g(n)) er som a > b

To Siste Lærdomer om Asymptotisk Notasjon For alle reelle tall a og b hvor a > 1 så har vi. n b = o(a n ) Alle polynomiske funksjoner er mindre enn selv den minste eksponensielle. For alle konstanter a > 0 så har vi lg b n = o(n a ) Alle polylogaritmiske funksjoner er mindre enn alle positive polynomiske funksjoner.

Kompleksitetsklasser Kompleksitetsklasser er relatert til asymptotisk notasjon, men her spiller også andre faktorer inn. Figure : Vanlige kompleksitetsklasser satt i et diagram

Kompleksitetsklasser Den uten tvil mest myteomspunnede kompleksitetsklassen er co-np, eller NP-komplette problem. Problem som per i dag ikke har en effektiv algoritme Hvis en effektiv algoritme oppdages vil det samtidig løse alle de andre NP-komplette problemene effektivt også [Cook(1971)]. Vi kommer i dette kurset stort sett bare til å se på problem i den indre oransje sirkelen i.e. problemer som kan løses effektivt. Disse refereres gjerne til som tractable, og de utenfor intractable.

Uløselige Problem Alan Turing er datamaskinenes far. Han definerte lenge før datamaskinene faktisk ble til hvordan en general purpose datamaskin kan fungere (se Turing machines) Ennå mer imponerende er at lenge før maskiner ble til, fant han ut hva datamaskiner aldri kan gjøre [Turing(1936-7)].

Uløselig Problem - Stoppe-problemet Det mest kjente av disse problemen er det såkalte Stoppe-problemet (Halting problem). Given a description of an arbitrary computer program, decide whether the program finishes running or continues to run forever Gitt en algoritme og en input. Vil algoritmen stoppe eller kjøre for alltid? Vanskeligheten ligger i de uendelige mulighetene

Bibliography Stephen A. Cook. The complexity of theorem-proving procedures. In Proceedings of the third annual ACM symposium on Theory of computing, STOC 71, pages 151 158, New York, NY, USA, 1971. ACM. Alan M. Turing. On computable number with an application to the Entscheidugsproblem. Proc. Amer. Math. Soc., 42(2):230 265, 1936-7.