Kompleksitetsanalyse



Like dokumenter
Kjøretidsanalyse. Hogne Jørgensen

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

MAT1030 Forelesning 30

Forelesning 9 mandag den 15. september

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

Algoritmer og datastrukturer Kapittel 1 - Delkapittel 1.8

Algoritmer - definisjon

Forelesning 28: Kompleksitetsteori

Kapittel 1. Potensregning

Algoritmeanalyse. (og litt om datastrukturer)

LO118D Forelesning 2 (DM)

MAT1030 Diskret matematikk. Kompleksitetsteori. Forelesning 29: Kompleksitetsteori. Dag Normann KAPITTEL 13: Kompleksitetsteori. 7.

Repetisjon: høydepunkter fra første del av MA1301-tallteori.

Uendelige rekker. Konvergens og konvergenskriterier

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

MAT1030 Forelesning 28

Høyder på elliptiske kurver og faktorisering. Kristian Gjøsteen, NTNU Oppdatert 1. november 2002

Analyse av Algoritmer

Løsningsforslag til obligatorisk oppgave i MAT 1100, H-04

S1 Eksamen våren 2009 Løsning

Algoritmer Teoribok, kapittel 5. Algorithms

EKSAMEN I EMNET Mat Grunnkurs i Matematikk I - LØSNING Mandag 15. desember 2014 Tid: 09:00 14:00

er et er et heltall. For eksempel er 2, 3, 5, 7 og 11 primtall, mens 4 = 2 2, 6 = 2 3 og 15 = 3 5 er det ikke.

STATISTIKK FRA A TIL Å

Kapittel 4: Logikk (predikatlogikk)

Forord. Molde, august Per Kristian Rekdal. Copyright c Høyskolen i Molde, 2011.

Mer om likninger og ulikheter

MAT1030 Diskret matematikk

PG4200 Algoritmer og datastrukturer Forelesning 2

Introduksjon til Algoritmeanalyse

Obligatorisk oppgave i MAT 1100, H-03 Løsningsforslag

MAT1030 Forelesning 7

MAT 1001, Høsten 2009 Oblig 2, Løsningsforslag

Repeterbarhetskrav vs antall Trails

Matematikk 2, 4MX25-10

Tiden går og alt forandres, selv om vi stopper klokka. Stoffet i dette kapittelet vil være en utømmelig kilde med tanke på eksamensoppgaver.

Fysikkolympiaden 1. runde 26. oktober 6. november 2015

Fasit og løsningsforslag til Julekalenderen for mellomtrinnet

Tall. Regneoperasjoner med naturlige tall har til alle tider fascinert både ung og gammel.

Enkel matematikk for økonomer 1. Innhold. Parenteser, brøk og potenser. Ekstranotat, februar 2015

Terminprøve Sigma 1T Våren 2008 m a t e m a t i k k

Matematisk julekalender for trinn, 2008

Tyngdekraft og luftmotstand

MAT1030 Diskret Matematikk

Forelesning 29: Kompleksitetsteori

Taylor-polynom. Frå læreboka Kalkulus med én og ere variabler"av Lorentzen, Hole og Lindstrøm, Universitetsforlaget 2003

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

Innledning. Mål. for opplæringen er at eleven skal kunne

Forelesning 22 MA0003, Mandag 5/ Invertible matriser Lay: 2.2

SKOLEEKSAMEN I. SOS4010 Kvalitativ metode. 19. oktober timer

Analyse og metodikk i Calculus 1

Innføring i matematisk analyse av algoritmer

NITH PG4200 Algoritmer og datastrukturer Løsningsforslag Eksamen 4.juni 2013

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

Sigbjørn Hals. Nedenfor har vi tegnet noen grafer til likningen y = C, der C varierer fra -2 til 3, med en økning på 1.

Preken 14. august s i treenighet Kapellan Elisabeth Lund. Tekst: Joh. 15, 13-17

