1 Datastructuren Analyse van Algoritmen en O College 6.
date post
05-Aug-2015Category
Documents
view
213download
0
Embed Size (px)
Transcript of 1 Datastructuren Analyse van Algoritmen en O College 6.
- Dia 1
- 1 Datastructuren Analyse van Algoritmen en O College 6
- Dia 2
- 2 Dit onderwerp Nog twee voorbeelden van analyse van loopstructuren Analyse van algoritmen met recurrente betrekkingen Oplossen van recurrente betrekkingen Master-theorem
- Dia 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
- Dia 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 zon recurrente betrekking op?
- Dia 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
- Dia 6
- 6 Recursief sorteeralgoritme We kijken even naar een simpel recursief sorteeralgoritme Hoe analyseren we zijn looptijd?
- Dia 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)
- Dia 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)
- Dia 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)
- Dia 10
- 10 Methode 2: De recursie-boom Analyseer de recursie-boom Hoeveel niveaus heeft de boom? Hoeveel werk doen we per level? Sommeer het werk over de levels
- Dia 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)
- Dia 12
- 12 De master theorem Stel a1 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
- 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
- Dia 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
- Dia 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
- Dia 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
- Dia 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) = ?
- Dia 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
- Dia 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)
- Dia 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
- Dia 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!
- Dia 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
Recommended