【问题标题】:What are the steps to solve this recurrence relation using iteration method?使用迭代方法解决这种递归关系的步骤是什么?
【发布时间】:2021-07-04 23:58:41
【问题描述】:

我对分析算法的时间复杂度相对较新,并且无可救药地陷入了这个问题。

T(n) = 2T(n/2) + Θ(n) ; n>1
T(1) = a

我已经明白使用大师的方法可以轻松解决这个问题,但是我想知道如何使用迭代方法执行此分析

【问题讨论】:

标签: algorithm iteration


【解决方案1】:

为简单起见,将theta(n) 替换为n。 (要彻底解决这个问题,您必须扩展theta(n) 的定义以获得该术语的上限和下限,并运行与以下相同的分析 - 在实践中很少看到这样做)。

现在假设 n 是 2 的幂:

T(n) = 2T(n/2) + n
     = 4T(n/4) + n + n
     = 8T(n/8) + n + n + n
     = ...
     = 2^kT(n/2^k) + kn

最终,n/2^k 为 1,此时 k 为 log_2(n)。

所以T(n) = nT(1) + log_2(n)*n

这对n 2 的幂有效,但您可以注意,如果n1 是小于或等于n 的2 的最大幂,并且n2 是大于2 的最小幂大于或等于n,然后是T(n1) <= T(n) <= T(n2),您可以结合n1 >= n/2n2 <= 2n 的事实得到所有n 的theta(n log n) 边界。

您最常看到的计算或工作与上述相同,但没有说明n 必须是 2 的幂,并且完全掩盖了舍入细节。 Sedgewick 是一位严格研究这些细节的作者,例如,当他计算在长度为 n 的数组的合并排序中执行的比较的确切数量时。

【讨论】:

  • 谢谢大哥的回答!您回复的前半部分是我正在寻找的答案。但我想了解更多关于这个概念的信息,所以你能否更详细地解释一下这一段? “这对 n 的 2 次方有效。”。或者,如果您能告诉我 Sedgwick 所著的书名,我将不胜感激。
  • Sedgewick&Flajolet “算法分析简介”介绍了 p19 上 n 的 2 次方的归并排序分析,并从 p70 开始求解。这不是相当相同的递归关系,因为它是 T(n) = T(floor(n/2)) + T(ceil(n/2)) + n
  • 如果您正在寻找这个答案,您可能会接受。
猜你喜欢
  • 1970-01-01
  • 2014-03-24
  • 2021-12-11
  • 2014-06-28
  • 2019-11-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-07-19
相关资源
最近更新 更多