DM507/DM578/DS814/SE4-DMAD Algoritmer og datastrukturer

Forår 2023
Rolf Fagerberg


Generel information

Kurset starter tirsdag den 7. februar og slutter fredag den 26. maj.

Timer

Når tid eller sted er angivet med rødt, er det for at henlede opmærksomheden på, at placeringen afviger fra det normale.

Uge Type Dato Tid Lokale Indhold
6 F Tirsdag 7/2 10-12 U55 Introduktion til kurset (slides, kapitel 1 i lærebogen [3. udgave: kapitel 1]).

Eksempel på en (meget detaljeret) algoritmeanalyse: Ombytningspuslespil (slides, noter). Et ombytningspuslespil fra nettet.

Optagelse af online forelæsning 2021 (NB: detaljerne om kursets struktur er en smule ændret, se slides ovenfor i stedet).

Forslag til yderligere videomateriale (ikke pensum): Tim Roughgarden, Stanford, afsnit 1.1, 1.4 og 1.8.

6 F Torsdag 9/2 08-10 U55

Start på sorteringsalgoritmer: Insertionsort, Selectionsort, Mergesort (side 157-160 i lærebogen [3. udgave: side 147-150], kapitel 2 i lærebogen [3. udgave: kapitel 2], 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.

Optagelse af online forelæsning 2021.

Forslag til yderligere videomateriale (ikke pensum): Tim Roughgarden, Stanford, afsnit 1.5-7.

6 E       Opgaver.
7 F Tirsdag 14/2 10-12 U55 Afslutning af Mergesort (side 13 i slides).

Asymptotisk analyse (afsnit 3.1-2 i lærebogen [3. udgave: afsnit 3.1], slides, Java-programmerne fra slides: Linear.java, Quadratic.java, Cubic.java). Det kan være en fordel at orientere sig i afsnit 3.3 i lærebogen [3. udgave: afsnit 3.2] hvis der i kurset bruges matematiske formler, definitioner og metoder, man har glemt.

Optagelse af online forelæsning 2021.

Forslag til yderligere videomateriale (ikke pensum): Tim Roughgarden, Stanford, afsnit 2.1-4 (evt. også 2.5 for ekstra eksempler).

7 E       Opgaver for DM507/DM578/DS814, opgaver for SE4-DMAD (samme opgaver i en lidt anden gruppering pga. skemaet).
8 F Tirsdag 21/2 10-12 U45 Repetition af asymptotisk analyse (afsnit 3.1-2 i lærebogen [3. udgave: afsnit 3.1], slides).

Et eksempel på at forskellige algoritmer for samme beregningsproblem kan have meget forskellige køretider: the maximum sub-array problem (wikipedia, MaxSum1.java, MaxSum2.java, MaxSum3.java).

Optagelse af online forelæsning 2021.

8 F Torsdag 23/2 08-10 U55 Divide-and-conquer/rekursive algoritmer (side 34 i lærebogen [3. udgave: side 30], slides).

Flere sorteringsalgoritmer: Quicksort (afsnit 7.1-3 i lærebogen [3. udgave: afsnit 7.1-3], næste dele af slides).

Optagelse af online forelæsning 2021 (rekursive algoritmer). Optagelse af online forelæsning 2021 (quicksort).

Forslag til yderligere videomateriale (ikke pensum): Tim Roughgarden, Stanford, afsnit 5.1-4.

8 E       Opgaver.
9 F Tirsdag 28/2 10-12 U55 Flere sorteringsalgoritmer: Heapsort (afsnit 6.1-4 i lærebogen [3. udgave: afsnit 6.1-4], afsnit B.5.3 i lærebogen [3. udgave: afsnit B.5.3], sidste del af slides).

Prioritetskøer (afsnit  6.5 i lærebogen [3. udgave: afsnit  6.5], slides).

Optagelse af online forelæsning 2021 (heapsort). Optagelse af online forelæsning 2021 (prioritetskøer).

Forslag til yderligere videomateriale (ikke pensum): Mifta Sintaha, Tim Roughgarden, Stanford, afsnit 12.1-3 [bemærk at de enkelte heap-operationer ikke nødvendigvis hedder det samme som i bogen].

9 E       Opgaver for DM507/DM578/DS814, opgaver for SE4-DMAD (samme opgaver i en lidt anden gruppering pga. skemaet).
10 F Tirsdag 7/3 10-12 U55 Udlevering af projektet, del I (kun for DM507 og DS814).

Nedre grænser for sammenligningsbaseret sortering (afsnit 8.1 i lærebogen [3. udgave: afsnit 8.1], 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)).

