Recursion T(n)=c1T(n/a)和#x2B;c2(T/b)和#x2B;f(n)
例T(n)=T(n/3)+T(n/4)+3n这个问题可以用迭代主定理或递归树来解决。有人能解析地解决它来说明它是如何完成的吗 我们可以用二项式求和来展开Recursion T(n)=c1T(n/a)和#x2B;c2(T/b)和#x2B;f(n),recursion,iteration,time-complexity,master-theorem,Recursion,Iteration,Time Complexity,Master Theorem,例T(n)=T(n/3)+T(n/4)+3n这个问题可以用迭代主定理或递归树来解决。有人能解析地解决它来说明它是如何完成的吗 我们可以用二项式求和来展开T(n): (经过一些步骤后-可通过归纳证明) 对于某种深度的扩展/递归k 我们在哪里终止?当f(n)的所有实例的参数达到某个阈值C。因此,最大扩展深度: 我们在a,b之间选择最小值,因为只有min(a,b)幂次的参数以最慢的速率减小: 因此,T(n)的一般表达式为: 封闭形式解析解的存在取决于f(n)的形式。对于提供的示例: 内部求
T(n)
:
(经过一些步骤后-可通过归纳证明)
对于某种深度的扩展/递归k
我们在哪里终止?当f(n)
的所有实例的参数达到某个阈值C
。因此,最大扩展深度:
我们在a,b
之间选择最小值,因为只有min(a,b)
幂次的参数以最慢的速率减小:
因此,T(n)
的一般表达式为:
封闭形式解析解的存在取决于f(n)
的形式。对于提供的示例:
内部求和是二项括号的展开,提升为幂j
:
这是一个几何级数,等于(使用标准公式):
现在,由于7/12
小于1,对于k
(因此n
)的大值,上述结果中的幂项变得非常小。因此在大n
的限制下:
说实话,上面的例子本可以用递归树更直接地完成;但同样的情况不适用于
n
,例如f(n)=Cn^2,可以简单地并入一般公式。移动到可以通过二项式求和来完成,尽管分析上是否取决于f(n)
的形式,因此如果7/12大于1,则时间复杂度将为O(nlogn)?我也试着用递归来做这件事,但每个级别的代价不是n,我似乎找不到另一个例子。@user3638488如果严格大于1,那么它将不是n log n
,而是n
的非整数幂。如果等于1,那么它将是n log n
(如示例所示,2/5+3/5=1);您可以从替换到我给出的系列公式中看到-您将得到3n*km=3n log n