Algoritmer, datastrukturer och komplexitet

Relevanta dokument
n (log n) Division Analysera skolboksalgoritmen för division (trappdivision). Använd bitkostnad.

Algoritmer, datastrukturer och komplexitet

Föreläsning 1. Introduktion och sökning i graf. Vad är en algoritm?

Föreläsning 1. Introduktion. Vad är en algoritm?

Algoritmer, datastrukturer och komplexitet

Algoritmer, datastrukturer och komplexitet

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

Algoritmer, datastrukturer och komplexitet

Algoritmer, datastrukturer och komplexitet

Algoritmanalys. Inledning. Informationsteknologi Malin Källén, Tom Smedsaas 1 september 2016

Rebecka Geijer Michaeli, IDA, Linköpings universitet. 1 Administrativ information Upplägg... 2

Tommy Färnqvist, IDA, Linköpings universitet. 2 Rekursion i C Implementation av rekursion Svansrekursion En till övning...

Algoritmer, datastrukturer och komplexitet

Programkonstruktion och Datastrukturer

Tommy Färnqvist, IDA, Linköpings universitet. 1 Administrativ information Upplägg... 2

Algoritmer, datastrukturer och komplexitet

Algoritmer och datastrukturer H I HÅKAN S T R Ö M B E R G N I C K L A S B R A N D E F E L T

Asymptotisk komplexitetsanalys

Algoritmer, datastrukturer och komplexitet

Algoritmer, datastrukturer och komplexitet

Sökning och sortering

Föreläsning 9: Talteori

Datastrukturer, algoritmer och programkonstruktion (DVA104, VT 2015) Föreläsning 6

Introduktion till algoritmer - Lektion 1 Matematikgymnasiet, Läsåret Lektion 1

Algoritmer, datastrukturer och komplexitet

Föreläsning 2 Datastrukturer (DAT037)

Övningsmästarprov 2 + några NP-reduktioner. Algoritmer, datastrukturer och komplexitet

Föreläsning 5 Innehåll

Algoritmer och effektivitet. Föreläsning 5 Innehåll. Analys av algoritmer. Analys av algoritmer Tidskomplexitet. Algoritmer och effektivitet

Föreläsning 1 Datastrukturer (DAT037)

Algoritmer, datastrukturer och komplexitet

Programmering för språkteknologer II, HT2014. Rum

Föreläsning 5: Kardinalitet. Funktioners tillväxt

TDDI16 Datastrukturer och algoritmer. Algoritmanalys

Föreläsning 5 Innehåll. Val av algoritm och datastruktur. Analys av algoritmer. Tidsåtgång och problemets storlek

Föreläsning 9: Talteori

Komponentvisa operationer,.-notation Multiplikation (*), division (/) och upphöj till (ˆ) av vektorer följer vanliga vektoralgebraiska

SCB :-0. Uno Holmer, Chalmers, höger 2 Ex. Induktiv definition av lista. // Basfall

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

Introduktion till algoritmer - Lektion 4 Matematikgymnasiet, Läsåret Lektion 4

Lösning av några vanliga rekurrensekvationer

Att beräkna t i l l v ä x t takter i Excel

Pseudokod Analys av algoritmer Rekursiva algoritmer

Introduktion. Exempel Övningar Lösningar 1 Lösningar 2 Översikt

Introduktion. Exempel Övningar Lösningar 1 Lösningar 2 Översikt

Moment Viktiga exempel Övningsuppgifter Ö , Ö1.25, Ö1.55, Ö1.59

Föreläsning 7. SF1625 Envariabelanalys. Hans Thunberg, 13 november 2018

Dekomposition och dynamisk programmering

Läsanvisning till Discrete matematics av Norman Biggs - 5B1118 Diskret matematik

Föreläsning 3: Dekomposition. Dekomposition

Tentamen Datastrukturer (DAT036)

Ma C - Tek Exponentialekvationer, potensekvationer, logaritmlagar. Uppgift nr 10 Skriv lg4 + lg8 som en logaritm

Föreläsning 5. Rekursion

Dugga Datastrukturer (DAT036)

Tommy Färnqvist, IDA, Linköpings universitet

Komplexitetsklasser och repetition

