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  Nog twee voorbeelden van analyse van loopstructuren  Analyse van algoritmen met recurrente betrekkingen  Oplossen van recurrente betrekkingen  Master-theorem

3 3 Loop-structuur-analyse soms met sommaties Voorbeeld 1:  for i=1 to n do  for j=1 to i do O(1) werk Voorbeeld 2:  i=n  while (i>1) do  i=i/2  for j=1 to i do O(1) werk Voorbeeld 3:  i=n  while (i>1) do  i=i/2  O(1) werk

4 4 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?

5 5 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 …

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

7 7 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)

8 8 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)

9 9 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)

10 10 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

11 11 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)

12 12 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))

13 13 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 )

14 14 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)

15 15 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)

16 16 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)

17 17 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) = …?

18 18 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

19 19 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)

20 20 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

21 21 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!

22 22 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