wahrscheinlichkeitsrechnung 1 falls algorithmen sich selbst rekursiv aufrufen, so kann ihr...
TRANSCRIPT
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:
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
3Rekursionsformeln
• Wir werden im folgenden drei Verfahren zum Lösen von RF kennen lernen:– Substitutions-Methode
(Ersetzungsmethode)– Rekursionsbäume– Master-Methode (Master-Theorem)
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)(
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)!
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
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.
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
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
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.
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
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
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.
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
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
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
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
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
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
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
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:
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
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.
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.