i=1 c i = B och c i = a i eller c i = b i för 1 i n. Beskriv och analysera en algoritm som löser detta problem med hjälp av dynamisk programmering.

MA2047 Algebra och diskret matematik

Avsnitt 4, introduktion.

Inledande matematik för I1. MVE011 läsperiod Matlab vecka 2 övningsuppgifter

Föreläsning 13 Datastrukturer (DAT037)

Programkonstruktion och datastrukturer. Formell verifiering eller hur man bevisar att program gör rätt utan att testa dem

Matematik 3c Kap 2 Förändringshastighet och derivator

Föreläsning 5: Dynamisk programmering

Datastrukturer och algoritmer

Tommy Färnqvist, IDA, Linköpings universitet

Tentamen Datastrukturer för D2 DAT 035

Algoritmer, datastrukturer och komplexitet

Hela tal LCB 1999/2000

SF1625 Envariabelanalys

Läsanvisningar till kapitel 4 i Naturlig matematik

Lösningsförslag till Tentamen i 5B1118 Diskret matematik 5p 22 augusti, 2001

Tentamen med lösningsförslag Datastrukturer för D2 DAT 035

Övning log, algebra, potenser med mera

Föreläsning 12+13: Approximationsalgoritmer

Föreläsning 5: Grafer Del 1

Algoritmer, datastrukturer och komplexitet

Programmering II (ID1019) :00-17:00

Modul 1: Funktioner, Gränsvärde, Kontinuitet

Övningsuppgifter #11, Programkonstruktion och datastrukturer

Föreläsning 8: Aritmetik och stora heltal

Föreläsningsanteckningar F6

MA2047 Algebra och diskret matematik

Modul 1: Funktioner, Gränsvärde, Kontinuitet

Tisdag v. 2. Speglingar, translationer och skalningar

Föreläsning Datastrukturer (DAT036)

Några satser ur talteorin

(A B) C = A C B C och (A B) C = A C B C. Bevis: (A B) C = A C B C : (A B) C = A C B C : B C (A B) C A C B C

4 Fler deriveringsregler

Föreläsning 5. Rekursion

Programmeringsmetodik DV1 Programkonstruktion 1. Moment 4 Om rekursion. PK1&PM1 HT-06 moment 4 Sida 1 Uppdaterad

TAIU07 Matematiska beräkningar med Matlab

POLYNOM OCH POLYNOMEKVATIONER

Föreläsning 13 Datastrukturer (DAT037)

a = a a a a a a ± ± ± ±500

Kvalificeringstävling den 26 september 2017

SI-möte #10, Programkonstruktion och Datastrukturer

Översikt. Stegvis förfining. Stegvis förfining. Dekomposition. Algoritmer. Metod för att skapa ett program från ett analyserat problem

Transkript:

Algoritmer, datastrukturer och komplexitet Övning 1 Anton Grensjö grensjo@csc.kth.se 14 september 2015 Anton Grensjö ADK Övning 1 14 september 2015 1 / 22

Översikt Kursplanering F1: Introduktion, algoritmanalys F2: Sortering F3: Datastrukturer Ö1: Algoritmanalys F4: Datastrukturer F5: Grafsökning Ö2: F6: Datastrukturer, Korrekthetsbevis grafer Anton Grensjö ADK Övning 1 14 september 2015 2 / 22

Översikt Översikt Algoritmanalys Varför? Idag: Definitioner av O, Θ, Ω Repetition av matematik Exempel på ordoräkning Exempel på algoritmanalys Anton Grensjö ADK Övning 1 14 september 2015 3 / 22

Algoritmanalys Kostnadsmått Enhetskostnad Varje operation tar en tidsenhet Varje variabel tar en minnesenhet Används när algoritmen räknar med begränsade tal Bitkostnad Varje bitoperation tar en tidsenhet Varje bit tar upp en minnesenhet Används när algoritmen räknar med godtyckligt stora tal Anton Grensjö ADK Övning 1 14 september 2015 4 / 22

Modell för algoritmen Algoritmanalys Låt T(n) vara antalet operationer (alt. tiden) en algoritm behöver för att lösa problemet för indata av storleken n. Undersök hur T(n) beter sig för stora n. Varför är vi endast intresserade av detta? Det vi bryr oss om är främst flaskhalsen i vår algoritm. Anton Grensjö ADK Övning 1 14 september 2015 5 / 22

