确定重现的BigO

时间:2010-10-30 23:50:31

标签: algorithm function big-o discrete-mathematics

T (1) = c    
T (n) = T (n/2) + dn

我如何快速确定BigO?

4 个答案:

答案 0 :(得分:2)

使用重复的后置替换并找到模式。示例here

答案 1 :(得分:2)

我不完全确定dn是什么,但假设你的意思是常数乘以n

According to Wolfram Alpha,递归方程解决方案:

f(n) = f(n / 2) + cn

是:

f(n) = 2c(n - 1) + c1

这会使O(n)

答案 2 :(得分:1)

嗯,关系的重复部分是T(n / 2)部分,它实际上每次将n的值减半。

因此你需要约。 (log2 n)步骤到达终止条件,因此算法的总成本是O(log2 n)。您可以忽略dn部分,因为它是每个步骤的恒定时间操作。

注意,如上所述,问题不一定会终止,因为重复减半n的任意值不可能精确地达到1.我怀疑T(n / 2)部分实际上应该读取T(floor(n / 2))或类似的东西,以确保终止。

答案 3 :(得分:0)

使用硕士定理 见http://en.wikipedia.org/wiki/Master_theorem

顺便说一下,你的重复的渐近行为是O(n),假设d是正的并且足够小于n(问题的大小)