递归关系。请告诉我哪里出错了

时间:2013-10-29 10:48:00

标签: algorithm recurrence

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

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

对于所有n> 4我们有,√n<第(n-√N)

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

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

因此上面树的高度是√n。

每个级别的运营成本也是最高的。

因此,该操作的总成本为√n* cn。

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

1 个答案:

答案 0 :(得分:1)

你的一般想法是正确的,正如你所提到的那样,树的高度最多为√n,但你答案中的错误部分是:“每个级别的操作成本也是最多的。”

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

如果你想接近这个问题,可以考虑以下情况:

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