Grundlæggende Algoritmer og Datastrukturer. Analyseværktøjer [CLRS, 1-3.1]

Relaterede dokumenter
Algoritmer og Datastrukturer 1. Gerth Stølting Brodal

Algoritmer og Datastrukturer 1

Algoritmedesign med internetanvendelser ved Keld Helsgaun

Asymptotisk analyse af algoritmers køretider

Analyse af algoritmer

Asymptotisk analyse af algoritmers køretider

Opskriv følgende funktioner efter stigende orden med hensyn til O-notationen (bemærk at log n betegner totals logaritmen): n 2 (log n) 2 2.

Eksamen dcomnet Q2/2010. Navn

Rolf Fagerberg. Forår 2013

Danmarks Tekniske Universitet

DM507 Algoritmer og datastrukturer

Eksamen dcomnet Q2/2012. Studiekortsnummer Navn

Rolf Fagerberg. Forår 2015

Rolf Fagerberg. Forår 2015

Introduktion. Algoritmer og datastrukturer Toppunkter Algoritme 1 Algoritme 2 Algoritme 3. Philip Bille

Introduktion. Introduktion. Algoritmer og datastrukturer. Eksempel: Maksimalt tal

Analyse af algoritmer. Analyse af algoritmer. Analyse af algoritmer. Køretid

Introduktion til DM507

DATALOGISK INSTITUT, AARHUS UNIVERSITET. Det Naturvidenskabelige Fakultet EKSAMEN. Grundkurser i Datalogi

Rolf Fagerberg. Forår 2014

Eksamen dcomnet 2012Q4. Årskortsnummer Navn

Rolf Fagerberg. Forår 2012

Danmarks Tekniske Universitet

Danmarks Tekniske Universitet

Algoritmer og Datastrukturer 1. Gerth Stølting Brodal

Oplæg og øvelser, herunder frugt og vand Gerth Stølting Brodal

Danmarks Tekniske Universitet

Algoritmer og Datastrukturer 1. Gerth Stølting Brodal

Danmarks Tekniske Universitet

BRP Sortering og søgning. Hægtede lister

Skriftlig Eksamen DM507 Algoritmer og Datastrukturer

Danmarks Tekniske Universitet

Introduktion. Philip Bille

02105 Eksamensnoter. Lasse Herskind S maj Sortering 3

DM507 Algoritmer og datastrukturer

Skriftlig Eksamen DM507 Algoritmer og Datastrukturer

Danmarks Tekniske Universitet

Danmarks Tekniske Universitet

Danmarks Tekniske Universitet

Sortering. De n tal i sorteret orden. Eksempel: Kommentarer:

Danmarks Tekniske Universitet

Skriftlig Eksamen Algoritmer og Datastrukturer 1. Datalogisk Institut Aarhus Universitet. Mandag den 22. marts 2004, kl

Sortering af information er en fundamental og central opgave.

Skriftlig Eksamen Algoritmer og Datastrukturer (dads)

Sortering. Eksempel: De n tal i sorteret orden

DATALOGISK INSTITUT, AARHUS UNIVERSITET. Det Naturvidenskabelige Fakultet EKSAMEN. Grundkurser i Datalogi

Sortering. Eksempel: De n tal i sorteret orden

Algorithms & Architectures II

Algoritmer og Datastrukturer 1. Gerth Stølting Brodal Aarhus Universitet

Datalogi C + Datastrukturer og Algoritmer

Pentium IA-32 Maskinarkitekturen

Skriftlig Eksamen Algoritmer og Datastrukturer (dads)

Danmarks Tekniske Universitet

Opskriv følgende funktioner efter stigende orden med hensyn til O-notationen: 23n log n. 4 n (log n) log n

Opskriv følgende funktioner efter stigende orden med hensyn til O-notationen: (logn) 5. 5n 2 5 logn. 2 logn

Danmarks Tekniske Universitet

DATALOGISK INSTITUT, AARHUS UNIVERSITET. Det Naturvidenskabelige Fakultet EKSAMEN. Grundkurser i Datalogi

Opskriv følgende funktioner efter stigende orden med hensyn til O-notationen: n 2 n (log n) 2. 3 n /n 2 n + (log n) 4

Sortering af information er en fundamental og central opgave.

Skriftlig Eksamen Algoritmer og Datastrukturer 1. Datalogisk Institut Aarhus Universitet

