Karatsuba算法的特例

时间:2017-12-11 21:34:45

标签: algorithm time-complexity complexity-theory recurrence

我需要一些有关以下问题的帮助:

让我们考虑一个字长为sqrt(n)位的计算机。这意味着2 sqrt(n)位整数之间的任何乘法都是O(1)。 问题是要证明使用Karatsuba算法对这台计算机进行2 n位整数乘法的复杂性是O(n ^ 1.29)。

我试图写一个递归关系,如:         T(sqrt(n))= 3T(sqrt(n)/ 2)+Θ(sqrt(n))

然后,通过用n替换sqrt(n),我得到:T(n)= 3T(n / 2)+Θ(n) 得到T(n)=Θ(n ^ 1.58)。

我无法理解我犯了什么错误。 非常感谢!!

1 个答案:

答案 0 :(得分:1)

您已正确声明原始递归关系为T(n) = 3T(n/2) + Θ(n);您所犯的逻辑错误是直接将n替换为sqrt(n)

你必须在这里做的是用不同的停止条件重新导出时间复杂度 - 即T(m) = O(1) Ɐ m ≤ sqrt(n)。给定结果T(n) = Θ(n^1.58)遵循使停止条件等于某个小常数,这不是这里的情况。

让我们反复扩大这种复发:

enter image description here

...并应用修改后的停止条件:

enter image description here

......使用一些对数定律。因此我们到达:

  

enter image description here

...这是必需的结果。