Presentasjon lastes. Vennligst vent

Presentasjon lastes. Vennligst vent

Datastruktur & Algoritmik1 Datastruktur & Algoritmik 3 REKURRENSER.

Liknende presentasjoner


Presentasjon om: "Datastruktur & Algoritmik1 Datastruktur & Algoritmik 3 REKURRENSER."— Utskrift av presentasjonen:

1 Datastruktur & Algoritmik1 Datastruktur & Algoritmik 3 REKURRENSER

2 Datastruktur & Algoritmik2 Merge Sort 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) Rekurrens Ligning Løsning ?

3 Datastruktur & Algoritmik3 Rekurrens Ligning Lineær, homogen af orden k Divide-and-conquer a’er og b er konstanter Entydig løsning! Vi skal se på generelle metoder til at bestemme løsning til rekurrens ligninger (og anvende dem) Vi skal se på generelle metoder til at bestemme løsning til rekurrens ligninger (og anvende dem)

4 Datastruktur & Algoritmik4 Metoder Substitution (gæt og bevis) Iteration (manipulér sum) Master metoder (slå op)

5 Datastruktur & Algoritmik5 Rekursive Algoritmer for Søgning A 368497251 LinSearch(v,A,p,r) (* Søg efter v i A[p]...A[r]*) if p<r thenb1:=(v=A[p]) b2:=LinSearch(v,A,p+1,r); return (b1 or b2) else return v=A[p] LinSearch(v,A,p,r) (* Søg efter v i A[p]...A[r]*) if p<r thenb1:=(v=A[p]) b2:=LinSearch(v,A,p+1,r); return (b1 or b2) else return v=A[p] p r DQSearch(v,A,p,r) (* Søg efter v i A[p]...A[r]*) if p<r then q:=(p+r)/2; b1:=DQSearch(v,A,p,q); b2:=DQSearch(v,A,q+1,r); return (b1 or b2) else return v=A[p] DQSearch(v,A,p,r) (* Søg efter v i A[p]...A[r]*) if p<r then q:=(p+r)/2; b1:=DQSearch(v,A,p,q); b2:=DQSearch(v,A,q+1,r); return (b1 or b2) else return v=A[p]

6 Datastruktur & Algoritmik6 Binære Søgning i sorteret liste A 1452689 pr BinSearch(v,A,p,r) (* Søg efter v i A[p]...A[r]*) if p<r thenq:=(p+r)/2 if v=A[q] then return true else if v<A[q] then return BinSearch(v,A,p,q) else return BinSearch(v,A,q+1,r) else return (v=A[p]) BinSearch(v,A,p,r) (* Søg efter v i A[p]...A[r]*) if p<r thenq:=(p+r)/2 if v=A[q] then return true else if v<A[q] then return BinSearch(v,A,p,q) else return BinSearch(v,A,q+1,r) else return (v=A[p])

7 Datastruktur & Algoritmik7 Iteration Expandér rekurrens og summér Rekurrenstræ

8 Datastruktur & Algoritmik8 Iteration Expandér rekurrens og summér

9 Datastruktur & Algoritmik9 1ste Master Metode Theorem Rosen s 328

10 Datastruktur & Algoritmik10 2. Master Metode Theorem Rosen s 330

11 Datastruktur & Algoritmik11 Heltalsoperationer De gamle skolemetoder Datastruktur a1 a2 a3...... an Mest betydende ciffer Cifre fra 0,1,2,3,4, 5,6,7,8,9 Ex.: 342871 781029 Addition 342871 + 781029 =1123900 011 0 0 1 Algoritmen a1 a2 a3.... an + b1 b2 b3.... bn = c0 c1 c2 c3.... cn 0m3m2m1 m0 mn:=0; for j:=n downto 1 do cj := (aj+bj+mj) mod 10 mj-1:=(aj+bj+mj) div 10 c0:=m0 mn:=0; for j:=n downto 1 do cj := (aj+bj+mj) mod 10 mj-1:=(aj+bj+mj) div 10 c0:=m0 O(n)

12 Datastruktur & Algoritmik12 Multiplikation Den gamle skolemetode Multiplikation med 1 ciffer 356743 * 5 = 1783715 Algoritme a1 a2 a3.... an * b = c0 c1 c2.... cn mn:=0; for j:=n downto 1 do cj := (aj*b+mj) mod 10 mj-1:=(aj*b+mj) div 10 c0:=m0 mn:=0; for j:=n downto 1 do cj := (aj*b+mj) mod 10 mj-1:=(aj*b+mj) div 10 c0:=m0 m0m1 m2 m3.. mn Generelt 147 * 321 147 294 441 47187 n mulit med 1 ciffer efterfulgt af n additioner O(n 2 )

13 Datastruktur & Algoritmik13 Hurtig Multiplication O(n 2 ) til O(n 1.6 ) 53 * 78 424 371 4234 53 * 78 24 40 21 35 4234 ab * cd b*d a*d b*c a*c xxxxxxxx ab * cd b*d a*d+b*c a*c xxxxxxxxxx a*d+b*c =(a+b)*(c+d)-a*c-b*d kendes Generelt Mult af n-cifrede tal= 3 mult af (n/2)-cifrede tal samt addition af n cifrede tal

14 Datastruktur & Algoritmik14 3. Master Metode Theorem CLR side 62


Laste ned ppt "Datastruktur & Algoritmik1 Datastruktur & Algoritmik 3 REKURRENSER."

Liknende presentasjoner


Annonser fra Google