TIDS- OCH RUMSKOMPLEXITET

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

Föreläsning 5 Innehåll

Föreläsning 13 Innehåll

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

Programkonstruktion och Datastrukturer

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

Datastrukturer och algoritmer

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

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

Datastrukturer och algoritmer

Algoritmer, datastrukturer och komplexitet

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

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

Föreläsning 10 Innehåll. Prioritetsköer och heapar. ADT Prioritetskö. Interface för Prioritetskö. Exempel på vad du ska kunna

Föreläsning 12+13: Approximationsalgoritmer

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

Sökning och sortering

Föreläsning 5: Giriga algoritmer. Kruskals och Prims algoritmer

Föreläsning 5: Giriga algoritmer. Kruskals och Prims algoritmer

Algoritmer, datastrukturer och komplexitet

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

Föreläsning 4: Giriga algoritmer. Giriga algoritmer

Algoritmteori - effektivitet

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

Föreläsning 8: Intro till Komplexitetsteori

Översikt. Effektiva algoritmer. En telefonlista. Algoritm

TDDB56 DALGOPT Algoritmer och Optimering Tentamen , 8 13

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

Seminarium 13 Innehåll

Datastrukturer D. Föreläsning 2

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

Datastrukturer. föreläsning 2

Lösning av några vanliga rekurrensekvationer

Träd. Sats. Grafer. Definition. En fullständig graf har en båge mellan varje par av noder. Definition

TDDI16 Datastrukturer och algoritmer. Prioritetsköer, heapar, Union/Find

Föreläsning 9 Exempel

I en matchning ligger varje hörn i högst en kant. I en stig ligger varje hörn i högst två kanter.

Algoritmer, datastrukturer och komplexitet

Tentamen: Programutveckling ht 2015

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

BEGREPP HITTILLS FÖRELÄSNING 2 SAMMANSATTA UTTRYCK - SCHEME DATORSPRÅK

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

Tentamen med lösningsförslag 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

Kurvanpassning. Kurvanpassning jfr lab. Kurvanpassning jfr lab

Algoritmer, datastrukturer och komplexitet

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

Algoritmer, datastrukturer och komplexitet

Tentamen Datastrukturer för D2 DAT 035

ADT Prioritetskö. Föreläsning 13 Innehåll. Prioritetskö vs FIFO-kö. Prioritetskö Exempel på användning. Prioritetsköer och heapar

Föreläsning 9 Exempel. Intervallhalveringsmetoden. Intervallhalveringsmetoden... Intervallhalveringsmetoden...

TDDI16 Datastrukturer och algoritmer. Algoritmanalys

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

Föreläsning 13 Innehåll

Föreläsning 11. Giriga algoritmer

Föreläsning 3: Dekomposition. Dekomposition

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

TDDC30. Objektorienterad programmering i Java, datastrukturer och algoritmer. Föreläsning 10 Erik Nilsson, Institutionen för Datavetenskap, LiU

Asymptotisk komplexitetsanalys

TENTAMEN: Algoritmer och datastrukturer. Läs detta!

ADT Prioritetskö. Föreläsning 12 Innehåll. Prioritetskö. Interface för Prioritetskö. Prioritetsköer och heapar

Föreläsning 5: Grafer Del 1

NUMPROG, 2D1212, vt Föreläsning 1, Numme-delen. Linjära ekvationssystem Interpolation, Minstakvadratmetoden

Datastrukturer och algoritmer. Föreläsning 4 Test, Stack och Kö

TTIT33 Scenario för Tema 3 i Termin 3

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

Np MaB vt Låt k = 0 och rita upp de båda linjerna. Bestäm skärningspunkten mellan linjerna.

Algoritmer, datastrukturer och komplexitet

TATA42: Föreläsning 3 Restterm på Lagranges form

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

Algoritmer, datastrukturer och komplexitet

MinMax Algoritmen Implementation och optimering. Joakim Östlund 15 juni 2004

Föreläsninsanteckningar till föreläsning 3: Entropi

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

1 Duala problem vid linjär optimering

Optimering. Optimering

