Eksempler på en beregningsprocess… Puslespil ved ombytninger Maximum delsum.

Slides:



Advertisements
Lignende præsentationer
Funktioner Grundbegreber.
Advertisements

Flugtveje. Problemanalyse Hvordan finder man optimale flugtveje? Hvordan kan man finde optimale flugtveje ved hjælp af grafteori? Hvordan kan vores optimale.
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. 2 Historie (1) Starter i 1970 med udviklingen af Intel 4004:
1 Pentium IA-32 Maskinarkitekturen Kort resume – uge 5.
Symbolsk maskinsprog.
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.
Areal og Integral AM/2011.
Algoritmer og Datastrukturer 1 Gerth Stølting Brodal.
Algoritmer og Datastrukturer 1 Gerth Stølting Brodal.
Algoritmer og Datastrukturer 2 Gerth Stølting Brodal.
Økonometri 1: Specifikation og dataproblemer1 Økonometri 1 Specifikation, og dataproblemer 4. november 2005.
Flugtveje mig - Problemanalysen og metode Daniel - Graftori og modelovervejlser Asger - Flugtvejsproblemet og korteste-vej algoritmen THOMAS - Største.
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 Pentium IA-32 Maskinarkitekturen. 2 Historie (1) Starter i 1970 med udviklingen af Intel 4004:
FEN Diskret matematik/Seminar 3 - proofs 1 Beviser Et bevis er en argumentation, som overbeviser om, at en påstand er sand, påstanden kaldes.
Begreber og Redskaber 8. Plan for idag Sortering fortsat Comparable Søgning –Lineær søgning –Binær søgning.
Søgning & sortering Intro søgning Lineær søgning Binær søgning
Areal og bestemt integral
Logistisk Regression Kategoriske og Kontinuerte Forklarende Variable
1 Bevisteknikker. 2 Bevisteknikker (relevant både ved design og verifikation) Teorem: Der findes uendeligt mange primtal Bevis: Antag at der findes et.
1 UNION-FIND. 2 inddata: en følge af heltalspar (p, q); betydning: p er “forbundet med” q uddata: intet, hvis p og q er forbundet, ellers (p, q) Eksempel.
Induktion og rekursion
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.
Operationer på relationer
Algoritmer og Datastrukturer 1 Merge-Sort [CLRS, kapitel 2.3] Heaps [CLRS, kapitel 6] Gerth Stølting Brodal.
DComNet1 Computere og Netværk (dComNet) Jens Kargaard Madsen Jens Bennedsen
Algoritmer og Datastrukturer 1 Gerth Stølting Brodal Aarhus Universitet.
Økonometri 1: Binær responsmodeller: Logit og probit1 Økonometri 1 Binær responsmodeller: Logit og probit 8. maj 2003.
1 Sortering I elementære metoder. 2 Plan Terminologi Elementære metoder til sortering -sortering ved udvælgelse -sortering ved indsættelse -Shellsort.
Afledet funktion Her har jeg tegnet f(x) og f’(x)=g(x)
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.
1 Vi ser nu på en general graf Men antager at alle afstande er heltallige (Det er ikke så restriktivt) Algoritmen leder efter den mindst mulige dækningsdistance.
Algoritmer og Datastrukturer 2 Del-og-kombiner [CLRS, kapitel 2.3, , problem 30.1.c] Gerth Stølting Brodal.
1 Algoritmik ved Keld Helsgaun. 2 Plan Algoritmebegrebet et simpelt eksempel Et eksempel på algoritmedesign.
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.
1 Design, analyse og verifikation. 2 Algoritmebegrebet Design Bevisteknikker Design ved hjælp at matematisk induktion Analyse O-notation Logaritmer Binær.
Per P. Madsen- Proces1 Algoritmer og datastrukturer Grundprincipper og analyse af algoritmer. MM1 Lister, stakke og køer. MM2 Træer, og Hash-tabeller.
1 Algoritmisk geometri. 2 Intervalsøgning 3 Motivation for intervaltræer Lad der være givet en database over ansatte i en virksomhed Alder Løn Ansættelsesdato.
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.
DComNet1 Computere og Netværk (dComNet) Jens Kargaard Madsen Jens Bennedsen
Økonometri 1: Specifikation og dataproblemer1 Økonometri 1 Specifikation og dataproblemer 2. november 2004.
Økonometri – lektion 8 Multipel Lineær Regression
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.
Grundlæggende programmering Forår 2002
Algoritmer og Datastrukturer 2 Del-og-kombiner [CLRS, kapitel , , 28
Algoritmer og Datastrukturer 1 Gerth Stølting Brodal.
Algoritmer og Datastrukturer 1 Gerth Stølting Brodal Analyseværktøjer [CLRS, 1-3.1]
Statistik II 4. Lektion Logistisk regression.
DMasArk1 Pentium IA-32 Maskinarkitekturen. dMasArk2 Historie (1).. starter i 1970 med udviklingen af Intel 4004:
Algoritmer og Datastrukturer 1 Gerth Stølting Brodal Aarhus Universitet.
Computerbaseret matematikundervisning et pilotprojekt
Algoritmer og Datastrukturer 1
Algoritmer og Datastrukturer 1
Algoritmer og Datastrukturer 1
Areal og Integral AM/2004.
Grundlæggende Algoritmer og Datastrukturer
Præsentationens transcript:

Eksempler på en beregningsprocess… Puslespil ved ombytninger Maximum delsum

Max-Delsum: Algoritmiske idéer Algoritme# additionerIdé 1~ n 3 Naive løsning 2 + 2b~ n 2 Genbrug beregninger 3~ n · log nDel-og-kombiner 4~ nInkrementel

Sammenligning

Sammenligning: n 3 og n

Sammenligning 2009 x-akse = n, y = sekunder, hvert eksperiment gennemsnit af 10 kørsler (gcc 4.1.2, C, Linux , Intel Xeon 3 GHz) maxsum1 ≈ n 3

Sammenligning 2009 x-akse = n, y = sekunder, hvert eksperiment gennemsnit af 10 kørsler (gcc 4.1.2, C, Linux , Intel Xeon 3 GHz) maxsum2a og maxsum2b ≈ n 2

Sammenligning 2009 x-akse = n, y = sekunder, hvert eksperiment gennemsnit af 10 kørsler (gcc 4.1.2, C, Linux , Intel Xeon 3 GHz) maxsum3 og maxsum4 ≈ n ???

Sammenligning 2009 x-akse = n, y = sekunder, hvert eksperiment gennemsnit af 10 kørsler (gcc 4.1.2, C, Linux , Intel Xeon 3 GHz) maxsum4 ≈ n

Sammenligning 2009 x-akse = n, y = sekunder, hvert eksperiment gennemsnit af 10 kørsler (gcc 4.1.2, C, Linux , Intel Xeon 3 GHz) maxsum3 ≈ c 1 ·n·log n+c 2 ·n

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å Institut for Datalogi MaskineTid (sek) camel198.9 molotov10.2 harald26.2 gorm7.8 Idé: Argumenter om algoritmer uafhængig af maskine

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?

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

1234∙∙∙n n ∙∙∙ + n = n 2 /2 + n/2 = n(n + 1)/2

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 !