![Page 1: Algoritmer og Datastrukturer 1 · 2013. 2. 4. · Kursusbeskrivelsen: Algoritmer og datastrukturer 1 Formål Deltagerne vil efter kurset have indsigt i algoritmer som model for sekventielle](https://reader035.vdocuments.site/reader035/viewer/2022081601/61208cfd0b55fc5e345f5847/html5/thumbnails/1.jpg)
Algoritmer og Datastrukturer 1
Gerth Stølting Brodal
![Page 2: Algoritmer og Datastrukturer 1 · 2013. 2. 4. · Kursusbeskrivelsen: Algoritmer og datastrukturer 1 Formål Deltagerne vil efter kurset have indsigt i algoritmer som model for sekventielle](https://reader035.vdocuments.site/reader035/viewer/2022081601/61208cfd0b55fc5e345f5847/html5/thumbnails/2.jpg)
Kursusbeskrivelsen…
![Page 3: Algoritmer og Datastrukturer 1 · 2013. 2. 4. · Kursusbeskrivelsen: Algoritmer og datastrukturer 1 Formål Deltagerne vil efter kurset have indsigt i algoritmer som model for sekventielle](https://reader035.vdocuments.site/reader035/viewer/2022081601/61208cfd0b55fc5e345f5847/html5/thumbnails/3.jpg)
Kursusbeskrivelsen:
Algoritmer og datastrukturer 1 Formål Deltagerne vil efter kurset have indsigt i algoritmer som model for sekventielle beregningsprocesser og som basis for formelle korrekthedsbeviser og analyse af ressourceforbrug ved beregningerne, samt detaljeret kendskab til adskillige konkrete implementationer af fundamentale datastrukturer. Indhold Datastrukturer: Lister, træer, hashtabeller; Dataabstraktioner: Stakke, køer, prioritetskøer, ordbøger, mængder; Algoritmer: Søgning, sortering, selektion, fletning; Analyse og syntese: Worst-case, amortiseret og forventet udførelsestid, udsagn, invarianter, gyldighed, terminering og korrekthed. Læringsmål Deltagerne skal ved afslutningen af kurset kunne: • formulere og udføre algoritmer og datastrukturer i pseudo code. • analysere og sammenligne tid og pladsforbruget af algoritmer. • identificere gyldige invarianter for en algoritme. • bevise korrektheden af simple programmer og transitionssystemer.
![Page 4: Algoritmer og Datastrukturer 1 · 2013. 2. 4. · Kursusbeskrivelsen: Algoritmer og datastrukturer 1 Formål Deltagerne vil efter kurset have indsigt i algoritmer som model for sekventielle](https://reader035.vdocuments.site/reader035/viewer/2022081601/61208cfd0b55fc5e345f5847/html5/thumbnails/4.jpg)
Forudsætningskrav
dIntProg
Undervisningsformer
Forelæsninger: 4 timer/uge (2+2). Øvelser: 3 timer/uge
Obligatorisk program
6 opgaver
Evalueringsform
2 timers skriftlig eksamen, intern censur, 7-skala
Omfang
5 ECTS
Sprog
Dansk
Eksamensterminer
Eksamen: 3. kvarter
Reeksamen: August
Kursusbeskrivelsen:
Algoritmer og datastrukturer 1
Vi kan antage at I ved hvordan
man programmerer detaljerne –
så dem springer vi over
Der stilles 6 opgaver – alle skal
være godkendt for at kunne gå til
eksamen. Opgaverne afleveres i
grupper - 1-3 personer.
Eksamen består af ca. 25 korte
spørgsmål – se eksempler på
kursushjemmesiden
Forelæsningerne gemmengår
stoffet fra bogen. I øvelserne
arbejder man med stoffet.
![Page 5: Algoritmer og Datastrukturer 1 · 2013. 2. 4. · Kursusbeskrivelsen: Algoritmer og datastrukturer 1 Formål Deltagerne vil efter kurset have indsigt i algoritmer som model for sekventielle](https://reader035.vdocuments.site/reader035/viewer/2022081601/61208cfd0b55fc5e345f5847/html5/thumbnails/5.jpg)
DatLab Fælles studiecafé i Babbage-0
hver fredag kl. 13-15
Webteknologi
Interaktionsdesign
Algoritmer og Datastrukturer 1
Første gang 1. februar kl. 13:00!
+
KAGE…!
Relevante workshops og introduktioner til værktøjer vil
desuden blive afholdt i forbindelse med DatLab. Følg
med på cs.au.dk/datlab
![Page 6: Algoritmer og Datastrukturer 1 · 2013. 2. 4. · Kursusbeskrivelsen: Algoritmer og datastrukturer 1 Formål Deltagerne vil efter kurset have indsigt i algoritmer som model for sekventielle](https://reader035.vdocuments.site/reader035/viewer/2022081601/61208cfd0b55fc5e345f5847/html5/thumbnails/6.jpg)
Spørgsmål ?
![Page 7: Algoritmer og Datastrukturer 1 · 2013. 2. 4. · Kursusbeskrivelsen: Algoritmer og datastrukturer 1 Formål Deltagerne vil efter kurset have indsigt i algoritmer som model for sekventielle](https://reader035.vdocuments.site/reader035/viewer/2022081601/61208cfd0b55fc5e345f5847/html5/thumbnails/7.jpg)
2005
![Page 8: Algoritmer og Datastrukturer 1 · 2013. 2. 4. · Kursusbeskrivelsen: Algoritmer og datastrukturer 1 Formål Deltagerne vil efter kurset have indsigt i algoritmer som model for sekventielle](https://reader035.vdocuments.site/reader035/viewer/2022081601/61208cfd0b55fc5e345f5847/html5/thumbnails/8.jpg)
![Page 9: Algoritmer og Datastrukturer 1 · 2013. 2. 4. · Kursusbeskrivelsen: Algoritmer og datastrukturer 1 Formål Deltagerne vil efter kurset have indsigt i algoritmer som model for sekventielle](https://reader035.vdocuments.site/reader035/viewer/2022081601/61208cfd0b55fc5e345f5847/html5/thumbnails/9.jpg)
![Page 10: Algoritmer og Datastrukturer 1 · 2013. 2. 4. · Kursusbeskrivelsen: Algoritmer og datastrukturer 1 Formål Deltagerne vil efter kurset have indsigt i algoritmer som model for sekventielle](https://reader035.vdocuments.site/reader035/viewer/2022081601/61208cfd0b55fc5e345f5847/html5/thumbnails/10.jpg)
”Lokes Høj”
• 64 brikker
• Hiscore 450
• Antal ombytninger 500 - 450 = 50
Hvordan opnår man et lavt antal
ombytninger
– held eller dygtighed ?
![Page 11: Algoritmer og Datastrukturer 1 · 2013. 2. 4. · Kursusbeskrivelsen: Algoritmer og datastrukturer 1 Formål Deltagerne vil efter kurset have indsigt i algoritmer som model for sekventielle](https://reader035.vdocuments.site/reader035/viewer/2022081601/61208cfd0b55fc5e345f5847/html5/thumbnails/11.jpg)
Cykler (Permutationer)
Hver pil peger på brikkens korrekte plads
Definerer en mængde af cykler (fx cyklerne A,B,C,D)
![Page 12: Algoritmer og Datastrukturer 1 · 2013. 2. 4. · Kursusbeskrivelsen: Algoritmer og datastrukturer 1 Formål Deltagerne vil efter kurset have indsigt i algoritmer som model for sekventielle](https://reader035.vdocuments.site/reader035/viewer/2022081601/61208cfd0b55fc5e345f5847/html5/thumbnails/12.jpg)
Ombytninger og Cykler
Lemma
• En ombytning af to brikker i samme cykel øger antallet
af cykler med én.
• En ombytning af to brikker fra to forskellige cykler
reducerer antallet af cykler med én.
![Page 13: Algoritmer og Datastrukturer 1 · 2013. 2. 4. · Kursusbeskrivelsen: Algoritmer og datastrukturer 1 Formål Deltagerne vil efter kurset have indsigt i algoritmer som model for sekventielle](https://reader035.vdocuments.site/reader035/viewer/2022081601/61208cfd0b55fc5e345f5847/html5/thumbnails/13.jpg)
Lemma
Når alle n brikker er korrekt placeret er der præcis n cykler.
Lemma
For at løse et puslespil med n brikker og k cykler I starten
kræves ≥ n – k ombytninger.
Har vist en nedre grænse for
ALLE algoritmer der løser problemet
![Page 14: Algoritmer og Datastrukturer 1 · 2013. 2. 4. · Kursusbeskrivelsen: Algoritmer og datastrukturer 1 Formål Deltagerne vil efter kurset have indsigt i algoritmer som model for sekventielle](https://reader035.vdocuments.site/reader035/viewer/2022081601/61208cfd0b55fc5e345f5847/html5/thumbnails/14.jpg)
En (grådig) algoritme
![Page 15: Algoritmer og Datastrukturer 1 · 2013. 2. 4. · Kursusbeskrivelsen: Algoritmer og datastrukturer 1 Formål Deltagerne vil efter kurset have indsigt i algoritmer som model for sekventielle](https://reader035.vdocuments.site/reader035/viewer/2022081601/61208cfd0b55fc5e345f5847/html5/thumbnails/15.jpg)
Lemma
Algoritmen bytter aldrig om på brikker der står korrekt.
Lemma
Algoritmen udfører ≤ n -1 ombytninger
Har vist en øvre grænse for en konkret algoritme
Lemma
For at løse et puslespil med n brikker og k cykler I starten
udfører algoritmen præcis n – k ombytninger.
Algoritmen er optimal da antal ombytninger er bedst mulig
![Page 16: Algoritmer og Datastrukturer 1 · 2013. 2. 4. · Kursusbeskrivelsen: Algoritmer og datastrukturer 1 Formål Deltagerne vil efter kurset have indsigt i algoritmer som model for sekventielle](https://reader035.vdocuments.site/reader035/viewer/2022081601/61208cfd0b55fc5e345f5847/html5/thumbnails/16.jpg)
Sætning
For at løse et puslespil med
n brikker og k cykler i starten
kræves præcis n – k ombytninger
![Page 17: Algoritmer og Datastrukturer 1 · 2013. 2. 4. · Kursusbeskrivelsen: Algoritmer og datastrukturer 1 Formål Deltagerne vil efter kurset have indsigt i algoritmer som model for sekventielle](https://reader035.vdocuments.site/reader035/viewer/2022081601/61208cfd0b55fc5e345f5847/html5/thumbnails/17.jpg)
Fordelingen af antal cykler n = 64, 10.000.000 permutationer
![Page 18: Algoritmer og Datastrukturer 1 · 2013. 2. 4. · Kursusbeskrivelsen: Algoritmer og datastrukturer 1 Formål Deltagerne vil efter kurset have indsigt i algoritmer som model for sekventielle](https://reader035.vdocuments.site/reader035/viewer/2022081601/61208cfd0b55fc5e345f5847/html5/thumbnails/18.jpg)
Hvad har vi så lært… ?
![Page 19: Algoritmer og Datastrukturer 1 · 2013. 2. 4. · Kursusbeskrivelsen: Algoritmer og datastrukturer 1 Formål Deltagerne vil efter kurset have indsigt i algoritmer som model for sekventielle](https://reader035.vdocuments.site/reader035/viewer/2022081601/61208cfd0b55fc5e345f5847/html5/thumbnails/19.jpg)
Algoritmisk indsigt…
Matematisk indsigt (cykler)
Resourceforbrug (antal ombytninger)
Nedre grænse ( ≥ n - k ombytninger)
Grådig algoritme
Analyseret algoritmen ( ≤ n - k ombytninger)
Optimal algoritme (argumenteret bedst mulig)
Input afhængig resourceforbrug
![Page 20: Algoritmer og Datastrukturer 1 · 2013. 2. 4. · Kursusbeskrivelsen: Algoritmer og datastrukturer 1 Formål Deltagerne vil efter kurset have indsigt i algoritmer som model for sekventielle](https://reader035.vdocuments.site/reader035/viewer/2022081601/61208cfd0b55fc5e345f5847/html5/thumbnails/20.jpg)
Tilfældige permutationer…
Yderligere information kan findes i David J.C. MacKay, tillæg til Information Theory, Inference, and Learning Algorithms, om
"Random Permutations“, 4 sider.
http://www.inference.phy.cam.ac.uk/mackay/itila/cycles.pdf
![Page 21: Algoritmer og Datastrukturer 1 · 2013. 2. 4. · Kursusbeskrivelsen: Algoritmer og datastrukturer 1 Formål Deltagerne vil efter kurset have indsigt i algoritmer som model for sekventielle](https://reader035.vdocuments.site/reader035/viewer/2022081601/61208cfd0b55fc5e345f5847/html5/thumbnails/21.jpg)
Et andet eksempel på en
beregningsprocess…
![Page 22: Algoritmer og Datastrukturer 1 · 2013. 2. 4. · Kursusbeskrivelsen: Algoritmer og datastrukturer 1 Formål Deltagerne vil efter kurset have indsigt i algoritmer som model for sekventielle](https://reader035.vdocuments.site/reader035/viewer/2022081601/61208cfd0b55fc5e345f5847/html5/thumbnails/22.jpg)
![Page 23: Algoritmer og Datastrukturer 1 · 2013. 2. 4. · Kursusbeskrivelsen: Algoritmer og datastrukturer 1 Formål Deltagerne vil efter kurset have indsigt i algoritmer som model for sekventielle](https://reader035.vdocuments.site/reader035/viewer/2022081601/61208cfd0b55fc5e345f5847/html5/thumbnails/23.jpg)
Max-Delsum
![Page 24: Algoritmer og Datastrukturer 1 · 2013. 2. 4. · Kursusbeskrivelsen: Algoritmer og datastrukturer 1 Formål Deltagerne vil efter kurset have indsigt i algoritmer som model for sekventielle](https://reader035.vdocuments.site/reader035/viewer/2022081601/61208cfd0b55fc5e345f5847/html5/thumbnails/24.jpg)
Algoritme 1
1
2
3
4
5
6
7
8
Antal additioner:
www.cs.au.dk/~gerth/slides/math.pdf
𝑙(𝑛 − 𝑙 + 1)
𝑛
𝑙=1
= 𝑛 + 1 𝑙
𝑛
𝑙=1
− 𝑙2𝑛
𝑙=1
= 𝑛 + 1𝑛(𝑛 + 1)
2−𝑛(𝑛 + 1)(2𝑛 + 1)
6=𝑛3 + 3𝑛2 + 2𝑛
6
![Page 25: Algoritmer og Datastrukturer 1 · 2013. 2. 4. · Kursusbeskrivelsen: Algoritmer og datastrukturer 1 Formål Deltagerne vil efter kurset have indsigt i algoritmer som model for sekventielle](https://reader035.vdocuments.site/reader035/viewer/2022081601/61208cfd0b55fc5e345f5847/html5/thumbnails/25.jpg)
Algoritme 2
1
2
3
4
5
6
7
![Page 26: Algoritmer og Datastrukturer 1 · 2013. 2. 4. · Kursusbeskrivelsen: Algoritmer og datastrukturer 1 Formål Deltagerne vil efter kurset have indsigt i algoritmer som model for sekventielle](https://reader035.vdocuments.site/reader035/viewer/2022081601/61208cfd0b55fc5e345f5847/html5/thumbnails/26.jpg)
Algoritme 2b
1
2
3
4
5
6
7
8
9
![Page 27: Algoritmer og Datastrukturer 1 · 2013. 2. 4. · Kursusbeskrivelsen: Algoritmer og datastrukturer 1 Formål Deltagerne vil efter kurset have indsigt i algoritmer som model for sekventielle](https://reader035.vdocuments.site/reader035/viewer/2022081601/61208cfd0b55fc5e345f5847/html5/thumbnails/27.jpg)
Algoritme 3
rmax=2lmax=2
maxsum3(m+1,u)=10maxsum3(l,m)=7
3 52 -3-2 3 -9-2452-1 -8
l um m+1
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
![Page 28: Algoritmer og Datastrukturer 1 · 2013. 2. 4. · Kursusbeskrivelsen: Algoritmer og datastrukturer 1 Formål Deltagerne vil efter kurset have indsigt i algoritmer som model for sekventielle](https://reader035.vdocuments.site/reader035/viewer/2022081601/61208cfd0b55fc5e345f5847/html5/thumbnails/28.jpg)
Algoritme 3 : Analyse
Rekursionstræet
Observation Samlet mængde additioner per lag er ~ n
# additioner ~ n · # lag ~ n · log2 n Additioner
![Page 29: Algoritmer og Datastrukturer 1 · 2013. 2. 4. · Kursusbeskrivelsen: Algoritmer og datastrukturer 1 Formål Deltagerne vil efter kurset have indsigt i algoritmer som model for sekventielle](https://reader035.vdocuments.site/reader035/viewer/2022081601/61208cfd0b55fc5e345f5847/html5/thumbnails/29.jpg)
Algoritme 4
Invariant maxsofar = 12
maxendinghere = 10
0 1 2 3 i-1 i
-3 -1 3 -4 6 5 -2 -7 4 2 3 x
1
2
3
4
5
6
7
![Page 30: Algoritmer og Datastrukturer 1 · 2013. 2. 4. · Kursusbeskrivelsen: Algoritmer og datastrukturer 1 Formål Deltagerne vil efter kurset have indsigt i algoritmer som model for sekventielle](https://reader035.vdocuments.site/reader035/viewer/2022081601/61208cfd0b55fc5e345f5847/html5/thumbnails/30.jpg)
Max-Delsum:
Algoritmiske idéer
Algoritme # additioner Idé
1 ~ n3 Naive løsning
2 + 2b ~ n2 Genbrug beregninger
3 ~ n · log n Del-og-kombiner
4 ~ n Inkrementel
![Page 31: Algoritmer og Datastrukturer 1 · 2013. 2. 4. · Kursusbeskrivelsen: Algoritmer og datastrukturer 1 Formål Deltagerne vil efter kurset have indsigt i algoritmer som model for sekventielle](https://reader035.vdocuments.site/reader035/viewer/2022081601/61208cfd0b55fc5e345f5847/html5/thumbnails/31.jpg)
Sammenligning
![Page 32: Algoritmer og Datastrukturer 1 · 2013. 2. 4. · Kursusbeskrivelsen: Algoritmer og datastrukturer 1 Formål Deltagerne vil efter kurset have indsigt i algoritmer som model for sekventielle](https://reader035.vdocuments.site/reader035/viewer/2022081601/61208cfd0b55fc5e345f5847/html5/thumbnails/32.jpg)
Sammenligning: n3 og n
![Page 33: Algoritmer og Datastrukturer 1 · 2013. 2. 4. · Kursusbeskrivelsen: Algoritmer og datastrukturer 1 Formål Deltagerne vil efter kurset have indsigt i algoritmer som model for sekventielle](https://reader035.vdocuments.site/reader035/viewer/2022081601/61208cfd0b55fc5e345f5847/html5/thumbnails/33.jpg)
Sammenligning 2009
x-akse = n, y = sekunder, hvert eksperiment gennemsnit af 10 kørsler (gcc 4.1.2, C, Linux 2.6.18, Intel Xeon 3 GHz)
maxsum1 ≈ n3
![Page 34: Algoritmer og Datastrukturer 1 · 2013. 2. 4. · Kursusbeskrivelsen: Algoritmer og datastrukturer 1 Formål Deltagerne vil efter kurset have indsigt i algoritmer som model for sekventielle](https://reader035.vdocuments.site/reader035/viewer/2022081601/61208cfd0b55fc5e345f5847/html5/thumbnails/34.jpg)
Sammenligning 2009
x-akse = n, y = sekunder, hvert eksperiment gennemsnit af 10 kørsler (gcc 4.1.2, C, Linux 2.6.18, Intel Xeon 3 GHz)
maxsum2a og maxsum2b ≈ n2
![Page 35: Algoritmer og Datastrukturer 1 · 2013. 2. 4. · Kursusbeskrivelsen: Algoritmer og datastrukturer 1 Formål Deltagerne vil efter kurset have indsigt i algoritmer som model for sekventielle](https://reader035.vdocuments.site/reader035/viewer/2022081601/61208cfd0b55fc5e345f5847/html5/thumbnails/35.jpg)
Sammenligning 2009
x-akse = n, y = sekunder, hvert eksperiment gennemsnit af 10 kørsler (gcc 4.1.2, C, Linux 2.6.18, Intel Xeon 3 GHz)
maxsum3 og maxsum4 ≈ n ???
![Page 36: Algoritmer og Datastrukturer 1 · 2013. 2. 4. · Kursusbeskrivelsen: Algoritmer og datastrukturer 1 Formål Deltagerne vil efter kurset have indsigt i algoritmer som model for sekventielle](https://reader035.vdocuments.site/reader035/viewer/2022081601/61208cfd0b55fc5e345f5847/html5/thumbnails/36.jpg)
Sammenligning 2009
x-akse = n, y = sekunder, hvert eksperiment gennemsnit af 10 kørsler (gcc 4.1.2, C, Linux 2.6.18, Intel Xeon 3 GHz)
maxsum4 ≈ n
![Page 37: Algoritmer og Datastrukturer 1 · 2013. 2. 4. · Kursusbeskrivelsen: Algoritmer og datastrukturer 1 Formål Deltagerne vil efter kurset have indsigt i algoritmer som model for sekventielle](https://reader035.vdocuments.site/reader035/viewer/2022081601/61208cfd0b55fc5e345f5847/html5/thumbnails/37.jpg)
Sammenligning 2009
x-akse = n, y = sekunder, hvert eksperiment gennemsnit af 10 kørsler (gcc 4.1.2, C, Linux 2.6.18, Intel Xeon 3 GHz)
maxsum3 ≈ c1·n·log n+c2·n
![Page 38: Algoritmer og Datastrukturer 1 · 2013. 2. 4. · Kursusbeskrivelsen: Algoritmer og datastrukturer 1 Formål Deltagerne vil efter kurset have indsigt i algoritmer som model for sekventielle](https://reader035.vdocuments.site/reader035/viewer/2022081601/61208cfd0b55fc5e345f5847/html5/thumbnails/38.jpg)
Algoritmisk indsigt...
Gode idéer kan give hurtige algoritmer
Generelle algoritme teknikker
– Del-og-kombiner
– Inkrementel
Analyse af udførelsestid (her additioner)
Argumenteret for korrektheden
Invarianter