Algoritmer og Datastrukturer 1



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

Algoritmer og Datastrukturer 1. Gerth Stølting Brodal

Algoritmedesign med internetanvendelser ved Keld Helsgaun

Eksamen dcomnet Q2/2012. Studiekortsnummer Navn

Asymptotisk analyse af algoritmers køretider

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

Eksamen dcomnet Q2/2010. Navn

Skriftlig eksamen i Datalogi

Eksamen dcomnet 2012Q4. Årskortsnummer Navn

Analyse af algoritmer

DM02 opgaver ugeseddel 2

Introduktion. Philip Bille

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

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

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

Asymptotisk analyse af algoritmers køretider

Rolf Fagerberg. Forår 2013

Danmarks Tekniske Universitet

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

Danmarks Tekniske Universitet

Algoritmer og Datastrukturer 1. Gerth Stølting Brodal

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

Rolf Fagerberg. Forår 2012

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.

Algoritmer og Datastrukturer 1. Gerth Stølting Brodal

Danmarks Tekniske Universitet

Rolf Fagerberg. Forår 2015

Danmarks Tekniske Universitet

Danmarks Tekniske Universitet

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

DM507 Algoritmer og datastrukturer

DM507 Algoritmer og datastrukturer

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

Rolf Fagerberg. Forår 2014

Pentium IA-32 Maskinarkitekturen

Et udtryk på formena n kaldes en potens med grundtal a og eksponent n. Vi vil kun betragte potenser hvor grundtallet er positivt, altså a>0.

Algoritmer og invarianter

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

Danmarks Tekniske Universitet

BRP Sortering og søgning. Hægtede lister

DM507 Algoritmer og datastrukturer

DATALOGI MASKINARKITEKTUR Blok 2 samt Reeksamination i DATALOGI MASKINARKITEKTUR Blok 1 og arkitekturdelen af DATALOGI 1E

Sortering af information er en fundamental og central opgave.

Sortering. Eksempel: De n tal i sorteret orden

Maskinarkitektur. Lars Kristensen Christian Storm dmasark 1

Danmarks Tekniske Universitet

Sortering. Eksempel: De n tal i sorteret orden

Danmarks Tekniske Universitet

Rolf Fagerberg. Forår 2015

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

Computere og Netværk (dcomnet)

Skriftlig Eksamen DM507 Algoritmer og Datastrukturer

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

Computeren inderst inde

Datalogi C + Datastrukturer og Algoritmer

Danmarks Tekniske Universitet

Danmarks Tekniske Universitet

Introduktion til DM507

Sortering af information er en fundamental og central opgave.

Danmarks Tekniske Universitet

Skriftlig Eksamen Algoritmer og Datastrukturer (dads)

Skriftlig Eksamen Algoritmer og Datastrukturer (dads)

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

Et generelt algoritme-konstruktionsprincip ( paradigme ) for optimeringsproblemer. Ideen er simpel:

Danmarks Tekniske Universitet

Danmarks Tekniske Universitet

Danmarks Tekniske Universitet

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

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

Analyse af ombytningspuslespil

Dynamisk programmering

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

Algorithms & Architectures II

Operativsystemer - dopsys

DATALOGI MASKINARKITEKTUR

Analyse af ombytningspuslespil

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

Danmarks Tekniske Universitet

Bevisteknikker (relevant både ved design og verifikation)

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

Skriftlig Eksamen DM507 Algoritmer og Datastrukturer

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

En karakteristik af de regulære sprog. Ugens emner. FA minimering [ ] MyHill-Nerode-sætningen en algoritme til minimering af FA er

Dynamisk programmering

Dynamisk programmering

Design by Contract. Design and Programming by Contract. Oversigt. Prædikater

DATALOGI 1E. Skriftlig eksamen fredag d. 16. januar 2004

MM4. Algoritmiske grundprincipper. Lister, stakke og køer. Hash-tabeller og Træer. Sortering. Søgning.

Hashing og hashtabeller

Perspektiverende Datalogi Internetalgoritmer. MapReduce. Gerth Stølting Brodal

Grundlæggende Algoritmer og Datastrukturer

Lærevejledning. - en introduktion til maskinarkitektur. faraz@butt.dk Faraz Butt mads@danquah.dk Mads Danquah doktor@dyregod.dk Ulf Holm Nielsen

Danmarks Tekniske Universitet

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

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

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

Algorithms and Architectures I Rasmus Løvenstein Olsen (RLO) Mm2: Rekursive algoritmer og rekurrens - October 12, 2010

Algorithms and Architectures I Rasmus Løvenstein Olsen (RLO), Jimmy Jessen Nielsen (JJE) Mm2: Rekursive algoritmer og rekurrens - October 10, 2008

Eksempel 9.1. Areal = (a 1 + b 1 )(a 2 + b 2 ) a 1 a 2 b 1 b 2 2a 2 b 1 = a 1 b 2 a 2 b 1 a 1 a 2 = b 1 b 2

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 )?

Transkript:

Algoritmer og Datastrukturer 1 Gerth Stølting Brodal 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

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

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 x 2

- 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

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 )

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 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) 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!