Rekurencje
description
Transcript of Rekurencje
Rekurencje
Rekurencja jest równaniem lub nierównością, opisującą funkcję w zależności od jej wartości dla danych wejściowych o mniejszych rozmiarach.
Na przykład, czas działania T(n) algorytmu sortowania przez scalanie:
1),()2/(2
1),1()(
njeslinnT
njeslinT
Rozwiązanie tej rekurencji: T(n) = (n lg n)
Ogólny wygląd równania rekurencyjnego:
)()/()( nfbnaTnT
Drzewa rekursji2)2/(2)( nnTnT
n2
2
nT
2
nT
n2
2
2
n 2
2
n
4
nT
4
nT
4
nT
4
nT
n2
2
2
n 2
2
n
2
4
n
2
4
n
2
4
n
2
4
nlg n
n2
2
2
1n
2
4
1n
W sumie: (n2)
Drzewa rekursjinnTnTnT )3/2()3/()(
Najdłuższą ścieżką od korzenia do liścia jest n (2/3)n (2/3)2n … 1.
(2/3)kn = 1, gdy k = log3/2n, więc wysokość drzewa wynosi log3/2n.
n
3
n
3
n2
9
n
9
n2
9
n2
9
n4lg n
n
W sumie: (n lg n)
n
n
Czas działania Quicksort
Najgorszy przypadek podziałów: (n2)
Najlepszy przypadek podziałów: (n lg n)
Czas działania w średnim przypadku zbliżony jest do najlepszego: (nlgn)
n
n-11
n-21
12
1 1
n
n
n
n-1
3
2
(n2)Najgorszy przypadek
lg n
n
n/2 n/2
n/4 n/4 n/4 n/4
1 1 1 1 1 1 1 1
n
n
nn
n
(n lg n)Najlepszy przypadek
Metoda rekurencji uniwersalnej
Niech a 1, b > 1, T(n) zdefiniowane przez rekurencję
)()/()( nfbnaTnT
T(n) może być ograniczona asymptotycznie w następujący sposób.
1. Jeśli )()( log abnOnf dla pewnej stałej > 0, to )()( log abnOnT
2. Jeśli
3. Jeśli
),()( log abnnf to
))(()( nfnT
)()( log abnnf dla pewnej stałej > 0 i jeśli af(n/b) cf(n)
dla pewnej stałej c > 1 i wszystkich dostatecznie dużych n, to
)lg()( log nnnT ab
PrzykładynnTnT )3/(9)(
)( 29loglog 3 nnn ab 11),()( 9log3 przypadekgdzienOnf
)()( 2nnT
1)3/2()( nTnT
101loglog 2/3 nnn ab 2)1()()( log przypadeknnf ab
)(lg)( nnT
nnnTnT lg)4/(3)(
)( 793,03loglog 4 nOnn ab 3;2,0),()( 3log4 przypadekgdziennf
)lg()( nnnT