Bevisteknikker. Bevisteknikker (relevant både ved design og verifikation) Matematisk induktion. Matematisk induktion uformel beskrivelse

Maskinarkitektur. Lars Kristensen Christian Storm dmasark 1

Opskriv følgende funktioner efter stigende orden med hensyn til O-notationen: 7 n 1/ log n. (log n) 4

Danmarks Tekniske Universitet

Opskriv følgende funktioner efter stigende orden med hensyn til O-notationen: (logn) 7 n 1/2 2 n /n 3 2logn n 2 /logn

Computere og Netværk (dcomnet)

DATALOGISK INSTITUT, AARHUS UNIVERSITET. Det Naturvidenskabelige Fakultet EKSAMEN. Grundkurser i Datalogi

INSTITUT FOR DATALOGI, AARHUS UNIVERSITET EKSAMEN. Grundkurser i Datalogi. Algoritmer og Datastrukturer 1 (2003-ordning)

Indhold. Maskinstruktur Kapitel 1. Assemblersprog Indledning Hop-instruktioner Input og output...

14 Algoritmeanalyse. Noter. Algoritmebegrebet. Hvad er algoritmeanalyse? Problemstørrelse og køretid. Køretid for forskellige kontrolstrukturer.

Skriftlig eksamen i Datalogi

Opskriv følgende funktioner efter stigende orden med hensyn til O-notationen: (logn) 2 2 n 1/n (logn) n. n 2

DM507 Algoritmer og datastrukturer

DATALOGISK INSTITUT, AARHUS UNIVERSITET. Det Naturvidenskabelige Fakultet EKSAMEN. Grundkurser i Datalogi

Dynamisk programmering

Opskriv følgende funktioner efter stigende orden med hensyn til O-notationen: 4 n n 3n n 2 /logn 5 n n (logn) 3n n 2 /logn 4 n n 5 n

DATALOGISK INSTITUT, AARHUS UNIVERSITET

Danmarks Tekniske Universitet

Opskriv følgende funktioner efter stigende orden med hensyn til O-notationen: n 7 n 1 7 7/n. 7nlogn. 7n 7nlogn n7

INSTITUT FOR DATALOGI, AARHUS UNIVERSITET. Science and Technology EKSAMEN. Grundkurser i Datalogi. Algoritmer og Datastrukturer 1 (2003-ordning)

Selvstudium 1, Diskret matematik

Danmarks Tekniske Universitet

Opskriv følgende funktioner efter stigende orden med hensyn til O-notationen: n+logn logn (logn) 7 (3/2) n

Opskriv følgende funktioner efter stigende orden med hensyn til O-notationen: n 3/2. n logn (3/2) n. 2 3logn (3/2) n

Computeren inderst inde

Målet for disse slides er at diskutere nogle metoder til at gemme og hente data effektivt.

Opgave 1 (10%) I det følgende angiver log n 2-tals-logaritmen af n. Ja Nej. n+3n er O(2n)? n 6 er O(n 5 )? nlogn er O(n 2 /logn)? 4n 3 er O(3n 4 )?

INSTITUT FOR DATALOGI, AARHUS UNIVERSITET. Det Naturvidenskabelige Fakultet EKSAMEN. Grundkurser i Datalogi

CPUer og maskinkode DM534. Rolf Fagerberg

Målet for disse slides er at beskrive nogle algoritmer og datastrukturer relateret til at gemme og hente data effektivt.

DM507 Algoritmer og datastrukturer

Bevisteknikker (relevant både ved design og verifikation)

Algorithms and Architectures I Rasmus Løvenstein Olsen (RLO) Mm1: Introduction to analysis and design of algorithms - October 11, 2010

Dynamisk programmering

DM13-3. Obligatorisk opgave E.05 Håndoptimering af SPARC assembler-kode

Bits DM534. Rolf Fagerberg, 2012

DATALOGI 1E. Skriftlig eksamen torsdag den 3. juni 2004

Operativsystemer - dopsys

Teoretiske Øvelsesopgaver:

INSTITUT FOR DATALOGI, AARHUS UNIVERSITET. Det Naturvidenskabelige Fakultet EKSAMEN. Grundkurser i Datalogi

Transkript:

Grundlæggende Algoritmer og Datastrukturer Analyseværktøjer [CLRS, 1-3.1]

