Top Banner
Introduktion Philip Bille
29

Philip Bille - WordPress.com · 2014. 2. 6. · • Algoritmer og datastrukturer • Toppunkter • Algoritme 1 • Algoritme 2 • Algoritme 3. Title: introduktion_2014.key Author:

Mar 26, 2021

Download

Documents

dariahiddleston
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: Philip Bille - WordPress.com · 2014. 2. 6. · • Algoritmer og datastrukturer • Toppunkter • Algoritme 1 • Algoritme 2 • Algoritme 3. Title: introduktion_2014.key Author:

Introduktion

Philip Bille

Page 2: Philip Bille - WordPress.com · 2014. 2. 6. · • Algoritmer og datastrukturer • Toppunkter • Algoritme 1 • Algoritme 2 • Algoritme 3. Title: introduktion_2014.key Author:

Plan

• Algoritmer og datastrukturer

• Toppunkter

• Algoritme 1

• Algoritme 2

• Algoritme 3

Page 3: Philip Bille - WordPress.com · 2014. 2. 6. · • Algoritmer og datastrukturer • Toppunkter • Algoritme 1 • Algoritme 2 • Algoritme 3. Title: introduktion_2014.key Author:

Algoritmer og datastrukturer

• Hvad er det?

• Algoritmisk problem: præcist defineret relation mellem input og output.

• Algoritme: metode til at løse et algoritmisk problem.

• Beskrevet i diskrete og entydige skridt.

• Matematisk abstraktion af program.

• Datastruktur: Metode til at organise data så det kan søges i eller manipuleres.

Page 4: Philip Bille - WordPress.com · 2014. 2. 6. · • Algoritmer og datastrukturer • Toppunkter • Algoritme 1 • Algoritme 2 • Algoritme 3. Title: introduktion_2014.key Author:

Eks: Max i tabel

• Maxproblemet: givet en tabel A[1..n] find et tal i, således at A[i] er maksimal.

• Input: tabel A[1..n].

• Output: et tal i, 1 ≤ i ≤ n, så A[i] ≥ A[j] for alle indgange j ≠ i.

• Algoritme til maxproblemet:

• Gennemløb A og vedligehold nuværende maximale indgang. Returner den til slut.

1 3 7 15 17 11 2 3 6 8 7 5 9 5 231 2 3 4 5 6 7 8 9 10 11 12 13 14 15

Page 5: Philip Bille - WordPress.com · 2014. 2. 6. · • Algoritmer og datastrukturer • Toppunkter • Algoritme 1 • Algoritme 2 • Algoritme 3. Title: introduktion_2014.key Author:

Beskrivelse af algoritmer

• Naturligt sprog.

• Program.

• Pseudokode.

Page 6: Philip Bille - WordPress.com · 2014. 2. 6. · • Algoritmer og datastrukturer • Toppunkter • Algoritme 1 • Algoritme 2 • Algoritme 3. Title: introduktion_2014.key Author:

def findMax(A): max = 0 for i in range(len(A)): if A[i] > A[max]: max = i return max

public static int findMax(int[] A) { int max = 0; for(i=0; i< n; i++) if (A[i] > A[max]) max = i; return max;}

int findMax(int* A, n) { int max = 0; for(i=0; i< n; i++) if (A[i] > A[max]) max = i; return max; }

fun findMax [] = raise Empty | findMax [x] = x | findMax (x::xs) = max(x, findMax xs)

Page 7: Philip Bille - WordPress.com · 2014. 2. 6. · • Algoritmer og datastrukturer • Toppunkter • Algoritme 1 • Algoritme 2 • Algoritme 3. Title: introduktion_2014.key Author:

Pseudokode

• Som (imperativt) programmeringssprog men uden sprogspecifikke ting.

• Nemt at implementere og analysere.

FindMax(A, n) max = 0 for i = 1 to n if (A[i] > A[max]) then max = i return max

