De presentatie wordt gedownload. Even geduld aub

De presentatie wordt gedownload. Even geduld aub

Datastructuren Analyse van Algoritmen en O

Verwante presentaties


Presentatie over: "Datastructuren Analyse van Algoritmen en O"— Transcript van de presentatie:

1 Datastructuren Analyse van Algoritmen en O
College 6

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

3 1 Sommaties e.d. Datastructuren

4 Een rekenkundige reeks is de sommatie van zo’n rij.
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. 𝑖=1 𝑛 3𝑖+1 𝑗=1 𝑘 𝑗 2𝑛+1 +5 Datastructuren

5 De uitkomst van een rekenkundige reeks
Onthoud: (eerste plus laatste)*aantal / 2 𝑗=𝑞 𝑟 𝑎𝑗+𝑏 = 𝑎 𝑞+𝑟 +2𝑏 ∗(𝑟−𝑞+1) 2 Datastructuren

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

7 𝑖=1 𝑛 𝑗=1 𝑖 𝑘=0 𝑛 1 = 𝑖=1 𝑛 𝑖∗𝑛= 𝑛∗(𝑛+1) 2 * n = 𝑂(𝑛 3 )
Voorbeelden (2) 𝑖=1 𝑛 𝑗=1 𝑖 1 = 𝑖=1 𝑛 𝑖= 𝑛∗(𝑛+1) 2 for i=1 to n do for j=1 to i do O(1) werk for k = 0 to n do 𝑖=1 𝑛 𝑗=1 𝑖 𝑘=0 𝑛 1 = 𝑖=1 𝑛 𝑖∗𝑛= 𝑛∗(𝑛+1) 2 * n = 𝑂(𝑛 3 ) Datastructuren

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 𝑖=2 𝑛 2∗ 3 𝑖 Datastructuren

9 Over de meetkundige reeks
Eerste term A Groeifactor r A Ar Ar2 Ar3 Ar4 ... Wat komt hier uit? 𝑖=0 𝑛 𝐴 𝑟 𝑖 Datastructuren

10 Uitkomst meetkundige reeks
Als de groeifactor een positief getal behalve 1 is: (“volgende term” – eerste) / (groeifactor -1) Volgende term: de eerste term die zou komen als we de rij eentje langer zouden maken, dus 𝐴 𝑟 𝑛+1 bij deze som: En volgende term is 16 bij 𝑖= 𝑖 𝑖=0 𝑛 𝐴 𝑟 𝑖 Datastructuren

11 Voorbeelden 𝑖=0 𝑛 𝐴 𝑟 𝑖 = 𝐴 𝑟 𝑛+1 −𝐴 𝑟−1
𝑖=0 𝑛 𝐴 𝑟 𝑖 = 𝐴 𝑟 𝑛+1 −𝐴 𝑟−1 𝑗= 𝑗 = − −1 =1024−8=1016 𝑖=1 𝑛 𝑖 = 1/3 𝑛+1 −1/ −1 = … Datastructuren

12 Bewijs uitkomst meetkundige reeks
S = A + Ar + Ar Ar n-1 + Arn rS = Ar + Ar Ar n-1 + Arn +Arn+1 “Schuin opschrijven en met r vermenigvuldigen Nu aftrekken (bijna alles valt weg): S – rS = A - Arn+1 (1-r)S = A - Arn+1 S = 𝐴 −𝐴 𝑟 𝑛+1 1−𝑟 = 𝐴 𝑟 𝑛+1 −𝐴 𝑟−1 Datastructuren

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 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 𝑖=1 𝑛 3 𝑖 = 3 𝑛+1 −3 2 =𝑂( 3 𝑛 ) Datastructuren

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

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

17 Oneindige geometrische reeks
𝑖=0 ∞ 𝐴 𝑟 𝑖 = … ... = lim 𝑛→∞ 𝐴 𝑟 𝑛+1 −𝐴 𝑟−1 = lim 𝑚→∞ 𝐴 𝑟 𝑚 −𝐴 𝑟−1 = … Als r>1 dan wordt dit oneindig Als r<1 dan lim 𝑚→∞ 𝐴 𝑟 𝑚 =0 , dus: 𝑖=0 ∞ 𝐴 𝑟 𝑖 = lim 𝑚→∞ 𝐴 𝑟 𝑚 −𝐴 𝑟−1 = −𝐴 𝑟−1 = 𝐴 1−𝑟 Convergentie Datastructuren

18 Ook onthouden (geen bewijs hier)
𝑖=0 ∞ 𝑖 𝑟 𝑖 = 𝑟 𝑟−1 2 Als 𝑟<1 Kan je bewijzen door afgeleiden te nemen in de geometrische reeksen Datastructuren

