Kursöversikt
Kursen består av 33 föreläsningar och 14 övningar. Alla föreläsningar efter första veckans tre föreläsningar är egentligen entimmesföreläsningar (men av schematekniska skäl har vid ett tillfälle två entimmesföreläsningar kommit att hamna direkt efter varandra). Viggo Kann [VK] och Stefan Nilsson [SN] delar på föreläsningarna. Följande tabell visar vad som kommer att behandlas under föreläsningarna och övningarna. För varje föreläsning anges vilket material i kurslitteraturen som behandlas. Du bör ha skummat det innan du kommer till föreläsningen för att ha riktig glädje av föreläsningen. Föreläsning 9-11 om dynamisk programmering samt föreläsning 20 och 21 om reduktioner och introduktion till komplexitet har omvänd undervisning, så videor ska ses och uppgifter ska göras före dessa föreläsningar.
Undervisning, redovisningar och läsanvisningar
- KT=Kleinberg-Tardos, oavsett om det är KTorig eller KTnie
- KTorig=Kleinberg-Tardos International Edition (2006) eller motsvarande amerikanska utgåva
- KTnie=Kleinberg-Tardos New International Edition (2014), när denna skiljer sig från den tidigare utgåvan (kapitel 5 Divide and Conquer kommer före kapitel 4 Greedy Algorithms och kapitel 13 Randomized Algorithms kommer före kapitel 12 Local Search)
- Sup=supplementet Algorithms and Complexity
Period 1
- F1 (timme 1, timme 2) 24 augusti (2 timmar)
[SN+VK] Introduktion till kursen. Repetition av algoritmanalys, beräkningsmodeller, bitkostnad, enhetskostnad. (KT: 29-56)
Mer material: tidskomplexitet, bitkostnad, ordonotation, mästarsatsen. (Videoklipp)
Länk till inspelning av föreläsningen
-
F2 26 augusti (2 timmar)
[SN] Repetition av sortering (animering 1, animering 2). (KTorig: 209-221/KTnie: 115-127)
Effektiv kodning och testning. Labbpartnermatchning i pausen.
Mer material: insättningssortering (videoklipp), quicksort. Se även Diverse länkar.
Länk till inspelning av föreläsningen
-
F3 27 augusti (2 timmar)
[VK] Datastrukturer: repetition, tidskomplexitet för listor, hashning, praktiska datastrukturer, trie (animering) (KT: 57-65) Latmanshashning, skipplistor. (Sup: 77-83) Labbpartnermatchning i pausen.
Länk till inspelning av föreläsningen
-
Ö1 28 augusti
Algoritmanalys.
-
F4 31 augusti
[SN] Grafer: djupetförstsökning, breddenförstsökning. (KT: 73-107)
Mer material: grafteori och grafsökning, grafpaket i Go
Länk till inspelning av föreläsningen
-
F5 1 september
[VK] Datastrukturer: bloomfilter. Tillämpning: rättstavning.
Mer material: bloomfilter
Länk till inspelning av föreläsningen
-
F6 2 september
[SN] Korrekthetsbevis.
Mer material: invarianter, induktion.
Länk till inspelning av föreläsningen
-
Ö2 3 september
Datastrukturer och grafer. Teoriredovisning för labb 1.
-
F7 8 september
[SN] Algoritmkonstruktion: giriga algoritmer, totalsökning. (Sup: 31-48, KTorig: 115-136, 183-188/KTnie: 157-179, 225-230)
Länk till inspelning av föreläsningen
-
F8 9 september
[SN] Algoritmkonstruktion: dekomposition. (KTorig: 221-234, 242-246/KTnie: 127-140, 148-152)
Länk till inspelning av föreläsningen -
F9 10 september (OBS, omvänd föreläsning, förberedelse krävs!)
[VK] Algoritmkonstruktion: dynamisk programmering, del 1. (KT: 251-260)
Visualiseringar: Fibonaccitalen.
Uppgifter som vi arbetade med under föreläsningen
Uppgifterna med lösningsförslag -
Ö3 10 september
Dekomposition och dynamisk programmering. -
Labb 1 11 september
Konkordans, redovisning. - F10 14 september (OBS, omvänd föreläsning, förberedelse krävs!)
[VK] Algoritmkonstruktion: dynamisk programmering, del 2. (KT: 261-290)
Uppgifter som vi arbetar med under föreläsningen
Uppgifterna med lösningsförslag
Dags att börja titta på övningsmästarprov 1! - F11 15 september (OBS, omvänd föreläsning, förberedelse krävs!)
[VK] Dynamisk programmering, del 3: konstruktion av lösning och motivering av korrekthet. (KT: 290-301, 307-311)
Uppgifter som vi arbetar med under föreläsningen
Uppgifterna med lösningsförslag -
F12 16 september
[SN] Grafer: minimala spännande träd (Prim och Kruskal), kortaste stigar (Dijkstra). (KTorig: 137-157/KTnie: 179-199)
Länk till inspelning av föreläsningen -
Ö4 17 september
Dynamisk programmering. Teoriredovisning för labb 2. -
F13 21 september
[VK] Grafer: demo av maximala flöden. Extra föreläsningsbilder från en kurs på Princeton (KT: 337-357, 367-373)
Länk till inspelning av föreläsningen
- MAS1-övning 22 september
Redovisning av övningsmästarprov 1 som förberedelse till mästarprov 1. -
F14 23 september
[VK] Undre gränser. (Sup: 17-29)
Genomgång av lydelsen till uppgift 1 på mästarprov 1.
Länk till inspelning av föreläsningen
-
F15 24 september
[SN] Algoritmkonstruktion: geometriska algoritmer, geomalgorithms.com, Grahamscan: beskrivning, animering.
Genomgång av lydelsen till uppgift 2 och 3 på mästarprov 1.
Länk till inspelning av föreläsningen
-
Ö5 24 september
Grafalgoritmer och undre gränser.
-
Labb 2 25 september
Rättstavning, redovisning.
-
F16 28 september kl 10
[SN] Algoritmkonstruktion: sortering i linjär tid. Räknesortering och radixsortering. (Sup: 1-6)
Länk till inspelning av föreläsningen
- F17 28 september kl 11
[SN] Algoritmkonstruktion: textsökning. (Sup: 7-16, Pythonkramaren II: 46-48)
Länk till inspelning av föreläsningen
-
F18 2 oktober kl 12 Handskrivna föreläsningsanteckningar
[SN] Algoritmkonstruktion: polynomberäkningar och FFT. (KTorig: 234-242/KTnie: 140-148)
Länk till inspelning av föreläsningen
-
Ö6 30 september
Algoritmkonstruktion. Teoriredovisning för labb 3.
Sammanfattning av alla algoritmer hittills i kursen.
-
F19 5 oktober
[SN] Probabilistiska algoritmer. (KTorig: 707-734, 769-776/KTnie: 661-688, 723-730)
Lasvegas- och Montecarloalgoritmer, Probabilistisk algoritm för medianproblemet
Länk till inspelning av föreläsningen
-
F20 6 oktober OBS, omvänd föreläsning, förberedelse krävs!
[SN] Reduktioner. (KT: 451-459)
-
Ö7 7 oktober
Probabilistiska algoritmer. Reduktioner. -
Mästarprov 1, senast onsdag 7 oktober klockan 19!
Uppgiftslydelsen läggs upp i Canvas 23 september.Algoritmer. Muntliga redovisningar sker 12-16 oktober.
-
F21 8 oktober OBS, omvänd föreläsning, förberedelse krävs!
[SN] Introduktion till komplexitet, motivering. (KT: 463-466 hela sidan)
Period 2
-
F22 26 oktober
[VK] Formella definitioner, turingmaskiner. (PDF att läsa, bild 1, bild 2) (färgfråga 1, 2, 3)
Länk till inspelning av föreläsningen
-
F23 27 oktober
[SN] Oavgörbarhet. (Sup: 49-73)
<inspelning saknas>
-
Ö8 29 oktober (endast grupp 2-4, den lite enklare gruppen är inställd)
Genomgång av lösning till mästarprov 1. Oavgörbarhet.
-
Labb 3 30 oktober
Flöden och matchningar, redovisning.
-
F24 2 november (färgfråga 1 och 2)
[VK] Cooks sats. (PDF att läsa)
Länk till inspelning av föreläsningen -
F25 3 november kl 10 (fråga)
[VK] NP-fullständighetsbevis. (KT: 466-495)
Länk till inspelning av föreläsningen
- F26 3 november kl 11
[VK] NP-reduktionsvisualisering med Alvie.
Länk till inspelning av föreläsningen
I Alvie finns reduktioner för hörntäckning (Vertex Cover) och delmängdssumma (Subset Sum) visualiserade och bevisade.
Alvie är utvecklat av Pierluigi Crescenzi. Om du inte vill ladda ner Alvie själv kan du titta på reduktionsvisualiseringarna som filmer:
Visualisering av reduktionen av 3-CNFSAT till hörntäckning som Flash och Quicktime.
Visualisering av reduktionen av 3-CNFSAT till delmängdssumma som Flash och Quicktime.
-
Ö9 4 november (endast grupp 2-4, den lite enklare gruppen är inställd)
NP-fullständighetsbevis. Teoriredovisning för labb 4.
-
F27 10 november
[SN] NP-fullständighetsreduktioner. (KT: 459-463)
Länk till inspelning av föreläsningen
-
F28 11 november
[VK] Mer NP-fullständighetsreduktioner. (KT: 497-505)
Länk till inspelning av föreläsningen -
Ö10 11 november (endast grupp 2-4, den lite enklare gruppen är inställd)
NP-fullständiga problem.
-
Labb 4 13 november
NP-fullständighetsreduktioner, redovisning.
-
F29 16 november
[SN] Heuristiska algoritmer. Simulated annealing. (KTorig: 661-670/KTnie: 749-758)
Länk till inspelning av föreläsningen -
F30 17 november (färgfråga 1 2 3)
[VK] Approximationsalgoritmer. (KT: 599-630)
Länk till inspelning av föreläsningen - MAS2-övning 19 november (endast grupp 2-4, den lite enklare gruppen är inställd)
Redovisning av övningsmästarprov 2 och genomgång av fler exempel på NP-fullständighetsproblem som förberedelse till mästarprov 2.
-
F31 24 november (färgfråga 1 2)
[VK] Mer approximationsalgoritmer. (webbsida om Christofides algoritm, Viggos lista med approximationsresultat för NP-svåra optimeringsproblem)
Genomgång av lydelsen till uppgift 1 och 3 på mästarprov 2.
Länk till inspelning av föreläsningen -
F32 25 november (färgfråga 1 2)
[VK] Komplexitetsklasser. (KT: 495-497, 531-547)
Genomgång av lydelsen till uppgift 2 på mästarprov 2.
Länk till inspelning av föreläsningen
-
Ö11 26 november (endast grupp 2-4, den lite enklare gruppen är inställd)
Approximationsalgoritmer. Teoriredovisning för labb 5.
-
Mästarprov 2, senast 3 december klockan 15!
Uppgiftslydelsen läggs upp i Canvas 19 november.Komplexitet. Muntliga redovisningar sker 7-11 december.
-
F33 30 november
[VK] Repetition. Kursens betygssystem. Om teoritentan, högrebetygslabben, muntan och omexamination.
Länk till inspelning av föreläsningen
-
Ö12 2 december (endast grupp 2-4, den lite enklare gruppen är inställd)
Komplexitetsklasser och repetition. -
Labb 5 4 december
Heuristik för rollbesättningsproblemet, redovisning. Bokningslistor publiceras i Canvas 3 december.
- Extra labbredovisningstillfälle 11 december för alla labbar, inklusive högrebetygslabben. Bokningslistor publiceras i Canvas 9 december.
- Teoritenta 15 december klockan 9-12. Skrivtid 9:00-10:30 i Canvas. Obligatorisk rättningssession kl 11:00-12:00 i Zoom.
- Ommästarprov för mästarprov 1 och mästarprov 2 offentliggörs 15 december och redovisas skriftligt 4 januari och muntligt 7-11 januari 2021.
- Frivillig munta för högre mästarprovsbetyg, 13 och 15 januari 2021. Muntan genomförs i Zoom. Anmälan görs under perioden 31 december 2020 till 6 januari 2021.
- Redovisning av högrebetygslabben Heuristik för rollbesättningsproblemet (inga andra labbar kan redovisas), 12 januari 2021 kl 9-12. Bokningslistor publiceras i Canvas 31 december.
Efter period 2 är kursen slut. Den som har labbar kvar att redovisa kan göra det antingen i labbveckan i juni eller på labbpassen i systerkursen DD2352 Algoritmer och komplexitet. Säg till den du redovisar för att du ska ha labben rapporterad på adk20.
Den som har mästarprov kvar kan göra dom i en senare kursomgång av antingen ADK (som går varje hösttermin) eller systerkursen DD2352 (som går varje vårtermin; du ska inte registrera dig på DD2352, men du behöver kontakta kursledaren för DD2352, Per Austrin, för att bli inlagd i kursrummet). Säg till den du redovisar att du ska ha mästarprovet rapporterat på adk20.
Den som har tentan kvar kan gå upp på omtentan 9 april 2021 kl 14:00-17:00 eller nästa ordinarietenta i december 2021.