Flere sorteringsalgoritmer: sortering af heltal med Countingsort og Radixsort (afsnit 8.2-3 i lærebogen [3. udgave: afsnit 8.2-3], 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 side 5-6 i disse slides.

Optagelse af online forelæsning 2021 (udlevering af projekt del I).

Optagelse af online forelæsning 2021 (nedre grænser for sortering, Countingsort og Radixsort).

Forslag til yderligere videomateriale (ikke pensum): Tim Roughgarden, Stanford, afsnit 8.6.

10 F Torsdag 9/3 14-16 U55 Lidt mere om projekt I: redirection af standard input og output (relevant viden for alle).

Dictionaries og deres implementation via binære søgetræer (side 249-251 i lærebogen [3. udgave: side 229-231], afsnit 10.3 (mest figur 10.6) i lærebogen [3. udgave: afsnit 10.4 (mest figur 10.9)], afsnit 12.1-3 i lærebogen [3. udgave: afsnit 12.1-3], første del af slides).

[NB: Det antages i dette kursus, at man allerede er bekendt med de simple datastrukturer lænket liste, stak og , f.eks. fra ens programmeringskursus. I modsat fald, læs afsnit 10.1-2 i lærebogen [3. udgave: afsnit 10.1-2].]

Optagelse af online forelæsning 2021 (redirection).

Optagelse af online forelæsning 2021 (binære søgetræer).

Forslag til yderligere videomateriale (ikke pensum): Tim Roughgarden, Stanford, afsnit 13.1-2 samt 13.3 indtil 22:00.

10 E       Opgaver.
11 F Tirsdag 14/3 10-12 U55 Rød-sorte træer (afsnit 13.1-4 i lærebogen [3. udgave: afsnit 13.1-4], midten af slides).

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.

Implementation af dictionaries via hashing (afsnit 11.1-4 i lærebogen, dog ikke: siderne 278-281, beviset for corollary 11.3, afsnit 11.3.3-1.3.5 og siderne 297 (midt) til 300 [3. udgave: afsnit 11.1-4, dog ikke: siderne 258-260, 266-268 og 274-276], slutningen af slides).

Optagelse af online forelæsning 2021 (rød-sorte træer). Optagelse af online forelæsning 2021 (sletning i rød-sorte træer, hashing). Optagelse af online forelæsning 2021 (repetition af hashing).

Forslag til yderligere videomateriale (ikke pensum): Tim Roughgarden, Stanford, afsnit 13.4-6. Tim Roughgarden, Stanford, afsnit 14.1-3 og 15.1.

11 E       Opgaver for DM507/DM578/DS814, opgaver for SE4-DMAD (samme opgaver i en lidt anden gruppering pga. skemaet).
12 F Tirsdag 21/3 10-12 U55 Dekoration af binære søgetræer (afsnit 17.1-2 i lærebogen [3. udgave: afsnit 14.1-2], slides).

Invarianter (siderne 20-21, 167-168, 184 og 340-345 i lærebogen [3. udgave: siderne 18-20, 32-33, 157, 171-173 og 318-322], slides).

Optagelse af online forelæsning 2021 (dekoration af binære søgetræer). Optagelse af online forelæsning 2021 (invarianter).

Forslag til yderligere videomateriale (ikke pensum): Tim Roughgarden, Stanford, afsnit 13.3 fra 22:00.

12 F Torsdag 23/3 14-16 U1 Divide and Conquer algoritmer, rekursionsligninger, og analyse heraf via rekursionstræer og via Master Theorem (afsnit 4.0, 4.4 og 4.5 i lærebogen [3. udgave: afsnit 4.0, 4.4 og 4.5 (bemærk at i 3. udgave er case 2 i Master Theorem en smule mindre generel end i 4. udgave)], slides side 1-23).

Optagelse af online forelæsning 2021 (rekursionsligninger). Bemærk at i 4. udgave er case 2 i Master Theorem en smule mere generel end i 3. udgave, som denne online forelæsning referer til).

