2017-10-04 71 views

回答

0

采取在每个递归级“做了有益的工作”是一些功能f(n)

enter image description here

让我们看到,当我们反复代回这本身会发生什么。


  1. T(n)方面:

enter image description here 现货的格局?

在递归深度m

  • enter image description hereT
  • 每个参数为T第一项递归调用是enter image description here
  • 中的第二项的范围从enter image description hereenter image description here,在步骤enter image description here

因此,在每个级别的所有T组术语的总和由下式给出:

enter image description here


  • f(n)术语:
  • enter image description here

    看起来很熟悉吗?

    f(n)条款只有一个递归级别背后T(n)条款。因此,调整之前的表现,我们得出以下的总和:

    enter image description here

    但是请注意,我们只用一个f -term开始,所以这和有一个无效的边缘情况。然而,这很容易纠正 - m = 1的特殊结果只是f(n)


    综合以上,并为每个递归级别求和f方面,我们到达(几乎)最终表现为T(n)

    enter image description here


    我们接下来需要发现当T第一加法组术语终止。假设那是n ≤ c

    最后呼叫直观地终止了最大的论点,即呼吁:

    enter image description here


    enter image description here

    因此最终表达式由下式给出

    回到原来的问题,什么是f(n)

    你还没有说这是什么,所以我只能假设,工作的每个呼叫完成量ϴ(n)(正比于数组长度)。因此:

    enter image description here

    你的假设是正确的。


    请注意,即使我们有更多的东西一般喜欢

    enter image description here

    哪里a一些常数不等于1,我们将仍然ϴ(n log n)作为结果,因为所述enter image description here术语在上面的方程抵消:

    enter image description here

    +0

    我终于得到它。谢谢!如果完成的工作量是log(n),而不是n(如在有序数组中搜索)?我想复杂性会落到O(n)。如何调整证明的最后部分? –

    +0

    更换'F(N)'和'的log(n)'。然而,解决方案变得不重要,所以我们可能需要做一些近似以得出最终答案。 – meowgoesthedog