【发布时间】:2013-11-09 15:14:15
【问题描述】:
一直在学习分而治之,我很难理解一个概念。如果我们有一个排序数组并想做一些任务......我们得到公式
T(n) = a (n/b) * O(n)
如果我们使用b = 2(二叉树),这意味着每个子数组又被分成两个子数组......我们得到
T(n) = 2 (n/2) * O(n) --> 并且由主规则 running time = O(n * logn)
现在如果我们使用b = 3 (tri-nary tree) ,这意味着每个子数组又被分成三个子数组,我们得到
T(n) = 3 (n/3) * O(n) --> 表示running time = O(n * logn)
问题:
如果我们进行更多拆分,运行时间应该更长吗?
为什么不管我的树有多大,我的运行时间都一样?
【问题讨论】:
-
我想你的意思是
a (n/b) + O(n)(加号,不是*) -
加号不是*是什么意思
-
重复次数写得不好。我猜他们的正确预期版本是:
T(n)=aT(n/b)+O(n)、T(n)=2T(n/2)+O(n)和T(n)=3T(n/3)+O(n)。 -
这个问题跑题了。它更适合cstheory.stackexchange.com
标签: math optimization computer-science mathematical-optimization divide-and-conquer