Forslag til yderligere videomateriale (ikke pensum): Tim Roughgarden, Stanford, afsnit 4.1, 4.2, 4.3 og 4.5 [bemærk at udgaven af Master Theorem i disse videoer er mindre generel end lærebogens, og at rækkefølgen af cases er forskellig].

12 E       Opgaver.
13 F Tirsdag 28/3 10-12 U55 Udlevering af projektet, del II (kun for DM507 og DS814).

Mere om rekursionstræsmetoden og Master Theorem (afsnit 4.0, 4.4 og 4.5 i lærebogen [3. udgave: afsnit 4.0, 4.4 og 4.5 (bemærk at i 3. udgave er case 2 i Master Theorem en smule mindre generel end i 4. udgave)], slides side 24-33)

En berømt Divide and Conquer algoritme: Strassens algoritme for matrix-multiplikation (afsnit 4.2 i lærebogen [3. udgave: afsnit 4.2], slides).

Optagelse af online gennemgang af projektbeskrivelse 2021.

Optagelse af online forelæsning 2021 (mere om rekursionsligninger, Strassens algoritme).

Forslag til yderligere videomateriale (ikke pensum): 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 E       Opgaver for DM507/DM578/DS814, opgaver for SE4-DMAD (samme opgaver i en lidt anden gruppering pga. skemaet).
15 F Tirsdag 11/4 10-12 U55 Dynamisk programmering (afsnit 14.1 i lærebogen [3. udgave: afsnit 15.1], slides).

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

Optagelse af online forelæsning 2021 (dynamisk programmering).

Forslag til yderligere videomateriale (ikke pensum): Dan Suthers, University of Hawaii.

15 F Torsdag 13/4 08-10 U55 Mere om dynamisk programmering (afsnit 14.4 og 14.2 i lærebogen [3. udgave: afsnit 15.4 og 15.2], slides).

Start på grådige algoritmer (afsnit 15.1 i lærebogen [3. udgave: afsnit 16.1], slides side 1-7).

NB: afsnit 15.1 [3. udgave: afsnit 16.1] er ret langstrakt, og refererer nogle gange til dynamisk programmering (kapitlet før) - læs dette afsnit let, og fokuser på slides.

Optagelse af online forelæsning 2021 (mere om dynamisk programmering), optagelse af online forelæsning 2021 (endnu mere om dynamisk programmering). optagelse af online forelæsning 2021 (start på grådige algoritmer).

Forslag til yderligere videomateriale (ikke pensum): Dan Suthers, University of Hawaii, Dan Suthers, University of Hawaii.

15 E       Opgaver.
16 F Tirsdag 18/4 10-12 U55 Mere om grådige algoritmer (afsnit 15.2-3 i lærebogen [3. udgave: afsnit 16.2-3], resten af slides).

NB: starten af afsnit 15.2 [3. udgave: afsnit 16.2] er ret langstrakt, og refererer nogle gange til dynamisk programmering (kapitlet før) - læs dette afsnit let, og fokuser på slides.

Optagelse af online forelæsning 2021 (start på grådige algoritmer).

Midtvejsevaluering af kurset.

16 E       Opgaver for DM507/DM578/DS814, opgaver for SE4-DMAD (samme opgaver i en lidt anden gruppering pga. skemaet).
17 F Tirsdag 25/4 10-12 U55 Bevis for korrekthed af Huffmans algoritme (afsnit 15.3 i lærebogen, [3. udgave: afsnit 16.3], slutningen af slides)

Datastrukturer for disjoint sets (afsnit 19.1-3 i lærebogen [3. udgave: afsnit 21.1-3], slides).