Løsningsforslag til 1. del av Del - EKSAMEN

Forelesning 30: Kompleksitetsteori

DEL 1 (Uten hjelpemidler, leveres etter 3 timer) 3(a + 1) 4(1 a) (6a 1) = 3a a 6a + 1

Befolkningsvekst. Nico Keilman. Demografi grunnemne ECON 1710 Høst 2013

PRIMTALL FRA A TIL Å

Løsning eksamen R1 høsten 2009

Nøkkelspørsmål til eller i etterkant av introduksjonsoppgaven:

Et løst og et par uløste matematiske problem

Mesteparten av kodingen av Donkey Kong skal du gjøre selv. Underveis vil du lære hvordan du lager et enkelt plattform-spill i Scratch.

Derivasjon ekstremverdier Forelesning i Matematikk 1 TMA4100

Hypotesetesting. Notat til STK1110. Ørnulf Borgan Matematisk institutt Universitetet i Oslo. September 2007

Under noen av oppgavene har jeg lagt inn et hint til hvordan dere kan går frem for å løse dem! Send meg en mail om dere finner noen feil!

ALGORITMER OG DATASTRUKTURER

a) Ved avlesning på graf får man. Dermed er hastighet ved tid sekund lik.

Go with the. Niende forelesning. Mye matematikk i boka her ikke så komplisert, men mye å holde styr på.

Eksamen REA3026 Matematikk S1. Nynorsk/Bokmål

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

ECON2200: Oppgaver til plenumsregninger

Tallet 0,04 kaller vi prosentfaktoren til 4 %. Prosentfaktoren til 7 % er 0,07, og prosentfaktoren til 12,5 % er 0,125.

QED Matematikk for grunnskolelærerutdanningen. Bind 2. Fasit kapittel 2 Tallenes hemmeligheter

Algoritmer - definisjon

Arbeidstid. Medlemsundersøkelse mai Oppdragsgiver: Utdanningsforbundet

NyGIV Regning som grunnleggende ferdighet

Innspill til konsept for Stevningsmogen Møteplass for læring, bevegelse og opplevelser.

Algoritmer og Datastrukturer

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

Om Kurset og Analyse av Algoritmer

På lederutviklingsprogrammene som ofte gjennomføres på NTNU benyttes dette verktøyet. Du kan bruke dette til inspirasjon.

MAT 1110 V-06: Løsningsforslag til Oblig 1

Derivasjon. Kapittel Fart veg tid. 3.2 Kjerneregelen. Finn farten v(t) til ein bil når tilbakelagt strekning s(t) er

Nåverdi og pengenes tidsverdi

Mal for vurderingsbidrag

F = a bc + abc + ab c + a b c

Norges Informasjonsteknologiske Høgskole

Løsningsforslag til underveisvurdering i MAT111 vår 2005

Transkript:

:: Forside Kompleksitetsanalyse Åsmund Eldhuset asmunde *at* stud.ntnu.no folk.ntnu.no/asmunde/algdat/

Først: studietips OpenCourseWare fra MIT Forelesninger tatt opp på video Algoritmekurset foreleses av Charles Leiserson, en av forfatterne av læreboka Sitat fra studenten som tipset oss om det: "*MYYYYE* bedre enn øvingsforelesningene på tirsdager." :-) http://ocw.mit.edu/ocwweb/electrical- Engineering-and-Computer-Science/ 6-046JFall-2005/LectureNotes/index.htm

:: Vi ønsker å måle hvor rask en algoritme er Lite mening i å måle kjøretid i sekunder Forskjeller i programmeringsspråk og maskinvare Kjøretiden kan variere drastisk med dataene algoritmen blir brukt på Datamaskiner blir kraftigere, og algoritmer vil bli brukt på større data Hvordan ser kjøretiden ut når inputstørrelsen nærmer seg uendelig?

