O符号和一些数学

时间:2012-06-21 02:50:01

标签: algorithm math

刚开始学习算法。因此,练习是找出if语句总是/有时是真还是假。 Em,我的逻辑在哪里失败了?

f(n) != O(g(n)) and g(n) != O(f(n))

O符号是0 <= f(n) <= cg(n),其中c是常量。所以在这里不相等意味着:

f(n) > cg(n) and g(n) > cf(n)

如果f(n) = g(n) = 1,请说c = 1/2

1 > (1/2)*1 and 1 > (1/2)*1

在这种情况下确实如此。但这本书说这在特殊情况下是错误的。我误解了哪一部分?

1 个答案:

答案 0 :(得分:2)

对于某些常量,Big-O本身不是0 <= f(n) <= c g(n)。存在一个数字 c ,使得该关系适用于 n 的“足够大”的值。 (当我们将Big-O称为渐近符号时,这是我们所指的“渐近”,其他常见的是Big-Theta和Big-Omega。)

例如,假设有一个算法使用n元素对某些数据结构进行操作,并采用3n^2 + 7n + 18步骤。请拨打此f(n)。我们说这个表达式的Big-O是O(n^2)因为存在一个常量(在这种情况下大于3的任何值),所以对于n的所有“足够大”的值,{{1} }。