Datastrukturer och algoritmer

Relevanta dokument
Datastrukturer och algoritmer

Bakgrund och motivation. Definition av algoritmer Beskrivningssätt Algoritmanalys. Algoritmer. Lars Larsson VT Lars Larsson Algoritmer 1

Datastrukturer och algoritmer (Python) Algoritmer och listor

Asymptotisk komplexitetsanalys

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

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

Turingmaskiner och oavgörbarhet. Turingmaskinen. Den maximalt förenklade modell för beräkning vi kommer använda är turingmaskinen.

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

Föreläsning 9: Turingmaskiner och oavgörbarhet. Turingmaskinen. Den maximalt förenklade modell för beräkning vi kommer använda är turingmaskinen.

Föreläsning 5 Innehåll

Programkonstruktion och Datastrukturer

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

Sökning och sortering

Datastrukturer. föreläsning 2

Datastrukturer D. Föreläsning 2

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

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

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

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

Magnus Nielsen, IDA, Linköpings universitet

TDDI16 Datastrukturer och algoritmer. Algoritmanalys

Datastrukturer och algoritmer

Datastrukturer. föreläsning 3. Stacks 1

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

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

Tentamen: Programutveckling ht 2015

samt lite algoritmer en kortfattad introduktion för studenter på Intro:DV

Föreläsning 2 Datastrukturer (DAT037)

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

Imperativ programmering. Föreläsning 2

Algoritmer och datastrukturer TDA143

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

Föreläsning 13 Innehåll

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

Tentamen i Algoritmer & Datastrukturer i Java

Tommy Färnqvist, IDA, Linköpings universitet

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

Algoritmer, datastrukturer och komplexitet

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

Föreläsning 1 Datastrukturer (DAT037)

CS - Computer science. Datateknik Informationsbehandling Datalogi Datavetenskap (ÅA 2008)

Algoritmer, datastrukturer och komplexitet

Objektorienterad modellering och diskreta strukturer. 13. Problem. Sven Gestegård Robertz. Datavetenskap, LTH

Algoritmer, datastrukturer och komplexitet

Pseudokod Analys av algoritmer Rekursiva algoritmer

COMPUTABILITY BERÄKNINGSBARHET. Källa: Goldschlager, Lister: Computer Science A Modern Introduction 2. upplaga 1988, Prentice Hall

Algoritmer och datastrukturer TDA Fredrik Johansson

Några svar till TDDC70/91 Datastrukturer och algoritmer

Dugga Datastrukturer (DAT036)

Föreläsning Datastrukturer (DAT037)

Problemlösning. Planering av program. Konstruktion. Programmeringsmetaforer. Problemlösning. Programmering = Problemlösning

Algoritmer, datastrukturer och komplexitet

TENTAMEN I DATASTRUKTURER OCH ALGORITMER DVG B kl. 14:00-19:00

Föreläsning 3. Iteration while-satsen

Datastrukturer och algoritmer. Föreläsning 15 Inför tentamen

Föreläsning 1: Dekomposition, giriga algoritmer och dynamisk programmering

Algoritmer, datastrukturer och komplexitet

Föreläsning 1. Abstrakta datatyper, listor och effektivitet

Föreläsning 5. Rekursion

FÖRELÄSNING 2, TDDC74, VT2018 BEGREPP PROBLEMLÖSNING MED HJÄLP AV FALLANALYS PROBLEMLÖSNING MED HJÄLP AV REKURSION

Algoritmer, datastrukturer och komplexitet

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.

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

TIDS- OCH RUMSKOMPLEXITET

Tentamen Datastrukturer D DAT 035/INN960

Universitetet i Linköping Institutionen för datavetenskap Anders Haraldsson

SORTERING OCH SÖKNING

Tentamen i Algoritmer & Datastrukturer i Java

Dagens föreläsning Programmering i Lisp. - Bindning av variabler (avs 14.6) fria variabler statisk/lexikalisk och dynamisk bindning

Föreläsning 12. Söndra och härska

