算法将大小为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
我不确定我是否已经完成了所有这一切,因为当我完成这项工作时,我没有得到任何人,任何人都可以帮我弄清楚该做什么?
答案 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)。
希望这有帮助!