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