Skriv i mån av plats dina lösningar direkt i tentamen. Skriv ditt kodnummer längst upp på varje blad.

Objektorienterad programmering E. Algoritmer. Telefonboken, påminnelse (och litet tillägg), 1. Telefonboken, påminnelse (och litet tillägg), 2

Problemlösning och algoritmer

Laboration: Whitebox- och blackboxtesting

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

Föreläsning Datastrukturer (DAT037)

Algoritmer. Två gränssnitt

Övningsuppgifter #11, Programkonstruktion och datastrukturer

Beräkningsvetenskap föreläsning 2

Rekursion och induktion för algoritmkonstruktion

Hitta k största bland n element. Föreläsning 13 Innehåll. Histogramproblemet

Twincat: PLC Control

Bakgrund. Bakgrund. Bakgrund. Håkan Jonsson Institutionen för systemteknik Luleå tekniska universitet Luleå, Sverige

Datastrukturer och algoritmer

Viktiga begrepp. Algoritm. Array. Binärkod. Blockprogrammering. Bugg / fel och felsökning. Dataspel. Dator

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

729G75: Programmering och algoritmiskt tänkande. Tema 1, föreläsning 1 Jody Foo

Föreläsning 5. Rekursion

Program & programmering

Föreläsning 13 Datastrukturer (DAT037)

Programmering I Tobias Wrigstad fredag, 2009 augusti 28

Föreläsning 3. Stack

Föreläsning 11. Giriga algoritmer

Tentamen Datastrukturer för D2 DAT 035

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

Lösningar Datastrukturer TDA

Introduktion till programmering SMD180. Föreläsning 9: Tupler

729G75: Programmering och algoritmiskt tänkande. Tema 1. Föreläsning 1 Jody Foo

Tentamen Datastrukturer (DAT036)

Inledning. Vad är ett datorprogram, egentligen? Olika språk. Problemlösning och algoritmer. 1DV433 Strukturerad programmering med C Mats Loock

Transkript:

Datastrukturer och algoritmer Föreläsning 5 Algoritmer & Analys av Algoritmer Algoritmer Vad är det? Innehåll Mer formellt om algoritmer beräkningsbarhet Att beskriva algoritmer Analysera algoritmer Exekveringstid, minnesåtgång. 97 98 Algoritm? Ingredienser Algoritm? Ingredienser Recept som man följer för att lösa ett givet problem på ett strukturerat sätt Ändlig stegvis beskrivning av en ändlig process Recept Bullar Ugn, plåtar, etc Texten som beskriver algoritmen är fix stor Processen kan variera i storlek Kornighet i en algoritm Recept Bullar Ugn, plåtar, etc 99 100 Exempel Antag att vi har en lista på alla anställda på ett företag: Namn, Pnr, lön, etc. Vi vill räkna ut lönekostanden för företaget. 1. Skriv ner talet 0 2. Gå igenom listan, och för varje anställd så adderar man du personens lön till det skrivna talet 3. När man nått slutet på listan så är det ned skrivna talet resultatet Definition: Algoritmer mer formellt Algoritm är en noggrann plan, en metod för att stegvis utföra något 101 102

Krav på algoritmer Algoritmer mer formellt Ändlighet Algoritmen måste sluta Bestämdhet Varje steg måste vara entydigt Indata Måste ha noll eller flera indata Utdata Måste ha ett eller flera utdata Effektivitet/Genomförbarhet Varje steg i algoritmen måste gå att utföra på ändlig tid 23. Donald Knuth Algoritmiska problem & beräkningsbarhet En klass av problem Beräkningsbar omm det finns en Turingmaskin som löser problemet Turing maskin 103 104 Att (be)skriva algoritmer Vi behöver ett språk som: Är strukturerat och formellt Mindre formellt än programmeringsspråk Ingen typning Dynamisk bindning Räckvidd Pseudokod Mix av naturligt språk och programmeringsspråk Influenser från matematisk notation! används för tilldelning = används för likhetsrelationen Funktionsdeklaration Algorithm name(param1,param2) 105 106 Pseudokod programkonstruktioner Besluts strukturer: if then [else ] Villkorsloopar: while do repeat until Räkneloopar:! for do Arrayindexering: A[i] Anrop: method(args) object metod(args) Returnera värden: return value Pseudokod exempel Algorithm arraymax(a,n) input: An array A storing n integers output: The maximum element in A currentmax! A[0] for i! 1 to n-1 do if currentmax < A[i] then currentmax! A[i] return currentmax 107 108

