Algorithm 时间复杂性
如果我们的算法是orderAlgorithm 时间复杂性,algorithm,time-complexity,Algorithm,Time Complexity,如果我们的算法是orderN^2*logN,如果输入大小为64,则需要1毫秒;在输入大小为2048的情况下运行此算法是否需要2^10*(11/6)毫秒?我在这里使用的是正比例,这就是为什么它对我来说似乎有缺陷。最简单的解决方法可能是将2048除以64,将得到的数字插入复杂度方程,结果是输入大小2048的毫秒数。你试过用2048大小的输入集运行算法吗?花了多长时间?这些数字太小了,低阶项仍然有显著影响的可能性是不可忽略的。实际上,这是针对纸上的时间复杂性问题,我没有尝试过编写一个阶数为N^2*lo
N^2*logN
,如果输入大小为64,则需要1毫秒;在输入大小为2048的情况下运行此算法是否需要2^10*(11/6)毫秒?我在这里使用的是正比例,这就是为什么它对我来说似乎有缺陷。最简单的解决方法可能是将2048除以64,将得到的数字插入复杂度方程,结果是输入大小2048的毫秒数。你试过用2048大小的输入集运行算法吗?花了多长时间?这些数字太小了,低阶项仍然有显著影响的可能性是不可忽略的。实际上,这是针对纸上的时间复杂性问题,我没有尝试过编写一个阶数为N^2*logN的算法并尝试输入。不一定。时间复杂度通常用渐近表示法表示,当输入变得非常大时,它只告诉您极限行为。它并不是要告诉你任何关于“小”输入或固定(不变大小)或低阶成本的事情。它听起来很合理,所以答案是如果f(x)=x^2*logx,那么f(2^11/2^6)=f(2^5),对吗?时间复杂度通常不是这样表示/工作的O(N^2*log(N))
可能意味着,例如,算法对大小为N
的输入采取15n^2*log(27n)+573n+1000000000
步骤。如果忽略较低顺序的项?那么这条路对吗?因为我写了一些简单的程序,其中有3个嵌套循环,它们什么都不做,并且遵守了Robert解释的规则。例如,您的简单程序可能正好是N^3
,因此其缩放方式与N^3
完全相同。你会说它是O(N^3)
。然而,一个需要10*N^3+100*N^2+1000*N+10000
步数的程序也被称为O(N^3)
,但它的伸缩性并不完全像N^3
。对于大的N
,它将按N^3
的顺序进行缩放,并将缩放到N^3
所附的常数倍数10
,这在大O符号中也被忽略。对于较小的N
,其他术语更为重要,并且缩放不会明显。