DM507 Algoritmer og datastrukturer
Forår 2018
Rolf Fagerberg
Kurset starter tirsdag den 6. februar og slutter fredag den
25. maj.
Den skriftlige eksamen finder sted fredag den 22. juni.
Datoen for reeksamen er mandag den 27. august, 2018. Reeksamen er
mundtlig. Listen af emner man kan trække samt andre oplysninger kan
findes her.
Timer
Uge |
Type |
Dato |
Tid |
Lokale |
Indhold |
6 |
I |
Tirsdag 6/2 |
14-16 |
U140 |
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 9/2 |
08-10 |
U1 |
Sorteringsalgoritmer: Insertionsort, Mergesort (side 147-150 i
lærebogen, afsnit 2.1-3 i lærebogen, side 1-12 i
slides). Jeg vil vende 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.
|
6 |
TE |
|
|
|
Opgaver
|
7 |
I |
Tirsdag 13/2 |
14-16 |
U140 |
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 Lene
Monrad Favrholdt.
|
7 |
TE |
|
|
|
Opgaver
|
8 |
I |
Mandag 19/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 23/2 |
08-10 |
U45 |
Start på Heapsort (afsnit 6.1-4 i lærebogen, B.5.3 i lærebogen, sidste
del af slides). Forslag til videomateriale:
Mifta Sintaha.
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 af Projekt, del I. Tilhørende
Java.filer: PQ.java, Element.java,
Heapsort.java,
Testfiler.zip.
|
8 |
TE |
|
|
|
Opgaver
|
9 |
I |
Tirsdag 27/2 |
14-16 |
U1 |
Diskussion af Projekt, del I.
Nedre grænser for sammenligningsbaseret sortering (afsnit 8.1 i
lærebogen, start 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. 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 |
Tirsdag 6/3 |
14-16 |
U140 |
Multiple-choice test i klassen (kan findes i Blackboard under E-test som
MC test 1). 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.
|
10 |
I |
Fredag 9/3 |
08-10 |
U45 |
Rød-sorte træer (kapitel 13 i lærebogen, midten af
slides). 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 |
Tirsdag 13/3 |
14-16 |
U1
|
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. 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.
Udlevering og diskussion
af Projekt, del II. Tilhørende Java.filer:
Dict.java,
TestProjectPartII.java.
|
11 |
TE |
|
|
|
Opgaver |
12 |
I |
Tirsdag 20/3 |
14-16 |
U1 |
Invarianter (siderne 18-20, 32-33, 157, 171-173 og 318-322 i lærebogen,
slides). Divide and Conquer algoritmer,
rekursionsligninger, og analyse heraf via rekursionstræer (afsnit 4.0 og
4.4 i lærebogen, slides). Forslag til
videomateriale:
Tim
Roughgarden, Stanford, afsnit 4.1.
|
12 |
I |
Fredag 23/3 |
08-10 |
U45 |
Feedback på projekt, del I
(slides). Flere eksempler på
analyse af Divide and Conquer algoritmer via rekursionstræer, samt 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].
|
12 |
TE |
|
|
|
Opgaver |
13 |
I+TE |
|
|
|
Bemærk: der er ingen timer (hverken I eller TE) i uge 13 pga. påske.
|
14 |
I |
Tirsdag 3/4 |
14-16 |
U140 |
Eksempler på analyse af Divide and Conquer algoritmer via
rekursionstræer, når Master Theorem ikke kan bruges. Midtvejsevaluering.
Eksempel på en 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 the historical development of
the running time of the asymptotically best matrix multiplication
algorithm, see this
wiki
page.
|
14 |
TE |
|
|
|
Opgaver |
15 |
I |
Mandag 9/4 |
12-14 |
U140 |
Dynamisk programmering (afsnit 15.1-2 i lærebogen,
slides, afsnit 15.4 i lærebogen,
første del af 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.
|
15 |
I |
Tirsdag 10/4 |
14-16 |
U140 |
Mere om dynamisk programmering (afsnit 15.4 i lærebogen, anden del af
slides). Grådige algoritmer
(afsnit 16.1-2 i lærebogen, første del af
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.
|
15 |
TE |
|
|
|
Opgaver |
16 |
I |
Tirsdag 17/4 |
10-12 |
U140 |
Mere om grådige algoritmer: Huffmans algoritme (afsnit 16.1-3 i
lærebogen, sidste del af slides). Udlevering og
diskussion af Projekt, del III. Multiple-choice test i klassen (kan
findes i Blackboard under E-test som MC test 2). 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).
|
16 |
TE |
|
|
|
Opgaver |
17 |
I |
Mandag 23/4 |
12-14 |
U55 |
Lidt mere om projektet, 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 |
I |
Onsdag 25/4 |
16-18 |
U55 |
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.
|
17 |
TE |
|
|
|
Opgaver |
18 |
I |
Fredag 4/5 |
08-10 |
U45 |
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 |
Tirsdag 8/5 |
14-16 |
U1 |
Sammenhængskomponenter (i uorienterede grafer) og stærke
sammenhængskomponenter (i orienterede grafer) (side 1170-71 og 615-17 i
lærebogen, slides). Start på
minimum udspændende træer (kapitel 23 i lærebogen,
slides).
Disse timer forelæses af Lene
Monrad Favrholdt.
|
19 |
TE |
|
|
|
Opgaver |
20 |
I |
Mandag 14/5 |
10-12 |
U140 |
Mere om minimum udspændende træer (kapitel 23 i lærebogen, resten af
slides).
|
20 |
I |
Torsdag 17/5 |
08-10 |
U110 |
Korteste veje, single source, all-pairs. (afsnit 24.0-1 og 24.3 i lærebogen,
slides. Forslag til videomateriale:
Tim
Roughgarden, Stanford, afsnit 11.1-4.
|
20 |
TE |
|
|
|
Opgaver |
20 |
I |
Torsdag 24/5 |
08-10 |
U110 |
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)
|
|