Analys av algoritmer. Beräkningsbar/hanterbar. Stora Ordo. O(definition) Datastrukturer och algoritmer. Varför analysera algoritmer?

Relevanta dokument
Datastrukturer och algoritmer

Tommy Färnqvist, IDA, Linköpings universitet

Datastrukturer och algoritmer

ENDIMENSIONELL ANALYS B1 FÖRELÄSNING VI. Föreläsning VI. Mikael P. Sundqvist

Asymptotisk komplexitetsanalys

Anmärkning: I några böcker använder man följande beteckning ]a,b[, [a,b[ och ]a,b] för (a,b), [a,b) och (a,b].

c n x n, där c 0, c 1, c 2,... är givna (reella eller n=0 c n x n n=0 absolutkonvergent om x < R divergent om x > R n n lim = 1 R.

vara ett polynom där a 0, då kallas n för polynomets grad och ibland betecknas n grad( P(

Design mönster. n n n n n n. Command Active object Template method Strategy Facade Mediator

101. och sista termen 1

H1009, Introduktionskurs i matematik Armin Halilovic POLYNOM, POLYNOMDIVISION, ALGEBRAISKA EKVATIONER, PARTIALBRÅKSUPPDELNING. vara ett polynom där a

Föreläsning G04: Surveymetodik

Vad är det okända som efterfrågas? Vilka data är givna? Vilka är villkoren?

Föreläsning 10: Kombinatorik

Tentamenskrivning, , kl SF1625, Envariabelanalys för CINTE1(IT) och CMIEL1(ME ) (7,5hp)

Borel-Cantellis sats och stora talens lag

1. BERÄKNING AV GRÄNSVÄRDEN ( då x 0 ) MED HJÄLP AV MACLAURINUTVECKLING. n x

Datastrukturer och algoritmer

Statistisk analys. Vilka slutsatser kan dras om populationen med resultatet i stickprovet som grund? Hur säkra uttalande kan göras om resultatet?

MS-A0409 Grundkurs i diskret matematik Sammanfattning, del I

Induktion LCB Rekursion och induktion; enkla fall. Ersätter Grimaldi 4.1

Ekvationen (ekv1) kan beskriva en s.k. stationär tillstånd (steady-state) för en fysikalisk process.

Uppgifter 3: Talföljder och induktionsbevis

TNA001 Matematisk grundkurs Övningsuppgifter

Kontrollskrivning 3 i SF1676, Differentialekvationer med tillämpningar. Tisdag kl 8:15-10

Inledande matematisk analys (TATA79) Höstterminen 2016 Föreläsnings- och lekionsplan

Inledande matematisk analys. 1. Utred med bevis vilket eller vilka av följande påståenden är sana:

Fourierserien. fortsättning. Ortogonalitetsrelationerna och Parsevals formel. f HtL g HtL t, där T W ã 2 p, PARSEVALS FORMEL

Operativsystem - Baklås

Lösningar och kommentarer till uppgifter i 1.1

Räkning med potensserier

b 1 och har för olika värden på den reella konstanten a.

Linjär Algebra (lp 1, 2016) Lösningar till skrivuppgiften Julia Brandes

Uppsala Universitet Matematiska Institutionen Bo Styf. Genomgånget på föreläsningarna Föreläsning 26, 9/2 2011: y + ay + by = h(x)

. Mängden av alla möjliga tillstånd E k kallas tillståndsrummet.

REGULJÄRA SPRÅK (8p + 6p) 1. DFA och reguljära uttryck (6 p) Problem. För följande NFA över alfabetet {0,1}:

SANNOLIKHETER. Exempel. ( Tärningskast) Vi har sex möjliga utfall 1, 2, 3, 4, 5 och 6. Därför är utfallsrummet Ω = {1, 2, 3, 4, 5,6}.

SAMMANFATTNING TAMS79 Matematisk statistik, grundkurs

Intervallskattning. c 2005 Eric Järpe Högskolan i Halmstad. Antag att vi har ett stickprov x 1,..., x n på X som vi vet är N(µ, σ) men vi vet ej

Induktion och Binomialsatsen. Vi fortsätter att visa hur matematiska påståenden bevisas med induktion.

Armin Halilovic: EXTRA ÖVNINGAR

MS-A0409 Grundkurs i diskret matematik I

Introduktion till statistik för statsvetare

Sannolikheten. met. A 3 = {2, 4, 6 }, 1 av 11

Repetition: Enkel sampling. Systemplanering VT11. Repetition: Enkel sampling. Repetition: Enkel sampling

Genomsnittligt sökdjup i binära sökträd

Tentamen i Elektronik, ESS010, del 2 den 14 dec 2009 klockan 14:00 19:00.

2. Konfidensintervall för skillnaden mellan två proportioner.

Del A. x 0 (1 + x + x 2 /2 + x 3 /6) x x 2 (1 x 2 /2 + O(x 4 )) = x3 /6 + O(x 5 ) (x 3 /6) + O(x 4 )) = 1 + } = 1

Digital signalbehandling Fönsterfunktioner

NEWTON-RAPHSONS METOD (en metod för numerisk lösning av ekvationer)

Kompletterande kurslitteratur om serier

θx θ 1 om 0 x 1 f(x) = 0 annars

Parsningsalgoritmer. Parsningsalgoritmer: inledning. OH-serie 1: introduktion. Parsningalgoritmer I. Algoritmer. Vad är parsning? Vad är en algoritm?

Sannolikhetslära. c 2015 Eric Järpe Högskolan i Halmstad

Tenta i MVE025/MVE295, Komplex (matematisk) analys, F2 och TM2/Kf2

För att skatta väntevärdet för en fördelning är det lämpligt att använda Medelvärdet. E(ξ) =... = µ

LÖSNINGAR TILL. Räkningar: (z i z) 2 = , Δ = z = 1 n. n 1. Konfidensintervall:

Grundläggande matematisk statistik

1. Test av anpassning.

Datorövning 2 Fördelningar inom säkerhetsanalys

Föreläsning F3 Patrik Eriksson 2000

Föreläsning G70 Statistik A

Kontrakt baserad design. Design by contract

TAMS15: SS1 Markovprocesser

S0005M V18, Föreläsning 10

Digitalteknik F6. Några sammansatta digitala komponenter och lite designmetodik. Digitalteknik F6 bild 1

Föreläsningar 7,8 sept 24, sept 26 v 39). delvis DD Chapter 6.

DEL I. Matematiska Institutionen KTH

Tentamen i Flervariabelanalys F/TM, MVE035

Bertrands postulat. Kjell Elfström

Lycka till! I(X i t) 1 om A 0 annars I(A) =

x 1 x 2 x 3 x 4 x 5 x 6 HL Z x x x

H1009, Introduktionskurs i matematik Armin Halilovic. använder vi oftast induktionsbevis.

Tolkning av sannolikhet. Statistikens grunder, 15p dagtid. Lite mängdlära. Lite mängdlära, forts. Frekventistisk n A /n P(A) då n

Föreläsning 5 Innehåll

TAMS79: Föreläsning 9 Approximationer och stokastiska processer

Problem 2 löses endast om Du hade färre än 15 poäng på duggan som gavs arctanx sin x. x(1 cosx) lim. cost.

RESTARITMETIKER. Avsnitt 4. När man adderar eller multiplicerar två tal som t ex

Block 2: Linjära system

Föreläsning G70, 732G01 Statistik A. Föreläsningsunderlagen är baserade på underlag skrivna av Karl Wahlin

Trigonometriska polynom

Jag läser kursen på. Halvfart Helfart

TDDC30. Objektorienterad programmering i Java, datastrukturer och algoritmer. Föreläsning 5 Jonas Lindgren, Institutionen för Datavetenskap, LiU

Tentamen i Sannolikhetsteori III 13 januari 2000

Återanvändning. Två mekanismer. Nedärvning av egenskaper (inheritance) Objekt komposition

LINJÄR ALGEBRA II LEKTION 4

Finansiell Statistik (GN, 7,5 hp,, HT 2008) Föreläsning 4 (del 1)

Tentamen i Statistik, STA A13 Deltentamen 2, 5p 5 juni 2004, kl

Höftledsdysplasi hos dansk-svensk gårdshund - Exempel på tavlan

ÖPPNA OCH SLUTNA MÄNGDER. KOMPAKTA MÄNGDER. DEFINITIONSMÄNGD. INLEDNING. Några viktiga andragradskurvor: Cirkel, ellips, hyperbel och parabel.

Föreläsning 2: Punktskattningar

LINJÄRA DIFFERENTIALEKVATIONER AV HÖGRE ORDNINGEN

Datorövning 2 Fördelningar inom säkerhetsanalys

(a) Skissa täthets-/frekvensfunktionen och fördelningsfunktionen för X. Glöm inte att ange värden på axlarna.

NEWTON-RAPHSONS METOD (en metod för numerisk lösning av ekvationer)

Svar till tentan

F4 Matematikrep. Summatecken. Summatecken, forts. Summatecken, forts. Summatecknet. Potensräkning. Logaritmer. Kombinatorik

Skattning / Inferens. Sannolikhet och statistik. Skattning / Inferens. Vad är det som skattas?

Översikt. Modern C++ Generisk programmering vs OOP. En titt i backspegeln... Generisk programmering. Objektorienterad programmering.

Transkript:

Datastrukturer och algoritmer Föreläsig 2 Aalys av Algoritmer Aalys av algoritmer Vad ka aalyseras? - Exekverigstid - Miesåtgåg - Implemetatioskomplexitet - Förstålighet - Korrekthet - - 29 30 Varför aalysera algoritmer? Exekverigstid/miesåtgåg - Är algoritme praktiskt körbar - Vi vill ha de sabbaste! Att implemetera Att köra Beräkigsbar/haterbar Icke haterbara - superpolyom (!,, ) Beräkigsbara Alla (mattematiska)problem Ej beräkigsbara 3 Haterbara - polyom + 2 +3* 32 Stora Ordo f() c*g() => f() är av O(g()) cg() f() Defiitio: O(defiitio) Givet fuktioera f() och g() säger vi att f() är O(g()) omm f() c*g() för 0 och c >0 och 0 0 Storlek på idata 33 34

f() är O(g()) Varför ite f() O(g()) eller f() O(g()) Borde vara - f() tillhör O(g()) ty O(g()) är e mägd fuktioer, Se bilde. - Me vi skriver f() är O(g()) Litet räkeexempel operatio tar µs *0 9 elemet i e lista Kvadratisk sorterigsalgoritm 2-3000år Sorterigsalgoritm O(*log()) - 30000s arbetsdag 2 och dubbelt så sabb => 5500 år 2 och000 gåger så sabb => 3år 35 36 Exekverigstider - e dator med 00 000 MIPS, *0 op/sek 0 20 50 00 300 N 2 *0-9 2.5*0-8 /400 *0-7 9*0-7 N 5 *0-6 3.2*0-5 3.*0-3 0. 24,3 s 2 N *0-8 *0-5 3 tim 4*0 år 6,5*0 7 år N N 0. 33 miljoer år 2.8*0 66 år 9*0 62 år.4 *0 632 år Ohaterbarhet Måga triviala att förstå och viktiga att lösa - Schemaläggig - Hadelsresade Moore s lag förädrar de situatioe? Hur haterar vi ohaterbarhet?! Drygt 0 miljarder µs på e dag! *0 24 µs seda Big Bag 37 38 Hatera ohaterbarhet Heuristik - Lösa ästa rätt problem Föreklig - Lösa problemet ästa rätt Approximatio NP-kompletta problem E speciell klass av ohaterliga problem Har problem X e lösig med egeskapera Y Ekvivaleta: - Trasformeras - Högst expoetiella - Sakar bevis för ohaterbarhet Icke haterbara - superpolyom (!,, ) 39 40

Mäta tidsåtgåge Hur ska vi mäta tidsåtgåge? - Experimetell aalys Implemetera algoritme Kör programmet med varierade datamägd Storlek Sammasättig Aväd metoder för tidtagig så som time (ger tide i sekuder seda 970), clock (ger processortid med hyfsad precisio) eller gettimeofday (bättre precisio ä time, me ej stadard i c) Plotta uppmätt data Exempel t(ms) 4 42 Bästa, värsta & medel Värsta Medel Bästa Experimetell aalys Begräsigar med metode - Måste implemetera och testa algoritme - Svårt att veta om programmet har staat eller fast i beräkigara. T ex. 2 ; =00 => 40000 billioer år - Experimete ka edast utföras på e begräsad mägd av data, ma ka missa viktiga testdata - Hårdvara och mjukvara måste vara de samma för alla implemetatioer 43 44 Kotrollera si slutsats Plotta uppmäta tide/uppskattade ( f()/g() el. ordodef.) Borde gå mot kostat eller 0 för stora värde om korrekt Geerellare metod behövs Som aväder e högivåbeskrivig av algoritmera istället för e implemetatio av de Tar häsy till alla möjliga idata Aalys oberoede av hårdvara och mjukvara Asymptotisk aalys 45 46

Asymptotisk aalys Utgår frå pseudokode Räka operatioer - Ställ upp ett uttryck för atalet operatioer beroede av problemstorleke Förekla tidsuttrycket Ta fram e fuktio som begräsar tidsuttrycket ovaifrå Lite matematik behövs Logaritmer (xy) = log b (x) + log b (y) (x/y) = log b (x) (y) (x α ) = α log b (x) (a) =log x (a)/log x (b) 47 48 Kaske lite mer Och äu mer matte Expoeter a (b +c ) = a b a c a bc = (a b ) c a b /a c = a (b c ) b = a log a (b ) b c = a c*log a (b ) Summor är bra att kua - Geerell defiitio t f (i) = f (s) + f (s +) + f (s + 2) +...f (t) i= s - Geometrisk utvecklig ( 0 och 0<a ) i= 0 + a i =+ a + a 2 + a 3 +...+ a a = a Växer expoetiellt (om a>) 49 50 Sista matte för dea gåg Aritmetisk tillväxt, summera alla tal frå t o m 00 + Aalys av algoritmer Primitiva operatioer - Lågivå beräkigar som är i stort sett oberoede av programspråk och ka defiieras i termer av pseudokod: Aropa e metod/fuktio i= i =+ 2 + 3 +...+ = 2 + 2 0 2 /2 3 Returera frå e metod/fuktio Utföra e aritmetisk operatio (+, -, ) Jämföra två tal, etc. Referera till e/ett variabel/objekt Idexera i e array 5 52

Mer aalys av algoritmer Ispektera pseudokode och räka atalet primitiva operatioer. Väldig abstraktio, vi bortser frå hårdvara, och att olika operatioer tar olika låg tid, Alterativet är att titta på de verkliga tidera för de olika operatioera - Ger e maskiberoede aalys Exempel Algorithm addalleve() sum <- 0 i <- 2 while i<= do sum <- sum+i i <- i+2 retur sum; (/2+)* +(/2)*[] + + T()=++(/2+)* +(/2)*(+++)+=4+/2+4 53 54 Exempel 2 Algorithm arraymax(a,) iput: A array A storig itegers output: The maximum elemet i A curretmax A[0] //+ for i to - do //+(+)+(-)*([]+) if curretmax < A[i] the //++ curretmax A[i] //+ retur curretmax // Jämföra T() Rita kurvor för T() och jämför svårt Alterativet är asymptotisk otatio/aalys - Förekla jämförelse geom att avruda T() ".00000 " 3 2 2 T max ()= 3+2+(-)*6 + = 8-2 T mi ()= 3+2+(-)*4 + = 6 55 56 Stora Ordo f() c*g() => f() är av O(g()) cg() f() Mer ordo f() = 7-3 hitta e fuktio som begräsar f()? - Oädligt måga, hitta de mista /eklaste - Droppa allt utom de ledade terme dvs. lägre ordiges termer och kostater 7-3 är O() 8 2 log() + 5 2 + är O( 2 log()) 0 Storlek på idata 57 58

Specialla klasser av algoritmer Logaritmiska O(log()) Lijära O() Kvadradiska O( 2 ) Polyoma O( k ); k Expoetiella O(a ); log() <<<< 2 << 3 <<2 Exempel F() = 7-3 är O() - Hitta c # 0? f () lim g() + % 7 3( % lim' * += lim & ) 7 3 ( ' & * + c = 8 ) $7-3 8; 0 =? $Ok! 59 60 O(sammafattig) O() aväds för att utrycka atalet primitiva operatioer som utförs som e fuktio av storleke på idata E övre gräs för tillväxt arraymax är e lijär algoritm dvs O() E algoritm som körs på O() är bättre ä e O( 2 ), me O(log()) är bättre ä O() - log() <<<< 2 << 3 <<2 O(varig) Var aktsam, stora kostater ställer till det T()=000000 är e lijär algoritm O(), me i måga fall mycket midre effektiv på data mägder ä e algoritm med T() = 2 2 som är O( 2 ) - O-otatioe är e stor föreklig, dvs e övre gräs, det fis släktigar som begräsar edåt - Samt tagit bort kopplige till hårdvara. 6 62 O(geväg) Ma ka måga gåger skippa väge över T() - Väldigt grov uppskattig av tillväxte - Ma gör e okulärbesiktig av algoritme O(exempel ) Algorithm prefixav(x); Iput: A -elemet Array of umbers Output: A -elemet Array of umbers such that A[i] is the average of X[0],,X[i]. Iitiera e array är O() Nästlade loopar är O()*O()* *O() O( k ) Let A be a array of umbers for i 0 to - do a 0 for j 0 to i do a a+x[j] A[i] a/(i+) retur A Aalys: T b () =? T w () =? Me algoritme är av O( 2 ) 63 64

O(exempel 2) Algorithm prefixav(x); Iput: A -elemet Array of umbers Output: A -elemet Array of umbers such that A[i] is the average of X[0],,X[i]. Let A be a array of umbers s 0 for i 0 to - do s s+x[i] Aalys: T() =? Me algoritme är av O() Fler defiitioer T()=Ω(g()) omm det fis positiva kostater c och 0 så att T() cg() är 0 T()=Θ(h()) omm T()=O(h()) och T()= Ω(h()) T()=o(p()) omm T() = O(p()) och T() Θ(p()) A[i] s/(i+) retur A 65 66 Beräka miesåtgåg Vi ka aväda likade metoder som för asymptotisk aalys. - Me i stället för att beräka primitiva operatioer så räkar vi hur mkt mie vi behöver utöver de iitiala problembeskrivige - Glöm ite miet för lokala variabler etc som läggs upp på stacke vid rekursio 67