Kursöversikt

Viggo Kann [VK] och Per Austrin [PA] delar på föreläsningarna. Tomas Ekholm [TE] ger en gästföreläsning. Både föreläsningar och övningar ges i sal på campus. Nedanstående 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. I tabellen nedan finns länkar till föreläsningsbilder, övningsuppgifter och annat material. Föreläsningsbilderna kommer i några fall att uppdateras under kursens gång.

Föreläsning 9-11 om dynamisk programmering samt föreläsning 19 om reduktioner har omvänd undervisning, så det finns förberedande videor och uppgifter till dessa föreläsningar. Första timmen på dessa föreläsningar är avsatt för att du ska kunna göra förberedelserna. Ta i så fall med egen dator. Om du gör förberedelserna i förväg räcker det att du kommer till andra timmen på 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

Bilder Datum Lärare Innehåll Läsanvisning

Mer material

F1 25 augusti (2 timmar) VK+PA Introduktion till kursen. Repetition av algoritmanalys. KT: 29-56

algoritm, tidskomplexitetordonotation,  bitkostnad

F2 27 augusti (2 timmar) PA Beräkningsmodeller, bitkostnad, enhetskostnad, mästarsatsen, repetition av sorteringsalgoritmer och datastrukturer.
Labbpartnermatchning i pausen.
KTorig: 209-221/KTnie: 115-127,
KT: 57-65
F3 28 augusti (2 timmar) VK+TE Praktiska datastrukturer. Beständiga datastrukturer.
Labbpartnermatchning i pausen.

Sup: 77-83,
beständiga datastrukturer,
Ö1 28 augusti 4 grupper Algoritmanalys.
[förbereder för labb 1, MAS1, TEN1]
F4 31 augusti PA

Grafer: djupetförstsökning, breddenförstsökning

KT: 73-107


grafteori och grafsökning, grafpaket i Go

Ö2 1 september 4 grupper

Datastrukturer och grafer. Teoriredovisning till labb 1.
[förbereder för MAS1, TEN1]

F5 2 september VK Datastrukturer: bloomfilter. Tillämpning: rättstavning

bloomfilter,
färgfråga om datastrukturer

F6 3 september PA Korrekthetsbevis

invarianter, induktion

F7 8 september VK Algoritmkonstruktion: giriga algoritmer, totalsökning. Sup: 31-48, KTorig: 115-136, 183-188/KTnie: 157-179, 225-230
F8 9 september PA Algoritmkonstruktion: dekomposition. KTorig: 221-234, 242-246/KTnie: 127-140, 148-152

F9
Förberedelse krävs

10 september VK Algoritmkonstruktion: dynamisk programmering, del 1.

Omvänd föreläsning!
Första timmen: tid för att göra förberedelserna.
Andra timmen: frågestund och arbete med uppgifter i grupp

KT: 251-260 Fibonaccitalen
Ö3 10 september 2 grupper Dekomposition och dynamisk programmering.
[förbereder för labb 2, MAS1]
Labb 1 11 september Redovisning av labb 1: Beständig array
F10
Förberedelse krävs
15 september VK

Algoritmkonstruktion: dynamisk programmering, del 2. 
Första timmen: tid för att göra förberedelserna.
Andra timmen: frågestund och arbete med uppgifter i grupp

KT: 261-290

Dags att börja titta på övningsmästarprov 1!

Ö4 15 september 4 grupper

Dynamisk programmering. Teoriredovisning till labb 2.
[förbereder för MAS1]

F11
Förberedelse krävs
16 september VK

Dynamisk programmering, del 3: konstruktion av lösning och motivering av korrekthet.

Första timmen: tid för att göra förberedelserna.
Andra timmen: frågestund och arbete med uppgifter i grupp

KT: 290-301, 307-311
F12 17 september PA

Grafer: kortaste stigar (Dijkstra) och minimala spännande träd (Prim och Kruskal)