Asymptotisk notation Asymptotisk notation Vi fokuserar på den dominerande termen och struntar i konstanta faktorer. Definition g(n) 0 om g(n) o(f (n)) lim n f (n) = c > 0 om g(n) Θ(f (n)) om g(n) ω(f (n)) } } o(f (n)) Θ(f (n)) O(f (n)), Ω(f (n)) Θ(f (n)) ω(f (n)) Anton Grensjö ADK Övning 1 14 september 2015 6 / 22

Gränsvärden Repetition av matematik Gränsvärden Metod då n : Bryt ut nämnarens dominerande term. Exempel 5n 4 2n 3 n 6 + 5 lim n 2n 6 n 2 + n = lim n 0 {( }}{ 5 n 2 2 n 3 + 5 ) n 6 n 6 ( 2 1 n 4 + 1 n 5 ) } {{ } 2 = 0 Anton Grensjö ADK Övning 1 14 september 2015 7 / 22

Logaritmlagar Repetition av matematik Logaritmlagar Definition Logaritmen definieras som inversen till exponentialfunktionen, dvs: log 2 n = n 2 log n = n I den här kursen använder vi oss av notationen log n = log 2 n. Anton Grensjö ADK Övning 1 14 september 2015 8 / 22

Repetition av matematik Logaritmlagar Logaritmlagar Sats log a + log b = log ab log a n = n log a log a log b = log a b log a (n) = log b (n) log b (a) Följdsats För alla reella tal a, b > 1 gäller att log a n θ(log b n) Anton Grensjö ADK Övning 1 14 september 2015 9 / 22

Exempel på ordoräkning Uppgift 1: Ordo Jämför följande par av funktioner med avseende på hur dom växer då n växer. Tala i varje fall om ifall f (n) Θ(g(n)), f (n) O(g(n)) eller f (n) Ω(g(n)). f (n) g(n) a) 100n + log n n + (log n) 2 b) log n log n 2 c) n 2 log n n(log n) 2 d) (log n) log n n log n Anton Grensjö ADK Övning 1 14 september 2015 10 / 22

Exempel på ordoräkning Uppgift 1: Ordo Jämför följande par av funktioner med avseende på hur dom växer då n växer. Tala i varje fall om ifall f (n) Θ(g(n)), f (n) O(g(n)) eller f (n) Ω(g(n)). f (n) g(n) e) n (log n) 5 f) n2 n 3 n g) 2 log n n Lösningar finns på kurshemsidan, under Kursinnehåll/Detaljschema. Anton Grensjö ADK Övning 1 14 september 2015 11 / 22

Uppgift 2: Division Exempel på algoritmanalys 0 1 1 6 4 7 2 1 0 7 2 6 4 8 1 6 4 1 7 Anton Grensjö ADK Övning 1 14 september 2015 12 / 22

Uppgift 2: Division Exempel på algoritmanalys Följande algoritm bestämmer q och r så att a q + r = b, givet två n-bitstal a och b i basen B a = a n 1 a n 2 a 0, b = b n 1 b n 2 b 0. Bestäm tidskomplexiteten. Div(a, b, n) = PRE: a > 0, b 0, a och b lagras med n bitar. POST: qa + r = b, 0 r < a r 0 for i n 1 to 0 do INV: (q n 1...q i+1) a + r = (b n 1...b i+1), 0 r < a r (r 1) + b i / Byt till nästa siffra / q 0 a 0 while a + a r do / Hitta max q så att q a r / INV: a = q a r a a + a q q + 1 q i q r r a return (q, r) / kvot och rest / Anton Grensjö ADK Övning 1 14 september 2015 13 / 22

Exempel på algoritmanalys Uppgift 3: Euklides algoritm Analysera Euklides algoritm, som hittar största gemensamma delaren mellan två heltal, både med avseende på enhetskostnad och bitkostnad. Vad är skillnaden? Vi förutsätter att a b. gcd(a, b)= if b a then gcd b else gcd gcd(b, a mod b) Anton Grensjö ADK Övning 1 14 september 2015 14 / 22

