O(n Log n)是多项式时间吗?

时间:2013-11-09 22:33:50

标签: big-o

O(n Log n)是多项式时间吗?如果是这样,你能解释一下原因吗?

我对数学证明感兴趣,但我也很感激任何强烈的直觉。

谢谢!

4 个答案:

答案 0 :(得分:11)

是的,O(nlogn)是多项式时间。

来自http://mathworld.wolfram.com/PolynomialTime.html

  

如果数字,则算法在多项式时间内是可解的   完成给定输入的算法所需的步骤是   对于某些非负整数m,O(n ^ m),其中n是复数   输入。

来自http://en.wikipedia.org/wiki/Big_O_notation

  

f是O(g)iff

     

enter image description here

我现在将证明n log n对于某些m是O(n ^ m),这意味着n log n是多项式时间。

确实,取m = 2。 (这意味着我将证明n log n是O(n ^ 2))

对于证明,取k = 2。 (这可能更小,但不一定。) 存在n_0,使得对于所有较大的n,以下成立。

n_0 * f(n)< = g(n)* k

取n_0 = 1(这就足够了) 现在很容易看出

n log n< = 2n * n

log n< = 2n

n> 0(假设)

如果您对此不确定,请点击here

这个证明在乳胶数学模式下可能会好很多,但我认为stackoverflow不支持。

答案 1 :(得分:3)

因为它是多项式(n)的上限。 你可以看看图表并从那里开始,但我不能制定一个除此之外的数学证明:P

编辑:在维基百科页面中,“如果算法的运行时间在算法输入大小的多项式表达式的上限,则称算法是多项式时间。”

答案 2 :(得分:2)

至少不比多项式时间差。并且仍然不是更好:n< n log n< N * N

答案 3 :(得分:-1)

是。当n进入无穷大时,nlogn的极限是什么?直观地,对于大的n,n>> logn,你可以考虑n和nlogn~n主导的产品,这显然是多项式时间。更严格的证据是使用Inspired所做的三明治定理:

n ^ 1< nlogn< N ^ 2。

因此nlogn被多项式时间的序列限制在上面(和下面)。