KTorig: 137-157/KTnie: 179-199 Matematisk notation i ADK
F13 22 september VK

Grafer: maximala flöden

KT: 337-357, 367-373

demo av maximala flöden. Extra föreläsningsbilder från en kurs på Princeton

Ö-MAS1 23 september 4 grupper 

Redovisning av övningsmästarprov 1 som förberedelse till mästarprov 1, som publiceras kl 8:00 den 24 september.

F14 24 september PA

Undre gränser. Genomgång av lydelsen till uppgift 1 och 3 på mästarprov 1. (spelas in)

Sup: 17-29
F15 25 september VK

Algoritmkonstruktion: sortering i linjär tid.
Genomgång av lydelsen till uppgift 2 på mästarprov 1 (spelas in)

Sup: 1-6

Räknesortering och radixsortering

Ö5 25 september 2 grupper

Grafalgoritmer och undre gränser.
[förbereder för labb 3, MAS1, TEN1]

Labb 2 28 september

Redovisning av labb 2: Rättstavning.

F16 29 september PA

Algoritmkonstruktion: geometriska algoritmer

Grahamscan: beskrivning.
F17 30 september PA

Algoritmkonstruktion: textsökning

Sup: 7-16, Pythonkramaren II: 46-48

Ö6 1 oktober 4 grupper

Algoritmkonstruktion. Teoriredovisning till labb 3
[förbereder för MAS1]

Sammanfattning av alla algoritmer hittills i kursen
F18 5 oktober PA

Probabilistiska algoritmer

KTorig: 707-734, 769-776/KTnie: 661-688, 723-730

Lasvegas- och Montecarloalgoritmer, Probabilistisk algoritm för medianproblemet

F19
Förberedelse krävs
6 oktober PA

Reduktioner.

Första timmen: tid för att göra förberedelserna.
Andra timmen: frågestund och arbete med uppgifter i grupp.

KT: 451-459
Ö7 7 oktober 2 grupper

Probabilistiska algoritmer. Reduktioner.
[förbereder för labb 4, MAS2, TEN1]

F20 8 oktober PA

Kryptografi

Mästarprov 1 Inlämning senast 13 oktober kl 19

Algoritmkonstruktion.

Uppgiftslydelsen publiceras i Canvas 24 september.
Muntliga redovisningar sker 19-23 oktober (tentaveckan).

Period 2

F21 26 oktober PA Introduktion till komplexitet KT: 463-466 hela sidan motivering.
video om P, NP, och komplexitet (10 min).
F22 27 oktober VK Formella definitioner

turingmaskiner. (PDF att läsa, bild 1, bild 2, bild 3)

F23 28 oktober PA Oavgörbarhet Sup: 49-73
Ö8 29 oktober 2 grupper

Genomgång av lösning till mästarprov 1. Oavgörbarhet.
[förbereder för MAS2, TEN1]

Labb 3 30 oktober Redovisning av labb 3: Flöden och matchningar
F24 2 november VK Cooks sats. PDF att läsa
Ö9 3 november 4 grupper

NP-fullständighetsbevis. Teoriredovisning till labb 4.
[förbereder för MAS2, TEN1]

F25 5 november kl 10 VK NP-fullständighetsbevis KT: 466-495
F26 5 november kl 11 VK

NP-reduktionsvisualisering med Alvie.

Ladda ner Alviekällkoden själv och kompilera.
Visualisering av reduktion av 3-CNFSAT till hörntäckning som mp4.
Visualisering av reduktion av 3-CNFSAT till delmängdssumma som mp4.
F27 10 november VK NP-fullständighetsreduktioner. KT: 459-463 Presentationsbilder från 2024
F28 11 november PA Mer NP-fullständighetsreduktioner. KT: 497-505

Uppgifter för F27-F28
Presentationsbilder från 2024

Fördjupning: 

