多项式时间

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/qq_38250032/article/details/81586329

前言

在密码学中经常需要对算法的时间复杂度进行评估,需要掌握相关知识。在上一篇文章中提到的概率多项式时间图灵机这里也会解释。

1.算法效率的评估方法:

算法的效率主要由以下两个复杂度来评估: 
时间复杂度:评估执行程序所需的时间。 
空间复杂度:评估执行程序所需的内存空间。

时间复杂度指的是随着问题规模的扩大,解决所需的时间的增长速度,一般情况下,时间复杂度问题相比空间复杂度问题更难解决,算法研究的主要也是时间复杂度,不特别说明的情况下,复杂度就是指时间复杂度。

2.时间复杂度

3.多项式时间

多项式时间指的是一个算法的复杂度,在时间复杂度的计算中常用的时间复杂度按照耗费的时间从小到大依次是:O(1)<O(logn)<O(n)<O(nlogn)<O(n²)<O(n³)<O(2ⁿ)<O(n!)。只要算法的复杂度不会是最后两个指数或者阶乘型,前面的O(1)到O(n^m)(m为常数)任意组合都算是多项式级的复杂度,它们的规模n都出现在底数位置;而O(2ⁿ),O(n!)型 复杂度,就是非多项式级的,问题规模较大时,计算机也很难算出结果。所以我们一般会选择多项式级复杂度的算法。

4.确定性与概率性

如果对于两次解决同一个问题,得到的答案是相同的,那么就叫做确定性,如果答案可能不同,叫做概率性。例如两次输入1,如果两次输出都是2,那么就是确定性的;如果两次输出一次是2,一次是3,或者是其他答案,就是概率性的。

5.P问题与NP问题

(这里的P是指Polynomial,即多项式)

P问题:只要问题存在确定性多项式级复杂度的解决算法,就称之为P问题。(比较好算)

NP问题:不存在确定性多项式级复杂度的解决算法,但是存在多项式时间的算法来验证某个答案是否正确,就称之为NP问题。(不好算,但是对给出的答案可以很快的验证对不对)

还有NPC问题,有兴趣自己查一下。

很明显,P问题是包含于NP问题的,但P是否等于NP,即P=NP,是一个尚无法证明的问题。

6.概率多项式时间图灵机

到这里就很容易理解什么是概率多项式时间图灵机了,就是一个多项式级的、概率性的算法。

展开阅读全文

没有更多推荐了,返回首页