【问题标题】:Solving the recurrence T(n) = T(n / 1000) + T(999n/1000) + cn?求解递归 T(n) = T(n / 1000) + T(999n/1000) + cn?
【发布时间】:2013-10-29 21:57:17
【问题描述】:

这种重复的解决方法是什么?

T(n) = T(n/1000) + T(999n/1000) + cn.

我认为它的 O(n log n) 因为每个级别完成的工作将是 cn 并且树的高度将 log n 到 1000/999 的基数,但我不确定推理是否已验证。对吗?

【问题讨论】:

  • 高度会改变还是登录到1000/999的底数

标签: math big-o time-complexity recurrence


【解决方案1】:

需要注意的是,对于第一个 log1000n 层,递归的所有分支都将处于活动状态(即 n / 1000 个案例的分支不会触底)和每层完成的工作将是 Θ(n)。这为您提供了运行时的即时下限为 Ω(n log n),因为有 Θ(log n) 层每个都在做 Θ(n) 工作。

对于低于此的层,工作开始下降,因为 n / 1000 案例的分支将触底。但是,您可以通过假设树中的每一层都会做 Θ(n) 的工作来限制所做的工作。在这种情况下,在 999n/1000 情况触底之前会有 log1000/999 n 层,所以你得到 O(n log n) 的上限,因为你有 Θ(log n)做 Θ(n) 的层每个都起作用。

由于完成的工作是 Ω(n log n) 和 O(n log n),因此运行时间是 Θ(n log n)。

希望这会有所帮助!

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-12-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-11-08
    • 2019-04-15
    相关资源
    最近更新 更多