求出递归T(n)= T(n / 1000)+ T(999n / 1000)+ cn?

时间:2013-10-29 21:57:18

标签: math big-o time-complexity recurrence

这种复发的解决方案是什么?

  

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

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

1 个答案:

答案 0 :(得分:0)

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

对于下面的图层,工作开始下降,因为n / 1000案例的分支将触底。但是,您可以通过假装树中的每个图层都执行Θ(n)工作来完成工作。在这种情况下,在999n / 1000个案例最低点之前会有log 1000/999 n层,因此你得到O(n log n)的上限,因为你有Θ(log n)做Θ(n)的各层都有效。

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

希望这有帮助!