Big o 当证明算法的大Oh时,找到C和N的简单方法是什么?

Big o 当证明算法的大Oh时,找到C和N的简单方法是什么?,big-o,Big O,我开始学习大Oh符号 对于给定函数,查找C和N0的简单方法是什么 比如说: (n+1)5或n5+5n4+10n2+5n+1 我知道Big Oh的正式定义是: 设f(n)和g(n)是映射函数 将非负整数转换为实数。 如果有,我们说f(n)是O(g(n)) 是一个实常数c>0和 整数常量N0>=1 使得f(n)N0 我的问题是,选择c和N0的值的好的、可靠的方法是什么 对于(n+1)5以上的给定多项式,我必须证明它是O(n5)。那么,我应该如何选择我的c和N0,这样我就可以在没有猜测的情况下使上述定

我开始学习大Oh符号

对于给定函数,查找C和N0的简单方法是什么

比如说:

(n+1)5或n5+5n4+10n2+5n+1

我知道Big Oh的正式定义是:

设f(n)和g(n)是映射函数 将非负整数转换为实数。 如果有,我们说f(n)是O(g(n)) 是一个实常数c>0和 整数常量N0>=1 使得f(n)N0

我的问题是,选择c和N0的值的好的、可靠的方法是什么


对于(n+1)5以上的给定多项式,我必须证明它是O(n5)。那么,我应该如何选择我的c和N0,这样我就可以在没有猜测的情况下使上述定义为真?

你可以检查当n->+infitity时,lim abs(f(n)/g(n))是什么,这会给你常数(在你的例子中,g(n)是n^5,f(n)是(n+1)^5)


请注意,对于x->+无穷大,Big-O的含义是,如果f(x)=O(g(x)),那么f(x)“增长不超过g(x)”,因此您只需证明lim abs(f(x)/g(x))存在且小于+无穷大。

您可以通过将多项式中每个项的系数相加来选取常数c。自


|n5+5n4+0n3+10n2+5n1+1n0 |这将在很大程度上取决于您考虑的函数。然而,对于给定的一类函数,您可能会想出一个算法


例如,多项式:如果将C设置为大于多项式前导系数的任何值,则可以求解N0。

通常在不选取具体的C和N0的情况下进行证明。不是证明f(n) 例如,要证明n3+n是O(n3),请执行以下操作:


(n3+n)/n3=1+(n/n3)=1+(1/n2)<2表示任何n>=1。在这里,你可以选择任意一个C>=2,其中N0=1。

在你理解了其中的魔力之后,你还应该知道big-O是一种符号。这意味着你不必在你解决的每一个问题中寻找这些系数,一旦你确定你理解了这些字母背后的含义。你应该按照符号的规则来操作符号

没有简单的通用规则来确定N和c的实际值。你应该回想你的微积分知识来解决它

“大O”的定义与此有关。它使c满足:

c>lim | f(n)/g(n)|,给定n个逼近+无穷大


如果序列是上界的,它总是有一个极限。如果不是,那么f就不是O(g)。在您选择了具体的c之后,您将很容易找到合适的N。

我认为您希望在定义的末尾添加“for all N>=N0”。@Ambouroko,非常正确。修正了,惊人的解释