使用迭代方法解决递归
Posted
技术标签:
【中文标题】使用迭代方法解决递归【英文标题】:Solving recurrence using the iteration method 【发布时间】:2021-12-11 13:33:50 【问题描述】:我需要帮助解决 T(n) = T(n/4) + T(n/3) + 2n 使用迭代方法(递归树。我想它会是 Θ(2n) 或 Θ(n )?
【问题讨论】:
请编辑问题以将其限制为具有足够详细信息的特定问题,以确定适当的答案。 【参考方案1】:这很简单。我们有以下两个不等式:
T(n) > 2T(n/4) + 2n
and
T(n) < 2T(n/3) + 2n
现在,尝试通过展开找到上限和下限。根据这两种情况,你会发现T(n) = Theta(n)
。
例如,对于T'(n) = 2T(n/3) + 2n
,我们有以下扩展:
T'(n) = 2T(n/3) + 2n = 2^2 T(n/3^2) + (1 + 2/3) * 2n
通过归纳我们可以证明:
T'(n) = 2^log_3(n) T(0) + (1 + 2/3 + 2^2/3^2 + ...) * 2n
< n + 6 * n = 7n
因为2^log_3(n) < 2^log_2(n) = n
和(1 + 2/3 + 2^2/3^2 + ...)
是因子2/3
的几何和。因此,当n
变为无穷大时,总和将为1/(1-2/3) = 3
。
您可以对T(n)
的下限进行相同的分析。
因此,作为c1 * n <= T(n) <= c_2 * n
,我们可以得出结论T(n)
在Theta(n)
中。
【讨论】:
如何使用迭代法解决? @algor 这里,我们用迭代法解决了。以上是关于使用迭代方法解决递归的主要内容,如果未能解决你的问题,请参考以下文章