Kjøretidsanalyse. Hogne Jørgensen

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

LO118D Forelesning 2 (DM)

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

Divide-and-Conquer II

Øvingsforelesning 3: Splitt og hersk. Daniel Solberg

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

Analyse av Algoritmer

Kompleksitetsanalyse

Algdat Eksamensforelesning. Nils Barlaug

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

Eksamenshefte TDT4120 Algoritmer og datastrukturer

Avsluttende eksamen i IT1105/TDT4120 Algoritmer og datastrukturer

Algdat Oppsummering, eksamen-ting. Jim Frode Hoff

ALGORITMER OG DATASTRUKTURER

ALGORITMER OG DATASTRUKTURER

Algdat-ninja på 60 minutter: Et galskapsprosjekt. Magnus Lie Hetland

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

ALGORITMER OG DATASTRUKTURER

n/b log b n = (lg n) a log b n = n log b a

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

MAT1030 Forelesning 17

deeegimnoorrrsstt Sjette forelesning

Løsningsforslag for eksamen i fag SIF8010 Algoritmer og datastrukturer Lørdag 9. august 2003, kl

Hva er en algoritme? INF HØSTEN 2006 INF1020. Kursansvarlige Ragnar Normann E-post: Dagens tema

Eksamensoppgave i TDT4120 Algoritmer og datastrukturer

ALGORITMER OG DATASTRUKTURER

Eksamensoppgave i TDT4120 Algoritmer og datastrukturer

Eksamen i tdt4120 Algoritmer og datastrukturer

Kondisjonstest. Algoritmer og datastrukturer. Repetisjonsoppgaver - LF. Onsdag 6. oktober 2004

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

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

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.

LO118D Forelesning 12 (DM)

MAT1030 Diskret Matematikk

Forelesning 29: Kompleksitetsteori

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

Introduksjon til Algoritmeanalyse

INF2220: Forelesning 2

Algdat - øvingsforelesning

Divide-and-Conquer. Lars Vidar Magnusson

Løsningsforslag til eksamen i fag SIF8010 Algoritmer og Datastrukturer Tirsdag 14. Desember 1999, kl

Avsluttende eksamen i TDT4120 Algoritmer og datastrukturer

Løsningsforslag for eksamen i fag SIF8010 Algoritmer og Datastrukturer Tirsdag 18. Desember 2000, kl

INF2220: Forelesning 1. Praktisk informasjon Analyse av algoritmer (kapittel 2) (Binær)trær (kapittel )

Øvingsforelesning 6. Sorteringsalgoritmer. Martin Kirkholt Melhus Basert på foiler av Kristian Veøy 30/09/14 1

Python: Rekursjon (og programmering av algoritmer) Python-bok: Kapittel 12 + teoribok om Algoritmer

Eksamensoppgave i TDT4120 Algoritmer og datastrukturer

Eksamensoppgave i TDT4120 Algoritmer og datastrukturer

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

INF Algoritmer og datastrukturer. Hva er INF2220? Algoritmer og datastrukturer

Eksamensoppgave i TDT4120 Algoritmer og datastrukturer

HØGSKOLEN I BERGEN Avdeling for ingeniørutdanning

ALGORITMER OG DATASTRUKTURER

Forelesning 30: Kompleksitetsteori

All good things. Fjortende forelesning

Avsluttende eksamen i TDT4120 Algoritmer og datastrukturer

Innføring i matematisk analyse av algoritmer

Eksamensoppgave i TDT4120 Algoritmer og datastrukturer

Longest. increasing. subsequence. Betingelser. Matrise- common. Grådig vs. DP. Forside. Intro. Fibonacci-tall. Memoisering DP

UNIVERSITETET I OSLO

Algoritmer - definisjon

Eksamen i fag SIF8010 Algoritmer og datastrukturer Lørdag 9. august 2003, kl

MAT1030 Diskret Matematikk

Algoritmer og datastrukturer Kapittel 1 - Delkapittel 1.8

Longest increasing. subsequence Betingelser. Longest. common subsequence. Knapsack Grådig vs. DP Moro: 2D-Nim Spørsmål. Forside. Repetisjon.

MAT1030 Diskret Matematikk

Rekursiv programmering

INF2220: Forelesning 1

Forelesning 4 torsdag den 28. august

Mengder, relasjoner og funksjoner

PG4200 Algoritmer og datastrukturer Forelesning 3 Rekursjon Estimering

Plenumsregning 12. Diverse oppgaver. Roger Antonsen mai Eksamen 12/6-06 Oppgave 2. Plan

INF2220: Forelesning 1

Høgskoleni østfold EKSAMEN. 4 dobbeltsidige ark med notater Lars Magnusson

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

Løsnings forslag i java In115, Våren 1998

Minimum spenntrær. Lars Vidar Magnusson Kapittel 23. Kruskal Prim

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

Filbehandling Tekstfiler

deeegimnoorrrsstt Sjette forelesning

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

