DM507 Algoritmer og datastrukturer

Forår 2019
Rolf Fagerberg


Generel information

Kurset starter mandag den 4. februar og slutter fredag den 24. maj.

Den skriftlige eksamen finder sted fredag den 21. juni. Tider og lokaler kan findes på kursets Blackboard-side.

Der vil være en spørgetime onsdag 19. juni kl. 15:15 i U82. Medbring spørgsmål til pensum og til løsning af konkrete opgaver (f.eks. gamle eksamensopgaver).

Datoen for reeksamen er torsdag den 29. august, 2019. Reeksamen er mundtlig. Listen af emner man kan trække samt andre oplysninger kan findes her. Der afholdes en spørgetime før reeksamen tirsdag den 27. august kl. 15:15 til 16:00 i U176.

Projektet

Timer

Uge Type Dato Tid Lokale Indhold
6 I Mandag 4/2 16-18 U55 Introduktion til kurset (slides, kapitel 1 i lærebogen).

Eksempel på algoritmeanalyse: Ombytningspuslespil (slides, noter). Et ombytningspuslespil fra nettet. Forslag til videomateriale: Tim Roughgarden, Stanford, afsnit 1.1, 1.4 og 1.8.

6 I Fredag 8/2 10-12 U55 Start på sorteringsalgoritmer: Insertionsort, Mergesort (side 147-150 i lærebogen, afsnit 2.1-3 i lærebogen, side 1-12 i slides). Vi vender tilbage til begreberne "Invarianter" og "Divide and Conquer" lidt senere i kurset - de dele af teksten, som beskriver disse begreber, kan indtil videre læses let. Forslag til videomateriale: Tim Roughgarden, Stanford, afsnit 1.5-7.

Disse timer forelæses af Kim Skak Larsen.

6 TE       Opgaver
7 I Onsdag 13/2 08-10 U1 Asymptotisk notation (afsnit 3.1 i lærebogen, slides, Java-programmerne fra slides: Linear.java, Quadratic.java, Cubic.java). Det kan være en fordel at orientere sig i afsnit 3.2 i lærebogen hvis der i kurset bruges matematiske formler, definitioner og metoder, man har glemt. Forslag til videomateriale: Tim Roughgarden, Stanford, afsnit 2.1-4 (evt. også 2.5 for ekstra eksempler).

Rekursive algoritmer (side 30 i lærebogen, slides).

Disse timer forelæses af Kim Skak Larsen.

7 TE       Opgaver
8 I Onsdag 20/2 08-10 U1 Flere sorteringsalgoritmer: Quicksort (afsnit 7.1-3 i lærebogen, næste dele af slides). Forslag til videomateriale: Tim Roughgarden, Stanford, afsnit 5.1-4.
8 I Fredag 22/2 10-12 U55 Heapsort (afsnit 6.1-4 i lærebogen, B.5.3 i lærebogen, sidste del af slides). Forslag til videomateriale: Mifta Sintaha.
8 TE       Opgaver
9 I Onsdag 27/2 08-10 U1 Prioritetskøer (afsnit  6.5 i lærebogen, slides). Forslag til videomateriale: Tim Roughgarden, Stanford, afsnit 12.1-3 [bemærk at de enkelte heap-operationer ikke nødvendigvis hedder det samme som i bogen].

Udlevering og diskusson af Projekt, del I. Tilhørende Java.filer: PQ.java, Element.java, Heapsort.java, Testfiler.zip.

Flere sorteringsalgoritmer: sortering af heltal med Countingsort og Radixsort (afsnit 8.2-3 i lærebogen, anden del af slides). For at forstå sidste side af slides om Radixsort, skal man kende det binære talsystem. Gør man ikke det, så check første halvdel af disse slides.

