我可以理解算法中的运行时复杂性。 但是当我们知道算法运行时复杂度为O(n)时,有点混淆。
我们可以告诉f(n)< G(N)..
究竟什么是g(n)..?
抱歉新手问题..
感谢。
答案 0 :(得分:1)
让f(x)
和g(x)
是在实数的某个子集上定义的两个函数。一个人写道
f(x) = O(g(x)) as x -> infinity
当且仅当存在正实数M
和实数x0
时
|f(x)| <= M |g(x)| for all x > x0
通常,f(x)
是算法在x
输入比例上的实际成本(例如执行步数),而g(x)
比f(x)
简单得多可用于表征f(x)
的复杂性行为。
答案 1 :(得分:0)
我同意f(x)和g(x)只是一对函数的评论。 f(x)= O(g(x))告诉我们它们以特定的方式相关。
经常使用的方法是使f(x)有些复杂,难以表征的功能。 g(x)是一个更简单的函数。知道f(x)= O(g(x))让我们感觉到随着x的增加f(x)的界限。
计算机科学的应用是使f(x)作为输入大小x的函数的程序行为的度量。例如,f(x)可能是排序x元素数组时的最大比较次数,或某些算法中使用的内存字数。 f(x)通常会非常混乱。
我们可以通过找到一个漂亮,干净的函数g(x)来使事情更简单,这样我们就可以证明f(x)= O(g(x))。
例如,对于小于30的输入,某些算法可能会在其输入中为每个元素执行35次操作或10次操作,或者对于所有较大的输入,每个元素需要1000次操作。
如果我们注意到f(x)= O(x),那么比较算法要简单得多,也更容易。
注意,这与说f(x)&lt; G(X)。在我的例子中,对于大x,f(x)是g(x)的千倍。它只是意味着g(x)捕获f(x)在x变大时的行为。