UNIVERSITETET I OSLO

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

Læringsmål og pensum. Algoritmeeffektivitet

Eksamen i fag SIF8010 Algoritmer og Datastrukturer Tirsdag 14. Desember 1999, kl

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

for bare trær Andre forelesning

Rekursiv programmering

Eksamensoppgave i TDT4120 Algoritmer og datastrukturer

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

All good things. Fjortende forelesning

Øvingsforelesning 6. Sorteringsalgoritmer. Kristian Veøy

PG4200 Algoritmer og datastrukturer Forelesning 2

INF3/4130 PRØVE-EKSAMEN MED SVARFORSLAG Gjennomgås 1/ , (lille aud.)

MAT1030 Forelesning 22

Pensum: 3. utg av Cormen et al. Øvingstime: I morgen, 14:15

Avsluttende eksamen i TDT4120 Algoritmer og datastrukturer

Algoritmer Teoribok: Algorithms Kap 5 fra Brookshear & Brylow: Computer Science: An Overview

Kompleksitet. IN algoritmer og datastrukturer Plenumstime / repetisjon

Introduksjon. MAT1030 Diskret matematikk. Søkealgoritmer for grafer. En graf

Transkript:

Kjøretidsanalyse Hogne Jørgensen

Program Presentasjon/tips til Øving 5 Kompleksitetsanalyse Kahoot Rekurrensligninger Kahoot 2

Øving 5 Veibygging i Ogligogo Finne dyreste kant i minimalt spenntre Prim eller Kruskal Prim er lettest Oversett fra psudokode 3

Hvorfor kjøretidsanalyse? Trenger å vite hvor rask en algoritme er Kjøretiden bestemt av inputstørrelse Hva skjer når antall input går mot uendelig? 4

Analyse Matematisk uttrykk gitt inputstørrelsen for i in xrange(n): gjørnoe() for i in xrange(n): for j in xrange(n): gjørnoeannet() Kjøretid: f(n) = c 1 n + c 2 n 2 hvor c 1 er kjøretiden for gjørnoe() og c 2 er kjøretiden for gjørnoeannet() 5

Største ledd c 1 og c 2 er avhengig av maskinvare og kompleksiteten til gjørnoe() og gjørnoeannet() c 1 = 10, c 2 = 2 Om input er stort: 10n 2n 2 Kun n 2 er interessant og vi dropper de minste leddet Dropper 2-tallet fordi det er store forskjeller på maskinvare og for å forenkle beregninger 6

7

O- og Ω-notasjon O(g(n)) betyr at funksjonen vokser ikke raskere enn g(n) 2n 2 + 10n = O n 3 2n 2 + 10n = O n 2 Ω(g(n)) betyr at funksjonen vokser ikke saktere enn g(n) 2n 2 + 10n = Ω n 2n 2 + 10n = Ω n 2 8

Θ-notasjon Θ(g(n)) betyr at funksjonen vokser like raskt som g(n) 2n 2 + 10n = Θ(n 2 ) 687n 2 + 43n log n + 10n + 3 log n + 61 = Θ(n 2 ) 9

Formell definisjon Θ 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 } Må finne c 1, c 2 og n 0 for å formelt bevise at f(n) = Θ g n 10

Regneeksempel 2n 2 4n + 1 = Θ(n 2 ) Definisjon: 0 c 1 g n f n c 2 g(n) 0 c 1 n 2 For alle positive c 1 c 1 n 2 2n 2 4n + 1 Setter c 1 = 1 For alle n 4 (4 2 2 4 2 4 4 + 1 16 17 ) 2n 2 4n + 1 c 2 n 2 Setter c 2 = 100 For alle n 1 Altså vil c 1 = 1, c 2 = 100 og n 0 = 4 være en gyldig løsning 11

Kompleksitetsklasser Konstant: 1 Logaritmisk: log b n Lineært: n Polynomisk: n k Eksponensiell: k n Faktoriell: n! 12

Kompleksitetsklasser 1, e, 99999999 log n, ln n, log 40 n, log n 2 (log n) 2 n, n + log n 2 n log n n 2 n 3 2 n 3 n n! n n 13

14

Ting å legge merke til Grunntall for logaritmer har ingenting å si log a n = Θ(log b n) Grunntall for potenser har mye å si a n b n hvis a b Alle funksjoner kan ikke sammenlignes 1+sin n Eksempel: n og n 1 + sin n oscillerer mellom 0 og 2 O og Ω er ikke knyttet til worst-case og best-case Men de brukes ofte til å angi kjøretiden 15

16 Kahoot

Kjøretidsanalyse for rekursive algoritmer En rekursiv algoritme er en algoritme som kaller på seg selv en eller flere ganger Fire steg: 1. Velge en metrikk som indikerer inputstørrelse 2. Bestemme algoritmens operasjonsfunksjon f(n) som en funksjon av inputstørrelsen 3. Sette opp en rekurrensligning T n = T + + f n, T 1 = 4. Løse rekurrensen på en eller annen måte 17