Sortering. Intern/ extern? Antaganden. Vad kan vi kräva? Rank sort. Rank sort. På en nod/ distribuerad? Jämförelsebaserad/ icke jämförelsebaserad?

if (n==null) { return null; } else { return new Node(n.data, copy(n.next));

Föreläsning 7 Innehåll. Rekursion. Rekursiv problemlösning. Rekursiv problemlösning Mönster för rekursiv algoritm. Rekursion. Rekursivt tänkande:

Hyper-Threading i Intelprocessorer

Datastrukturer, algoritmer och programkonstruktion (DVA104, HT 2014) Föreläsning 5

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

Datalogiskt Tänkande i skolan. Fredrik Heintz,

Matematik C (MA1203)

TDDC30/725G63. Objektorienterad programmering i Java, datastrukturer och algoritmer

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

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

Rättningsprogram för Experimentella Metoder 2010

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

Innehåll. Mina målsättningar. Vad krävs för att nå dit? Obligatoriska uppgifter. Websajten. Datastrukturer och algoritmer

Koda ett mattetest 3 av 5. Lektionen handlar om att göra en variabel i programmet för ett multiplikationstest. Koda ett mattetest 3 av 5

Approximerande Splines. B-splines. Minsta kvadrat anpassning. Design av kurvor och ytor.

TANA17 Matematiska beräkningar med Matlab

HKGBB0, Artificiell intelligens

En generell prediktiv kodare utnyttjar signalens utseende N steg tillbaka i tiden för kodningen, dvs vi kodar efter den betingade fördelningen

Anmälningskod: Lägg uppgifterna i ordning. Skriv uppgiftsnummer (gäller B-delen) och din kod överst i högra hörnet på alla papper

Algoritmer, datastrukturer och komplexitet

Algoritmer, datastrukturer och komplexitet

Linjär prediktion. Prediktiv kodning. Linjär prediktion. Prediktiv kodare och avkodare

Transkript:

TIDS- OCH RUMSKOMPLEXITET Praktiska begränsningar långt innan teoretiska Tids- och rumskomplexitet Dramatiska effekter av skillnader i tidskomplexitet Utbytesförhållande tid och rum Hanterliga problem och ohanterliga Hur gör man med ohanterliga problem? 1

Praktiska begränsningar Praktiska begränsningar möter oss långt före den teoretiska beräkningsbarhetens begränsningar i praktiken har vi inte tid med hur långdragna beräkningar som helst i praktiken har vi inte utrymme för hur stora datamängder och algoritmer som helst särskilt tidskrav är ofta direkt kopplade till ekonomiska kostnader Notera: med den hårdvaruutveckling vi haft är det idag mer sällan kostnaden för datorresurserna som sådana som sätter de viktigaste begränsningarna: ofta är det snarare väntetiden för de personer och/eller de processer som behöver resultaten som står för de viktigaste begränsningarna Ex: väderprognoser måste hinna bli klara i (god) tid innan det prognosticerade vädret inträffar Ex: schemaläggningen för en gymnasieskola bör vara klar före terminsstart Ex: en schackdator blir snabbt ointressant för en användare om den tar för lång tid på sig att tänka ut sina drag 2

Tids- och rumskomplexitet 3 Förutsatt att en uppgift är beräkningsbar finns det alltid flera algoritmer som kan lösa samma uppgift Egenskaperna hos dem kan variera En av de viktigaste frågorna är hur mycket resurser algoritmen kräver Resursförbrukningen hos en algoritm kan beskrivas med olika mått tidskomplexiteten T(n) anger hur lång tid (idealiserad och standardiserad) det tar att exekvera algoritmen, uttryckt som en funktion av uppgiftens storlek n rumskomplexiteten S(n) anger hur mycket minnesutrymme (idealiserat och standardiserat) det krävs för att exekvera algoritmen, uttryckt som en funktion av uppgiftens storlek n Ex: om uppgiften är att sortera tal i växande ordning kan antalet tal som ska sorteras tas som ett storleksmått på uppgiften Det är i princip alltid intressant om man kan hitta på ett sätt att lösa uppgiften snabbare för att det spar pengar och/eller för att man då kan hinna bearbeta större datamängder och på så vis få högre kvalitet på resultatet

Tidskomplexitetsfunktioner exempel på Tidskomplexitetsfunktionen anger hur snabbt tidsbehovet växer som en funktion av uppgiftens storlek linjärt och sublinjärt är bra; mindre än kvadratiskt är fortfarande ganska bra kvadratiskt är mindre bra, men ändå bättre än kubiskt och polynom av ännu högre grad exponentiellt och superexponentiellt är mycket, mycket illa T(n) (hektosteg) 5 2 n 5 n 2 50 n 50 log(n) n 4

Ex: dramatiska effekter av skillnader i tidskomplexitet Jämför t.ex. en sorteringsalgoritm med tidskomplexitet n 2 och en med tidskomplexitet n log n Notera: oftast betyder log 2-logaritmen ( 2 log) i dessa sammanhang För uppgifter av storleksordningen 100 värden att sortera spelar valet av sorteringsalgoritm kanske ingen större roll Men om man ska sortera en miljard värden så är det inget man kan ignorera 5 n 3 4 10 1000 1 000 000 000 n 2 9 16 100 1 000 000 n log n 4,755 8 33 10 000 10 18, tar 30 000 år om ett steg tar 1 mikrosekund 3 10 10, tar 1 dag om ett steg tar 1 mikrosekund

Utbytesförhållande mellan tids- och rumskomplexitet 6 Ofta har man ett utbytesförhållande (trade-off) mellan tids- och rumskomplexitet Ex: i stället för att beräkna ett funktionsvärde med en algoritm varje gång det efterfrågas, kan man hålla sig med en i förväg preparerad tabell med funktionsvärden Jämför hur de flesta av oss tycks ha tränat in en multiplikationstabell så att vi kan ge direkt svar på en begränsad uppsättning multiplikationsuppgifter; större multiplikationsproblem kräver att vi medvetet exekverar en algoritm Ex: omfattande datamängder kan ofta lagras i starkt komprimerad form så att de kräver avsevärt mindre utrymme, men på bekostnad av lagrings- och accesstiden, dvs. de algoritmer som måste exekveras för att komprimera, respektive expandera datamängden före normal användning Anmärkning: man skiljer mellan förlustfria (lossless) komprimeringsmetoder, där man inte förlorar någon information, och icke förlustfria metoder där den komprimerade versionen innehåller mindre information än den ursprungliga (MP3-ljud, t.ex., är sämre än motsvarande CD-ljudspår; medan FLAC är ett förlustfritt ljudformat) Ex: även minnespyramiden i von Neumann-arkitekturen kan ses som en illustration av utbytesförhållandet mellan tid och rum: om vi behöver mycket utrymme så kan vi få det, men på bekostnad av accesstiden

Hanterliga problem och ohanterliga Hanterlighet är ett teoretiskt begrepp som försöker fånga det intuitiva begreppet praktisk beräkningsbarhet ett problem är hanterligt tractable om man känner till en lösning där resursanspråken begränsas av polynomfunktioner av uppgiftens storlek n, för stora n ett problem är ohanterligt intractable om det saknar kända algoritmer av polynomisk komplexitet Hur gör man då med ohanterliga problem, och med problem som tekniskt sett är hanterliga, men där kända algoritmer ändå har för hög komplexitet för de uppgifter man vill lösa? försöker hitta en bättre algoritm för vissa problem kan man dock bevisa att det ligger i problemets natur att det inte kan finnas någon lösning med bättre komplexitet, så det är ingen idé att leta nöjer sig med någon approximativ lösning Ex: det generella schemaläggningsproblemet är ohanterligt, men det finns algoritmer som genererar ett fullt acceptabelt schema utan att kunna garantera att det alltid är den optimala lösningen modifierar problemet så att det nya problemet har en praktiskt godtagbar lösning 7

Lägesöversikt 8

Att diskutera Nämn olika typer av vinster/fördelar med en snabbare algoritm, dvs. varför försöker man hitta snabbast möjliga lösning? Hur förhåller sig rums- respektive tidskomplexitet till varandra? Hur definieras hanterliga problem? Om ett problem teoretiskt sett är ohanterligt, vad kan man då göra för att ändå försöka angripa det? 9