数据结构。 f(x)和g(x)

时间:2012-11-20 02:16:04

标签: algorithm complexity-theory

我可以理解算法中的运行时复杂性。 但是当我们知道算法运行时复杂度为O(n)时,有点混淆。

我们可以告诉f(n)< G(N)..

究竟什么是g(n)..?

抱歉新手问题..

感谢。

2 个答案:

答案 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变大时的行为。