【发布时间】:2015-07-29 00:21:11
【问题描述】:
我知道当递归关系的形式为:
T(n) = a*T(n/b) + f(n)
我们知道以下内容:
-
a是算法划分原问题的子问题个数 -
b是太阳问题的大小,即n/b - 最后..
f(n)包含划分问题和合并子问题结果的成本。
现在我们找到一些东西(我会回到术语“某物”) 我们有 3 个案例要检查。
-
f(n) = O(n^log(b)a-ε)对于某些ε>0的情况;那么T(n)就是O(n*log(b)a) -
f(n) = O(n^log(b)a)的情况;那么T(n)就是O(n^log(b)a * log n)。 - 如果
n^log(b)a+ε = O(f(n))表示某个常数ε > 0,如果a*f(n/b) =< cf(n)表示某个常数c < 1和几乎所有 n,然后是T(n) = O(f(n))。
好吧,我想起了一些东西。我们如何使用一般示例(即使用变量而不是实际数字)来确定算法属于哪种情况?
例如。考虑以下几点:
T(n) = 8T(n/2) + n
所以a = 8、b = 2 和f(n) = n
那我将如何进行?我如何确定哪种情况?虽然函数 f(n) = some big-Oh notation 这两件事有什么可比性? 以上只是一个例子,向您展示我不明白的地方,所以问题是笼统的。
谢谢
【问题讨论】:
标签: algorithm divide-and-conquer recurrence