:: Vi trenger et matematisk uttrykk for hva kjøretiden blir, gitt inputstørrelsen altså tiden som en funksjon av inputstørrelsen Vi analyserer trinnene i algoritmen for (i = 0; i < n; i ++) dosomething(); for (i = 0; i < n; i ++) for (j = 0; j < n; j ++) dosomethingelse(); Kjøretid: f(n) = c 1 n + c 2 n 2 / 2, hvor c 1 er kjøretiden til dosomething(), og c 2 er kjøretiden til dosomethingelse()

:: Største ledd c 1 og c 2 kommer an på maskinvaren La oss anta at c 1 = 1 og c 2 = 100 Når bare n blir stor nok (n > 200), blir n 2 / 2 større enn 100n, og når n vokser mer og mer, blir n 2 / 2 MYE større enn 100n Kun det største leddet (n 2 ) er interessant, fordi dette leddet vil dominere de andre når n blir stor nok

:: Hvordan uttrykke dette? Vi sier at n 2 / 2 + 100n = Θ(n 2 ) Viktig: Θ er en mengde! Θ(n 2 ) består av alle funksjoner som vokser like raskt som n 2 når n går mot uendelig Likhetstegnet misbrukes det skulle egentlig ha vært f(n) Θ(g(n)) f(n) = Θ(g(n)) betyr altså: f(n) er en av de funksjonene som vokser like raskt som g(n)

:: 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 } Altså: Θ(g(n)) består av alle funksjoner som g(n) kan brukes som både øvre og nedre grense for Hvis vi skal vise at f(n) = Θ(g(n)), må vi bevise ulikhetene og finne c 1, c 2 og n 0

:: Eksempel polynomer Gitt f(n) = n 3 100n 2 + n Vi trikser med leddene: f(n) = n 3 100n 2 + n n 3 + n n 3 + n 3 = 2n 3 f(n) = n 3 100n 2 + n n 3 n 3 / 2 + n n 3 / 2 Vi finner ut når overgangene gjelder: 100n 2 0 : uansett n n 3 : for n 1 100n 2 n 3 / 2 : for n 200 n 0 : for n 0 Altså kan vi sette n 0 = 200

:: Eksempel polynomer Nå vet vi at 0 n 3 / 2 f(n) 2n 3 når n > n 0 = 200 Vi kan nå sette c 1 = ½, c 2 = 2 og g(n) = n 3 Kravene for at f(n) = Θ(g(n)) er oppfylt Altså er n 3 100n 2 + n = Θ(n 3 )

:: Grafisk fremstilling 300000 2n 3 n 3 100n 2 + n n 3 / 2 200000 100000 20 40 60 80 100-100000

:: Grafisk fremstilling 3 10 6 2n 300000 2.5 10 6 3 n 3 100n 2 + n n 3 / 2 200000 2 10 6 1.5 10 6 100000 1 10 6 20 40 60 80 100 500000-100000 50 100 150 200

:: Grafisk fremstilling 3 10 3 10 2n 6 7 300000 2.5 10 67 3 n 3 100n 2 + n n 3 / 2 200000 2 10 67 1.5 6 100000 10 7 1 10 6 1 10 7 20 40 60 80 100 500000 5 10 6-100000 50 100 150 200 100 200 300 400

:: Grafisk fremstilling 6 10 3 10 3 10 2n 17 6 7 300000 2.5 5 10 10 17 67 3 n 3 100n 2 + n n 3 / 2 200000 4 10 2 10 17 67 1.5 3 10 6 100000 10 17 7 1 10 6 2 10 1 10 17 7 20 40 60 80 100 500000 1 10 5 10 17 6-100000 50 100 150 200 200000 100 400000 200 600000 300 800000 1 10 400

