求出递增:T(n)= 3T(n / 2)+ n

时间:2013-09-15 21:23:54

标签: algorithm time-complexity computer-science recurrence

我需要找到n的递归解决方案,如果n为{1},则为{2}的幂,否则为T(n)= 1。

使用T(n)=3T(n/2)+n的替换我可以归结为:

n=2^m,S(m)=T(2^(m-1))

但我不知道怎么做到这一点。

4 个答案:

答案 0 :(得分:4)

这些类型的重复最容易通过主定理来解决算法分析,解释如下:

a 是一个大于或等于1的整数, b 是一个大于1的实数, c 是一个正数实数。鉴于表格再次出现 -

T(n)= a * T(n / b)+ n c 其中n> 1。 1,然后 n b 的幂,如果

  1. 记录 b a< c,T(n)=Θ(n c );
  2. 记录 b a = c,T(n)=Θ(n c * Log n);
  3. 记录 b a> c,T(n)=Θ(n log b a )。
  4. 您的复发的英文翻译

    在Master Theorem中要理解的最重要的事情是重复中提到的常数 a,b和c 。让我们自己重复 - 例如T(n)= 3T(n / 2)+ n。

    这种复发实际上是说它所代表的算法是这样的,

      

    (解决大小 n 问题的时间)=(解决 3 大小 n / 2 问题所花费的时间)+ < EM>名词的

    最后的 n 是合并那些 3 n / 2 大小问题的结果的成本。

    现在,直观地你可以理解:

    • 如果“解决 3 大小 n / 2 ”问题的成本比“ n ”更重,那么第一项将是确定总体复杂性;
    • 如果成本“ n ”的权重大于“解决 3 大小 n / 2 的问题”,则第二项将确定总体复杂性;和,
    • 如果两个部分的重量相同,那么解决子问题并合并它们的结果将会产生整体复合的重量。

    从以上三个直观的理解中,只出现了三个主定理的例子。

    在你的例子中,a = 3,b = 2和c = 1.所以它落在case-3中,因为Log b a = Log 2 3,这是大于1(c的值)。

    因此复杂性很简单 - Θ(n log b a )= Θ(n log 2 3功能

答案 1 :(得分:2)

答案 2 :(得分:2)

您可以使用Masters定理解决此问题,也可以通过以下方式打开递归树:

  • 在递归树的根处,您将得到n的作品。
  • 在第二阶段,树分为三个部分,每个部分的工作量为n / 2。
  • 继续前进,直到到达树叶。整个工作叶为:O(1)= O(n / 2 ^ k),当:n = 2 ^ k。
  • 请注意,每个步骤m都有3 ^ m个分割。
  • 现在,我们将使用几何级数和对数规则将所有步骤组合在一起。最后,您将获得: T(n)= 3T(n / 2)+ n = 2n ^(log3)-2n the calculation

答案 3 :(得分:1)

可以使用Masters theorem解决此类问题。

根据您的情况a = 3b = 2f(n) = n

所以c = logb(a) = log2(3),大于1,因此你属于第一种情况。所以你的复杂性是:

enter image description here