Page 8: Philip Bille - WordPress.com · 2014. 2. 6. · • Algoritmer og datastrukturer • Toppunkter • Algoritme 1 • Algoritme 2 • Algoritme 3. Title: introduktion_2014.key Author:

Beskrivelse af algoritmer

• Naturligt sprog, pseudokode eller program?

Page 9: Philip Bille - WordPress.com · 2014. 2. 6. · • Algoritmer og datastrukturer • Toppunkter • Algoritme 1 • Algoritme 2 • Algoritme 3. Title: introduktion_2014.key Author:

Toppunkter

Page 10: Philip Bille - WordPress.com · 2014. 2. 6. · • Algoritmer og datastrukturer • Toppunkter • Algoritme 1 • Algoritme 2 • Algoritme 3. Title: introduktion_2014.key Author:

Toppunkter

• Lad A[1..n] være en tabel.

• En indgang A[i] er et toppunkt hvis det ikke er mindre end dets naboer:

A[i-1] ≤ A[i] ≥ A[i+1]

• A[1] toppunkt hvis A[1] ≥ A[2] og A[n] er toppunkt hvis A[n-1] ≤ A[n]. (Tænk A[0] = A[n+1] = -∞)

1 3 7 15 17 11 2 3 6 8 7 5 9 5 231 2 3 4 5 6 7 8 9 10 11 12 13 14 15

Page 11: Philip Bille - WordPress.com · 2014. 2. 6. · • Algoritmer og datastrukturer • Toppunkter • Algoritme 1 • Algoritme 2 • Algoritme 3. Title: introduktion_2014.key Author:

Toppunkter

• Toppunktsproblemet: Givet en tabel A[1..n] find et tal i, således at A[i] toppunkt.

• Som input/output relation:

• Input: En tabel A[1..n].

• Output: Et tal i, 1 ≤ i ≤ n, så A[i] er et toppunkt.

1 3 7 15 17 11 2 3 6 8 7 5 9 5 231 2 3 4 5 6 7 8 9 10 11 12 13 14 15

Page 12: Philip Bille - WordPress.com · 2014. 2. 6. · • Algoritmer og datastrukturer • Toppunkter • Algoritme 1 • Algoritme 2 • Algoritme 3. Title: introduktion_2014.key Author:

Algoritme 1

• For hver indgang i A, check om den er et toppunkt. Returner det første toppunkt.

1 3 7 15 17 11 2 3 6 8 7 5 9 5 231 2 3 4 5 6 7 8 9 10 11 12 13 14 15

Page 13: Philip Bille - WordPress.com · 2014. 2. 6. · • Algoritmer og datastrukturer • Toppunkter • Algoritme 1 • Algoritme 2 • Algoritme 3. Title: introduktion_2014.key Author:

Pseudokode

Toppunkt1(A, n) if A[1] ≥ A[2] return 1 for i = 2 to n-1 if A[i-1] ≤ A[i] ≥ A[i+1] return i if A[n-1] ≤ A[n] return n

Page 14: Philip Bille - WordPress.com · 2014. 2. 6. · • Algoritmer og datastrukturer • Toppunkter • Algoritme 1 • Algoritme 2 • Algoritme 3. Title: introduktion_2014.key Author:

Teoretisk analyse

• T(n) = antallet af skridt som en algoritmen udfører på et input af størrelse n.

• Skridt = Læsning/skrivning til hukommelse (x := y, A[i], i++, ...), aritmetiske/boolske operationer (+,-,*,/,%,&&,||, &, |, ^,~), sammenligninger (<,>, ≤, ≥, =, ≠) og program-flow (if-then-else, while, for, goto, funktionskald, ..)

• T(n) kaldes tidskompleksiten eller køretiden af algoritmen.

• Interesseret (næsten altid) i værstefaldstidskompleksitet = maksimal køretid over alle input af størrelse n.

Page 15: Philip Bille - WordPress.com · 2014. 2. 6. · • Algoritmer og datastrukturer • Toppunkter • Algoritme 1 • Algoritme 2 • Algoritme 3. Title: introduktion_2014.key Author:

