递归的复杂度 T(n)=T(n/2)+T(n/2)+n^2?

问题描述

根据主定理,这个递归是 θ(n^2),但是如果我们用树递归来解决这个问题,那么解是 θ(n^2*logn)。我做错了什么吗?

解决方法

如果递推关系是 T(n) = 2T(n/2) + n^2,那么你处于主定理的第三种情况,并且正则条件适用,所以 T(n) = Theta (n^2)。 [c_crit 是 log_2(2) = 1,n^2 = Omega(n),2(n/2)^2 = (n^2)/2 (所以 k

如果你手动展开递归关系,那么你得到:

T(n) = n^2 + 2(n/2)^2 + 4(n/4)^2 + 8(n/8)^2 + ...
     = n^2 ( 1 + 1/2 + 1/4 + 1/8 + ...)
     <= 2n^2

所以这个方法也给你 T(n) = Theta(n^2).

inputting the recurrence relation into Wolfram Alpha and seeing what it says 的方法给出了 T(n) ~ 2n^2,所以又是 Theta(n^2)。

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...