Exempel på algoritmanalys Uppgift 3: Euklides algoritm gcd(a, b)= if b a then gcd b else gcd gcd(b, a mod b) 1 Terminerar algoritmen? Betrakta variabeln a. Eftersom a b måste a minska i varje anrop. Men a kan aldrig bli mindre än 1. = algoritmen terminerar. 2 Bestäm tidskomplexitet. Anton Grensjö ADK Övning 1 14 september 2015 15 / 22

Exempel på algoritmanalys Uppgift 3: Euklides algoritm Tidskomplexitet gcd(a, b)= if b a then gcd b else gcd gcd(b, a mod b) Antalet anrop verkar bero på parametrarnas storlek. Låt oss beräkna hur a minskar. Låt a i vara värdet på a i det i:te anropet. Anton Grensjö ADK Övning 1 14 september 2015 16 / 22

Exempel på algoritmanalys Uppgift 3: Euklides algoritm Tidskomplexitet gcd(a, b)= if b a then gcd b else gcd gcd(b, a mod b) Lemma Bevis. a i+2 a i /2 a i+2 = b i+1, b i+1 = a i mod b i = a i+2 = a i mod b i Antag att a i+2 > a i /2. Av detta följer att b i > a i /2. Detta är en motsägelse, ty a i = a i+2 + cb i > a i /2 + a i /2 = a i Anton Grensjö ADK Övning 1 14 september 2015 17 / 22

Exempel på algoritmanalys Uppgift 3: Euklides algoritm Tidskomplexitet gcd(a, b)= if b a then gcd b else gcd gcd(b, a mod b) Lemmat (a i+2 a i /2) ger att log a i+2 log a i 2 = log a i log 2 = log a i 1 Storleken på a minskas alltså åtminstone med ett vartannat anrop. Totala antalet anrop 2 log a = 2n, där n är antalet bitar i a. Enhetskostnad: Varje anrop sker på konstant tid = O(n). Bitkostnad: Varje enskilt anrop har komplexiteten O(n 2 ) vilket ger total tidskomplexitet O(n 3 ). Vad är lämpligast när? Anton Grensjö ADK Övning 1 14 september 2015 18 / 22

Exempel på algoritmanalys Upgift 4: Potenser med upprepad kvadrering Följande algoritm beräknar tvåpotenser när exponenten själv är en tvåpotens. Indata: m = 2 n Utdata: 2 m power(m) = pow 2 for i 1 to log m do pow pow pow return pow Analysera denna algoritm både med avseende på enhetskostnad och bitkostnad och förklara vilken kostnadsmodell som är rimligast att använda. Anton Grensjö ADK Övning 1 14 september 2015 19 / 22

Exempel på algoritmanalys Upgift 4: Potenser med upprepad kvadrering Indata: m = 2 n Utdata: 2 m power(m) = pow 2 for i 1 to log m do pow pow pow return pow Enhetskostnad: Slingan går log m = n varv. Varje varv tar konstant tid. Tidskomplexiteten är: O(n). Anton Grensjö ADK Övning 1 14 september 2015 20 / 22

Exempel på algoritmanalys Upgift 4: Potenser med upprepad kvadrering Indata: m = 2 n Utdata: 2 m power(m) = pow 2 for i 1 to log m do pow pow pow return pow Bitkostnad: Multiplikation av två l-bitstal tar O(l 2 ) tid. Vid varv i så är pow = pow i = 2 2i. Tidskomplexiteten för varv i: O ( (log pow i ) 2) ) = O ((log 2 2i ) 2 = O ( (2 i ) 2) = O ( 2 2i) Summera över alla varv: log m i=1 log m c2 2i = c i=1 log m 1 4 i = 4c i=0 4 i = 4c 4log m 1 4 1 O(4 log m ) = O(4 n ). Anton Grensjö ADK Övning 1 14 september 2015 21 / 22

Exempel på algoritmanalys Uppgift 4: Potenser med upprepad kvadrering Indata: m = 2 n Utdata: 2 m power(m) = pow 2 for i 1 to log m do pow pow pow return pow Slutsatser: O(n) vid enhetskostnad, O(4 n ) vid bitkostnad! Vilket mått är bäst? Kan man använda denna algoritm för att beräkna tvåpotenser för godtyckliga heltalsexponenter? Andra baser än 2? Matriser? Anton Grensjö ADK Övning 1 14 september 2015 22 / 22