我一直试图解决这种复发已近2个小时,但无法得到答案......
让:
T(n)= kn+T(n/2) for n>1 and T(1)=1 where n = 2^k for some integer k
显示T(n)= O(n)
答案 0 :(得分:1)
(我假设T(n)= kn + T(n / 2)中的 k 与n = 2 ^ k中的k不同。如果那是错的,我我会更新这个。)
如果您只需要渐近界限,则可以使用Master Theorem。你的复发是
T(n)= T(n / 2)+ kn
因此,a = 1,b = 2,并且c = 1.因此,由于log b a = 0< 1,主定理使其解析为Θ(n)。
如果您需要精确值,可以使用迭代方法进行猜测。我假设T(1)= 1。
T(n)= T(n / 2)+ kn
=(T(n / 4)+ kn / 2)+ kn
= T(n / 4)+ kn + kn / 2
=(T(n / 8)+ kn / 4)+ kn + kn / 2
= T(n / 8)+ kn + kn / 2 + kn / 4
...
= T(n / 2 i )+ kn(1 + 1/2 + 1/4 + ... + 1/2 i )
当i = log 2 n时终止,此时我们得到
T(n)= T(1)+ kn(1 + 1/2 + 1/4 + ... + 1 / n)
= 1 + kn(1 + 1/2 + 1/4 + ... + 1 / n)
= 2kn
所以确切的数字应该是(模数学误差)2kn,同意主定理的结果。
希望这有帮助!