algorithm - 递推的复杂度 T(n)=T(n/2T(n/2)+n^2?

标签 algorithm runtime recurrence induction

根据主定理,这个递归是 θ(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<1,具体来说 k=1/2)]

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

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)。

关于algorithm - 递推的复杂度 T(n)=T(n/2T(n/2)+n^2?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65990194/

相关文章:

algorithm - 如何理解给定示例中的大 O 符号

python - 为什么我的 python 代码这么慢(leetcode)?

Delphi - 在现有表格上分配 OnClose 表格

Excel VBA 用户窗体动态运行时控件 - 跨多个控件触发相同类事件

java - 通过java运行的执行程序似乎超时?

algorithm - 求和 - 封闭式 - 从哪里开始

algorithm - 给定 5 个数字,求中位数所需的最少比较次数是多少?

python - 模拟抛硬币实验 - RealPython

algorithm - 确定给定算法的递归关系

algorithm - 奇怪排序的递归关系