Datastructuren analyse van algoritmen en o
This presentation is the property of its rightful owner.
Sponsored Links
1 / 43

Datastructuren Analyse van Algoritmen en O PowerPoint PPT Presentation


  • 76 Views
  • Uploaded on
  • Presentation posted in: General

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 EN LOOPSTRUCTUREN. Rekenkundige reeks.

Download Presentation

Datastructuren Analyse van Algoritmen en O

An Image/Link below is provided (as is) to download presentation

Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author.While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server.


- - - - - - - - - - - - - - - - - - - - - - - - - - E N D - - - - - - - - - - - - - - - - - - - - - - - - - -

Presentation Transcript


Datastructuren analyse van algoritmen en o

DatastructurenAnalyse van Algoritmen en O

College 6


Dit onderwerp

Dit onderwerp

  • Sommaties en analyse van algoritmen

  • Analyse van algoritmen met recurrentebetrekkingen

  • Oplossen van recurrentebetrekkingen

  • Master-theorem


Sommaties en loopstructuren

1

Sommaties EN LOOPSTRUCTUREN

Datastructuren


Rekenkundige reeks

Rekenkundige reeks

  • 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.

Datastructuren


De uitkomst van een rekenkundige reeks

De uitkomst van een rekenkundige reeks

  • Onthoud: (eerste plus laatste)*aantal / 2

Datastructuren


Voorbeelden

Voorbeelden

  • for i=1 to n do

    • for j=1 toido

      • O(1) werk

  • for i=1 to ndo

    • for j=1 toido

      • for k = 1 to n do

        • O(1) werk

Datastructuren


Voorbeelden 2

Voorbeelden (2)

=

  • for i=1 to n do

    • for j=1 toido

      • O(1) werk

  • for i=1 to n do

    • for j=1 toido

      • for k = 0 to n do

        • O(1) werk

= * n =

Datastructuren


Meetkundige rijen en reeksen

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

Datastructuren


Over de meetkundige reeks

Over de meetkundige reeks

  • Eerste term A

  • Groeifactor r

  • A Ar Ar2 Ar3 Ar4 ...

Datastructuren


Uitkomst meetkundige reeks

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 bij deze som:

    • En volgende term is 16 bij

Datastructuren


Voorbeelden1

Voorbeelden

  • =

Datastructuren


Analyse met meetkundige reeks

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

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

Datastructuren


Nog eentje

Nog eentje

Voorbeeld:

  • i=n

  • while (i>1) do

    • i=i/2

    • for j=1 to i do

      • O(1) werk

Datastructuren


Nog eentje 2

Nog eentje (2)

Voorbeeld:

  • i=n

  • while (i>1) do

    • i=i/2

    • for j=1 to i do

      • O(1) werk

  • O(n) werk

Datastructuren


En deze

En deze?

Voorbeeld:

  • i=n

  • while (i>1) do

    • i=i/2

    • O(1) werk


En deze1

En deze?

Voorbeeld:

  • i=n

  • while (i>1) do

    • i=i/2

    • O(1) werk

  • O(log n) iteraties van O(1) werk: O(log n) tijd


Oneindige geometrische reeks

Oneindige geometrische reeks

  • ...

  • Als r>1 dan wordt dit oneindig

  • Als r<1 dan , dus:

Convergentie

Datastructuren


Resultaat oneindige meetkundige reeks

Resultaat oneindige meetkundige reeks

Als

Datastructuren


Harmonische reeks

Harmonische reeks

  • Komen we straks ook nog tegen bij sommige datastructuren

  • … is niet op telossen. Hebbenzedaaromeennaampjegegeven:

  • ... Is ongeveer ln(n)

Datastructuren


Analyse met harmonische reeks

Analyse met Harmonische reeks

  • for i = 1 to n do

    • j = 1;

    • whilej < n do

      • O(1) work

      • j = j+ i

Datastructuren


Analyse met harmonische reeks 2

Analyse met Harmonische reeks(2)

  • for i = 1 to n do

    • j = 1;

    • whilej < 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

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?

Analyse van algoritmen met recurrente betrekkingen


Methode 1 substitutie

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

Recursief sorteeralgoritme

  • We kijken even naar een simpel recursief sorteeralgoritme

  • Hoe analyseren we zijn looptijd?


Selection sort

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

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:

  • T(1)=Q(1)

  • Als n>1 dan

    • T(n) = T(n-1) + Q(n)


Twee voorbeelden voor substitutie

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

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


Voorbeelden2

Voorbeelden

  • Merge-sort:

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


De mastertheorem

3

De MASTERTHEOREM

Datastructuren


De master theorem

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, ena f(n/b) £ c f(n) voor een constante c<1 danT(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 theoremvoorbeeld type 1


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, ena f(n/b) £ c f(n) voor een constante c<1 danT(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 theoremvoorbeeld type 2


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, ena f(n/b) £ c f(n) voor een constante c<1 danT(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 theoremvoorbeeld type 2 (nog eentje)


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, ena f(n/b) £ c f(n) voor een constante c<1 danT(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)

Toepassen van de master theoremvoorbeeld 3


Toepassing op algoritme

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 algoritme1

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 algoritme2

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)


Over de mastertheorem

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

Een exponentieel algoritme

  • Duur(n)

    • If n=1 dan O(1) werk

    • Ga in recursie met Duur(n-1)

    • Ga in recursie met Duur(n-1)

    • Doe O(n) werk

Sommige problemenkosten veel tijd om opte lossen…

Maar liever niet!


Conclusies

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


  • Login