关于big-O表示法的快速问题

时间:2010-10-14 00:26:17

标签: big-o

所以假设我们有一个函数,如6wn ^ 2 - 6wn + 6w,big-o表示法是O(n ^ 2)还是O(wn ^ 2)?问题集问题要求我用w和n来写Big-O形式的这个函数,所以我认为它是第二个但是我从来没有见过像O涉及2个术语的大O符号所以我有点困惑。

4 个答案:

答案 0 :(得分:1)

如果函数f(n)对于某个函数g(x)是O(g(n)),则意味着f(n)在g(n)之上界定渐近。基本上这意味着对于大的n值,g(n)将大于f(n)。

(更正式地,我们可以说f(n)是O(g(n))当且仅当存在一些N使得g(n)> f(n)对于所有n> N)


现在在你的情况下,让f(n)= 6wn ^ 2 - 6wn + 6w。然后f(n)既是O(n ^ 2)又是O(wn ^ 2)。这是因为两者都是f(n)的渐近上界。实际上,f(n)也是O(n ^ 2 ^ 2 ^ 2 ^ 2 ^ 2 ^ 2 ^ 2)。

然而,你给出的最佳答案可能是f(n)是O(wn ^ 2),因为那包括w,这就是问题所要求的。

请注意,在实践中,我们通常会从g(n)中删除所有系数和不重要的幂。原因是如果您呈现的是较低的上限而不是较高的上限,则可以获得有关函数的更多信息。例如,如果我告诉你我的快速搜索算法是O(n ^(1000!)),我根本不会告诉你。另一方面,如果我告诉你它是O(n ^ 2),我会给你更多信息 - 但两者都可能是正确的。

答案 1 :(得分:0)

你是对的,这是第二个。

答案 2 :(得分:0)

从技术上讲,两者都是正确的,但如果问题以w和n的形式提出来,那么它就是第二个。

答案 3 :(得分:0)

由于问题要求你用两者来写,第二个是假装的答案。

一般情况下,如果输入大小由两个变量定义且它们不相互依赖,则可以使用big-O表示法中的两个变量。

这个例子是Dijkstra's algorithm,其最差情况是 O(| E | + | V | log | V |)。输入图的大小由顶点数(V)和边数(E)定义。邻接矩阵表示最终得到E = V ^ 2,所以如果我们使用Dijkstra算法和邻接矩阵(不要这样做,这是一个坏主意)我们会用 O(V ^ 2 +)传达更好的信息。 | V | log | V |),与 O(V ^ 2)相同。