简化递归关系c(n)= c(n / 2)+ n ^ 2

时间:2014-03-26 22:07:25

标签: math relation recurrence

我真的很困惑简化这种递归关系:c(n)= c(n / 2)+ n ^ 2.

所以我先得到了:

c(n / 2)= c(n / 4)+ n ^ 2 所以 c(n)= c(n / 4)+ n ^ 2 + n ^ 2 c(n)= c(n / 4)+ 2n ^ 2

c(n / 4)= c(n / 8)+ n ^ 2 所以 c(n)= c(n / 8)+ 3n ^ 2

我确实注意到了一种模式:

2提升到“n ^ 2”前面的任何系数的幂,给出了n结束的分母。

我不确定这是否会有所帮助。

我只是不明白如何简化这种递归关系,然后找到它的theta符号。

编辑:其实我刚刚完成了它,我得到了c(n)= c(n / n)+ n ^ 2 * lgn。

我认为这是正确的,但我不确定。另外,我怎么能找到那个theta符号呢?它只是theta(n ^ 2lgn)?

3 个答案:

答案 0 :(得分:2)

首先,在将n/2放在lhs上时,请务必在原始递归关系中出现{strong>替换 n c(n/2)

c(n/2) = c(n/4) + (n/2)^2

你的直觉是正确的,因为它是问题的一个非常重要的部分。在我们到达n之前,您可以将2除以1多少次?

让我们以8为例

8/2 = 4
4/2 = 2
2/2 = 1

你看到3,结果是log(8)

为了证明theta符号,查看master theorem可能会有所帮助。这是证明递归关系复杂性的非常有用的工具。

使用主定理案例3,我们可以看到

a = 1
b = 2
logb(a) = 0
c = 2
n^2 = Omega(n^2)
k = 9/10
(n/2)^2 < k*n^2
c(n) = Theta(n^2)

答案为Theta(n^2)的原因的直觉是你有n^2 + (n^2)/4 + (n^2)/16 + ... + (n^2)/2^(2n),它不会给我们logn n^2,而是越来越小n^2Š

答案 1 :(得分:2)

让我们回答更复杂的表格问题: r(n) = r(d(n)) + f(n)。对功能有一些限制,需要进一步讨论,例如:如果xd的修正点,则f(x)应为0,否则无法解决问题。在您的具体情况下,这个条件得到满足。

重新排列等式,我们得到r(n) - r(d(n)) = f(n),我们得到的直觉是r(n)r(d(n))都是某些术语的总和,但r(n)还有一个术语比r(d(n))f(n)为差异的原因。另一方面,r(n)r(d(n))必须具有相同的&#39;形式&#39;,因此前面提到的总和中的术语数量必须是无限的。

因此,我们正在寻找一个伸缩总和,其中r(d(n))的术语取消r(n)的所有术语:

  r(n)    = f(n) + a_0(n) + a_1(n) + ...
- r(d(n)) =      - a_0(n) - a_1(n) - ...

后者意味着

  r(d(n)) =        a_0(n) + a_1(n) + ...

只需将d(n)替换为n到[{1}}的等式中,我们就得到:

r(n)

所以选择 r(d(n)) = f(d(n)) + a_0(d(n)) + a_1(d(n)) + ... a_0(n) = f(d(n))等等:a_1(n) = a_0(d(n)) = f(d(d(n)))(彼此a_k(n) = f(d(d(...d(n)...)))k+1),我们就会得到正确的答案溶液

因此,一般来说,解决方案的格式为d,其中r(n) = sum{i=0..infinity}(f(d[i](n)))表示函数d[i](n)d(d(...d(n)...))函数的迭代次数i

对于您的案例dd(n)=n/2,您可以使用几何系列的标识以封闭形式获得解决方案。最终结果是f(n)=n^2

答案 2 :(得分:0)

前进硕士定理。

T(n) = aT(n/b)+n^klog^p

where a>0 b>1 k>0 p=real number.

case 1: a>b^k

         T(n) = 0(n^logba)  b is in base.
case 2 a=b^k

 1. p>-1 T(n)  than T(n)=0(n^logba log^p+1)
 2. p=-1 Than T(n)=0(n^logba logn)
 3. p<-1 than T(n)=0(n^logba)

case 3: a<b^k

 1.if p>=0 than T(n)=0(n^k log^p n)
 2 if p<0 than T(n)=O(n^k)

forgave常量bcoz常量不会改变时间复杂度或不变处理器到处理器。(即n / 2 == n * 1/2 == n)