Grundlæggende Algoritmer og Datastrukturer. Analyseværktøjer [CLRS, 1-3.1]
|
|
|
- Klaus Bertelsen
- 6 år siden
- Visninger:
Transkript
1 Grundlæggende Algoritmer og Datastrukturer Analyseværktøjer [CLRS, 1-3.1]
2 Eksempler på en beregningsprocess Puslespil ved ombytninger Maximum delsum
3 Hvad er udførselstiden for en algoritme?
4 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
5 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
6 Maskiner har forskellig hastighed... Maskine Tid (sek) camel 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
7 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?
8 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
9 Eksempel: Insertion-Sort
10 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
11 n n = n 2 /2 + n/2 = n(n + 1)/ n
12 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
13 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
14 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
15 1089 x vs 0.33 x2
16 - notation... og vennerne Ω (store omega) (theta) ω (lille omega) o (lille o)
17 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
18 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
19 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))
20 Eksempel: Insertion-Sort Tid O(n 2 )
21 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 c 2 n 2 + c 1 n + c 0 = O(n k )
22 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
23 Eksempler : O 3 n 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 )
24 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
25 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
26 Ω -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)
27 Θ-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
28 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)
29 ω-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)
30 Algoritme Analyse RAM model O-notation... behøver ikke at beskrive og analysere algoritmer i detaljer!
Algoritmer og Datastrukturer 1
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
Asymptotisk analyse af algoritmers køretider
Asymptotisk analyse af algoritmers køretider Analyse af køretid Recall: Vi ønsker at vurdere (analysere) algoritmer på forhånd inden vi bruger lang tid på at implementere dem. De to primære spørgsmål:
Analyse af algoritmer
Analyse af algoritmer Analyse af algoritmer Køretid Pladsforbrug Asymptotisk notation O, Θ og Ω-notation. Eksperimentiel analyse af algoritmer Philip Bille Analyse af algoritmer Analyse af algoritmer Køretid
Asymptotisk analyse af algoritmers køretider
Asymptotisk analyse af algoritmers køretider Analyse af køretid (RAM-modellen vs. virkeligheden) public class Linear { public static void main(string[] args) { long time = System.currentTimeMillis(); long
Eksamen dcomnet Q2/2010. Navn
2582 Eksamen dcomnet Q2/2010 ID Navn Example I A32-prg1 Betragt følgende program skrevet i IA-32 symbolsk maskinsprog:.section.data x:.long 2 r:.long 27.section.text.globl _start _start: pushl x movl $0,%ebx
DM507 Algoritmer og datastrukturer
DM507 Algoritmer og datastrukturer Introduktion til kurset Rolf Fagerberg Forår 2019 1 / 20 Hvem er vi? Underviser: Rolf Fagerberg, Institut for Matematik og Datalogi (IMADA) Forskningsområde: algoritmer
Eksamen dcomnet Q2/2012. Studiekortsnummer Navn
Eksamen dcomnet Q2/2012 Studiekortsnummer Navn Vejledning Eksamen varer en time fra kl. 9 til kl. 10. Husk at skrive studienummer og navn tydeligt på forsiden, inden eksamen afsluttes. Der er ét rigtigt
Introduktion. Algoritmer og datastrukturer Toppunkter Algoritme 1 Algoritme 2 Algoritme 3. Philip Bille
Introduktion Algoritmer og datastrukturer Toppunkter Algoritme 1 Algoritme 2 Algoritme 3 Philip Bille Introduktion Algoritmer og datastrukturer Toppunkter Algoritme 1 Algoritme 2 Algoritme 3 Algoritmer
Introduktion. Introduktion. Algoritmer og datastrukturer. Eksempel: Maksimalt tal
Philip Bille Algoritmer og datastrukturer Algoritmisk problem. Præcist defineret relation mellem input og output. Algoritme. Metode til at løse et algoritmisk problem. Beskrevet i diskrete og entydige
Analyse af algoritmer. Analyse af algoritmer. Analyse af algoritmer. Køretid
Philip Bille Mål. At bestemme og forudsige resourceforbrug og korrekthed af algoritmer Eks. Virker min algoritme til at beregne korteste veje i grafer? Hvor hurtigt kører min algoritme til at søge efter
Introduktion til DM507
Introduktion til DM507 Rolf Fagerberg Forår 2017 1 / 20 Hvem er vi? Underviser: Rolf Fagerberg, IMADA Forskningsområde: algoritmer og datastrukturer 2 / 20 Hvem er vi? Underviser: Rolf Fagerberg, IMADA
Eksamen dcomnet 2012Q4. Årskortsnummer Navn
Eksamen dcomnet 2012Q4 Årskortsnummer Navn Vejledning Eksamen varer en time fra kl. 9 til kl. 10. Husk at skrive årskort og navn tydeligt på forsiden, inden eksamen afsluttes. Der er ét rigtigt svar per
Danmarks Tekniske Universitet
Eksamen 02105, F14 side 1 af 14 Danmarks Tekniske Universitet Skriftlig prøve, den 22. maj 2014. Kursusnavn: Algoritmer og datastrukturer 1 Kursusnummer: 02105 Hjælpemidler: Skriftlige hjælpemidler. Det
Skriftlig Eksamen DM507 Algoritmer og Datastrukturer
Skriftlig Eksamen DM507 Algoritmer og Datastrukturer Institut for Matematik og Datalogi Syddansk Universitet, Odense Mandag den 6. juni 2016, kl. 15:00 19:00 Besvarelsen skal afleveres elektronisk. Se
Danmarks Tekniske Universitet
side af sider Danmarks Tekniske Universitet Skriftlig prøve, den 6. maj 0. Kursusnavn: Algoritmer og datastrukturer I Kursus nr. 005. Tilladte hjælpemidler: Skriftlige hjælpemidler. Varighed: timer Vægtning
02105 Eksamensnoter. Lasse Herskind S maj Sortering 3
02105 Eksamensnoter Lasse Herskind S153746 12. maj 2017 Indhold 1 Sortering 3 2 Analyse af algoritme 4 2.1 Køretid.......................................... 4 2.2 Pladsforbrug.......................................
DM507 Algoritmer og datastrukturer
DM507 Algoritmer og datastrukturer Forår 2010 Projekt, del III Institut for matematik og datalogi Syddansk Universitet 24. april, 2010 (let justeret 10. maj og 21. maj 2010) Dette projekt udleveres i tre
Skriftlig Eksamen DM507 Algoritmer og Datastrukturer
Skriftlig Eksamen DM507 Algoritmer og Datastrukturer Institut for Matematik og Datalogi Syddansk Universitet, Odense Tirsdag den 24. juni 2014, kl. 10:00 14:00 Besvarelsen skal afleveres elektronisk. Se
Danmarks Tekniske Universitet
side af sider Danmarks Tekniske Universitet Skriftlig prøve, den. maj 00. Kursusnavn Algoritmer og datastrukturer Kursus nr. 06. Tilladte hjælpemidler: Alle hjælpemidler. Vægtning af opgaverne: Opgave
Danmarks Tekniske Universitet
side af 2 sider Danmarks Tekniske Universitet Skriftlig prøve, den 2. maj 200. Kursusnavn Algoritmer og datastrukturer Kursus nr. 02326. Tilladte hjælpemidler: Alle hjælpemidler. Vægtning af opgaverne:
Danmarks Tekniske Universitet
Eksamen 005, F side af sider Danmarks Tekniske Universitet Skriftlig prøve, den 6. maj 0. Kursusnavn: Algoritmer og datastrukturer I Kursus nr. 005. Tilladte hjælpemidler: Skriftlige hjælpemidler. Varighed:
Sortering. De n tal i sorteret orden. Eksempel: Kommentarer:
Sortering Sortering Input: Output: n tal De n tal i sorteret orden Eksempel: Kommentarer: 6, 2, 9, 4, 5, 1, 4, 3 1, 2, 3, 4, 4, 5, 9 Sorteret orden kan være stigende eller faldende. Vi vil i dette kursus
Skriftlig Eksamen Algoritmer og Datastrukturer (dads)
Skriftlig Eksamen Algoritmer og Datastrukturer (dads) Datalogisk Institut Aarhus Universitet Tirsdag den 27. maj 2003, kl. 9.00 3.00 Opgave (25%) For konstanten π = 3.4592... gælder identiteten π 2 6 =
Sortering. Eksempel: De n tal i sorteret orden
Sortering 1 / 32 Sortering Input: Output: Eksempel: n tal De n tal i sorteret orden 6, 2, 9, 4, 5, 1, 4, 3 1, 2, 3, 4, 4, 5, 9 2 / 32 Sortering Input: Output: Eksempel: n tal De n tal i sorteret orden
Sortering. Eksempel: De n tal i sorteret orden
Sortering 1 / 34 Sortering Input: Output: Eksempel: n tal De n tal i sorteret orden 6, 2, 9, 4, 5, 1, 4, 3 1, 2, 3, 4, 4, 5, 9 2 / 34 Sortering Input: Output: Eksempel: n tal De n tal i sorteret orden
Algorithms & Architectures II
Algorithms & Architectures II Algorithms & Architectures II Jens Myrup Pedersen Hans Peter Schwefel Kursusholdere Dagens lektion Overordnet mål: At etablere en forståelse for hvordan hardware og hardwarearkitekturer
Datalogi C + Datastrukturer og Algoritmer
Datalogi C + Datastrukturer og Algoritmer Velkommen til DatC erne Dagens emne: Hvad er D&A, mål for effektivitet Kursuslærer: Henning Christiansen [email protected], http://www.ruc.dk/~henning Hjælpelærer
Pentium IA-32 Maskinarkitekturen
Pentium IA-32 Maskinarkitekturen 1 Historie (1) Starter i 1970 med udviklingen af Intel 4004: 2 Historie (2) Baglæns kompatibilitet tilbage til 8086. 3 Intel 4004 and Pentium 4 http://www.intel.com/museum/archives/index.htm
Skriftlig Eksamen Algoritmer og Datastrukturer (dads)
Skriftlig Eksamen Algoritmer og Datastrukturer (dads) Datalogisk Institut Aarhus Universitet Mandag den 27. maj 2002, kl. 9.00 13.00 Opgave 1 (25%) Denne opgave handler om multiplikation af positive heltal.
Danmarks Tekniske Universitet
side af sider Danmarks Tekniske Universitet Skriftlig prøve, den 6. maj 0. Kursusnavn: Algoritmer og datastrukturer Kursus nr. 06. Tilladte hjælpemidler: Skriftlige hjælpemidler. Varighed: timer Vægtning
Bevisteknikker. Bevisteknikker (relevant både ved design og verifikation) Matematisk induktion. Matematisk induktion uformel beskrivelse
Bevisteknikker Bevisteknikker (relevant både ved design og verifikation) Bevisførelse ved modstrid (indirekte bevis) Antag, at det givne teorem er falsk Konkluder, at dette vil føre til en modstrid Teorem:
Maskinarkitektur. Lars Kristensen [email protected]. Christian Storm [email protected]. dmasark 1
Maskinarkitektur Lars Kristensen [email protected] Christian Storm [email protected] dmasark 1 Praktiske oplysninger http://www.daimi.au.dk/dmasark dmasark 2 Forelæsninger Tirsdag 12.15-14.00, Store Aud,
Computere og Netværk (dcomnet)
Computere og Netværk (dcomnet) http://www.cs.au.dk/dcomnet Jens Kargaard Madsen ([email protected]) Jens Bennedsen ([email protected]) dcomnet 1 Computere og netværk Beskrivelse At give den studerende kendskab til computere
Indhold. Maskinstruktur... 3. Kapitel 1. Assemblersprog...3. 1.1 Indledning...3 1.2 Hop-instruktioner... 7 1.3 Input og output...
Indhold Maskinstruktur... 3 Kapitel 1. Assemblersprog...3 1.1 Indledning...3 1.2 Hop-instruktioner... 7 1.3 Input og output... 9 Kapitel 2. Maskinkode... 13 2.1 Den fysiske maskine... 13 2.2 Assemblerens
14 Algoritmeanalyse. Noter. Algoritmebegrebet. Hvad er algoritmeanalyse? Problemstørrelse og køretid. Køretid for forskellige kontrolstrukturer.
14 Algoritmeanalyse. Algoritmebegrebet. Hvad er algoritmeanalyse? Problemstørrelse og køretid. O og Ω. Køretid for forskellige kontrolstrukturer. Eksempler på algoritmeanalyse. Eksponentiel og polynomiel
Skriftlig eksamen i Datalogi
Roskilde Universitetscenter side 1 af 9 sider Skriftlig eksamen i Datalogi Modul 1 Vinter 1999/2000 Opgavesættet består af 6 opgaver, der ved bedømmelsen tillægges følgende vægte: Opgave 1 5% Opgave 2
DM507 Algoritmer og datastrukturer
DM507 Algoritmer og datastrukturer Forår 2012 Projekt, del III Institut for matematik og datalogi Syddansk Universitet 29. april, 2012 Dette projekt udleveres i tre dele. Hver del har sin deadline, således
Dynamisk programmering
Dynamisk programmering Dynamisk programmering Optimeringsproblem: man ønsker at finde bedste den kombinatoriske struktur blandt mange mulige. Dynamisk programmering Optimeringsproblem: man ønsker at finde
CPUer og maskinkode DM534. Rolf Fagerberg
CPUer og maskinkode DM534 Rolf Fagerberg CPUers opbygning En CPU er bygget op af elektriske kredsløb (jvf. sidste forelæsning), som kan manipulere bits. En CPU manipulerer flere bits ad gangen, deres antal
DM507 Algoritmer og datastrukturer
DM507 Algoritmer og datastrukturer Forår 2012 Projekt, del II Institut for matematik og datalogi Syddansk Universitet 15. marts, 2012 Dette projekt udleveres i tre dele. Hver del har sin deadline, således
DATALOGI 1E. Skriftlig eksamen torsdag den 3. juni 2004
Københavns Universitet Naturvidenskabelig Embedseksamen DATALOGI 1E Skriftlig eksamen torsdag den 3. juni 2004 Opgaverne vægtes i forhold til tidsangivelsen herunder, og hver opgaves besvarelse bedømmes
Operativsystemer - dopsys
Operativsystemer - dopsys Erik Ernst [email protected] dopsys 1 Q/A Mange deltagere er nu på 2. år af datalogistudiet, med dcomnet 1 for år siden Er din baggrund anderledes? dopsys 2 Praktiske oplysninger
Teoretiske Øvelsesopgaver:
Teoretiske Øvelsesopgaver: TØ-Opgave 1 Subtraktion division i legemer: Er subtraktion division med elementer 0 i legemer veldefinerede, eller kan et element b have mere end ét modsat element -b eller mere
