Math 渐近复杂性常数,为什么是常数?

Math 渐近复杂性常数,为什么是常数?,math,computer-science,big-o,Math,Computer Science,Big O,大oh符号表示所有g(n)都是某个常数c的元素c.f(n),O(g(n)) 我一直在想为什么我们需要这个任意常数和边界函数f(n)相乘来得到我们的边界 还有,我们如何决定这个常数应该是多少?与g(n)相比,常数本身并不能表征f(n)的极限行为 它用于数学定义,它强制一个常数M的存在,使得 如果存在这样一个常数,那么你可以说f(x)是一个O(g(x)),这是分析算法时常用的表示法,你只关心操作本身的复杂性,而不关心哪个是常数。该常数可以通过确保M | g(x)|是f(x)的上界来纠正不平衡 如何

大oh符号表示所有g(n)都是某个常数c的元素c.f(n),O(g(n))

我一直在想为什么我们需要这个任意常数和边界函数f(n)相乘来得到我们的边界


还有,我们如何决定这个常数应该是多少?

与g(n)相比,常数本身并不能表征f(n)的极限行为

它用于数学定义,它强制一个常数M的存在,使得

如果存在这样一个常数,那么你可以说f(x)是一个O(g(x)),这是分析算法时常用的表示法,你只关心操作本身的复杂性,而不关心哪个是常数。该常数可以通过确保M | g(x)|是f(x)的上界来纠正不平衡

如何找到常数取决于f(x)和g(x),这是必须证明的数学点,以确保f(x)有一个g(x)big-o,因此没有一般的规则。请看示例。

考虑函数

f(n) = 4 * n
调用此函数
O(n)
是否有意义,因为它的增长速度与
g(n)=n
一样快。 但是如果在
O
的定义中没有常数,你就无法找到像所有
n>n0,f(n)那样的
n0
4 * n <= c * n for all n > n0