那传说中的P、NP以及NPC问题

    (这里只是自己的一些总结)

在讲这几个问题之前,有几个东西是必须要说的,包括时间复杂度、空间复杂度、图灵机什么的。那么我们就慢慢来一一说来。

   图灵机:图灵机其实就是一个计算模型,是由图灵提出来的。图灵机号称可以模拟实际计算机的所有计算行为,计算能力还超过现有的计算机。但是还是有图灵机无法做到的事情,就好像计算机并不能处理所有的事情一样。

定义:

1)有一个无限长的带子作为无限存储。

2)有一个读写头,能在带子上读、写和左右移动。

3)有一套控制规则,根据当前机器所处的状态以及当前读写头所指的格子符号来确定下一步的动作,另机器进入一个新的状态。

4)一个状态寄存器,用来保存图灵机当前所处的状态。

工作方式:

在图灵机的计算过程中,当前状态、当前带内容和读写头当前位置组合一起称为图灵机的格局。包括起始格局、接受格局、拒绝格局。

图灵机读取纸袋上的内容,结合读写头的当前状态,根据一组控制规则决定下一步的动作。可以认为这是一台理想的,能够处理所有的“人类计算”。

       我们可以想象,一个问题如果在理论上是可解的,但是计算它所需要的时间和空间的资源是我们无法承受的,那么这个问题对我们来说就是没有用的。当然这里说明一个问题是否理论上可解,用到图灵机什么的一箩筐东西,这里就不说明这些问题。

时间复杂度: 对于一个算法的时间复杂度一般采用大O表示,这里大O我就具体说明了,就是说明一个算法的时间复杂度的函数O(t(n))。运行时间是多项式时间的算法随着问题规模的不断上升,时间变化不大,但是如果一个算法的时间是指数形式的话,就不可理喻了。典型的指数时间算法源于通过搜索解空间来求解问题,这称为蛮力搜索。当然很多算法可以通过一些技巧避免蛮力搜索,但是还是有一些问题,我们是无能为力的,至今没有找到在多项式时间求解该问题的算法。

P类问题:

      简单的认为,P问题就是可以在多项式时间被图灵机判定的语言类。这里又涉及到图灵机,那么我们可以简单的认为,如果一个算法可以在多项式时间内求解,那么就可以认为它是P类问题。这样你就会感觉好多算法都是P类问题,对!没错!如何证明一个问题是否是P类问题呢?只要它满足以下两个条(证明它在多项式时间内完成)

1)运行步骤数要有多项式上届时间

2)每一步都要保证它可以由合理的确定模型在多项式时间内完成,其实就是每一步的求解过程也是多项式时间

这样步奏是多项式时间的,而每一步也是多项式时间,整合起来整个算法还是多项式时间的。

想PATH问题就是属于P

PATH的一个多项式时间算法M运行如下:

M="对于输入<G,s,t>,G是包含结点s和t的有向图:

(1)在结点s上做标记。

(2)重复下面步骤3,直到不再有结点被标记。

(3)扫描G的所有边,如果找到一条边(a,b),a被标记而b没有,那么标记b

(4)若t被标记,则接受否则拒绝"

分析上面算法,可以得到步奏1和4只执行1步,步骤3最多执行m次,所以用到的步骤数是m+1+1。每一步都可以在合理的多项式时间内完成,所有PATH是P类问题。

NP类问题:

      这里NP并不是指Not P的意思!实际上P是属于NP的,但是NP是否等于P我们目前还不懂。

NP问题指的是,这个算法可以在多项式时间内可验证,什么意思呢?我们知道对于P类问题,可以在多项式时间内求解出来,但是NP问题不行。可以这样理解,NP虽然不能在多项式时间内被求解,但是如果给出这个问题的某个解,那么我们可以在多项式时间内验证这个解是不是这个问题的解。听起来好像有点那这有什么用的感觉?比如求汉密尔顿路径问题(HAMPATH),我们只能在指数时间内求出这个解,但是这时候我们假设我们可以先随机猜测出一条路径序列出来,那么我们就可在多项式时间内验证这个解是不是对的。常常也称为非确定型多项式时间

简单的的区分P和NP问题:

对于P问题,我们可以有个算法能够在多项式时间内求得解。但是对于NP问题,就不可以了,求解某个问题可能需要指数的时间。NP问题也可以认为,我们可以在多项式时间内验证一个解,比如说我可以随机猜测一个解,如果我可以在多项式时间内验证说明这个解是不是问题的解,那么这个问题就是NP问题。

NPC类问题:

说到NP完全问题,那么就需要说到可规约这个问题。

规约:当问题A规约到B问题时,B的有效解就可以用于求解问题A了。

NPC指定是所有的NP问题都可以多项式时间规约到某一类问题,那么这某一类问题就是所谓的NPC问题。

