Datastruktur & Algoritmik1 Sidste gang For j:=2 to len(A) do key:=A[j] (* indsæt key *) i:=j-1 while i>0 and A[i]>key do A[i+1]:=A[i] i-- A[i+1]:=key For j:=2 to len(A) do key:=A[j] (* indsæt key *) i:=j-1 while i>0 and A[i]>key do A[i+1]:=A[i] i-- A[i+1]:=key Merge-Sort(A,p,r) (* Sortering A[p],A[p+1],..,A[r] *) if p<r then q:= (p+r)/2 Merge-Sort(A,p,q) Merge-Sort(A,q+1,r) Merge(A,p,q,r) Merge-Sort(A,p,r) (* Sortering A[p],A[p+1],..,A[r] *) if p<r then q:= (p+r)/2 Merge-Sort(A,p,q) Merge-Sort(A,q+1,r) Merge(A,p,q,r) Insertion SortMerge Sort Tidskompleksitet
Datastruktur & Algoritmik2 Tidskompleksitet Afhænger af Input til program Kvalitet af kode genereret af kompiler Instruktionshastighed af maskine Kompleksistet af underliggende algoritme. T(n) Køretid (værste) for input af størrelse n. Antal instruktioner på idealiseret maskine. Asymptotisk
Datastruktur & Algoritmik3 Algoritmiske forbedringer afgørende også i fremtiden T(n) n n 5n 2 n 3 /2 2n2n Eksponentiel polynomiel T(n)10 3 s10 4 sForøgFak 100n n n 3 / n
Datastruktur & Algoritmik4 I dag!! Præcise notationer til at angive asymptotisk køretid/tidskompleksitet af algoritme Metoder til at bestemme en algoritmes (asymptotiske) køretid –håntering af summer –induktion –Rekurrens/Differens ligninger Næste gang
Datastruktur & Algoritmik5 -Notation en mængde af funktioner Vi skriver hvis DEFINITION Asymptotisk tæt grænse
Datastruktur & Algoritmik6 -Notation en mængde af funktioner Vi skriver hvis DEFINITION Asymptotisk øvre grænse
Datastruktur & Algoritmik7 -Notation en mængde af funktioner Vi skriver hvis DEFINITION Asymptotisk nedre grænse
Datastruktur & Algoritmik8 Exponential & Logaritmefunktioner vs polynomier Exponentialfunktion Logaritmefunktion Polynomie ex F(n)=2 n ex log 2 (n) to-tals-logaritmen THM Mere CLR afsnit 2.2.
Datastruktur & Algoritmik9 Egenskaber
Datastruktur & Algoritmik10 SUMMER Køretid af program Antal Gange 1. sum := 0;1 2. for i:=1 to nn+1 3. do for j:=1 to i (n+1) 4. do sum:=sum n Antal Gange 1. sum := 0;1 2. for i:=1 to nn+1 3. do for j:=1 to i (n+1) 4. do sum:=sum n NOTATION
Datastruktur & Algoritmik11 Første Induktionsprincip Lad P(n) være udsagn om det naturlige tal n. Hvis 1 (Basis) P(1) sand 2 (Trin) Hvis P(k) er sand da er P(k+1) også sand da er P(n) sand for alle naturlige tal n. Lad P(n) være udsagn om det naturlige tal n. Hvis 1 (Basis) P(1) sand 2 (Trin) Hvis P(k) er sand da er P(k+1) også sand da er P(n) sand for alle naturlige tal n. IH Se Jensen&Skyum eller Rosen
Datastruktur & Algoritmik12 Rekursive funktioner f(1) = 1 f(n+1) = (n+1) + f(n) f(1) = 1 f(n+1) = (n+1) + f(n) g(1) = 1 g(n+1)= (n+1)*g(n) g(1) = 1 g(n+1)= (n+1)*g(n) h(1)= 0 h(n+1)= (n+1)*h(n) h(1)= 0 h(n+1)= (n+1)*h(n) k(1)= 1 k(n+1)= 1 + k(n) k(1)= 1 k(n+1)= 1 + k(n) j(1)= 1 j(n+1)= 1 - j(n) j(1)= 1 j(n+1)= 1 - j(n) p(1) = 1 p(n+1) = 2*p(n)+1 p(1) = 1 p(n+1) = 2*p(n)+1
Datastruktur & Algoritmik13 Tårnene i Hanoi ABC Skiverne skal flyttes fra A til B under følgende regler - kun 1 skive flyttes ad gangen - ingen skive må anbringes på en mindre skive Hvor mange træk/ hvor lang tid
Datastruktur & Algoritmik14 Tårnene i Hanoi Rekursiv løsning ABC Hvis n > 1: - flyt (n-1) øverste skiver fra A til C - flyt største (nederste) skive fra A til B - flyt (n-1) skiver fra C til B Hvis n=1: - flyt (største) skive fra A til B
Datastruktur & Algoritmik15 En række summer Andre rækker i CLR
Datastruktur & Algoritmik16 Lette grænser for summer