Optagelse af online forelæsning 2021 (disjoint sets), optagelse af online forelæsning 2021 (endnu mere om disjoint sets).

Udlevering af projektet, del III (kun for DM507 og DS814).

17 F Torsdag 27/4 08-10 U55 Start på grafalgoritmer: repræsentation af grafer, grafgennemløb (afsnit 20.1 i lærebogen [3. udgave: afsnit 22.1], side 1-11 i slides). Derudover er de første to sider af appendiks B.4 i lærebogen om basal terminologi for grafer overladt til selvstændig læsning.

Optagelse af online forelæsning 2021 (start på grafalgoritmer).

Forslag til yderligere videomateriale (ikke pensum): Tim Roughgarden, Stanford, afsnit 9.2 og 10.1-2.

17 E       Opgaver.
18 F Tirsdag 2/5 10-12 U55 Denne forelæsning varetages af Lene Monrad Favrholdt.

Mere om grafgennemløb: BFS, DFS (afsnit 20.2-3 i lærebogen [3. udgave: afsnit 22.2-3], side 12-29 i slides).

Annoterede slides fra Lenes forelæsning.

Forslag til yderligere videomateriale (ikke pensum): Tim Roughgarden, Stanford, afsnit 10.3 og 10.5.

18 E       Opgaver, opgaver for SE4-DMAD (samme opgaver (minus nogle projektrelaterede opgaver) i en lidt anden gruppering pga. skemaet).
19 F Tirsdag 9/5 10-12 U55 DAGs, topologisk sorting (afsnit 20.4 i lærebogen [3. udgave: afsnit 22.4], resten af slides)

Sammenhængskomponenter i uorienterede grafer og stærke sammenhængskomponenter i orienterede grafer (side 1166 (øverste halvdel) og side 576-580 i lærebogen [3. udgave: side 1170-71 og 615-20], slides).

Start på Minimum Udspændende Træer (kapitel 21 i lærebogen [3. udgave: kapitel 23], slides).

Forslag til yderligere videomateriale (ikke pensum): Tim Roughgarden, Stanford, afsnit 10.6, 10.4 og 10.7.

19 F Torsdag 11/5 08-10 U55 Mere om Minimum udspændende træer, Prim-Jarniks algoritme, Kruskals algoritme (kapitel 23 i lærebogen, slides).
19 E       Opgaver.
20 F Tirsdag 16/5 10-12 U55 Korteste veje, single source: Dijkstras algoritme, relation mellem Dijkstra og A*-algoritmen (afsnit 22.0, 22.3 og 22.5 i lærebogen [3. udgave: afsnit 24.0, 24.3 og 24.5], første del af slides). A*-algoritmen er ikke pensum (og nævnes ikke i lærebogen), men er kendt af nogle deltagere fra andre kurser, hvorfor dens relation til Dijkstra nævnes her.

For oprindelsen/betydningen af navnet "A*", se A* Search: What's in a Name? af James W. Davis og Jeff Hachtel, Communications of the ACM, Januar 2020, Vol. 63 No. 1, side 36-37 (ikke pensum).

Forslag til yderligere videomateriale (ikke pensum): Tim Roughgarden, Stanford, afsnit 11.1-4.

20 E       Opgaver, opgaver for SE4-DMAD (samme opgaver i en lidt anden gruppering pga. skemaet).
21 F Tirsdag 23/5 10-12 U55 Denne forelæsning varetages af Lene Monrad Favrholdt.

Mere om korteste veje, single source: shortest paths på DAGs, Bellman-Fords algoritme (afsnit 22.2 og 22.1 i lærebogen [3. udgave: afsnit 24.2 og 24.1], midterste del af slides).

Korteste veje, all-pairs: Floyd-Warshalls algoritme, Johnsons algoritme (afsnit 23.0 og 23.2-3 i lærebogen [3. udgave: afsnit 25.0 og 25.2-3], sidste del af slides

Annoterede slides fra Lenes forelæsning.

Forslag til yderligere videomateriale (ikke pensum): Tim Roughgarden, Stanford, afsnit 11.1-4.

21 E       Opgaver.


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