Kurs:Algorithmen und Datenstrukturen/Vorlesung/Mastertheorem: Unterschied zwischen den Versionen

Aus testwiki
Zur Navigation springen Zur Suche springen
Mastertheorem: Tippfehler
 
(kein Unterschied)

Aktuelle Version vom 3. August 2018, 21:00 Uhr

Vorlage:Navigationsleiste/Algorithmen und Datenstrukturen


Mastertheorem

Auf dieser Seite wird das Master Theorem behandelt. Die Mastermethode ist ein „Kochrezept“ zur Lösung von Rekursionsgleichungen der Form:

T(n)=aT(n/b)+f(n) mit den Konstanten a1undb>1, f(n) ist eine asymptotische, positive Funktion, d.h. f(n)>0n>n0
  • a steht dabei für die Anzahl der Unterprobleme.
  • n/b ist die Größe eines Unterproblems
  • T(n/b) ist der Aufwand zum Lösen eines Unterproblems (der Größe n/b)
  • f(n) ist der Aufwand für das Zerlegen und Kombinieren in bzw. von Unterproblemen

Bei der Mastermethode handelt es sich um ein schnelles Lösungsverfahren zur Bestimmung der Laufzeitklasse einer gegebenen rekursiv definierten Funktion. Dabei gibt es 3 gängige Fälle:

  • Fall 1: Obere Abschätzung
  • Fall 2: Exakte Abschätzung
  • Fall 3: Untere Abschätzung

Lässt sich keiner dieser 3 Fälle anwenden, so muss die Komplexität anderweitig bestimmt werden und wir müssen Voraussetzungen für die Anwendung des Mastertheorems überprüfen.

Dafür vergleicht man f(n) mit nlogba. Wir verstehen n/b als n/bodern/b. Im Folgenden verwenden wir die verkürzte Notation log2nalsldn.

Fall 1

Wenn f(n)O(nlogbaϵ)für ein ϵ>0. Daraus folgt, dass f(n) polynomiell langsamer wächst als nlogba um einen Faktor nϵ. Damit haben wir die Lösung T(n)=Θ(nlogba).

Fall 2

Wenn f(n)Θ(nlogbaldkn)für ein k0. Daraus folgt, dass f(n) und nlogbaldkn vergleichbar schnell wachsen. Damit haben wir die Lösung T(n)=Θ(nlogbaldk+1n).

Fall 3

Wenn f(n)Ω(nlogba+ϵ)für ein ϵ>0 und die Regularitätsbedingung af(n/b)cf(n) für eine Konstante c(0,1) und genügend große n erfüllt. Daraus folgt, dass f(n) polynomiell schneller wächst als nlogba um einen Faktor nϵ und f(n) erfüllt die sogenannte Regularitätsbedingung. Damit haben wir die Lösung T(n)Θ(f(n)).

Bedeutung

In jedem Fall vergleichen wir f(n) mit nlobba. Intuitiv kann man sagen, dass die Lösung durch die größere Funktion bestimmt wird. Im zweiten Fall wachsen sie ungefähr gleich schnell. Im ersten und dritten Fall muss f(n) nicht nur kleiner oder größer als nlobba sein, sondern auch polynomiell kleiner oder größer um einen Faktor nϵ. Der dritte Fall kann nur angewandt werden, wenn die Regularitätsbedingung erfüllt ist.

Regularitätsbedingung

Doch wozu wird die Regularitätsbedingung benötigt? Zur Erinnerung, im dritten Fall dominiert f(n) das Wachstum von T(n). Wir müssen an dieser Stelle sicherstellen, dass auch bei rekursivem Anwenden, also wenn die Argumente kleiner werden, T(n) von f(n) dominiert wird. Veranschaulicht heißt das:

T(n)=aT(n/b)+f(n)

=a(aT(n/b2)+f(n/b))+f(n)
=a2T(n/b2)+af(n/b)+f(n)

für af(n/b)cf(n)(c(0,1)) Das Wachstum muss durch f(n) dominiert werden und darf f(n) nicht dominieren.

Die Regularitätsbedingung gilt wenn sie für f(n) und g(n) gilt auch für f(n)g(n) und auch für f(n)+g(n)

Nachweis für f(n)g(n)

Voraussetzung ist, dass die Regularitätsbedingung für f(n) und g(n) gilt, d.h.:

