Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/jquery-ui/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
关于big-O符号的快速问题_Big O - Fatal编程技术网

关于big-O符号的快速问题

关于big-O符号的快速问题,big-o,Big O,假设我们有一个函数,比如6wn^2-6wn+6w,那么大o表示法是o(n^2)还是o(wn^2)?习题集要求我用w和n的形式写出这个函数,所以我认为它是第二个,但我从未见过像这样包含两个术语的大O符号,所以我有点困惑。你是对的,它是第二个。你是对的,它是第二个。从技术上讲,这两个都是正确的,但是,如果问题是从w和n两个方面来考虑的,那么它就是第二个问题。从技术上来说,两者都是正确的,但是如果问题是从w和n两个方面来考虑的,那么它就是第二个问题。如果一个函数f(n)对于某个函数g(x)是O(g(n

假设我们有一个函数,比如6wn^2-6wn+6w,那么大o表示法是o(n^2)还是o(wn^2)?习题集要求我用w和n的形式写出这个函数,所以我认为它是第二个,但我从未见过像这样包含两个术语的大O符号,所以我有点困惑。

你是对的,它是第二个。

你是对的,它是第二个。

从技术上讲,这两个都是正确的,但是,如果问题是从w和n两个方面来考虑的,那么它就是第二个问题。

从技术上来说,两者都是正确的,但是如果问题是从w和n两个方面来考虑的,那么它就是第二个问题。

如果一个函数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^2^2)

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

注意,在实践中,我们通常从g(n)中去掉所有系数和不重要的幂。原因是如果你给出一个低上界而不是一个高上界,你会得到更多关于函数的信息。例如,如果我告诉你我的快速搜索算法是O(n^(1000!),我根本没有告诉你太多。另一方面,如果我告诉你它是O(n^2),我会给你更多的信息——但两者都可能是正确的

对于某些函数g(x),如果函数f(n)是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^2^2)

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


注意,在实践中,我们通常从g(n)中去掉所有系数和不重要的幂。原因是如果你给出一个低上界而不是一个高上界,你会得到更多关于函数的信息。例如,如果我告诉你我的快速搜索算法是O(n^(1000!),我根本没有告诉你太多。另一方面,如果我告诉你它是O(n^2),我会给你更多的信息——但两者都可能是正确的

既然问题要求你用这两个词来写,那么第二个就是假装的答案

一般来说,如果输入大小是由两个变量定义的,并且它们彼此不依赖,那么在big-O表示法中有两个变量是可以的


这方面的一个例子是,最坏情况下的性能为O(| E |+| V | log | V |)。输入图形的大小由顶点数(V)和边数(E)定义。邻接矩阵表示法最终使E=V^2,因此,如果我们将Dijkstra算法与邻接矩阵一起使用(不要这样做,这是个坏主意),我们将用O(V^2+| V | log | V |)传递更好的信息,这与简单的O(V^2)是一样的,第二个是假装的答案

一般来说,如果输入大小是由两个变量定义的,并且它们彼此不依赖,那么在big-O表示法中有两个变量是可以的

这方面的一个例子是,最坏情况下的性能为O(| E |+| V | log | V |)。输入图形的大小由顶点数(V)和边数(E)定义。邻接矩阵表示法最终使E=V^2,因此,如果我们将Dijkstra算法与邻接矩阵一起使用(不要这样做,这是个坏主意),我们将用O(V^2+| V | log | V |)传递更好的信息,这与简单的O(V^2)相同