Algorithm 大O n^(lg3)代换证明中的Karatsuba算法
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 假设
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