19 Komen we straks ook nog tegen bij sommige datastructuren
Harmonische reeks Komen we straks ook nog tegen bij sommige datastructuren 𝑖=1 𝑛 1 𝑖 … is niet op te lossen. Hebben ze daarom een naampje gegeven: 𝐻 𝑛 = 𝑖=1 𝑛 1 𝑖 ... Is ongeveer ln(n) Datastructuren

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 Recurrente Betrekkingen
2 Recurrente Betrekkingen Datastructuren

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)= Q(1) Als n>1, dan T(n) = 2T(n/2)+ Q(n) Hoe los je zo’n recurrente betrekking op?

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)= Q(1) Als n>1, dan T(n) = 2T(n/2)+ Q(n) Schrijf dan eerst eens: T(1)= a Als n>1, dan T(n) = 2T(n/2)+ bn Gok dan dat T(n) = cn lg n voor geschikte c Nu …

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

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 Selection sort: de recurrente betrekking
T(1)=Q(1) T(2)=Q(1) Als n>2 dan T(n) = T(n-1) + Q(n) Of, equivalent, maar iets simpeler: Als n>1 dan

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 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 Voorbeelden Merge-sort: Selection sort: Binary search: T(1)= Q(1)
Als n>1, dan T(n) = 2T(n/2)+ Q(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 3 De MASTERTHEOREM Datastructuren

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: Als f(n) = O(nlogb a- e) (n tot de macht logb a-e), voor constante e>0, dan T(n) = Q(nlogb a) Als f(n) = Q(nlogb a), dan T(n) = Q(nlogb a * lg n) Als f(n) = W(nlogb a+ e) (n tot de macht logb a+e), voor constante e>0, en a f(n/b) £ c f(n) voor een constante c<1 dan T(n) = Q(f(n))

32 Toepassen van de master theorem voorbeeld type 1
Als f(n) = O(nlogb a- e) voor constante e>0, dan T(n) = Q(nlogb a) Als f(n) = Q(nlogb a), dan T(n) = Q(nlogb a* lg n) Als f(n) = W(nlogb a+ e) voor constante e>0, en a f(n/b) £ c f(n) voor een constante c<1 dan T(n) = Q(f(n)) Vb: T(n)= 9T(n/3)+n a=9 b=3 logb a = log3 9 = 2 n = O(n2-1) Geval 1 is geldig: T(n) = Q(n2)

33 Toepassen van de master theorem voorbeeld type 2
Als f(n) = O(nlogb a- e) voor constante e>0, dan T(n) = Q(nlogb a) Als f(n) = Q(nlogb a), dan T(n) = Q(nlogb a* lg n) Als f(n) = W(nlogb a+ e) voor constante e>0, en a f(n/b) £ c f(n) voor een constante c<1 dan T(n) = Q(f(n)) Vb: T(n)=T(2n/3)+1 a=1 b=3/2 logb a = log3/2 1 = 0 1 = Q(n0) = Q(1) Geval 2 is geldig: T(n) = Q(n0 log n) = Q(log n)

34 Toepassen van de master theorem voorbeeld type 2 (nog eentje)
Als f(n) = O(nlogb a- e) voor constante e>0, dan T(n) = Q(nlogb a) Als f(n) = Q(nlogb a), dan T(n) = Q(nlogb a* lg n) Als f(n) = W(nlogb a+ e) voor constante e>0, en a f(n/b) £ c f(n) voor een constante c<1 dan T(n) = Q(f(n)) Vb: T(n)= 4 T(n/2)+ Q(n2) a=4 b=2 logb a = log2 4 = 2 Geval 2 is geldig: T(n) = Q(n2 log n)

35 Toepassen van de master theorem voorbeeld 3
Als f(n) = O(nlogb a- e) voor constante e>0, dan T(n) = Q(nlogb a) Als f(n) = Q(nlogb a), dan T(n) = Q(nlogb a* lg n) Als f(n) = W(nlogb a+ e) voor constante e>0, en a f(n/b) £ c f(n) voor een constante c<1 dan T(n) = Q(f(n)) Vb3: T(n)=3T(n/4)+n log n a=3 b=4 logb a = log4 3 < 1 Neem e = 1- log4 3 n log n = W(n) 3 (n/4) log (n/4) £ 3/4 n log n Dus neem c=3/4 Geval 3 is geldig: T(n) = Q(n log n)

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 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 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 log33= 1 O(1) = Q(n1-1) dus mastertheorem geeft: T(n) = Q(n)

39 Vaak handig en makkelijk te gebruiken als je ‘m eenmaal kent
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 W grens

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!

41 Wat technieken voor analyse van algoritmen
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 "Datastructuren Analyse van Algoritmen en O"

Verwante presentaties


Ads door Google