Datastructuren Analyse van Algoritmen en O

Slides:



Advertisements
Verwante presentaties
De gemiddelde leerling
Advertisements

Differentie vergelijkingen differentie vergelijkingen
Downloaden: Ad-aware. Downloaden bestaat uit 3 delen: •1. Zoeken naar de plek waar je het bestand kan vinden op het internet •2. Het nemen van een kopie.
Datastructuren Quicksort
Stijgen en dalen constante stijging toenemende stijging
Ronde (Sport & Spel) Quiz Night !
HOOFDSTUK 12 Media.
prNBN D addendum 1 Deel 2: PLT
1 Hashtabellen Datastructuren. 2 Dit onderwerp Direct-access-tabellen Hashtabellen –Oplossen van botsingen met “ketens” (chaining) –Analyse –Oplossen.
Diagnosticeer uw schouder Dit is een interactieve gids om u te helpen vinden relevante patiënten informatie over uw schouderprobleem. Het is bedoeld als.
Hogere Wiskunde Complexe getallen college week 6
Datastructuren Analyse van Algoritmen en O
Excursie Röntgenafdeling Vie Curi Venlo 15 september 2009 ZijActief Koningslust ZijActief Koningslust Excursie Rontgenafdeling Vie Curie Venlo.
© GfK 2012 | Title of presentation | DD. Month
WISKUNDIGE FORMULES.

vwo C Samenvatting Hoofdstuk 9
MEDIALANDSCHAP We onderscheiden: Visuele media Auditieve media
1 Datastructuren Sorteren: alleen of niet alleen vergelijkingen College 5.
Fibonacci & Friends Met dank aan Gerard Tel.
1 Datastructuren Heapsort College 4. 2 Vandaag  Kort: ADT vs Datastructuur  Heaps en Heapsort  Tijd over: ondergrenzen voor sorteren; nog sneller sorteren.
1 Datastructuren Sorteren: alleen of niet alleen vergelijkingen (II) College 6.
Visibility-based Probabilistic Roadmaps for Motion Planning Tim Schlechter 13 februari 2003.
vwo A Samenvatting Hoofdstuk 9
Lineaire functies Lineaire functie
Regelmaat in getallen … … …
Regelmaat in getallen (1).
Parallelle Algoritmen String matching. 1 Beter algoritme patroonanalyse Bottleneck in eenvoudig algoritme: WITNESS(j) (j = kandidaat in eerste i-blok)
Neurale Netwerken Kunstmatige Intelligentie Rijksuniversiteit Groningen April 2005.
In dit vakje zie je hoeveel je moet betalen. Uit de volgende drie vakjes kan je dan kiezen. Er is er telkens maar eentje juist. Ken je het juiste antwoord,
1 Datastructuren Quicksort en andere sorteermethoden College 3.
1 Datastructuren Skiplists. 2 Skiplists  Vrij eenvoudige datastructuur  “Makkelijker” dan gebalanceerde bomen  Kunnen hetzelfde als gebalanceerde bomen.
1 Optuigen van datastructuren 2 Dynamische order statistics (2)
Optuigen van datastructuren
Datastructuren Sorteren: bubble, merge, quick
1 Datastructuren Heapsort (2e deel) College 5. 2 Vandaag  Heaps en Heapsort  (eind)  Nog sneller sorteren:  Ondergrenzen  Linair sorteren.
Datastructuren Sorteren, zoeken en tijdsanalyse
H6: veeltermen. 1) Veelterm:.
Werken aan Intergenerationele Samenwerking en Expertise.
De vierkantjes ! Dit is een puzzel om uw hersens eens goed te laten werken. De vraag is bij elk figuur hoeveel vierkanten u ziet.
Breuken-Vereenvoudigen
Elektriciteit 1 Basisteksten
2009 Tevredenheidsenquête Resultaten Opleidingsinstellingen.
Een inleiding. Door: M.J.Roos 8 mei 2011
PLAYBOY Kalender 2006 Dit is wat mannen boeit!.
ribwis1 Toegepaste wiskunde Lesweek 01 – Deel B
ribwis1 Toegepaste wiskunde, ribPWI Lesweek 01
ribWBK11t Toegepaste wiskunde Lesweek 02
Optuigen van datastructuren Datastructuren Onderwerp 11.
Datastructuren Sorteren, zoeken en tijdsanalyse
1 Datastructuren Een informele inleiding tot Skiplists Onderwerp 13.
Hashtabellen Datastructuren. 2 Dit onderwerp Direct-access-tabellen Hashtabellen –Oplossen van botsingen met “ketens” (chaining) –Analyse –Oplossen van.
ZijActief Koningslust 10 jaar Truusje Trap
ECHT ONGELOOFLIJK. Lees alle getallen. langzaam en rij voor rij
2 januari 2009Nieuwjaarsreceptie "Meule wal straete" 1 Nieuwjaarsreceptie 2 januari 2009 Eerste bijeenkomst van de bewoners van de “Meule wal straete”
17/08/2014 | pag. 1 Fractale en Wavelet Beeldcompressie Les 5.
17/08/2014 | pag. 1 Fractale en Wavelet Beeldcompressie Les 3.
Fractale en Wavelet Beeldcompressie
6,50 euro In dit vakje zie je hoeveel je moet betalen.
De financiële functie: Integrale bedrijfsanalyse©
Oefeningen Workshop RIE Gemeenten
De vierkantjes ! Dit is een puzzel om uw hersens eens goed te laten werken. De vraag is bij elk figuur hoeveel vierkanten u ziet.
1 Zie ook identiteit.pdf willen denkenvoelen 5 Zie ook identiteit.pdf.
ZijActief Koningslust
1 Datastructuren Quicksort College 3. 2 Vorige keren  O-notaties  Sorteren: insertion sort, bubble sort  Kosten (n 2 ) tijd in het slechtste geval.
Divide & Conquer: Verdeel en Heers vervolg Algoritmiek.
Divide & Conquer: Verdeel en Heers
Transcript van de presentatie:

Datastructuren Analyse van Algoritmen en O College 6

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

1 Sommaties e.d. Datastructuren

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

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

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

𝑖=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

Meetkundige rijen en reeksen Meetkundige rij: quotient van opeenvolgende getallen is steeds hetzelfde Voorbeeld: 2 6 18 54 162 Een meetkundige reeks is de sommatie van zo’n rij 𝑖=2 𝑛 2∗ 3 𝑖 Datastructuren

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

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 3 2 𝑖 𝑖=0 𝑛 𝐴 𝑟 𝑖 Datastructuren

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

Bewijs uitkomst meetkundige reeks S = A + Ar + Ar2 + ... + Ar n-1 + Arn rS = Ar + Ar2 + ... + 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

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

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

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

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

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

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

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

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

Recurrente Betrekkingen 2 Recurrente Betrekkingen Datastructuren

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?

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 …

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

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)

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

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)

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

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)

3 De MASTERTHEOREM Datastructuren

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

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)

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)

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)

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)

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

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

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)

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

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!

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