c1(0,1),n1nn1:af(n/b)c1f(n)

c2(0,1),n2nn2:ag(n/b)c2g(n)

Für (fg)(n) gilt:

a(fg)(n/b)=af(n/b)ag(n/b)

man wählt c=c1c2(0,1)

und n0=max{n1,n2}

nn0:af(n/b)ag(n/b)c1f(n)c2g(n)=c(fg)(n)

Nachweis für f(n)+g(n)

Voraussetzung ist, dass die Regularitätsbedingung für f(n) und g(n) gilt, d.h.:

c1(0,1),n1nn1:af(n/b)c1f(n)

c2(0,1),n2nn2:ag(n/b)c2g(n)

Für (f+g)(n) gilt:

a(f+g)(n/b)=af(n/b)+ag(n/b)

man wählt c=max{c1,c2}

und n0=max{n1,n2}

nn0:af(n/b)+ag(n/b)c1f(n)+c2g(n)c(f+g)(n)

Überblick

Ist T(n) eine rekursiv definierte Funktion der Form

T(n)=aT(n/b)+f(n)mita1,b>1,n>n0:f(n)>0

Dann gilt:

  • 1. Fall: Wenn f(n)O(nlogbaϵ)für ein ϵ>0dannT(n)=Θ(nlogba)
  • 2. Fall: Wenn f(n)Θ(nlogbaldkn)für ein k0dannT(n)=Θ(nlogbaldk+1n)
  • 3. Fall: Wenn f(n)Ω(nlogba+ϵ) für ein ϵ>0 und af(n/b)cf(n) für eine Konstante c(0,1) und genügend große n dann T(n)=Θ(f(n))

Idee

Wir haben folgenden Rekursionsbaum: Rekursionsbaum_Mastertheorem

Auf der ersten Ebene ist der Aufwand f(n), auf der zweiten Ebene af(n/b) und auf der dritten Ebene a2f(n/b2). Die Höhe des Baumes beträgt h=logbn. Die Anzahl der Blätter berechnet sich durch ah und beträgt somit alogbn=nlogba.

Fall 1: Das Gewicht wächst geometrisch von der Wurzel zu den Blättern. Die Blätter erhalten einen konstanten Anteil des Gesamtgewichts.

Θ(nlogba)

Fall 2: k ist 0 und das Gewicht ist ungefähr das Gleiche auf jedem der logba Ebenen.

Θ(nlogbaldn)

Fall 3: Das Gewicht reduziert sich geometrisch von der Wurzel zu den Blättern. Die Wurzel erhält einen konstanten Anteil am Gesamtgewicht.

Θ(f(n))

Beispiel 1

T(n)=4T(n/2)+n

a=4,b=2nlogba=nlog24=n2

f(n)=n

Fall 1: f(n)O(n2ϵ)für ϵ>0

T(n)=Θ(n2)

Beispiel 2

T(n)=4T(n/2)+n2

a=4,b=2nlogba=nlog24=n2

f(n)=n2

Fall 2: f(n)Θ(n2ldkn) für k=0

T(n)=Θ(n2ldn)

Beispiel 3

T(n)=4T(n/2)+n3

a=4,b=2nlogba=nlog24=n2

f(n)=n3

Fall 3: f(n)Ω(n2+ϵ)für ϵ>0

und 4(n2)3cn3 (Regularitätsbedingung)

für c=12

T(n)=Θ(n3)

Beispiel 4

T(n)=4T(n/2)+n2logn

a=4,b=2nlogba=nlog24=n2

f(n)=n2logn

Welcher Fall liegt nun vor? Das Mastertheorem kann an dieser Stelle nicht benutzt werden, da

  • 1. Fall f(n)O(n2ϵ)
  • 2. Fall f(n)Θ(n2ldkn) für k0
  • 3. Fall f(n)Ω(n2+ϵ)

Nützliche Hinweise

  • Basisumrechnung

logbx=logaxlogabO(logbx)=O(logax)

  • de L'Hospital

limxf(x)g(x)=limxf(x)g(x)


  • Vergleiche Logarithmus vs. Polynom

limxlogbx=

limxxϵ=  für ϵ>0

limxlogbxxϵ=limx(logbx)(xϵ)=limx1xϵxϵ1 =limx1xϵxϵ1=limx1ϵxϵ=0 für ϵ>0



Discussion