常数时间,意思就是无论n是什么值运算所花时间都一样。 线性时间则是说多大n就花多少时间。 多项式时间则意味着随着n增大,n每增加1所花的时间增长越来越多。对于n^2-3这样一个多项式时间来说,n=2的时候可能只要花1的时间,甚至低于线性时间,但n=4的时候可能就要花13的时间了,可以想象再大一些这个数值会变得巨大。但是它又不及指数时间增长快(m^n),且m^n不能写成多项式形式,所以它又和多项式时间有区别。 而且,这个增长变速的特性是不受参数限制的。也就是说,无论你把m*n^2的m这个常量改成多么微小的一个值,总有一个n让这个多项式的值大于n,也就是说到这一刻多项式时间的算法耗时高于了线性时间的算法,之后耗时差距一定会越来越大。这一特性是多项式本身的性质决定的。类似,指数级时间也是如此,无论你将n的一个多项式中的所有常量设置到多大,总有一个n的指数值大于多项式值。所以我们说指数时间大于多项式时间,我们说多项式时间大于线性时间,我们还说线性时间大于常数时间,一定要注意这些大于并不是对于所有n的所有情况成立的,只是在说随着n增加前者一定超过后者。
博客摘录「 0716-常数时间,线性时间,多项式时间」2024年12月5日
最新推荐文章于 2025-04-05 09:58:12 发布