Køretid

Toppunkt1(A, n) if A[1] ≥ A[2] return 1 for i = 2 to n-1 if A[i-1] ≤ A[i] ≥ A[i+1] return i if A[n-1] ≤ A[n] return n

• T(n) er lineær funktion af n: T(n) = an + b, for passende konstanter a,b>0

• I asymptotisk notation:

• T(n) = Θ(n)

c1

(n-2)·c2c3

T(n) = c1 + (n-2)·c2 + c3

Page 16: Philip Bille - WordPress.com · 2014. 2. 6. · • Algoritmer og datastrukturer • Toppunkter • Algoritme 1 • Algoritme 2 • Algoritme 3. Title: introduktion_2014.key Author:

Eksperimentiel analyse

• Hvordan opfører algoritmen sig i praksis?

• Passer den teoretisk analyse med den eksperimentielle analyse?

Page 17: Philip Bille - WordPress.com · 2014. 2. 6. · • Algoritmer og datastrukturer • Toppunkter • Algoritme 1 • Algoritme 2 • Algoritme 3. Title: introduktion_2014.key Author:

sek.

for 1

000

kørs

ler

0

17,5

35

52,5

70

tabel str.100k 300k 500k 700k 900k 1.1m 1.3m 1.5m 1.7m 1.9m

Alg 1

Page 18: Philip Bille - WordPress.com · 2014. 2. 6. · • Algoritmer og datastrukturer • Toppunkter • Algoritme 1 • Algoritme 2 • Algoritme 3. Title: introduktion_2014.key Author:

Algoritme 1

• Givet en tabel A[1..n] løser Algoritme 1 toppunktsproblemet i Θ(n) tid.

• Stemmer overens med praksis.

• Kan vi gøre det bedre?

Page 19: Philip Bille - WordPress.com · 2014. 2. 6. · • Algoritmer og datastrukturer • Toppunkter • Algoritme 1 • Algoritme 2 • Algoritme 3. Title: introduktion_2014.key Author:

Algoritme 2

• Algoritme 2 = FindMax

• Det maximale element er også et toppunkt.

1 3 7 15 17 11 2 3 6 8 7 5 9 5 231 2 3 4 5 6 7 8 9 10 11 12 13 14 15

Page 20: Philip Bille - WordPress.com · 2014. 2. 6. · • Algoritmer og datastrukturer • Toppunkter • Algoritme 1 • Algoritme 2 • Algoritme 3. Title: introduktion_2014.key Author:

Algoritme 2

findMax(A, n) max = 1 for i = 1 to n if A[i] > A[max] max = i return max

• T(n) = c4 + n·c5 + c6 = Θ(n)

• Samme asymptotisk køretid som algoritme 1.

• Bedre konstanter?

c4

n·c5c6

Page 21: Philip Bille - WordPress.com · 2014. 2. 6. · • Algoritmer og datastrukturer • Toppunkter • Algoritme 1 • Algoritme 2 • Algoritme 3. Title: introduktion_2014.key Author:

sek.

for 1

000

kørs

ler

0

17,5

35

52,5

70

tabel str.100k 300k 500k 700k 900k 1.1m 1.3m 1.5m 1.7m 1.9m

Alg 1 Alg 2

Page 22: Philip Bille - WordPress.com · 2014. 2. 6. · • Algoritmer og datastrukturer • Toppunkter • Algoritme 1 • Algoritme 2 • Algoritme 3. Title: introduktion_2014.key Author:

Algoritme 2

• Givet en tabel A[1..n] løser Algoritme 2 toppunktsproblemet i Θ(n) tid.

• Er hurtigere i praksis en algoritme 1.

• Kan vi gøre det betydeligt bedre?

Page 23: Philip Bille - WordPress.com · 2014. 2. 6. · • Algoritmer og datastrukturer • Toppunkter • Algoritme 1 • Algoritme 2 • Algoritme 3. Title: introduktion_2014.key Author:

• Snedig ide: Kig på en vilkårligt indgang A[i] og dens naboer A[i-1] og A[i+1].

• A[i] er et toppunkt => returner i.

• Ellers: A er lokalt voksende i mindst en retning.

!

!

!

• => Der findes et toppunkt i den voksende retning.

• => Vi kan smide resten af tabellen væk og stå tilbage med enten A[1..i-1] eller A[i+1..n].

1 3 7 15 17 11 2 3 6 8 7 5 9 5 231 2 3 4 5 6 7 8 9 10 11 12 13 14 15

Page 24: Philip Bille - WordPress.com · 2014. 2. 6. · • Algoritmer og datastrukturer • Toppunkter • Algoritme 1 • Algoritme 2 • Algoritme 3. Title: introduktion_2014.key Author:

Algoritme 3

• Kig på miderste indgang A[m] og dens naboer A[m-1] og A[m+1].

• A[m] er et toppunkt => returner m.

• Ellers: A er lokalt voksende i mindst en retning.

• Find toppunkt i en lokalt voksende retning rekursivt.

1 3 7 15 17 11 2 3 6 8 7 5 9 5 231 2 3 4 5 6 7 8 9 10 11 12 13 14 15

Page 25: Philip Bille - WordPress.com · 2014. 2. 6. · • Algoritmer og datastrukturer • Toppunkter • Algoritme 1 • Algoritme 2 • Algoritme 3. Title: introduktion_2014.key Author:

Toppunkt3(A,i,j) m = floor((i+j)/2) if A[m-1] ≤ A[m] ≥ A[m+1] return m elseif A[m-1] > A[m] return Toppunkt3(A,i,m-1) elseif A[m] < A[m+1] return Toppunkt3(A,m+1,j)

• Kig på miderste indgang A[m] og dens naboer A[m-1] og A[m+1].

• A[m] er et toppunkt => returner m.

• Ellers: A er lokalt voksende i mindst en retning.

• Find toppunkt i en lokalt voksende retning rekursivt.

Page 26: Philip Bille - WordPress.com · 2014. 2. 6. · • Algoritmer og datastrukturer • Toppunkter • Algoritme 1 • Algoritme 2 • Algoritme 3. Title: introduktion_2014.key Author:

Køretid

• Et rekursivt kald tager konstant tid.

• Hvormange rekursive kald laver vi?

• Et rekursivt kald halverer størrelsen af tabellen vi kigger på. Vi stopper når tabellen har størrelse 1.

• 1. rekursive kald: n/2

• 2. rekursive kald: n/4

• ….

• k’te. rekursive kald: n/2k

• ….

• => Efter log2 n rekursive kald har tabellen størrelse ≤ 1.

• => Køretiden er Θ(log n)

Page 27: Philip Bille - WordPress.com · 2014. 2. 6. · • Algoritmer og datastrukturer • Toppunkter • Algoritme 1 • Algoritme 2 • Algoritme 3. Title: introduktion_2014.key Author:

sek.

for 1

000

kørs

ler

0

17,5

35

52,5

70

tabel str.100k 300k 500k 700k 900k 1.1m 1.3m 1.5m 1.7m 1.9m

Alg 1 Alg 2 Alg 3

Page 28: Philip Bille - WordPress.com · 2014. 2. 6. · • Algoritmer og datastrukturer • Toppunkter • Algoritme 1 • Algoritme 2 • Algoritme 3. Title: introduktion_2014.key Author:

Algoritme 3

• Givet en tabel A[1..n] løser Algoritme 3 toppunktsproblemet i Θ(log n) tid.

• Meget, meget hurtigere end algoritme 1 og 2.

Page 29: Philip Bille - WordPress.com · 2014. 2. 6. · • Algoritmer og datastrukturer • Toppunkter • Algoritme 1 • Algoritme 2 • Algoritme 3. Title: introduktion_2014.key Author:

Opsummering

• Algoritmer og datastrukturer

• Toppunkter

• Algoritme 1

• Algoritme 2

• Algoritme 3