Równanie rekurencyjne:
Mam takie równanie rekurencyjne
T(n), dla n = logbn,
i mam zbadać θ (czasochłonność algorytmu) dla przypadków:
a > b, a = b, a < b
| ⎧ | c, n=1 | ||
| T(n) = | ⎩ | a*T(nb) + cn, n>1 |
| n | ||
T(n) = a * T( | ) + cn = | |
| b |
| n | n | ||||||||||
a * (a*T( | ) + cn) + cn = a * (a*T( | ) + c | ) + cn = | |||||||||
| b | b2 | b |
| n | cna | |||
a2*T( | ) + | + cn = | ||
| b2 | b |
| n | a | |||
a2*T( | ) + cn( | + 1) = | ||
| b2 | b |
| n | n | a | ||||
a2*(a*T( | ) +c* | ) + cn( | + 1) = | |||
| b3 | b2 | b |
| n | na2 | a | ||||
a3*T( | ) +c* | ) + cn( | + 1) = | |||
| b3 | b2 | b |
| n | a2 | a | ||||
a3*T( | ) +cn* | ) + cn( | + 1) = | |||
| b3 | b2 | b |
| n | a2 | a | ||||
a3*T( | ) +cn( | + | + 1) = | |||
| b3 | b2 | b |
| n | ak−1 | a1 | a0 | |||||
ak*T( | ) + cn( | + .. + | + | ) | ||||
| bk | bk−1 | b1 | b0 |
| [c[bk] | ak−1 | a1 | a0 | |||||
ak*T( | ) + cn( | + .. + | + | ) = | ||||
| bk | bk−1 | b1 | b0 |
| ak−1 | a1 | a0 | ||||
ak*T(1) + cn( | + .. + | + | ) = | |||
| bk−1 | b1 | b0 |
| ak−1 | a1 | a0 | ||||
ak*c + cn( | + .. + | + | ) = | |||
| bk−1 | b1 | b0 |
| n | ||
n = bk, czyli | = 1, c*1 = c | |
| bk |
| n | ak−1 | a1 | ||||
ak*c* | + cn( | + .. + | + 1) = | |||
| bk | bk−1 | b1 |
| ak | ak−1 | a1 | ||||
cn( | + | + .. + | + 1) | |||
| bk | bk−1 | b1 |
), ale i tak tutaj to będzie liniowe?:
cn, czyli θ(n)?
kolejna część: a < b
| ak | ak−1 | a1 | ||||
cn( | + | + .. + | + 1) | |||
| bk | bk−1 | b1 |
| ak | ||
limk→∞( | ) = 0, ale jest to suma ciągu, więc jeżeli a > b, a nie wiadomo o jak dużo | |
| bk |
| ak | ak−1 | a1 | ||||
cn( | + | + .. + | + 1) | |||
| bk | bk−1 | b1 |






!11jedenjeden
Ale na pewno nie takie
równania rekurencyjne − te jest zbyt trudne.
| a | |
→ 0 ? Ciekawe... | |
| b |
| n | ||
T(n) = aT( | ) + cn | |
| b |
| n | a | |||
= a2T( | ) + | cn + cn | ||
| b2 | b |
| n | a2 | cn | ||||
= a3T( | ) + | cn + | cn + cn | |||
| b3 | b2 | b |
| n | a3 | a2 | cn | |||||
= a4T( | ) + | cn + | cn + | cn + cn | ||||
| b4 | b3 | b2 | b |
| n | ||
= a4T( | ) + (ab)3cn + (ab)2cn + (ab)cn + cn | |
| b4 |
| n | ||
= akT( | ) + cn*((ab)k−1 + ... + (ab) + 1) | |
| bk |
| n | (ab)k−1 | |||
= akT( | ) + cn* | |||
| bk | (ab)−1 |
| (ab)k−1 | ||
T(n) = akT(1) + cn* | ||
| u−1 |
| (ab)logbn−1 | ||
= c*(alogbn + n* | ) | |
| ab−1 |
| ||||||||
= c*(alogbn + n* | ) | |||||||
| ab−1 |
| alogbn−n | ||
= c*(alogbn + | ) | |
| ab−1 |
| b | b | |||
= c*(alogbn + | *alogbn− | *n) | ||
| a−b | a−b |
| c | ||
= | *(a1+logbn − bn) | |
| a−b |
| n | ||
T(n) = akT( | ) + cn*((ab)k−1 + ... + (ab) + 1) | |
| bk |
| n | ||
= akT( | ) + cn*(1 + 1 + ... + 1) | |
| ak |
| n | ||
= akT( | ) + ckn | |
| ak |