我使用递归树解决此重现问题。每个级别的总费用为n,树的深度介于log (n) base 4
和log (n) base 4/3
之间。直观地说,我希望解决方案最多可以是每个级别的成本乘以成本。 O(cn log (n) base 4/3) = O(n log n)
。我想知道我是否解决了这个问题,我的解决方案是否正确?
答案 0 :(得分:2)
这样想:对于递归树的第一个log 4 n层,这些层的工作总和将是cn,因为如果总结所有层的总大小子问题,它应该总n,所以总工作是cn。这意味着完成的工作是Ω(n log n)。
你可以通过假装在树的每一层完成的工作总和为O(n)来上限完成工作(当你在树中越来越低时,它实际上会下降,所以这是一个上限),高度为log 4/3 n。这给出了O(n log n)的工作的上界。
由于完成的工作是Ω(n log n)和O(n log n),所以完成的工作更恰当Θ(n log n)。
希望这有帮助!
答案 1 :(得分:0)
编辑:错过了OP并回答了错误的解决方案,下面是我的精心尝试
直观地说,你是对的。
对于更正式的方法,您可以用数学方法进行证明。
魔术是:Akra-Bazzi theorem这是主定理的更通用版本
对于关系T(n) = T(n/4) + T(3n/4) + cn
我们得到g(n) = cn, k = 2, a1 = a2 = 1, b1 = 1/4, b2 = 3/4
根据定理,我们必须求解a1b1^p + a2b2^p = 1
的p,这显然是p = 1
然后T(n) = O(n^p * (1+integration(1/n dn))) = O(n*(1+log(n))) = O(nlogn)
符合我们的猜测