1 Datastructuren Analyse van Algoritmen en O College 6.

download 1 Datastructuren Analyse van Algoritmen en O College 6.

of 22

  • date post

    05-Aug-2015
  • Category

    Documents

  • view

    213
  • download

    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