转载于:https://www.cnblogs.com/GuoJiaSheng/p/4231094.html

那传说中的P、NP以及NPC问题相关推荐

  1. P、NP、NPC和NP-Hard相关概念

    P.NP.NPC和NP-Hard相关概念的图形和解释 一.相关概念 P: 能在多项式时间内解决的问题 NP: 不能在多项式时间内解决或不确定能不能在多项式时间内解决,但能在多项式时间验证的问题 NPC ...

  2. 【计算理论】计算理论总结 ( P 、NP 、NPC 总结 ) ★★

    文章目录 一.P 类 二.NP 类 三.NPC 类 ( NP 完全 ) 四.P .NP .NPC 三者关系 一.P 类 P\rm PP 类 : ★ 所有 能够被 确定性 单个带子图灵机 , 在 多项式 ...

  3. P、NP、NPC(NP完全问题)、NP-hard问题概述

    P.NP.NPC(NP完全问题).NP-hard问题概述 一.概念总结 1.P问题: 能在多项式时间内解决的问题 2.NP问题: 不能在多项式时间内解决或不确定能不能在多项式时间内解决,但能在多项式时 ...

  4. P、NP、NPC问题

    转自:http://blog.csdn.net/wwy851/article/details/6082007 最近看了很多关于P.NP和NPC问题的文章,但是都不是很系统全面,很多叙述的也不太清楚,有 ...

  5. P和NP以及NPC、NP-Hard问题

    文章目录 P问题 NP问题 NP-C问题(NP-Complete) NP-Hard 规约 欢迎大家访问我的GitHub博客 https://lunan0320.cn **p代表Polynomial,N ...

  6. 【算法】P问题 NP问题 NPC问题 NPH问题的定义与理解

    一.前言 二.多项式 三.时间复杂度 四.P问题 五.NP问题 六.NPH问题,NPC问题 七.已经被证明的NPC问题 八.一些具体问题的总结 九.总结 一.前言 在讨论算法的时候,常常会说到这个问题 ...

  7. (数学)P、NP、NPC、NP hard问题

    概念定义: http://m.elecfans.com/article/757041.html https://www.cnblogs.com/AndyJee/p/5048556.html P问题:能 ...

  8. P、NP、NPC 问题解释

    P.NP.NPC 问题解释 行文目的 什么是多项式算法 什么是P问题 什么是NP问题 NP问题与P问题的关系 NPC问题 什么是约化(Reducibility) 什么是NPC问题 NP-hard问题 ...

  9. P、NP以及NPC问题

    P.NP.NPC 概念 > P问题:能够在多项式时间内解决的决策问题. -举例: 图搜索问题.最短路径问题.最小生成树问题······ > NP问题:不能在多项式时间内解决或不确定能不能在 ...

最新文章

  1. 【Java】6.7 内部类
  2. php文件上传错误代码
  3. JAVA synchronized关键字锁机制(中)
  4. Educational Codeforces Round 88 (Rated for Div. 2) E(数学)
  5. python简单网络爬虫_【Python】 简单网络爬虫实现
  6. 小学奥数 7828 最大公约数与最小公倍数 python
  7. jQuery CheckBoxList 全选 反选
  8. abort()和exit()的区别
  9. C语言估算数学常量e,数学常数e
  10. 对微信公众号JS安全域名的理解
  11. 快速搭建你的api数据交易平台-图文开发教程
  12. 《科学》公布2021年度十大科学突破!
  13. ASCII 碼: 转义字符,正则表达式,特殊字符,模式匹配
  14. 软件定义网络基础(SDN④)
  15. springboot以FTP方式上传文件到远程服务器
  16. Python爬虫实战四 | 盘搜搜1.2-网盘搜索神器开源
  17. 搜狗大数据总监、Polarr 联合创始人关于深度学习的分享交流
  18. 实时动态(RTK)定位技术介绍
  19. hadoop HDFS的文件夹创建、文件上传、文件下载、文件夹删除,文件更名、文件详细信息、文件类型判断(文件夹或者文件)
  20. MybatisPlus_${ew.sqlSelect},${ew.sqlSet},${ew.sqlSegment},${ew.customSqlSegment}的使用

热门文章

  1. 学习org-mode
  2. Cisco常见路由器密码和版本恢复方法
  3. C++写的一个简单的词法分析器(分析C语言)
  4. 计算机视觉与图像处理、模式识别、机器学习学科之间的关系
  5. Hadoop1.2.1伪分布模式安装指南
  6. 腾讯面试:打家劫舍 III
  7. golang中的strings.SplitAfterN
  8. mysql无法解析方程式索引
  9. Makefile_01:什么是Makefile?
  10. 银行系统开发必读的三本书!银行IT开发