Pseudokod Vi använder oss av pseudokod för att beskriva algoritmer Det finns inget universellt språk utan många dialekter Alla döljer mycket av programspråkens designval, dvs. pseodokoden är programspråksoberoende Analys av algoritmer Vad kan analyseras? Exekveringstid Minnesåtgång Implementationskomplexitet Förstålighet Korrekthet 109 110 Varför analysera algoritmer? Beräkningsbar/hanterbar Alla (mattematiska)problem Exekveringstid/minnesåtgång Är algoritmen praktiskt körbar Vi vill ha den snabbaste! Att implementera Att köra Icke hanterbara - superpolynom (n!, nn, ) Beräkningsbara Ej beräkningsbara 111 Hanterbara - polynom 1+n 2 +3*n 112 Stora Ordo f(n)! c*g(n) => f(n) är av O(g(n)) n 0 Storlek på indata cg(n) f(n) Litet räkneexempel 1 operation tar 1µs 1*10 9 element i en lista Kvadratisk sorteringsalgoritm n 2 31000år Logaritmisk sorteringsalgoritm n*log(n) 30000s " 1 arbetsdag n 2 och dubbelt så snabb => 15500 år n 2 och1000 gånger så snabb => 31år 113 114

Exekveringstider - en dator med 1 MIPS, 1*10 6 op/sek 10 20 50 100 300 N 2 1/10000 1/2500 1/400 1/100 9/100 N 5 1/10 3.2 sek. 5.2 min. 2.8 tim. 28.1 dag. 2 N 1/1000 1 s 35.7 år 40000 billioner år N N 2.8 tim. 3.3 billioner år 7000 18500 7500 76800 Ohanterbarhet Många triviala att förstå och viktiga att lösa Schemaläggning Handelsresande Moore s lag förändrar den situationen? Hur hanterar vi ohanterbarhet?! Drygt 10 miljarder µs på en dag! 1*10 24 µs sedan Big Bang 115 116 Heuristik Hantera ohanterbarhet Lösa nästan rätt problem Förenkling Lösa problemet nästan rätt Approximation NP-kompletta problem En speciell klass av ohanterliga problem Har problem X en lösning med egenskaperna Y Ekvivalenta: Transformeras Högst exponentiella Saknar bevis för ohanterbarhet Icke hanterbara - superpolynom (n!, nn, ) 117 118 Mäta tidsåtgången Exempel Hur ska vi mäta tidsåtgången? Experimentell analys Implementera algoritmen Kör programmet med varierande datamängd Storlek Sammansättning Använd metoder för tidtagning så som time (ger tiden i sekunder sedan 1970) clock (ger processortid med hyfsad precision) gettimeofday (bättre precision än time, men ej standard i c) Plotta uppmätt data t(ms) n 119 120

Medel Bästa, värsta & medel Värsta Bäst a Experimentell analys Begränsningar med metoden Måste implementera och testa algoritmen Svårt att veta om programmet har stannat eller fast i beräkningarna. T ex. 2 n ; n=100 => 40000 billioner år Experimenten kan endast utföras på en begränsad mängd av data, man kan missa viktiga testdata Hårdvaran och mjukvaran måste vara den samma för alla implementationer 121 122 Generellare metod behövs Som använder en högnivåbeskrivning av algoritmerna istället för en implementation av den Tar hänsyn till alla möjliga indata Analys oberoende av hårdvaran och mjukvaran Asymptotisk analys (som vi går igenom på nästa föreläsning) 123