【问题标题】:solving time complexity of a recurrance relation?解决递归关系的时间复杂度?
【发布时间】:2017-02-01 03:20:54
【问题描述】:

我正在做一个作业问题,需要我比较nlogn 和下面的重复出现。就像nlogn 是下限、上限还是严格受限于下面的时间复杂度。

   | 5             n = 1
 --| 2T(n/2) + n   n > 1

我认为 2T(n/2) + n 减少到 nlogn 但我不确定如何解决递归关系..

感谢您的帮助。

【问题讨论】:

  • 你试过递归树吗?
  • 不太确定。我的书有很多离散数学的证明
  • 递归树也应该给出结果。你可以很容易地找到结果,因为这是一个流行且简单好看的重复出现

标签: algorithm time-complexity complexity-theory


【解决方案1】:

解决复发问题(我希望我做对了):

2T(n/2) + n
2[2T(n/4) + n/2] + n
2^2*T(n/2^2) + 2n
you find the pattern if you keep on substituting new n
2^k*T(n/(2^k)) + kn
at this point you solve for closed form using the base case then n = 1
so for n/n = 1, we set 2^k = n, so k = logn
sub in k
2^(logn) * T(1) + (logn) * n

note that 2^logn = n with base 2 and T(1) = 5 for the base case
so we obtain 5n + nlogn
5n + nlogn is just O(nlogn)

因为我们都有 O(nlogn),所以它是一个紧界或大 Theta。

或者,您也可以使用主定理轻松扣除复杂性。如果你已经学会了。

a = 2
b = 2
c = 1

以上满足情况2,即Θ(nlogn),参考wikihttps://en.wikipedia.org/wiki/Master_theorem

【讨论】:

    【解决方案2】:

    简答 - 您可以(并且应该)使用“主定理”来找到此递归的 O 表示法。

    主定理是解决重复问题的便捷工具,它应该是您的首选,因为您可以快速获得结果。你可以亲身体验一下这个exercise

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2014-04-02
      • 2019-07-28
      • 2017-01-25
      • 2015-09-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多