Rekurrensregning Iterasjonsmetoder Foroversubstitusjon Bakoversubstitusjon Substitusjonsmetoden Tremetoden Masterteoremet Variabelskifte 18

Foroversubstitusjon Relativt enkel Regner T(1), T(2), T(3)... til man ser et mønster Løsningen får du ved å finne ut hva det n-te elementet blir 19

Tower of Hanoi Hvor mange trekk trenger man? 20

Tower of Hanoi def Hanoi(N,A,B,C): if N > 1: Hanoi(N-1, A, C, B) print "Flytter disk fra " + A + " til " + C Hanoi(N-1, B, A, C) else: print "Flytter disk fra " + A + " til " + C 21

Tower of Hanoi 1. Inputstørrelse: hvor mange disker som skal flyttes, N 2. Operasjonskostnaden skrive ut disk f(n) = 1 3. For hver Hanoi(N,...) kalles Hanoi(N-1,...) to ganger T N = 2T N 1 + 1, T 1 = 1 4. Løs rekurrensen! 22

Tower of Hanoi Foroversubsitusjon: T(1) = 1 T 2 = 2 T 1 + 1 = 2 + 1 = 3 T 3 = 2 T 2 + 1 = 6 + 1 = 7 T 4 = 2 T 3 + 1 = 14 + 1 = 15 Noen som ser et mønster? 23

Tower of Hanoi Rekken blir: 1,3,7,15,31,63 Dette er det samme som: 2 1 1, 2 2 1, 2 3 1 Dermed må det n-te tallet være 2 n 1 T n = 2 n 1 = Θ(2 n ) 24

Tilbakesubstitusjon Går motsatt vei fra T(n) til T(1) T n = 2T n 1 + 1 T n = 2 2T n 2 + 1 + 1 T n = 2 2 2T n 3 + 1 + 1 + 1 Ganger ut og får: T n = 2T n 1 + 1 T n = 4T n 2 + 2 + 1 T n = 8T n 3 + 4 + 2 + 1 25

Tilbakesubstitusjon Begynner å se det samme mønsteret: 1 1 + 2 = 3 1 + 2 + 4 = 7 1 + 2 + 4 + 8 = 15 2 1 1, 2 2 1,, 2 n 1 T n = 2 n 1 = Θ(2 n ) 26

Substitusjonsmetoden 1. Gjett en løsning 2. Bruk induksjon til å bevise at det stemmer Krever at du er forsiktig og presis Krever mer forståelse enn iterasjonsmetodene 27

Tremetoden Tegn rekursjonstre for T(n) Hver node har verdien f(n) Summer alle nodene i treet Eks: T n = 2T n/2 + n, T 1 = 1 Høyden til treet er lg(n) Altså vil den totale summen være: Θ(n lg n) 28

Masterteoremet Automatisk måte å finne kjøretiden til (mange) rekurrenser på formen: T n = at n/b + f n, a 1, b 1 Tilfelle Krav 1 2 Løsning f n = O n c, c < log b a T n = Θ(n log b a ) f n = Θ n c, c = log b a T n = Θ(n log b a lg n) 3 f n = Ω n c, c > log b a af n b kf n, k < 1 og n stor nok T n = Θ(f(n)) 29

Tilfelle 1 T n = 16T n 2 + 6n2 a = 16, b = 2, f n = 6n 2 c = 2 log b a = log 2 16 = 4 > c T n = Θ n log b a = Θ(n 4 ) 30

Tilfelle 2 T n = 2T n 2 + n (Samme som merge sort) a = 2, b = 2, f n = n c = 1 log b a = log 2 2 = 1 = c T n = Θ n log b a lg n = Θ(n lg n) 31

Tilfelle 3 T n = 2T n + 2 n2 a = 2, b = 2, f n = n 2 f n = Ω(n c ) hvis c = 2 log b a = log 2 2 = 1 < c Regulærbetingelse: af n b kf n, k > 1 og n stor nok 2 n2 4 kn2, velger k = 1/2 T n = Θ f n = Θ(n 2 ) 32

Variabelskifte Kan ofte være lettere å løse en rekurrens om man bytter ut variablene Bytter tilbake etter å ha regnet ferdig Kan ofte brukes for å forenkle uttrykk for å få den på masterteoremform Fin å bruke om man har kvadratrot i uttrykket 33

Variabelskifte - eksempel T n = 4T n + lg n Setter n = 2 m, altså vil: n 1/2 = 2 m/2, lg n = m T 2 m = 4T(2 m/2 ) + m Setter S m = T(2 m ) S m = 4S(m/2) + m a = 4, b = 2, f m = m m log b a = m log 2 4 = m 2 > f(m) Tilfelle 1 S m = Θ(m 2 lg m) T 2 m = Θ(m 2 lg m ) T n = Θ((lg n) 2 lg lg n ) 34