wahrscheinlichkeitsrechnung 1 falls algorithmen sich selbst rekursiv aufrufen, so kann ihr...

24
1 Rekursionsformeln 1 ) ( ) 2 / ( ) 2 / ( 1 ) 1 ( ) ( n n n T n T n n T • Falls Algorithmen sich selbst rekursiv aufrufen, so kann ihr Laufzeitverhalten bzw. ihr Speicherplatzbedarf in der Regel durch eine Rekursionsformel (recurrence, RF) beschrieben werden. • Beispiel: MergeSort. – Sei T(n) die (asymptotische) Laufzeit des MergeSort-Algorithmus für die Eingabegröße n:

Upload: kayetan-lehnhoff

Post on 05-Apr-2015

104 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Wahrscheinlichkeitsrechnung 1 Falls Algorithmen sich selbst rekursiv aufrufen, so kann ihr Laufzeitverhalten bzw. ihr Speicherplatzbedarf in der Regel

1Rekursionsformeln

1)()2/()2/(

1)1()(

nnnTnT

nnT

• Falls Algorithmen sich selbst rekursiv aufrufen, so kann ihr Laufzeitverhalten bzw. ihr Speicherplatzbedarf in der Regel durch eine Rekursionsformel (recurrence, RF) beschrieben werden.

• Beispiel: MergeSort. – Sei T(n) die (asymptotische) Laufzeit des

MergeSort-Algorithmus für die Eingabegröße n:

Page 2: Wahrscheinlichkeitsrechnung 1 Falls Algorithmen sich selbst rekursiv aufrufen, so kann ihr Laufzeitverhalten bzw. ihr Speicherplatzbedarf in der Regel

2Rekursionsformeln

• Bei der Lösung solcher Rekursionsformeln vernachlässigen wir oft gewisse technische Details:

• Z.B. das Auf- und Abrunden der Größen der rekursiven Teilprobleme:

• Beispiel: MergeSort.

• Wenn die Laufzeit für die Eingabegröße 1 in (1) ist (also eine Konstante), schreiben wir in der Regel:

• Oder noch einfacher:

1)()2/(2

1)1()(

nnnT

nnT

1)()2/(2

1)( 1

nnnT

ncnT

)()2/(2)( nnTnT

Page 3: Wahrscheinlichkeitsrechnung 1 Falls Algorithmen sich selbst rekursiv aufrufen, so kann ihr Laufzeitverhalten bzw. ihr Speicherplatzbedarf in der Regel

3Rekursionsformeln

• Wir werden im folgenden drei Verfahren zum Lösen von RF kennen lernen:– Substitutions-Methode

(Ersetzungsmethode)– Rekursionsbäume– Master-Methode (Master-Theorem)

Page 4: Wahrscheinlichkeitsrechnung 1 Falls Algorithmen sich selbst rekursiv aufrufen, so kann ihr Laufzeitverhalten bzw. ihr Speicherplatzbedarf in der Regel

4Substitutions-Methode

• Die Substitutions-Methode funktioniert wie folgt:

– Man „errate“ die Form der Lösung.– Man verwende (vollständige) Induktion, um die Konstanten

zu finden und um zu zeigen, dass es die Lösung ist.

• Beispiel:

• Wir „glauben“, dass

T(n) = O(n log(n)) die Lösung der RF ist.

• Daher versuchen wir zu zeigen, dass

T(n) ≤ c n log(n) für eine geeignet gewählte Konstante c > 0 ist.

nnTnT 2/2)(

Page 5: Wahrscheinlichkeitsrechnung 1 Falls Algorithmen sich selbst rekursiv aufrufen, so kann ihr Laufzeitverhalten bzw. ihr Speicherplatzbedarf in der Regel

5Substitutions-Methode

• Wir nehmen an, dass die Aussage für n/2 gilt:

• Induktionsschluss: )2/log(2/2/ nncnT

nnncnT )2/log(2/2

nncn )2/log(

ncnncn )2log()log(

ncnncn )log(

)log(ncn 1_ cfalls

Es fehlt der Induktionsanfang n = 1 (siehe nächste Seite)!

Page 6: Wahrscheinlichkeitsrechnung 1 Falls Algorithmen sich selbst rekursiv aufrufen, so kann ihr Laufzeitverhalten bzw. ihr Speicherplatzbedarf in der Regel

6Substitutions-Methode

• Nehmen wir zunächst an, dass T(1) = 1 ist.• Dann ist die Grenzbedingung für jede Konstante c >

0 verletzt, da

• Der Induktionsanfang ist also nicht erfüllt. • Wir können dieses Problem natürlich leicht

umgehen, in dem wir ausnutzen, dass das asymptotische Laufzeit-verhalten nur für alle n größer gleich einer vorgegebenen ganzen Zahl n0 gelten muss, d.h.,

• wir müssen nur zeigen, dass

T(n) ≤ cn log(n) für alle n n0 gilt.

• Wir können also den Fall T(2)= 4 oder T(3)=5 als Basis-fall (Induktionsstart) für die vollständige Induktion wählen.

• Dann haben wir kein Problem eine geeignete Konstante c anzugeben.

00*)1log(11 ccT

Page 7: Wahrscheinlichkeitsrechnung 1 Falls Algorithmen sich selbst rekursiv aufrufen, so kann ihr Laufzeitverhalten bzw. ihr Speicherplatzbedarf in der Regel

7Substitutions-Methode

• Wie kann man die Lösung der RF „erraten“?

– Erfahrung: Ähnlichkeit mit bereits bekannten Rekursionsformeln.

– Man verwende Rekursionbäume, um die asymptotische Größenordnung abzuschätzen.

– Man verwende untere und obere Schranken, um die asymptotische Größenordnung immer weiter einzuschränken.

Page 8: Wahrscheinlichkeitsrechnung 1 Falls Algorithmen sich selbst rekursiv aufrufen, so kann ihr Laufzeitverhalten bzw. ihr Speicherplatzbedarf in der Regel

8Substitutions-Methode

• Manchmal funktioniert die Abschätzung mittels der vollständigen Induktion nicht, obwohl man sich bezüglich der Schätzung sehr sicher ist.

• Beispiel:

• Wir raten, dass T(n)= O(n), und wir wollen zeigen, dass T(n) ≤ cn ist:

• Wir können das Problem lösen, in dem wir T(n) ≤ cn – b zeigen, wobei b > 0 eine Konstante ist.

12/2/)( nTnTnT

112/2/)( cnncncnT

Page 9: Wahrscheinlichkeitsrechnung 1 Falls Algorithmen sich selbst rekursiv aufrufen, so kann ihr Laufzeitverhalten bzw. ihr Speicherplatzbedarf in der Regel

9Substitutions-Methode

122/2/)( bncncnT

12 bcn

bcn 1_ bfalls

In einigen Beispielen kann man die RF erst dann lösen, wenn man einegeeignete Variablensubstitution durchführt!

)log(2)( nnTnT

Setze m = log(n):

mTT mm 2/22)2(

Setze S(m) = T(2m):

mmSmS 2/2)( ))log(()( mmOmS ))log(log)(log()( nnOnT

Page 10: Wahrscheinlichkeitsrechnung 1 Falls Algorithmen sich selbst rekursiv aufrufen, so kann ihr Laufzeitverhalten bzw. ihr Speicherplatzbedarf in der Regel

10Rekursionsbäume

• Rekursive Algorithmen zerlegen das zu lösende Problem in Teilprobleme.

• Die Gesamtlösung wird aus den Lösungen der Teilprobleme zusammengesetzt.

• Die Zerlegung in Teilprobleme kann mittels eines Rekursionsbaumes dargestellt werden.

• In einem solchen Baum repräsentiert jeder Knoten ein Teilproblem bzw. die Kosten eines Teilproblems.

• Rekursionsbäume sind hervorragend geeignet, um die asymptotischen Laufzeiten eines rekursiven Verfahrens abzuschätzen.

• Die asymptotische Laufzeit kann dann mittels der Substitutionsmethode bewiesen werden.

Page 11: Wahrscheinlichkeitsrechnung 1 Falls Algorithmen sich selbst rekursiv aufrufen, so kann ihr Laufzeitverhalten bzw. ihr Speicherplatzbedarf in der Regel

11Rekursionsbäume

• Als Beispiel betrachten wir die Rekursion: )(4/3)( 2nnTnT 24/3)( cnnTnT

2cn

)4/(nT )4/(nT )4/(nT

2cn

2

4

nc

)16/(nT

2

4

nc

2

4

nc

)16/(nT )16/(nT )16/(nT )16/(nT )16/(nT )16/(nT )16/(nT )16/(nT

Page 12: Wahrscheinlichkeitsrechnung 1 Falls Algorithmen sich selbst rekursiv aufrufen, so kann ihr Laufzeitverhalten bzw. ihr Speicherplatzbedarf in der Regel

12Rekursionsbäume

• Als Beispiel betrachten wir die Rekursion: )(4/3)( 2nnTnT 24/3)( cnnTnT

2cn

2

4

nc

2

4

nc

2

4

nc

2

16

nc

2

16

nc

2

16

nc

2

16

nc

2

16

nc

2

16

nc

2

16

nc

2

16

nc

2

16

nc

)1(T )1(T )1(T )1(T )1(T )1(T )1(T )1(T )1(T )1(T )1(T )1(T )1(T )1(T )1(T

2cn

2

16

3cn

22

16

3cn

)3(log4n

)( )3(log4n

Page 13: Wahrscheinlichkeitsrechnung 1 Falls Algorithmen sich selbst rekursiv aufrufen, so kann ihr Laufzeitverhalten bzw. ihr Speicherplatzbedarf in der Regel

13Rekursionsbäume

)(16

3

16

3

16

3)( )3(log2

1)(log2

222 4

4

ncncncncnnTn

)(16

3)( )3(log

1)(log

0

2 4

4

ncnnTn

i

i

)(1)16/3(

1)16/3()( )3(log2

)(log4

4

ncnnTn

)(2)( )3(log2 4ncnnT 4_ nfür

)()( 2nOnT

Wir vermuten daher, dass T(n) = O(n2) ist, und zeigen nun mittels derSubstitutionsmethode, dass T(n) ≤ dn2 für ein geeignetes d > 0.

Page 14: Wahrscheinlichkeitsrechnung 1 Falls Algorithmen sich selbst rekursiv aufrufen, so kann ihr Laufzeitverhalten bzw. ihr Speicherplatzbedarf in der Regel

14Rekursionsbäume

24/3)( cnnTnT

Dieser letzte Schritt gilt für alle d mit d (16/13)c !

224/3 cnnd

22)4/(3 cnnd

22

16

3cndn

2dn

Page 15: Wahrscheinlichkeitsrechnung 1 Falls Algorithmen sich selbst rekursiv aufrufen, so kann ihr Laufzeitverhalten bzw. ihr Speicherplatzbedarf in der Regel

15Master-Methode

• Wir betrachten im folgenden Rekursionen der Form

)(/)( nfbnaTnT

)(nf

)/( bnaf

22

b

nfa

)(log abn

)( )(log abn

1a 1b 0)(:0 nfnn

)(nf

)/( bnf )/( bnf )/( bnf

)1(T )1(T )1(T )1(T )1(T )1(T )1(T )1(T )1(T )1(T )1(T )1(T )1(T )1(T )1(T

a

a a a

2b

nf

2b

nf

2b

nf

2b

nf

2b

nf

2b

nf

2b

nf

2b

nf

2b

nf

a a a a a a a a a

Page 16: Wahrscheinlichkeitsrechnung 1 Falls Algorithmen sich selbst rekursiv aufrufen, so kann ihr Laufzeitverhalten bzw. ihr Speicherplatzbedarf in der Regel

16Master-Theorem

)()()( )(log1)(log2

21)(log

an bnb

b nb

nfa

b

nfa

b

nafnfnT

)()( )(log1)(log

0

an

ii

i b

b

nb

nfanT

Summieren wir nun die Kosten aller Schichten des Baumes auf, so erhaltenwir die folgenden Gesamtkosten.

Wir haben implizit in den obigen Berechnungen immer vorausgesetzt, dassn durch die Potenzen von b teilbar ist, d.h., dass n eine Potenz von b ist.Diese Voraussetzung behalten wir für die folgenden Rechnungen und Be-weise bei. Die Berechnungen und Beweise für beliebige ganze Zahlen nN können Sie im Lehrbuch „Introduction to Algorithms“ von Cormen et al. nach-lesen.

)()()( )(log abnngnT

1)(log

0

)(n

ii

ib

b

nfang

Page 17: Wahrscheinlichkeitsrechnung 1 Falls Algorithmen sich selbst rekursiv aufrufen, so kann ihr Laufzeitverhalten bzw. ihr Speicherplatzbedarf in der Regel

17Master-Theorem

)()( )(log abnOnf

Wir diskutieren im folgenden die potentiellen Lösungen von Rekursions-Formeln der allgemeinen Form T(n) = a T(n/b) + f(n) in Abhängigkeit vomasymptotischen Verhalten der Funktion f(n):

Hierbei betrachten wir zuerst den Fall, dass

für eine Konstante 0

)(log ab

ii b

nO

b

nf

D.h., es existiert eine Konstante c > 0 und eine natürliche Zahl n0, so dassfür alle n n0 gilt:

)(log ab

ii b

nc

b

nf

Page 18: Wahrscheinlichkeitsrechnung 1 Falls Algorithmen sich selbst rekursiv aufrufen, so kann ihr Laufzeitverhalten bzw. ihr Speicherplatzbedarf in der Regel

18Master-Theorem

Für alle n n0 gilt folglich:

)(log1)(log

0

1)(log

0

an

ii

in

ii

ibbb

b

nac

b

nfa

in

ia

b

b

ab

b

abcn

1)(log

0)(log

)(log

1)(log

0

)(logn

i

ibab

bcn

1

1)(log)(log

b

bcn

nbab

1

1)(log

b

ncn

ab

Da b und Konstanten sind, folgt aus der obigen Abschätzung:

)(log1)(log

0

an

ii

i b

b

nOb

nfa

)(log)( abnnT

Page 19: Wahrscheinlichkeitsrechnung 1 Falls Algorithmen sich selbst rekursiv aufrufen, so kann ihr Laufzeitverhalten bzw. ihr Speicherplatzbedarf in der Regel

19Master-Theorem

)()( )(log abnnf

Wir betrachten nun den zweiten Fall und nehmen an, dass

)(log ab

ii b

n

b

nf

)(log1)(log

0

1)(log

0

an

ii

in

ii

ibbb

b

nac

b

nfa

in

ia

b

b

ab

b

acn

1)(log

0)(log

)(log

1)(log

0

1)(log

n

i

bab

cn )(log)(log

ncn b

ab

Analog kann man zeigen, dass es eine Konstante d > 0 gibt, so dass für alle hinreichend großen n gilt:

))(log()()(log

nnnT b

ab

Für alle hinreichend großen n und eine geeignete Konstante c > 0 gilt:

)(log)()(log

ndnng b

ab

Page 20: Wahrscheinlichkeitsrechnung 1 Falls Algorithmen sich selbst rekursiv aufrufen, so kann ihr Laufzeitverhalten bzw. ihr Speicherplatzbedarf in der Regel

20Master-Theorem

)()/( ncfbnaf Wir diskutieren im folgenden den dritten Fall und nehmen an, dass

)(1)(log

0

1)(log

0

nfcb

nfa

n

i

in

ii

ibb

1)(log

0

)(n

i

ib

cnf

Nehmen wir jetzt ferner an, dass

)()()(log

ab

nnf

für eine Konstante c < 1 undfür alle n b

)()/( nfa

cbnf Wenden wir diese Abschätzung

i mal iterativ an, so erhalten wir

)()/( nfa

cbnf

ii

1

1)(

)(log

c

cnf

nb

für ein > 0, so gilt: ))(()( nfnT

Page 21: Wahrscheinlichkeitsrechnung 1 Falls Algorithmen sich selbst rekursiv aufrufen, so kann ihr Laufzeitverhalten bzw. ihr Speicherplatzbedarf in der Regel

21Master-Theorem

)()/()( nfbnaTnT

Satz [1]:

Seien a 1 und b > 1 Konstanten, sei f(n) eine (positive) Funktion undsei T(n) die Rekursion der Form

wobei n/b entweder als n/b oder als n/b interpretiert werden kann.

(1) Ist

)()()(log

ab

nOnf für ein > 0, so gilt: )(log)( abnnT

(2) Ist

)()()(log ab

nnf dann ist: )log()( )(log nnnT ab

))(()( nfnT

(3) Ist

)()()(log

ab

nnf für ein > 0, und ist a f(n/b) ≤ c f(n) für eine Konstante c < 1 und genügend großes n, so gilt:

Page 22: Wahrscheinlichkeitsrechnung 1 Falls Algorithmen sich selbst rekursiv aufrufen, so kann ihr Laufzeitverhalten bzw. ihr Speicherplatzbedarf in der Regel

22Anwendung des Master-Theorems auf MergeSort

)()2/(2)( nnTnT

Die Laufzeit des MergeSort-Algorithmus wird durch die folgende RFbeschrieben:

Die Konstanten a und b sind gleich 2 und die Funktion f(n), die den Zeit-aufwand für das Mischen (Merge) der sortierten Teilfolgen angibt, ist in (n).

Da logb(a) = log2(2) = 1 ist,

)()()()( 1)(log

nnnnfab

folgt aus Fall (2) des Master-Theorems

Satz [2]:

Die Laufzeit T(n) des Algorithmus MergeSort ist in (n log n):

)log()( nnnT

Page 23: Wahrscheinlichkeitsrechnung 1 Falls Algorithmen sich selbst rekursiv aufrufen, so kann ihr Laufzeitverhalten bzw. ihr Speicherplatzbedarf in der Regel

23Beispielanwendung des Master-Theorems

nnTnT )3/(9)(

Als zweites Beispiel betrachten wir die Rekursion

Es gilt: a = 9, b = 3, f(n) = n, logb(a) = log3(9) = 2 .

)( 22)(log

nnnab

Dann folgt aus Fall (1) des Master-Theorems

2)( nnT

)()()(log

ab

nOnf wobei = 1 ist.

Page 24: Wahrscheinlichkeitsrechnung 1 Falls Algorithmen sich selbst rekursiv aufrufen, so kann ihr Laufzeitverhalten bzw. ihr Speicherplatzbedarf in der Regel

24Beispielanwendung des Master-Theorems

)log()4/(3)( nnnTnT

Als drittes Beispiel betrachten wir die Rekursion

Es gilt: a = 3, b = 4, f(n) = n log(n), logb(a) = log4(3) = 0.793 .

Da für große n gilt: 3 f(n/4) = 3 (n/4) log(n/4) ≤ (3/4) n log(n) = (3/4) f(n), folgt aus Fall (3) des Master-Theorems

)log()()( nnnfnT

)()()()3(4log

nnnf

wobei 0.2 ist.