9 TE       Opgaver
10 I Onsdag 6/3 08-10 U1 Nedre grænser for sammenligningsbaseret sortering (afsnit 8.1 i lærebogen, første del af slides, eksempler på decisiontrees for insertionsort (n=1,2,3,4,5,6,7), mergesort (n=1,2,3,4,5,6,7)) og heapsort (n=1,2,3,4,5,6,7)). Forslag til videomateriale: Tim Roughgarden, Stanford, afsnit 8.6.
10 I Fredag 8/3 10-12 U55 Dictionaries og deres implementation via binære søgetræer (side 229-230 i lærebogen, afsnit 10.4 i lærebogen, afsnit 12.1-3 i lærebogen, første del af slides. Forslag til videomateriale: Tim Roughgarden, Stanford, afsnit 13.1-2 samt 13.3 indtil 22:00.

Rød-sorte træer (kapitel 13 i lærebogen, midten af slides (sletninger gennemgås dog først næste gang)). Forslag til videomateriale: Tim Roughgarden, Stanford, afsnit 13.4-6. Bemærk at lærebogen er ret tung læsning i kapitel 13. Det skyldes dels, at dens pseudo-kode er fungerende kode (robust og gennemtænkt, så den også virker i specialtilfælde, såsom tomme træer, etc.) med alle detaljer, og dels at den udtrykker og beviser invarianter på niveau 2 (mere om invarianter til en senere forelæsning), dvs. under henvisning til denne kode. Det anbefales (for alle emner, men her endnu mere end normalt) at læse lærerens slides før man nærlæser lærebogen.

10 TE       Opgaver
11 I Onsdag 13/3 08-10 U1 Multiple-choice test (25 minutter) i klassen (kan findes i Blackboard under E-test som MC test 1).

Sletning i rød-sorte træer (afsnit 13.4 i lærebogen).

Implementation af dictionaries via hashing (afsnit 11.1-4 i lærebogen [dog ikke siderne 265-268 og 274-276], slutningen af slides). Forslag til videomateriale: Tim Roughgarden, Stanford, afsnit 14.1-3 og 15.1.

11 TE       Opgaver
12 I Onsdag 20/3 08-10 U1 Udlevering og diskussion af Projekt, del II. Tilhørende Java.filer: Dict.java, TestProjectPartII.java.

Dekoration af binære søgetræer (afsnit 14.1-2 i lærebogen, slides). Forslag til videomateriale: Tim Roughgarden, Stanford, afsnit 13.3 fra 22:00.

Invarianter (siderne 18-20, 32-33, 157, 171-173 og 318-322 i lærebogen, slides).

12 TE       Opgaver
12 I Fredag 22/3 10-12 U55 Divide and Conquer algoritmer, rekursionsligninger, og analyse heraf via rekursionstræer (afsnit 4.0 og 4.4 lærebogen, slides). Forslag til videomateriale: Tim Roughgarden, Stanford, afsnit 4.1 [bemærk at udgaven af Master Theorem i disse videoer er en smule mindre generel end lærebogens, og at rækkefølgen af cases er forskellig].
13 I Onsdag 27/3 08-10 U1 Tilbagelevering og feedback på projekt, del I.

Analyse af Divide and Conquer algoritmer via Master Theorem. (afsnit 4.4 og 4.5 i lærebogen, slides). Forslag til videomateriale: Tim Roughgarden, Stanford, afsnit 4.2, 4.3 og 4.5 [bemærk at udgaven af Master Theorem i disse videoer er en smule mindre generel end lærebogens, og at rækkefølgen af cases er forskellig].

En berømt Divide and Conquer algoritme: Strassens algoritme for matrix-multiplikation (afsnit 4.2 i lærebogen, slides). Forslag til videomateriale: Tim Roughgarden, Stanford, afsnit 3.3.

For en historisk gennemgang af udviklingen i køretid for algoritmer for matrix-multiplikation, se denne wikipedia side (ikke pensum).

13 TE       Opgaver
14 I Onsdag 3/4 08-10 U1 Dynamisk programmering (afsnit 15.1-2 i lærebogen, slides. Forslag til videomateriale: Dan Suthers, University of Hawaii, Dan Suthers, University of Hawaii, Dan Suthers, University of Hawaii.

Bellmans forklaring om historien bag navnet Dynamisk Programmering (ikke pensum).

14 I Fredag 5/4 14-16 U55 Midtvejsevaluering af kurset.

Mere om dynamisk programmering (afsnit 15.4 i lærebogen, slides).

14 TE       Opgaver
15 I Onsdag 10/4 08-10 U1 Grådige algoritmer (afsnit 16.1-3 i lærebogen, slides). NB: både afsnit 16.1 og første del af 16.2 er ret langstrakt, og refererer nogle gange til dynamisk programmering (kapitel 15) - læs disse afsnit let, og fokuser på slides.

Udlevering og diskussion af Projekt, del III. Tilhørende filer: to biblioteksfunktioner BitInputStream.java, BitOutputStream.java, samt et eksempel på brug af dem Test.java (læs kommentarer i programmet).

15 TE       Opgaver. Tilhørende filer: to biblioteksfunktioner BitInputStream.java, BitOutputStream.java, samt et eksempel på brug af dem Test.java (læs kommentarer i programmet).
16 I+TE       Bemærk: der er ingen timer (hverken I eller TE) i uge 16 pga. påske.
17 I Onsdag 24/4 08-10 U1 Multiple-choice test i klassen i opgaveteksten til projekt del III (15 minutter). Kan findes i Blackboard under E-test som MC test Projekt Del III.

Bevis for korrekthed af Huffmans algoritme (afsnit 16.3 i lærebogen, sidste del af slides).

Datastrukturer for disjoint sets (afsnit 21.1-3 i lærebogen, slides).

17 TE       Opgaver
17 I Fredag 26/4 10-12 U110 Multiple-choice test i klassen.

Start på grafalgoritmer: repræsentation af grafer, BFS grafgennemløb (afsnit 22.1-2 i lærebogen, første halvdel af slides). Derudover er de første tre sider af appendiks B.4 i lærebogen (side 1168-70) om basal terminologi for grafer overladt til selvstændig læsning. Forslag til videomateriale: Tim Roughgarden, Stanford, afsnit 9.2 og 10.1-3.

18 I Onsdag 1/5 08-10 U1

Bevis for korrekthed af BFS gennemløb (afsnit 22.2 i lærebogen, første halvdel af slides)

DFS grafgennemløb, DAGs og topologisk sorting (afsnit 22.3-4 i lærebogen, anden halvdel af slides). Forslag til videomateriale: Tim Roughgarden, Stanford, afsnit 10.4-6.

18 TE       Opgaver
19 I Onsdag 8/5 08-10 U1 Tilbagelevering og feedback på projekt, del II.

Sammenhængskomponenter (i uorienterede grafer) og stærke sammenhængskomponenter (i orienterede grafer) (side 1170-71 og 615-17 i lærebogen, slides).

19 I Fredag 10/5 10-12 U55 Minimum udspændende træer (kapitel 23 i lærebogen, slides).
19 TE       Opgaver
20 I Onsdag 15/5 08-10 U1 Korteste veje, single source, all-pairs. (afsnit 24.0 til 24.3 i lærebogen, det meste af slides. Forslag til videomateriale: Tim Roughgarden, Stanford, afsnit 11.1-4.
20 TE       Opgaver
21 I Onsdag 22/5 08-10 U1 Afslutning af korteste veje, single source. Korteste veje, all-pairs. (afsnit 24.2-3 i lærebogen, afsnit 25.2-3 i lærebogen, slides. Forslag til videomateriale: Tim Roughgarden, Stanford, afsnit 11.1-4.
21 TE       Opgaver


Maintained by Rolf Fagerberg (rolf@imada.sdu.dk)