De presentatie wordt gedownload. Even geduld aub

De presentatie wordt gedownload. Even geduld aub

1 Datastructuren Analyse van Algoritmen en O College 6.

Verwante presentaties


Presentatie over: "1 Datastructuren Analyse van Algoritmen en O College 6."— Transcript van de presentatie:

1 1 Datastructuren Analyse van Algoritmen en O College 6

2 2 Dit onderwerp  Sommaties en analyse van algoritmen  Analyse van algoritmen met recurrente betrekkingen  Oplossen van recurrente betrekkingen  Master-theorem

3 3 SOMMATIES E.D. 1 Datastructuren

4 4 Rekenkundige reeks  Een rekenkundige rij getallen is een rij getallen waarvan het verschil tussen twee opeenvolgende getallen steeds hetzelfde is  Voorbeeld: 4, 7, 10, 13, 16  Een rekenkundige reeks is de sommatie van zo’n rij. Datastructuren

5 5 De uitkomst van een rekenkundige reeks  Onthoud: (eerste plus laatste)*aantal / 2 Datastructuren

6 6 Voorbeelden  for i=1 to n do  for j=1 to i do O(1) werk  for i=1 to n do  for j=1 to i do for k = 1 to n do –O(1) werk Datastructuren

7 7 Voorbeelden (2)  for i=1 to n do  for j=1 to i do O(1) werk  for i=1 to n do  for j=1 to i do for k = 0 to n do –O(1) werk Datastructuren

8 8 Meetkundige rijen en reeksen  Meetkundige rij: quotient van opeenvolgende getallen is steeds hetzelfde  Voorbeeld:  Een meetkundige reeks is de sommatie van zo’n rij Datastructuren

9 9 Over de meetkundige reeks  Eerste term A  Groeifactor r  A Ar Ar 2 Ar 3 Ar 4... Datastructuren Wat komt hier uit?

10 10 Uitkomst meetkundige reeks Datastructuren

11 11 Voorbeelden Datastructuren

12 12 Bewijs uitkomst meetkundige reeks Datastructuren

13 13 Analyse met meetkundige reeks Voorbeeld:  k=1  for i=1 to n do  k = k*3  for j = 1 to k do O(1) werk Datastructuren

14 14 Analyse met meetkundige reeks (2) Voorbeeld:  k=1  for i=1 to n do  k = k*3  for j = 1 to k do O(1) werk Datastructuren

15 15 Nog eentje Voorbeeld:  i=n  while (i>1) do  i=i/2  for j=1 to i do O(1) werk Datastructuren

16 16 En deze? Voorbeeld:  i=n  while (i>1) do  i=i/2  O(1) werk

17 17 Oneindige geometrische reeks Datastructuren Convergentie

18 18 Ook onthouden (geen bewijs hier) Datastructuren Kan je bewijzen door afgeleiden te nemen in de geometrische reeksen

19 19 Harmonische reeks Datastructuren

20 20 Analyse met Harmonische reeks  for i = 1 to n do  j = 1;  while i*j < n do O(1) work j = j+ i Datastructuren

21 21 RECURRENTE BETREKKINGEN 2 Datastructuren

22 22 Analyse van algoritmen met recurrente betrekkingen Merge-sort  if n>1 then  Recursie op n/2 elementen  O(n) werk voor merge  Else O(1) werk  Schrijf: T(n) is de tijd van merge-sort op n elementen  T(1)=  (1)  Als n>1, dan T(n) = 2T(n/2)+  (n)  Hoe los je zo’n recurrente betrekking op?

23 23 Methode 1: Substitutie  Gok de juiste vorm van de oplossing  Bewijs met inductie dat die gok goed is  Dus, als we hebben:  T(1)= (1)  Als n>1, dan T(n) = 2T(n/2)+ (n)  Schrijf dan eerst eens:  T(1)=   Als n>1, dan T(n) = 2T(n/2)+ n  Gok dan dat T(n) = cn lg n voor geschikte c  Nu …

