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