DM507 Algoritmer og datastrukturer
Forår 2016
Rolf Fagerberg
Kurset starter mandag den 1. februar og slutter fredag den
20. maj.
Den skriftlige eksamen finder sted mandag den 6. juni kl. 15.00-19.00.
Spørgetime fredag 3. juni, 12:15-15.00 i
U48A. Vi vil
bla. gennemgå eksamenssættet for F15.
Eksamensættet endte således, med følgende
vejledende løsninger.
Eksamenskaraktererne fordelte sig på følgende
måde.
Datoen for reeksamen er fredag den 19. august, 2016. Reeksamen er
mundtlig. Eksamensspørgsmålene og andre oplysninger kan findes
her.
Timer
Uge |
Type |
Dato |
Tid |
Lokale |
Indhold |
5 |
I |
Mandag 1/2 |
12-14 |
U140 |
Introduktion til kurset (slides, kapitel 1 i
lærebogen). Eksempel på algoritmeanalyse: Jul i Valhalla (Gerth Brodal:
slides, noter). Forslag til
videomateriale: Tim
Roughgarden, Stanford/Coursera, fra start til 0:04:15, fra 0:25:30 til
0:43:00, samt fra 1:14:00 til slut (1:28:49).
|
5 |
I |
Torsdag 4/2 |
08-10 |
U140 |
Sorteringsalgoritmer: Insertionsort, Mergesort (side 147-150 i
lærebogen, afsnit 2.1-3 i lærebogen, side 1-11 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/Coursera, fra 0:43:00 til 1:14:00.
|
5 |
TE |
|
|
|
Opgaver |
6 |
I |
Mandag 8/2 |
12-14 |
U140 |
Rekursive algoritmer (side 30 i lærebogen,
slides). Flere
sorteringsalgoritmer: Quicksort (afsnit 7.1-3 i lærebogen, næste dele af
slides). Forslag til videomateriale:
Tim
Roughgarden, Stanford/Coursera, afsnit 5.1-4. 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/Coursera, fra start til 33:20 (eller evt. helt til slut
(41:12) for ekstra eksempler).
|
6 |
I |
Onsdag 10/2 |
14-16 |
U140 |
Flere sorteringsalgoritmer: Heapsort. (afsnit 6.1-4 i lærebogen, B.5.3 i
lærebogen, slides). Forslag til
videomateriale: Mifta
Sintaha, fra start til slut (14:42).
|
6 |
TE |
|
|
|
Opgaver |
7 |
I+TE |
|
|
|
Bemærk: der er ingen timer (hverken I eller TE) i uge 7 da
underviseren er bortrejst.
|
8 |
I+TE |
|
|
|
Bemærk: der er ingen timer (hverken I eller TE) i uge 8, da ugen er
friholdt til reeksamen for nogle af studieretningerne.
|
9 |
I |
Mandag 29/2 |
12-14 |
U140 |
Prioritetskøer (afsnit 6.5 i lærebogen,
slides). Forslag til videomateriale:
Tim
Roughgarden, Stanford/Coursera, afsnit 12.1-3 [bemærk at de enkelte
heap-operationer ikke nødvendigvis hedder det samme som i bogen].
Udlevering og diskussion af Projekt,
del I. Tilhørende Java.filer: PQ.java,
Element.java. Eksempel på brug af Scanner i Java:
ScannerExample.java (læs kommentarer i
programmet). Testprogram som bruger PQHeap.java:
TestProjectPartI.java (læs kommentarer i
programmet). Flere sorteringsalgoritmer: sortering af heltal med
Countingsort og Radixsort (afsnit 8.2-3 i lærebogen, anden del af
slides).
|
9 |
TE |
|
|
|
Opgaver |
10 |
I |
Mandag 7/3 |
12-14 |
U140 |
Nedre grænser for sammenligningsbaseret sortering (afsnit 8.1 i
lærebogen, start af slides).
Forslag til videomateriale:
Tim
Roughgarden, Stanford/Coursera, afsnit 8.6. 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, Lenes
noter). Forslag til videomateriale:
Tim
Roughgarden, Stanford/Coursera, afsnit 13.1-2 samt 13.3 indtil 22:00.
Disse timer forelæses af Lene
Monrad Favrholdt.
|
10 |
I |
Torsdag 10/3 |
08-10 |
U140 |
Ingen timer, da underviseren er bortrejst.
|
10 |
TE |
|
|
|
Opgaver |
11 |
I |
Mandag 14/3 |
12-14 |
U140 |
Rød-sorte træer (kapitel 13 i lærebogen, midten af
slides). Forslag til videomateriale:
Tim
Roughgarden, Stanford/Coursera, 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.
|
11 |
TE |
|
|
|
Opgaver |
12 |
I+TE |
|
|
|
Bemærk: der er ingen timer (hverken I eller TE) i uge 12 pga. påske.
|
13 |
I |
Tirsdag 29/3 |
14-16 |
U48A |
Gennemgang af Projekt, del II. Tilhørende
Java.filer: Dict.java,
TestProjectPartII.java. Repetition af
sletning i rød-sorte træer (afsnit 13.4 i lærebogen, midten af
slides). Dekoration af binære søgetræer
(afsnit 14.1-2 i lærebogen,
slides). Forslag til videomateriale:
Tim
Roughgarden, Stanford/Coursera, afsnit 13.3 fra 22:00.
|
13 |
I |
Torsdag 31/3 |
08-10 |
U140 |
Feedback på projekt, del I
(slides). 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/Coursera, afsnit 14.1-3. Invarianter (siderne
18-20, 32-33, 157, 171-173 og 318-322 i lærebogen,
slides).
|
13 |
TE |
|
|
|
Arbejde i klassen med Projekt,
del II. Tilhørende Java.filer: Dict.java.
|
14 |
I |
Mandag 4/4 |
12-14 |
U140 |
Divide and Conquer algoritmer, rekursionsligninger, og analyse heraf via
rekursionstræer og Master Theorem (afsnit 4.0, 4.4 og 4.5 i lærebogen,
slides). Forslag til videomateriale:
Tim
Roughgarden, Stanford/Coursera, afsnit 4.1, 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]. Læs også kommentaren om forholdet mellem de to
analysemetoder (rekursionstræsmetoden og Master Theorem) på
sedlen med opgaver til Uge 15.
|
14 |
TE |
|
|
|
Opgaver |
15 |
I |
Mandag 11/4 |
12-14 |
U140 |
Feedback på midtvejsevaluering. Flere eksempler på analyse af Divide
and Conquer algoritmer via rekursionstræer og Master Theorem
(afsnit 4.0, 4.4 og 4.5 i lærebogen,
slides).
|
15 |
I |
Torsdag 14/4 |
08-10 |
U140 |
Flere eksempler på analyse af Divide and Conquer algoritmer via
rekursionstræer. 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/Coursera, afsnit 3.3.
|
15 |
TE |
|
|
|
Opgaver |
16 |
I |
Mandag 18/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:
Tim
Roughgarden, Stanford/Coursera, afsnit 9.5,
Dan
Suthers, University of Hawaii,
Dan
Suthers, University of Hawaii,
Dan
Suthers, University of Hawaii.
|
16 |
TE |
|
|
|
Opgaver |
17 |
I |
Mandag 25/4 |
12-14 |
U140 |
Grådige algoritmer (afsnit 16.1-3 i lærebogen,
slides - bevis for korrekthed af Huffmans
algoritme dog først næste gang). 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. Forslag til videomateriale:
Tim
Roughgarden, Stanford/Coursera, afsnit 2.1 og 8.1-4. Udlevering og
diskussion af Projekt, del III. Tilhørende
filer er to biblioteksfunktioner
BitInputStream.java,
BitOutputStream.java, samt et eksempel på
brug af dem Test.java (læs kommentarer i programmet).
|
17 |
I |
Torsdag 28/4 |
08-10 |
U140 |
Feedback på projekt, del II
(slides). Mere diskussion af
projektet, del III. Datastrukturer for disjoint sets (afsnit 21.1-3 i
lærebogen, slides).
|
17 |
TE |
|
|
|
Opgaver |
18 |
I |
Mandag 2/5 |
12-14 |
U140 |
Bevis for optimalitet af Huffmankodning (afsnit 16.3 i lærebogen, sidste
del af slides). Forslag til videomateriale:
Tim
Roughgarden, Stanford/Coursera, afsnit 8.5-6. 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/Coursera, afsnit 9.2 og 10.1-3.
|
18 |
TE |
|
|
|
Opgaver |
19 |
I |
Mandag 9/5 |
12-14 |
U140 |
DFS grafgennemløb, DAGs og topologisk sorting (afsnit 22.3-4 i
lærebogen, anden halvdel af slides).
Forslag til videomateriale:
Tim
Roughgarden, Stanford/Coursera, afsnit 10.4-6. Sammenhængskomponenter
(i uorienterede grafer) og stærke sammenhængskomponenter (i orienterede
grafer) (side 1170-71 og 615-17 i lærebogen,
slides, dog uden beviset for
korrekthed af algoritmen for stærke sammenhængskomponenter)
|
19 |
I |
Tirsdag 10/5 |
14-16 |
U140 |
Minimum udspændende træer (kapitel 23 i lærebogen,
slides). Forslag til videomateriale:
Tim
Roughgarden, Stanford/Coursera, afsnit 4.1-7 og 5.1-5.
|
19 |
TE |
|
|
|
Opgaver |
20 |
I |
Torsdag 19/5 |
08-10 |
U140 |
Korteste veje, single source, all-pairs. (afsnit 24.0-4 i lærebogen,
afsnit 25.2 i lærebogen, slides
(undtagen den sidste side om Johnsons algoritme)). Forslag til
videomateriale:
Tim
Roughgarden, Stanford/Coursera, afsnit 13.1-7,
Tim
Roughgarden, Stanford/Coursera, afsnit 11.1-3,
Tim
Roughgarden, Stanford/Coursera, afsnit 14.1-3.
|
20-21 |
TE |
|
|
|
Opgaver |
Som led i studienævnets evalueringsrutine er en kursusevaluering afholdt
efter eksamen. De sammentalte svar
(uden kommentarer af hensyn til de studerendes anonymitet,
jvf. studienævnets regler) og underviserens
handlingsplan er nu tilgængelige.
Maintained by Rolf Fagerberg
(rolf@imada.sdu.dk)
|
|