24 24 Recursief sorteeralgoritme  We kijken even naar een simpel recursief sorteeralgoritme  Hoe analyseren we zijn looptijd?

25 25 Selection Sort  Selection sort (A, p, q)  {Sorteert de rij A[p … q]}  {Reken eerst uit waar de grootste waarde staat}  max = A[p];  for i = p to q do if A[i] > A[max] then max = i;  {Zet de grootste waarde achteraan}  Verwissel A[q] en A[max]  {Sorteer de rest recursief}  if (q>p+1) then Selection sort (A, p, q – 1)

26 26 Selection sort: de recurrente betrekking  T(1)=(1)  T(2)=(1)  Als n>2 dan  T(n) = T(n-1) + (n)  Of, equivalent, maar iets simpeler:  T(1)=(1)  Als n>1 dan  T(n) = T(n-1) + (n)

27 27 Twee voorbeelden voor substitutie  Selection sort:  T(1)= O(1)  T(n)= T(n-1)+O(n)  Binary search:  T(1) = O(1)  T(n) = T(n/2)+O(1)

28 28 Methode 2: De recursie-boom  Analyseer de recursie-boom  Hoeveel niveau’s heeft de boom?  Hoeveel werk doen we per level?  Sommeer het werk over de levels

29 29 Voorbeelden  Merge-sort:  T(1)= (1)  Als n>1, dan T(n) = 2T(n/2)+ (n)  Selection sort:  T(1)= O(1)  T(n)= T(n-1)+O(n)  Binary search:  T(1) = O(1)  T(n) = T(n/2)+O(1)

30 30 DE MASTERTHEOREM 3 Datastructuren

31 31 De master theorem  Stel a1 en b>1 zijn constantes, f(n) is een functie en T(n) is een functie van de niet-negatieve (of positieve) integers), gedefineerd met:  T(n) = a T(n/b)+f(n)  Waarbij n/b zowel omhoog als omlaag kan afgerond worden  Voor kleine n …  Dan geldt dat: 1. Als f(n) = O(n log b a-  ) (n tot de macht log b a- ), voor constante >0, dan T(n) = (n log b a ) 2. Als f(n) = (n log b a ), dan T(n) = (n log b a lg n) 3. Als f(n) = (n log b a+  ) (n tot de macht log b a+ ), voor constante >0, en a f(n/b)  c f(n) voor een constante c<1 dan T(n) = (f(n))

32 32 Toepassen van de master theorem voorbeeld type 1 1. Als f(n) = O(n log b a-  ) voor constante >0, dan T(n) = (n log b a ) 2. Als f(n) = (n log b a ), dan T(n) = (n log b a lg n) 3. Als f(n) = (n log b a+  ) voor constante >0, en a f(n/b)  c f(n) voor een constante c<1 dan T(n) = (f(n))  Vb: T(n)= 9T(n/3)+n  a=9  b=3  log b a = log 3 9 = 2  n = O(n 2-1 )  Geval 1 is geldig:  T(n) =  (n 2 )

33 33 Toepassen van de master theorem voorbeeld type 2 1. Als f(n) = O(n log b a-  ) voor constante >0, dan T(n) = (n log b a ) 2. Als f(n) = (n log b a ), dan T(n) = (n log b a lg n) 3. Als f(n) = (n log b a+  ) voor constante >0, en a f(n/b)  c f(n) voor een constante c<1 dan T(n) = (f(n))  Vb: T(n)=T(2n/3)+1  a=1  b=3/2  log b a = log 3/2 1 = 0  1 =  (n 0 ) =  (1)  Geval 2 is geldig:  T(n) =  (n 0 log n) =  (log n)

