Master-theorem

Uit testwiki
Naar navigatie springen Naar zoeken springen

Het master-theorem biedt een methode (master-method) die het bepalen van de looptijd van recurrente betrekkingen in de algoritmiek gemakkelijk maakt. Het master-theorem kan echter niet de complexiteit van alle recurrente betrekkingen bepalen.

Theorie

Als voor het berekenen van een probleem van grootte n het probleem wordt opgedeeld in a deelproblemen ter grootte van n/b, waarin a1 en b>1, heeft de looptijd de vorm

T(n)=aT(nb)+f(n).

Daarin is f(n) de benodigde tijd voor de aanroep van de formule.

Men onderscheidt drie gevallen in het master-theorem. Welk geval van toepassing is, is afhankelijk van de verhouding tussen f(n) en nlogba.

  • Geval 1: als nlogba>f(n), dan T(n)=Θ(nlogba);
  • Geval 2: als nlogba=f(n), dan T(n)=Θ(nlogbalogn);
  • Geval 3: als nlogba<f(n), dan T(n)=Θ(f(n)).

Geval 1

In dit geval is nlogba>f(n), dus dient f(n) polynomiaal kleiner te zijn dan nlogba. Formeel gezegd: f(n)=O(nlogbaϵ) voor een ϵ>0. Dit kan men ook nog uitdrukken als

limnnlogbaf(n)=limnnϵ

Voor een zekere ϵ>0.

Als daaraan wordt voldaan, dan volgt dat T(n)=Θ(nlogba)

Voorbeeld

Zij T(n)=9T(n3)+n. Dan is a=9, b=3, f(n)=n en nlogba=n2. Zoals duidelijk te zien is, is nlogba groter dan f(n) . In de formele voorwaarde valt dit goed te zien door ϵ=1 te nemen.

Er geldt dus T(n)=Θ(nlogba)=Θ(n2). De bovenstaande functie is dus in Θ(n2).

Geval 2

In dit geval is nlogba=f(n) en dient f(n) gelijk te zijn aan nlogba. Of formeel gezegd, f(n)=Θ(nlogba).

Als daaraan wordt voldaan, dan volgt daaruit dat T(n)=Θ(nlogbalogn).

Voorbeeld

Zij T(n)=2T(n2)+n. Dan is a=2, b=2, f(n)=n en nlogba=n. Zoals te zien is, is f(n) gelijk aan nlogba. Formeel: :f(n)=Θ(nlogba)=Θ(n).

Er geldt dus

T(n)=Θ(nlogbalogn)=Θ(nlogn).

De bovenstaande functie is dus in Θ(nlogn).

Geval 3

In dit geval is nlogba<f(n) en dient f(n) polynomiaal groter te zijn dan nlogba. Formeel gezegd:

f(n)=Ω(nlogba+ϵ) voor een ϵ>0.

De uitdrukking met limieten is dan

limnf(n)nlogba=limnnϵ

Voor geval 3 geldt daarnaast een tweede voorwaarde, de regulariteitsvoorwaarde. Er dient te gelden dat af(nb)cf(n) voor een 0<c<1. Als dit niet geldt, kan de looptijd niet met het master-theorem bepaald worden.

Als er aan deze voorwaarden wordt voldaan, volgt daaruit dat T(n)=Θ(f(n)).

Voorbeeld

Zij T(n)=3T(n4)+nlogn. Dan is a=3, b=4, f(n)=nlogn en nlogban0,79. Hier is dus f(n) groter dan nlogba.

Nu moet er nog gecontroleerd worden of de regulariteitsvoorwaarde geldt:

af(nb)cf(n) (voor c<1), het substitueren van de bekende variabelen levert op:
3(n4)log(n4)cnlogn (voor c<1). Als er voor c bijvoorbeeld het getal 34 wordt genomen, dan is er dus aan de regulariteitsvoorwaarde voldaan.

Omdat er aan beide voorwaarden is voldaan, geldt er dus T(n)=Θ(f(n))=Θ(nlogn). De bovenstaande functie is dus in Θ(nlogn).

Beperkingen

Er zijn recurrente betrekkingen van de vorm T(n)=aT(nb)+f(n) waarvan de looptijd niet met deze methode bepaald kan worden, omdat niet aan de regulariteitsvoorwaarde wordt voldaan of omdat f(n) niet polynomiaal groter of kleiner is dan nlogba.

Voorbeeld

Beschouw de formule T(n)=2T(n2)+nlogn. Hier is a=2, b=2, f(n)=nlogn en nlogba=n. Het is duidelijk dat f(n)=Ω(n), dus zitten we in het derde geval. Echter,

limnnlognn=limnlogn

Er bestaat geen enkele ϵ>0 zodat logn=nϵ, en dus kan de master theorem niet worden toegepast.

Sjabloon:Appendix