【问题标题】:Recurrence relation . Please tell me where I went wrong递归关系。请告诉我哪里出错了
【发布时间】:2013-10-29 10:48:00
【问题描述】:

在我的作业问题中,我被要求解决以下递归关系,T(n) = T(√n) + T(n - √n) + cn

这就是我解决相同问题并得到正确答案的方法。但是我的解决中有一个明显的错误。请指出如何纠正我的错误步骤。

对于所有 n > 4,我们有 , √n

因此,项 T(n - √n) 将缓慢地向 T(1) 移动,从而有助于递归树的高度。

通过简单的数学,我们可以说在 √n 次迭​​代之后,项 T(n - √n) 最终将是 T(1)。 (这是我出错的地方。我原以为这些术语会减少如下,T(n - √n),T(n - 2√n),T(n - 3√n),但他们没有)

因此上述树的高度为√n。

每个级别的运营成本最多为cn。

因此操作的总成本是√n * cn。

因此算法的运行时间为O(n√n)

【问题讨论】:

  • "通过简单的数学" - 错误 :) 只是做一个 simple 替换...在下一个递归步骤中 n 是 n - √n
  • 是的,我意识到我的错误:P。但是现在有了正确的替换,我无法找到复杂性。

标签: algorithm recurrence


【解决方案1】:

您的总体想法是正确的,正如您提到的,树的高度最多为 √n,但您的答案中的错误部分是:“每个级别的操作成本也最多为 cn”。

树的宽度在每个级别增长两倍,直到深度 log log n,(意味着到某个点,树的宽度增长非常快),并且在特定行中的每个顶点你必须做 O (n) 操作,这意味着在每一行中,您的操作数比 cn 多(平均)。

如果要处理这个问题也不错考虑以下情况:

n=22s,并查看您的函数的行为。

【讨论】:

  • 连树的高度也不会是√n吧?该术语将减少如下:- T(n - √n), T(n - √n - √[n - √n]).... 而不是 T(n - √n) , T(n - 2 √n)....
  • @user2753551,是的,你是对的,我没有计算值(你应该精确计算递归树),但在最后一个节点是 O(n) 所以它不会影响总值(非常)。顺便说一句,我认为使用 2^2^s 作为 n,更容易找到解决方案,首先假设您的递归深度是 √n,然后尝试增强您的答案。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-11-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-08-05
相关资源
最近更新 更多