大哦符号表示所有g(n)都是元素c.f(n),O(g(n))对于某些常数c。
我一直想知道并且从未真正理解为什么我们需要这个任意常数乘以边界函数f(n)来得到我们的界限?
另外,如何判断这个常数应该是多少?
答案 0 :(得分:3)
与g(n)相比,常数本身并不表征f(n)的限制行为。
它用于数学定义,它强制存在常数M,以便
如果存在这样的常数,那么你可以说f(x)是一个O(g(x)),这是分析算法时常用的符号,你只是不关心哪个是常数而只是操作本身的复杂性。通过确保 M | g(x)| 是 f(x)的上限,常量能够使该方法正确。
如何找到该常数取决于f(x)和g(x),并且必须证明该数学点以确保f(x)具有ag(x)big-o所以没有一般规则。请看this示例。
答案 1 :(得分:0)
考虑功能
f(n) = 4 * n
调用此函数O(n)
是否有意义,因为它与g(n) = n
“一样快”增长。
但是,如果没有定义O
,则无法找到n0
,例如所有n > n0, f(n) <= n
的{{1}}。这就是为什么你需要不变,实际上是从条件
4 * n <= c * n for all n > n0
你可以获得n0 == 0, c == 4
。