特定分而治之算法的复杂性

时间:2013-10-06 07:45:24

标签: algorithm math complexity-theory big-o divide-and-conquer

算法将大小为n的问题分解(划分)为b个子问题,每个子问题的大小为n / b,其中b是整数。分解成本为n,C(1)= 1。使用重复替换显示,对于2≥b的所有值,算法的复杂度为O(n lg n)。

这是我用于初始方程C(n)= C(n / b)+ n的方法 在取代的k步之后,我得到C(n)= C(n / b ^ k)+ n [总和(从i = 0到k-1)的(1 / b)^ i]

k = log(base b)n

我不确定我是否已经完成了所有这一切,因为当我完成这项工作时,我没有得到任何人,任何人都可以帮我弄清楚该做什么?

1 个答案:

答案 0 :(得分:1)

我认为你的复发是错误的。由于存在大小为n / b的b个单独的子问题,因此在C(n / b)项前面应该存在b的系数。重复应该是

  

C(1)= 1

     

C(n)= b C(n / b)+ O(n)。

使用主定理,这解决了O(n log n)。另一种看待这种情况的方法是,在将重复次数扩展k次后,我们得到

  

C(n)= b k C(n / b k )+ kn

当k = log b n时终止。插入k的值并简化产生的值为O(n log n)。

希望这有帮助!