:: O -og Ω-notasjon f(n) = Θ(g(n)) sier at g er både en øvre og en nedre grense for f Hvis vi bare vil si at g er en øvre grense for f, bruker vi O-notasjon: f(n) = O(g(n)) Hvis vi bare vil si at g er en nedre grense for f, bruker vi Ω-notasjon: f(n) = Ω(g(n)) Disse grensene er ikke tette: f.eks er n = O(2 n ), og n 100 = Ω(n) Se Cormen kap. 3.1 for definisjoner. Regning med er helt tilsvarende det vi gjorde med Θ

mellom O, Ω og Θ :: f(n) = O(g(n)) g(n) = Ω(f(n)) f(n) = Θ(g(n)) f(n) = O(g(n)) f(n) = Ω(g(n)) f(n) = Θ(g(n)) g(n) = Θ(f(n)) Θ(f(n)) = Θ(g(n)) Θ(f(n)) = O(f(n)) Ω(f(n) Se side 49 i Cormen for nyttige relasjoner Prøv å bevise disse selv! Bruk definisjonene av O (side 44), Ω (side 45) og Θ (side 42)

Kompleksitetsklasser :: Grovinndeling i stigende rekkefølge: Konstant: 1 Polylogaritmisk: (log b n) k Polynomisk: n k Eksponentiell: 2 n Faktoriell: n! Alt som er enda verre, f.eks. n n

:: Kompleksitetsklasser Eksempler alle på samme linje er like raske (de er Θ av hverandre) 1, 2, e, 1000000 lg n, ln n, log 10 n, lg n 100 (lg n) 2, (ln n) 2, (log 10 n) 2, (lg n 100 ) 2 n, n + 1000 lg n n lg n, n log 42 n n 2 2 n 3 n n! n n

:: Grunntallet til en logaritme har ikke noe å si for kompleksiteten: lg a n = Θ(lg b n) Grunntallet til en potens har mye åsi for kompleksiteten: a n Θ(b n ) Er 2 n + c = Θ(2 n )? Er 2 cn = Θ(2 n )? Vær forsiktig med transitivitet: Følgende er korrekt: f(n) = O(g(n)) g(n) = O(h(n)) f(n) = O(h(n)) Men kan vi slutte noe av det følgende? f(n) = O(g(n)) g(n) = Ω(h(n))

:: Ikke alle funksjoner kan sammenlignes med O, Ω og Θ Eksempel: n og n 1 + sin n 1 + sin n oscillerer mellom 0 og 2, så n 1 + sin n veksler hele tiden mellom å være større enn og mindre enn n O angir en mengde funksjoner Det er ikke i seg selv et mål på worst casekjøretid, selv om det ofte brukes til å angi dette Å si kjøretiden er minst O(n) er meningsløst Det samme gjelder for Ω og best case-kjøretid

:: O, Ω og Θ er rent matematiske konsepter De beskriver funksjoner, og bryr seg ikke om hva funksjonene representerer Derfor: O er ikke knyttet til worst case, Ω er ikke knyttet til best case, og Θ er ikke knyttet til algoritmer hvor worst case = best case Men: O brukes ofte for å angi kjøretiden i worst case, og Ω brukes ofte for best case Merk at hvis en algoritme er O(f(n)) i worst case og Ω(g(n)) i best case, er algoritmen O(f(n)) og Ω(g(n)) i alle tilfeller

Pseudopolynomialitet :: Gitt en algoritme som tar tallet n som input og har kjøretid O(n) hvilken kompleksitetsklasse er dette? n betegner her ikke størrelsen på input, men er selv en del av inputen Størrelsen til n = antall bits som kreves = lg n n = 2 lg n = 2 w Oi sann eksponentiell kjøretid! Dukker ofte opp som lureoppgave på eksamen!

Hvordan velge algoritme? r algoritmene du vurderer å bruke Finn ut hvordan inputen din forventes å være (vil det oftest være best case, average case eller worst case?) Hvor stor forventes inputen å være? Vil den være så liten at konstantleddene blir viktige? Sortering Har du råd til worst case-kjøretiden? (dette har du ikke alltid i real-timeapplikasjoner)

::?