【问题标题】:Solving recurrence equation without the Master's Theorem在没有大师定理的情况下求解递归方程
【发布时间】:2015-04-22 17:12:12
【问题描述】:

所以,在之前的考试中,我被要求在不使用主定理的情况下求解以下递归方程:

T(n)= 9T(n/3) + n^2

不幸的是,我在考试中无法弄清楚,所以我使用 Master's Theorem 解决了它,以便知道答案(但是,当然,我没有得到这个问题的学分),现在我想知道如何在没有硕士定理的情况下解决它,因为在期末考试中,会有类似的问题。

如果有人能提供一步一步的解决方案(附解释),那就太好了,谢谢!

【问题讨论】:

  • 我投票结束这个问题,因为它不是关于编程的

标签: big-o recurrence master-theorem


【解决方案1】:

诀窍是不断扩大,直到你看到模式。

T(n) 
= 9 T(n/3) + n^2 
= 9(9T(n/3^2) + n^2/3^2) + n^2 
= 9^2 T(n/3^2) + 2n^2
= 9^2 (9 T(n/3^3) + n^2/3^4) + 2n^2
= 9^3 T(n/3^3) + 3n^2
= ...
= 9^k T(n/3^k) + kn^2

这一直持续到 k 达到 3^k = n。

假设T(1)=1,你得到 T(n) = n^2 +kn^2 = n^2 + log_3(n) n^2.

所以它看起来像T(n) = O(n^2 logn),除非我犯了错误。

【讨论】:

  • 哦,扩展现在更有意义了,谢谢!但是,我仍然坚持如何假设 T(1)=1。
  • 这是一个合理的假设,因为在这种情况下,所讨论的算法可能会在恒定时间内运行,即 T(1) = O(1)。
  • 啊,是的,这似乎是合理的。那么,你能对大多数递归关系做出这样的假设吗?
  • 除非问题中指定了另一个基本情况,否则我认为这个假设是可以的。
猜你喜欢
  • 2015-03-10
  • 1970-01-01
  • 2016-09-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多