34 34 Toepassen van de master theorem voorbeeld type 2 (nog eentje) 1. Als f(n) = O(n log b a-  ) voor constante >0, dan T(n) = (n log b a ) 2. Als f(n) = (n log b a ), dan T(n) = (n log b a lg n) 3. Als f(n) = (n log b a+  ) voor constante >0, en a f(n/b)  c f(n) voor een constante c<1 dan T(n) = (f(n))  Vb: T(n)= 4 T(n/2)+  (n 2 )  a=4  b=2  log b a = log 2 4 = 2  Geval 2 is geldig:  T(n) =  (n 2 log n)

35 35 Toepassen van de master theorem voorbeeld 3 1. Als f(n) = O(n log b a-  ) voor constante >0, dan T(n) = (n log b a ) 2. Als f(n) = (n log b a ), dan T(n) = (n log b a lg n) 3. Als f(n) = (n log b a+  ) voor constante >0, en a f(n/b)  c f(n) voor een constante c<1 dan T(n) = (f(n))  Vb3: T(n)=3T(n/4)+n log n  a=3  b=4  log b a = log 4 3 < 1  Neem  = 1- log 4 3  n log n =  (n)  3 (n/4) log (n/4)  3/4 n log n  Dus neem c=3/4  Geval 3 is geldig:  T(n) =  (n log n)

36 36 Toepassing op algoritme int Voorbeeld (int[] A, int begin, int eind)  formaat = eind – begin + 1;  derdef =  formaat / 3 ;  if (formaat < 3) then return A[begin]  else  int hulp = Voorbeeld(A, begin, begin + derdef)  hulp += Voorbeeld(A, begin+derdef+1, eind- derdef);  Return (hulp + Voorbeeld(A,eind-derdef,eind)  Schrijf n = eind – begin+1  T(n) = …?

37 37 Toepassing op algoritme int Voorbeeld (int[] A, int begin, int eind)  formaat = eind – begin + 1;  derdef =  formaat / 3 ;  if (formaat < 3) then return A[begin]  else  int hulp = Voorbeeld(A, begin, begin + derdef)  hulp += Voorbeeld(A, begin+derdef+1, eind- derdef);  Return (hulp + Voorbeeld(A,eind-derdef,eind)  Schrijf n = eind – begin+1  T(n) = 3 T(n/3) + O(1)  Afrondingen kunnen we negeren

38 38 Toepassing op algoritme int Voorbeeld (int[] A, int begin, int eind)  formaat = eind – begin + 1;  derdef =  formaat / 3 ;  if (formaat < 3) then return A[begin]  else  int hulp = Voorbeeld(A, begin, begin + derdef)  hulp += Voorbeeld(A, begin+derdef+1, eind-derdef);  Return (hulp + Voorbeeld(A,eind-derdef,eind)  Schrijf n = eind – begin+1  T(n) = 3 T(n/3) + O(1)  Afrondingen kunnen we negeren  log 3 3= 1  O(1) = (n 1-1 ) dus mastertheorem geeft:  T(n) = (n)

39 39 Over de mastertheorem  Bewijs in boek  Vaak handig en makkelijk te gebruiken als je ‘m eenmaal kent  Soms gevallen waar ‘t niet gaat  Bijvoorbeeld als T(n) = a T(n-1) + f(n)  Wat als je T(n)  aT(n/b)+f(n) hebt?  En wat als T(n)  aT(n/b)+f(n) ?  Net zo, maar je krijgt alleen een O of grens

40 40 Een exponentieel algoritme  Duur(n)  If n=1 dan O(1) werk  Ga in recursie met Duur(n-1)  Doe O(n) werk Sommige problemen kosten veel tijd om op te lossen… Maar liever niet! Sommige problemen kosten veel tijd om op te lossen… Maar liever niet!

41 41 Conclusies  Wat technieken voor analyse van algoritmen  Recurrente betrekkingen oplossen Gokken en controleren Analyse van de recursieboom Master-theorem  Inspectie loopstructuur Analyse doen van binnen naar buiten Soms: opschrijven van sommaties; ken en gebruik standaard sommaties


Download ppt "1 Datastructuren Analyse van Algoritmen en O College 6."

Verwante presentaties


Ads door Google