Algoritmer og Datastrukturer 1 Gerth Stølting Brodal.

Slides:



Advertisements
Lignende præsentationer
Algoritmer og Datastrukturer 1 Amortiseret Analyse [CLRS, kapitel 17] Gerth Stølting Brodal.
Advertisements

DProg2 E Programmering 2 dProg2 E2010
Oplæg og øvelser, herunder frugt og vand
Algoritmer og Datastrukturer 1 Gerth Stølting Brodal.
Algoritmer og Datastrukturer 2 Del-og-kombiner [CLRS, kapitel , , 28
1 Pentium IA-32 Maskinarkitekturen Kort resume – uge 5.
Algoritmer og Datastrukturer 1 Merge-Sort [CLRS, kapitel 2.3] Heaps [CLRS, kapitel 6] Gerth Stølting Brodal.
Algoritmer og Datastrukturer 1...mere Sortering [CLRS, kapitel 8] Gerth Stølting Brodal.
Algoritmer og Datastrukturer 2 Grådige Algoritmer [CLRS ] Gerth Stølting Brodal.
Algoritmer og Datastrukturer 1 Gerth Stølting Brodal.
Algoritmer og Datastrukturer 2 Gerth Stølting Brodal.
1 Nordjyllands Erhvervakademi Lektion 6 Opsamling på opgaver Mere om rekursion: –Del&Hersk –Sortering –Kompleksitet (effektivitet – ”Store O”) Abstrakte.
Datastruktur & Algoritmik1 Datastruktur & Algoritmik 99 Kim Guldstrand Larsen.
1 Bevisteknikker. 2 Bevisteknikker (relevant både ved design og verifikation) Teorem: Der findes uendeligt mange primtal Bevis: Antag at der findes et.
Induktion og rekursion
Algoritmer og Datastrukturer 1 Binære Søgetræer [CLRS, kapitel 12] Gerth Stølting Brodal.
FEN Rekursion og induktion1 Induktion og (især) rekursion Mange begreber defineres ud fra en basis og så en gentagen anvendelse af et antal regler.
Algoritmer og Datastrukturer 1...mere Sortering [CLRS, kapitel 8] Gerth Stølting Brodal.
1 Datalogi C Datastrukturer og algoritmer ved Keld Helsgaun.
Perspektiverende Datalogi Internetalgoritmer MapReduce Gerth Stølting Brodal.
Algoritmer og Datastrukturer 1 Merge-Sort [CLRS, kapitel 2.3] Heaps [CLRS, kapitel 6] Gerth Stølting Brodal.
Algoritmer og Datastrukturer 1 Gerth Stølting Brodal Aarhus Universitet.
Algoritmer og Datastrukturer 1 Gerth Stølting Brodal Aarhus Universitet.
Algoritmer og Datastrukturer 2 Gerth Stølting Brodal Mønstergenkendelse [CLRS, kapitel , 32.4]
Algoritmer og Datastrukturer 1...mere Sortering [CLRS, kapitel 8] Gerth Stølting Brodal Aarhus Universitet.
Algoritmer og Datastrukturer 2 Del-og-kombiner [CLRS, kapitel 2.3, , problem 30.1.c] Gerth Stølting Brodal.
GP 11, 14/ Grundlæggende programmering Efterår 2001 Forelæsning 11 onsdag 14/ kl. 9:15 – 12:00.
Algoritmer og Datastrukturer 1 Gerth Stølting Brodal.
Fundamentale datastrukturer
Per P. Madsen- Proces1 Algoritmer og datastrukturer Grundprincipper og analyse af algoritmer. MM1 Lister, stakke og køer. MM2 Træer, og Hash-tabeller.
Algoritmer og Datastrukturer 1
Design, verifikation og analyse
1 Design, analyse og verifikation. 2 Design Bevisteknikker Design ved hjælp at matematisk induktion Analyse O-notation Logaritmer Binær søgning Verifikation.
Algoritmer og Datastrukturer 1 Binære Søgetræer [CLRS, kapitel 12] Gerth Stølting Brodal.
1 Fundamentale datastrukturer. 2 Definitioner: abstrakt datatype, datastruktur Elementære datastrukturer og abstrakte datatyper : arrays, stakke, køer,
Algoritmer og Datastrukturer 1 Amortiseret Analyse [CLRS, kapitel 17] Gerth Stølting Brodal.
Algoritmer og Datastrukturer 1 Dynamisk Rang & Interval Træer [CLRS, kapitel 14] Gerth Stølting Brodal.
Algoritmer og Datastrukturer 1 Binære Søgetræer [CLRS, kapitel 12] Gerth Stølting Brodal Aarhus Universitet.
Eksempler på en beregningsprocess… Puslespil ved ombytninger Maximum delsum.
Algoritmer og Datastrukturer 2 Grådige Algoritmer [CLRS ] Gerth Stølting Brodal.
Algoritmer og Datastrukturer 1 Gerth Stølting Brodal.
Algoritmer og Datastrukturer 1 Quicksort [CLRS, kapitel 7] Gerth Stølting Brodal.
Algoritmer og Datastrukturer 2 Grådige Algoritmer [CLRS ] Gerth Stølting Brodal.
Algoritmer og Datastrukturer 1 Quicksort [CLRS, kapitel 7] Gerth Stølting Brodal Aarhus Universitet.
Algoritmer og Datastrukturer 2 Graf repræsentationer, BFS og DFS [CLRS, kapitel ] Gerth Stølting Brodal.
Grundlæggende programmering Forår 2002
Algoritmer og Datastrukturer 2 Del-og-kombiner [CLRS, kapitel , , 28
Algoritmer og Datastrukturer 1 Gerth Stølting Brodal.
DADS: Algoritmer og Datastrukturer Forelæser: Gerth S. Brodal (vikar: EMS) Forelæsninger: timer, Aud E Kvarter: 3. (dADS 1) + 4. (dADS 2) Øvelser:
Algoritmer og Datastrukturer 1 Gerth Stølting Brodal Analyseværktøjer [CLRS, 1-3.1]
REGULARITET & AUTOMATER Indhold
Algoritmer og Datastrukturer 2 Grådige Algoritmer [CLRS, kapitel ] Gerth Stølting Brodal Aarhus Universitet.
DMasArk1 Pentium IA-32 Maskinarkitekturen. dMasArk2 Historie (1).. starter i 1970 med udviklingen af Intel 4004:
Algoritmer og Datastrukturer 1 Amortiseret Analyse [CLRS, kapitel 17] Gerth Stølting Brodal.
Algoritmer og Datastrukturer 1 Amortiseret Analyse [CLRS, kapitel 17] Gerth Stølting Brodal Aarhus Universitet.
Algoritmer og Datastrukturer 1 Gerth Stølting Brodal Aarhus Universitet.
Algoritmer og Datastrukturer 1 Gerth Stølting Brodal Aarhus Universitet.
Eksamen Praktisk prøve.
Algoritmer og Datastrukturer 1
Algoritmer og Datastrukturer 2
Algoritmer og Datastrukturer 1 Amortiseret Analyse [CLRS, kapitel 17]
Algoritmer og Datastrukturer 1
Algoritmer og Datastrukturer 1
Algoritmer og Datastrukturer 1
Algoritmer og Datastrukturer 2 Grådige Algoritmer [CLRS ]
Algoritmer og Datastrukturer 1 Amortiseret Analyse [CLRS, kapitel 17]
Algoritmer og Datastrukturer 2
Algoritmer og Datastrukturer 1
Algoritmer og Datastrukturer 2
Grundlæggende Algoritmer og Datastrukturer
Præsentationens transcript:

Algoritmer og Datastrukturer 1 Gerth Stølting Brodal

Kursusbeskrivelsen…

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.

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 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.

DatLab Fælles Q3-studiecafé i Shannon hver fredag kl Webteknologi Interaktionsdesign Algoritmer og datastrukturer (dat.) Fysisk Design (it) Wow! 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

Spørgsmål ?

Eksempler på en beregningsprocess… Puslespil ved ombytninger Maximum delsum

Design af Algoritmer Korrekt algoritme  algoritmen standser på alle input  output er det rigtige på alle input Effektivitet  Optimer algoritmerne mod at bruge minimal tid, plads, additioner,... eller maximal parallellisme...  ~ n 2 er bedre end ~ n 3 : assymptotisk tid  Mindre vigtigt : konstanterne  Resouceforbrug: Worst-case eller gennemsnitlig?

Hvad er udførselstiden for en algoritme?

Fra Idé til Programudførelse Del og Kombiner ? … if ( t1[t1index] <= t2[t2index] ) a[index] = t1[t1index++]; else a[index] = t2[t2index++]; … for each x in m up to middle add x to left for each x in m after middle add x to right … Pseudokode (Java-)kode Idé Mikrokode Virtuel hukkomelse/ TLB L1, L2,… cache Branch Prediction Pipelining... (Java) Bytekode + Virtuel maskine Assembler Maskinkode Compiler Program- udførsel

Maskiner har forskellig hastighed... Tid for at sortere linierne i en 65 MB web log på forskellige maskiner på datalogisk institut MaskineTid (sek) camel198.9 molotov10.2 harald26.2 gorm7.8 Idé: Argumenter om algoritmer uafhængig af maskine

RAM Modellen (Random Access Machine)  Beregninger sker i CPU  Data gemmes i hukommelsen  Basale operationer tager 1 tidsenhed: +, -, *, AND, OR, XOR, get(i), set(i,v),...  Et maskinord indeholder c·log n bits

Eksempel: Insertion-Sort

Insertion-Sort (C) insertion(int a[], int N) { int i, j, key; for(j=1; j < N; j++) { key = a[j]; i = j-1; while( i>=0 && a[i] > key ) { a[i+1] = a[i]; i--; } a[i+1] = key; } insertion: pushl%ebp movl%esp, %ebp pushl%edi pushl%esi pushl%ebx subl$12, %esp cmpl$1, 12(%ebp) jle.L3 movl8(%ebp), %edx xorl%ebx, %ebx movl8(%ebp), %eax movl$1, -16(%ebp) movl4(%edx), %edx addl$4, %eax movl%eax, -20(%ebp) movl%edx, -24(%ebp).p2align 4,,7.L6: movl8(%ebp), %ecx leal0(,%ebx,4), %esi movl(%ecx,%ebx,4), %eax cmpl-24(%ebp), %eax jle.L8 movl%ecx, %edi leal-4(%esi), %ecx leal(%ecx,%edi), %edx jmp.L9.p2align 4,,7.L16: movl(%edx), %eax movl%ecx, %esi subl$4, %edx subl$4, %ecx cmpl-24(%ebp), %eax jle.L8.L9: movl-20(%ebp), %edi subl$1, %ebx movl%eax, (%edi,%esi) jns.L16.L8: movl-16(%ebp), %edi movl8(%ebp), %edx leal(%edx,%edi,4), %eax.L5: movl-24(%ebp), %ecx movl-20(%ebp), %edx addl$1, -16(%ebp) movl-16(%ebp), %edi movl%ecx, (%edx,%ebx,4) cmpl%edi, 12(%ebp) jle.L3 movl4(%eax), %edx movl%edi, %ebx addl$4, %eax subl$1, %ebx movl%edx, -24(%ebp) jns.L6 jmp.L5.L3: addl$12, %esp popl%ebx popl%esi popl%edi popl%ebp ret

 Eksempel på pseudo-kode  Detaljeret analyse – stort arbejde  Tid: worst-case (~ n 2 ) og best-case (~ n ) meget forskellige  Tid: gennemsnitlige (~ n 2 )  Hurtigere på ~ sorterede input: adaptive Eksempel: Insertion-Sort

Asymptotisk notation  Grundlæggende antagelse: –~ n 2 er bedre end ~ n 3 –Konstanter ikke vigtige  Matematisk formel måde at arbejde med ”~”  Eksempler: 87 · n 2 ” ≤ ” 12 · n · n ” ≤ ” 0.33 · n 2 7 · n · n” ≤ ” n 2

1089·x vs 0.33·x 2

O... og vennerne Ω (store omega) θ (theta) ω (lille omega) o (lille o) - notation

O-notation Definition: f(n) = O(g(n)) hvis f(n) og g(n) er funktioner N → R og findes c > 0 og N 0 så for alle n ≥ N 0 : f(n) ≤ c·g(n) Intuitivt: f(n) er ”mindre end er lig med” g(n), eller g(n) ”dominerer” f(n) N0N0 f(n)f(n) c·g(n)c·g(n)

Eksempel: Insertion-Sort Tid O(n 2 )

f(n) = O(g(n))  c·f(n) = O(g(n)) f 1 (n) = O(g 1 (n)) og f 2 (n) = O(g 2 (n))  f 1 (n) + f 2 (n) = O( max(g 1 (n), g 2 (n)) ) f 1 (n) · f 2 (n) = O( g 1 (n) · g 2 (n) ) c k ·n k + c k-1 ·n k-1 + · · · + c 2 ·n 2 + c 1 ·n + c 0 = O(n k ) Eksempler : O - regneregler

 3·n 2 + 7·n = O(n 2 )  n 2 = O(n 3 )  log 2 n = O(n 0.5 )  (log 2 n) 3 = O(n 0.1 )  n 2 · log 2 n + 7·n 2.5 = O(n 2.5 )  2 n = O(3 n )  n 5 · 2 n = O(3 n ) Eksempler : O

Visuel test af n 5 · 2 n = O(3 n ) ? Plot af de to funktioner – ikke særlig informativ Plot af de to funktioner med logaritmisk y-akse – første plot misvisende Plot af brøken mellem de to funktioner – første plot misvisende Plots lavet med Gnuplot

Bevis for n 5 · 2 n = O(3 n ) Vis n 5 · 2 n ≤ c·3 n for n≥N 0 for passende valg af c og N 0 Bevis: (5/log 2 (3/2)) 2 ≤ n for n ≥ 73 5/log 2 (3/2) ≤ √n ≤ n/√n ≤ n/log 2 n da √n ≥ log 2 n for n ≥ 17 5 · log 2 n ≤ n · log 2 (3/2) log 2 (n 5 ) ≤ log 2 (3/2) n n 5 ≤ (3/2) n n 5 · 2 n ≤ 3 n Dvs. det ønskede gælder for c = 1 og N 0 = 73. □

Ω -notation Definition: f(n) = Ω(g(n)) hvis f(n) og g(n) er funktioner N → R og findes c > 0 og N 0 så for alle n ≥ N 0 : f(n) ≥ c·g(n) Intuitivt: f(n) er ”større end er lig med” g(n), eller g(n) er ”domineret af” f(n) N0N0 f(n)f(n) c·g(n)c·g(n)

θ -notation Definition: f(n) = θ (g(n)) hvis f(n)=O(g(n)) og f(n)= Ω(g(n) Intuitivt: f(n) og g(n) er ”assymptotisk ens” N0N0 f(n)f(n) c1·g(n)c1·g(n) c2·g(n)c2·g(n)

o-notation (lille o) Definition: f(n) = o(g(n)) hvis f(n) og g(n) er funktioner N → R og for alle c > 0, findes N 0 så for alle n ≥ N 0 : f(n) ≤ c·g(n) Intuitivt: f(n) er ”skarpt mindre end” g(n)

ω-notation Definition: f(n) = ω(g(n)) hvis f(n) og g(n) er funktioner N → R og for alle c > 0, findes N 0 så for alle n ≥ N 0 : f(n) ≥ c·g(n) Intuitivt: f(n) er ”skarpt større end” g(n)

Algoritme Analyse  RAM model  O-notation... behøver ikke at beskrive og analysere algoritmer i detaljer !