Math has a fatal flaw - en film om ofullständighet och oavgörbarhet
Reducing reductions to intuition
- Beskrivning och definitioner av dom olika typerna av reduktioner som ingår i ADK.

Ö10 12 november 2 grupper NP-fullständiga problem.
[förbereder för MAS2]
Dags att börja titta på övningsmästarprov 2!
Labb 4 13 november Redovisning av labb 4: NP-fullständighetsreduktioner - Rollbesättning
F29 16 november VK Heuristiska algoritmer KTorig: 661-670/KTnie: 749-758

Visualisering av 2-opt

Visualisering av simulerad härdning

TSP-bok

Ö-MAS2 18 november 4 grupper

Redovisning av övningsmästarprov 2  (lösningsförslag) och genomgång av fler exempel på NP-fullständighetsproblem som förberedelse till mästarprov 2, som publiceras denna dag.

F30 19 november PA

Approximationsalgoritmer.
Genomgång av lydelsen till uppgift 1 och 3 på mästarprov 2.

KT: 599-630
F31 23 november VK

Mer approximationsalgoritmer.
Genomgång av lydelsen till uppgift 2 på mästarprov 2. 

webbsida om Christofides algoritm, Viggos lista med approximationsresultat för NP-svåra optimeringsproblem

Ö11 24 november 4 grupper

Approximationsalgoritmer. Teoriredovisning till labb 5.
[förbereder för labb 5, TEN1]

 

F32 25 november VK

Komplexitetsklasser.

KT: 495-497, 531-547
F33 3 december VK

Repetition. Kursens betygssystem. Om teoritentan, högrebetygslabben, muntan och omexamination.

Mästarprov 2 Inlämning senast 1 december kl 19:00

Komplexitet.

Uppgiftslydelsen publiceras i Canvas 19 november klockan 12:00.
Muntliga redovisningar sker 7-11 december.

Ö12 30 november 2 grupper

Komplexitetsklasser och repetition.
[förbereder för TEN1]

Labb 5 2 december

Redovisning av labb 5: Heuristik för rollbesättningsproblemet

Restlabbs- redovisning 11 december

Extra labbredovisningstillfälle för alla labbar, inklusive högrebetygslabben.
Eftersom längden på redovisningarna varierar läggs inga bokningslistor upp, utan Stay-a-while används som kö.

Teoritenta 14 december kl 9:00-12:00

Skrivtid 9:00-10:30 i Canvas. Obligatorisk rättningssession kl 11:00-12:00 i Zoom. Sedvanlig tentaanmälan måste göras i förväg. Den som har 25% förlängd skrivtid tentar klockan 8:37-10:30.

2026

Ommästarprov Inlämning senast 30 december kl 19:00

Ommästarprov för mästarprov 1 och mästarprov 2 offentliggörs 14 december. Muntliga redovisningar sker 4-5 januari.

Betygshöjande extralabb 4 januari kl 9-12

Redovisning av högrebetygslabben Heuristik för rollbesättningsproblemet (övriga labbar kan dropinredovisas i mån av tid) . Bokningslistor publiceras i Canvas 31 december.

Labbkursreflektion

Inlämning senast 8 januari för rapportering i Ladok vecka 2.

Frivillig munta 7 och 8 januari

Frivillig munta för höjning av mästarprovsbetyg,  Anmälan görs under perioden 31 december till 4 januari. Instruktioner om hur muntan genomförs

Efter period 2 är kursen slut. Den som har labbar kvar att redovisa kan göra det antingen i labbveckan i juni eller under våren på labbpassen i systerkursen DD2352 Algoritmer och komplexitet (mer information här). Säg till den du redovisar för att du ska ha labben rapporterad på adk26. Labbkursreflektionen lämnar du in i kursrummet för adk26 när du är klar med alla labbarna.

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).

Den som har teoritentan kvar kan anmäla sig till och gå upp på omtentan i april 2026 eller nästa ordinarietenta i december 2027.