Eksempler på en beregningsprocess Puslespil ved ombytninger Maximum delsum

Hvad er udførselstiden for en algoritme?

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

Hvad er udførselstiden for en algoritme? a) Tiden (min/sec) for at køre program b) # instruktioner der udføres c) # hukommelsesceller der læses/skrives d) # procedure kald e) Andet

Maskiner har forskellig hastighed... Maskine Tid (sek) camel19 8.9 molotov 10.2 harald 26.2 gorm 7.8 Tid for at sortere linierne i en 65 MB web log på forskellige maskiner på Institut for Datalogi 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) CPU H u k o m m e l s e 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

Hvor mange gange udføres linie 6? a) ~ n b) ~ n log n c) ~ n 2 d) ~ n 3 e) Ved ikke Input n n-1 n-2 4 3 2 1

n 1 + 2 + + n = n 2 /2 + n/2 = n(n + 1)/2 3 2 1 1 2 3 4 n

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:.l6:.l16:.l9:.l8:.l5:.l3: pushl %ebp %esp, %ebp pushl %edi pushl %esi pushl %ebx subl $12, %esp cmpl $1, 12(%ebp) jle.l3 8(%ebp), %edx xorl %ebx, %ebx 8(%ebp), %eax $1, -16(%ebp) 4(%edx), %edx addl $4, %eax %eax, -20(%ebp) %edx, -24(%ebp).p2align 4,,7 8(%ebp), %ecx leal 0(,%ebx,4), %esi (%ecx,%ebx,4), %eax cmpl -24(%ebp), %eax jle.l8 %ecx, %edi leal -4(%esi), %ecx leal (%ecx,%edi), %edx jmp.l9.p2align 4,,7 (%edx), %eax %ecx, %esi subl $4, %edx subl $4, %ecx cmpl -24(%ebp), %eax jle.l8-20(%ebp), %edi subl $1, %ebx %eax, (%edi,%esi) jns.l16 leal -16(%ebp), %edi 8(%ebp), %edx (%edx,%edi,4), %eax -24(%ebp), %ecx -20(%ebp), %edx addl $1, -16(%ebp) -16(%ebp), %edi %ecx, (%edx,%ebx,4) cmpl %edi, 12(%ebp) jle.l3 4(%eax), %edx %edi, %ebx addl $4, %eax subl $1, %ebx %edx, -24(%ebp) jns.l6 jmp.l5 addl popl popl popl popl ret $12, %esp %ebx %esi %edi %ebp

Eksempel: Insertion-Sort 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

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 3 1089 n 0.33 n 2 7 n 2 + 25 n n 2

1089 x vs 0.33 x2

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

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) c g(n) f(n) Intuitivt: f(n) er mindre end er lig med g(n), eller g(n) dominerer f(n) N 0

10 n = O(n 2 )? a) Nej b) Ja c=1 og N 0 =1 c) Ja c=10 og N 0 =1 d) Ja c=1 og N 0 =10 e) Både c) og d) f) Ved ikke

O-notation O(g(n)) er mængden af funktioner der asymptotisk er begrænset af g(n) Datalogi notation f(n) = O(g(n)) O(f(n)) = O(g(n)) Eksempler: n 2 = O(n 3 ) O(n 3 ) = n 2 O(n 2 ) = O(n 3 ) O(n 3 ) = O(n 2 ) Matematik notation f(n) O(g(n)) O(f(n)) O(g(n))

Eksempel: Insertion-Sort Tid O(n 2 )

Eksempler : O - regneregler 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 )

f 1 (x) = O(g 1 (x)) og f 2 (x) = O(g 2 (x)) gælder så f 1 (x) - f 2 (x) = O(g 1 (x) - g 2 (x))? a) Ja b) Nej c) Ved ikke

Eksempler : O 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 )

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 = 3 n / 2 n n 5 2 n 3 n Dvs. det ønskede gælder for c = 1 og N 0 = 73. Sætning poly(n) a n = O( b n ) for alle 1 a < b

Ω -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) f(n) c g(n) N 0 Intuitivt: f(n) er større end er lig med g(n), eller g(n) er domineret af f(n)

Θ-notation Definition: f(n) = Θ(g(n)) hvis f(n)=o(g(n)) og f(n)= Ω(g(n) c 1 g(n) f(n) c 2 g(n) N 0 Intuitivt: f(n) og g(n) er assymptotisk ens

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!