Algorithm 大O n^(lg3)代换证明中的Karatsuba算法

Algorithm 大O n^(lg3)代换证明中的Karatsuba算法,algorithm,recursion,big-o,substitution,Algorithm,Recursion,Big O,Substitution,Karatsuba算法涉及递归关系T(n)=3T(n/2)+n 通过递归树方法,我们可以将T的大O近似为O(nlog23) 然而,通过替换方法,我很难验证通过递归树方法找到的近似结果 我将简单地使用lg3来表示log23 替代方法: Hypothesis -> T(n) <= cnlg 3 where c is a positive constant Proof -> T(n) <= 3c(n/2)lg 3 + n = cnlg 3 + n 假设

Karatsuba算法涉及递归关系
T(n)=3T(n/2)+n

通过递归树方法,我们可以将
T
的大O近似为
O(nlog23)

然而,通过替换方法,我很难验证通过递归树方法找到的近似结果

我将简单地使用
lg3
来表示
log23

替代方法:

Hypothesis -> T(n) <= cnlg 3 where c is a positive constant
Proof -> T(n) <= 3c(n/2)lg 3 + n
                  =  cnlg 3 + n

假设->T(n)T(n)当使用替代方法时,有时必须强化归纳假设,并猜测一种更复杂的表达式形式,该表达式限制了重复性

试着猜测一下T(n)的形式≤ c0 nlg 3-c1n。现在,您正在减去形式为c1n的某个项,您可能可以通过使用一些线性项来抵消后面添加的n项来计算递归

例如:

T(n)≤ 3T(n/2)+n

≤ 3(c0(n/2)lg 3-c1(n/2))+n

=3(c0(n/2)lg 3)-3c1n/2+n

现在,选择c1,使-3c1n/2+n=-c1n。这解决了

-3c1n/2+n=-c1n

-3c1/2+1=-c1

-3c1+2=-2c1

2=c1

选择c1将使您成功地取消+n项,从而使导入成功工作

希望这有帮助

T(n) <= cnlg 3 + nlg 3
      = (c+1)nlg 3