p,np问题
2015-09-15 11:08
260 查看
多项式时间复杂度
所有形如a*n^k+b*n^(k-1)+c*n^(k-2)……都可记为O(n^k), n^k表示n的k次方,这样的复杂度称为多项式时间复杂度,若是时间复杂度形如k^n,k为大于1的常数,或n!,或更大的,就称为指数型时间复杂度。显然,当n足够大时,指数型时间比多项式要大得多的多。
非确定机
考虑另一种“计算机”,它可以“猜”。它的执行方式近乎神奇:它总是按照最好的情况“猜”。例如用它解决n皇后问题,只需要让它连续猜n次,就猜出了每个皇后的位置。非确定机的特点是:只要有一种猜法能满足要求,它一定能猜到。现在使用的计算机为确定机。目前这还只是一种虚构的机器,没有发现真实的机器可以达到这个要求。
p问题
对一个问题,凡是能找到计算复杂度可以表示为多项式的确定算法,这个问题就属于
P (polynomial) 问题。 所有能用多项式时间算法计算得到结果的问题,称为多项式问题,也就是P,所有绝对不可能用多项式时间求解的问题,称为指数型问题。
NP (non-deterministic polynomial)问题
NP 中的 N 是指非确定的(non-deterministic)算法,这是这样一种算法:(1)猜一个答案。(2)验证这个答案是否正确。(3)只要存在某次验证,答案是正确的,则该算法得解。 NP
(non-deterministic polynomial)问题就是指,用这样的非确定的算法,验证步骤(2)有多项式时间的计算复杂度的算法。即假使你得到了问题的解,我要验证你的解是否正确,我验证所花的时间是多项式,至于求解本身所花的时间是否是多项式我不管,可能有多项式算法,可能没有,也可能是不知道,这类问题称为NP问题。NP概念的奥妙在于,它躲开了求解到底需要多少时间这样的问题,而仅仅只是强调验证需要多少时间,显然,P肯定是NP,因为你既然能用多项式求解,就肯定能用多项式验证,但NP是否是P谁也确定不了。
问题的归约
大致就是这样:找从问题1的所有输入到问题2的所有输入的对应,如果相应的,也能有问题2的所有输出到问题1的所有输出的对应,则若我们找到了问题2的解法,就能通过输入、输出的对应关系,得到问题1的解法。由此我们说问题1可归约到问题2。
NP-Hard
有这样一种问题,所有 NP 问题都可以归约到这种问题,我们称之为 NP-hard 问题。
NP完全问题 (NP-Complete)
如果一个问题既是 NP 问题又是 NP-Hard 问题,则它是 NP-Complete 问题。可满足性问题就是一个 NP 完全问题,此外著名的给图染色、哈密尔顿环、背包、货郎问题都是 NP 完全问题。
从直觉上说,P<=NP<=NP-Complete<=NP-Hard,问题的难度递增。
所有形如a*n^k+b*n^(k-1)+c*n^(k-2)……都可记为O(n^k), n^k表示n的k次方,这样的复杂度称为多项式时间复杂度,若是时间复杂度形如k^n,k为大于1的常数,或n!,或更大的,就称为指数型时间复杂度。显然,当n足够大时,指数型时间比多项式要大得多的多。
非确定机
考虑另一种“计算机”,它可以“猜”。它的执行方式近乎神奇:它总是按照最好的情况“猜”。例如用它解决n皇后问题,只需要让它连续猜n次,就猜出了每个皇后的位置。非确定机的特点是:只要有一种猜法能满足要求,它一定能猜到。现在使用的计算机为确定机。目前这还只是一种虚构的机器,没有发现真实的机器可以达到这个要求。
p问题
对一个问题,凡是能找到计算复杂度可以表示为多项式的确定算法,这个问题就属于
P (polynomial) 问题。 所有能用多项式时间算法计算得到结果的问题,称为多项式问题,也就是P,所有绝对不可能用多项式时间求解的问题,称为指数型问题。
NP (non-deterministic polynomial)问题
NP 中的 N 是指非确定的(non-deterministic)算法,这是这样一种算法:(1)猜一个答案。(2)验证这个答案是否正确。(3)只要存在某次验证,答案是正确的,则该算法得解。 NP
(non-deterministic polynomial)问题就是指,用这样的非确定的算法,验证步骤(2)有多项式时间的计算复杂度的算法。即假使你得到了问题的解,我要验证你的解是否正确,我验证所花的时间是多项式,至于求解本身所花的时间是否是多项式我不管,可能有多项式算法,可能没有,也可能是不知道,这类问题称为NP问题。NP概念的奥妙在于,它躲开了求解到底需要多少时间这样的问题,而仅仅只是强调验证需要多少时间,显然,P肯定是NP,因为你既然能用多项式求解,就肯定能用多项式验证,但NP是否是P谁也确定不了。
问题的归约
大致就是这样:找从问题1的所有输入到问题2的所有输入的对应,如果相应的,也能有问题2的所有输出到问题1的所有输出的对应,则若我们找到了问题2的解法,就能通过输入、输出的对应关系,得到问题1的解法。由此我们说问题1可归约到问题2。
NP-Hard
有这样一种问题,所有 NP 问题都可以归约到这种问题,我们称之为 NP-hard 问题。
NP完全问题 (NP-Complete)
如果一个问题既是 NP 问题又是 NP-Hard 问题,则它是 NP-Complete 问题。可满足性问题就是一个 NP 完全问题,此外著名的给图染色、哈密尔顿环、背包、货郎问题都是 NP 完全问题。
从直觉上说,P<=NP<=NP-Complete<=NP-Hard,问题的难度递增。
相关文章推荐
- mysql查询拼接
- Android学习之调用系统应用打开文件
- Java面试题
- OC语言中的block数据类型
- Qt 学习之路 :自定义只读模型
- 自己写算法---java的堆的非递归遍历
- 新鸟入博
- 单词接龙
- struts2入门Demo示例
- Halcon学习之仿射变换3D1
- Yii权限管理工具Srbac使用小结
- 在gradle中配置umeng多渠道以及不同的umeng appkey的一个很好的参考
- Oracle Sql相关记录
- 图像滤镜艺术---挤压(Pinch)滤镜
- 关于easyui的窗口和tab页面不执行js说明
- scala学习笔记(六)包与引入
- CSS中background-attachment的值
- Android Studio更新升级方法
- 微信接口封装
- linux入门教程