这些概念以前老是犯糊涂,今天整清楚。
摘要:
P: Polynomial Solvable
NP: Non-determinstic Polynomial Solvable

0)词语解释:
Polynomial 【数】多项式的; 由平方,立方等常数次方或者更小的运算符和+,-,*,/等构成的式子及其这种式子的和
Non-deterministic: 非确定性的;
Turing-machine: 图灵机; 英国数学家图灵提出的计算模型, 一个两端无限长的由小格子组成的带子,每个格子可以存储一个数,一个可以在带子左右移动的游标或者指针或者不如叫磁头(head), 磁头可读或修改格子里的数。 下面默认说的是确定性图灵机,和非确定性图灵机功能上等价
Algorithm: 算法。 给定一个问题的描述作为输入,图灵机求解的过程。 此过程有可能无限步长,则图灵机永远不会停止,除非被外部力量终止。
Polynomial algorithm: 多项式算法。 如果给定问题输入的长度,常量n, 则如果图灵机解答过程需要的是时间是以n为变量的多项式,则这个解法(也是个算法)是有多项式的时间复杂度的。
Decision question: 判定问题。 答案是yes或者no的问题

1) P问题和NP问题
P问题 (Polynomial Solvable):如果一个判定问题是P问题,则这个问题存在一个多项式解法。 即图灵机只需要多项式时间就可以得到答案, 既回答yes或者no。

NP问题(Nondeterminstic Polynomial Solvable):如果一个判定问题是NP问题, 则这个问题的一个可能的解,可以在多项式时间内被验证是否正确。 其实这不是本来的定义。 本来的定义是,NP问题是非确定性图灵机有多项式解。但我们可以把非确定性图灵机多项多可解转化成确定性图灵机多项式可验证解。 确定性图灵机更好好理解,所以用那个定义。

P问题是确定性图灵机在多项式时间内求到解,NP问题是非确定性图灵机在多项式时间内求到解,或者说NP问题是确定性图灵机在多项式时间内验证解.

所以NP问题比P问题更难。   就像前面有人说的,改卷的老师会验证题目的答案是否正确,但他不一定会做这些题。

2) 关系
P 属于 NP。 就是说,一个问题如果属于P, 则一定属于NP。 (这里P, NP表示符合定义的相关问题的集合)反过来则不一定,7大数学世纪难题之一就是问 P是否等于NP。

3) NPC 和 NP-hard
NPC, 即NP完全性问题。 任意一个NP问题都可规约到该问题,那么该问题称为NP-complete(NPC)。 是指NP问题中的最难的问题。 即还没有找到多项式解法,但多项式可验证。 而且只要一个NPC问题有多项式解法,其它所有NP问题都会有一个多项式解法。

NP-hard是指所有还没有找到多项式解法的问题, 并没有限定属于NP。   所以NP-hard比NPC范围更大,也会更难。 NPC是NP-hard和NP的交集.。NPC问题都是NP-Hard问题。例如TSP优化问题、Hamilton问题不问题,它们不是NP问题,但是是NP-Hard问题。

关于P,NP,NPC和NP-hard的通俗解释的更多相关文章

  1. p,np,npc,np难问题,确定图灵机与非确定图灵机

    本文转自豆瓣_燃烧的影子 图灵机与可计算性 图灵(1912~1954)出生于英国伦敦,19岁进入剑桥皇家学院研究量子力学和数理逻辑.1935年,图灵写出了"论高斯误差函数"的论文, ...

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

    概念定义: P问题:能在多项式时间内解决的问题: NP问题:(Nondeterministic Polynomial time Problem)不能在多项式时间内解决或不确定能不能在多项式时间内解决, ...

  3. 算法复习-P NP NPC NP-hard概念

    from http://blog.csdn.net/huang1024rui/article/details/49154507 P.NP.NPC和NP-Hard相关概念的图形和解释 一.相关概念 P: ...

  4. numpy中np.c_和np.r_

    np.r_:按列连接两个矩阵,就是把两矩阵上下相加,要求列数相等,类似于pandas中的concat() np.c_:按行连接两个矩阵,就是把两矩阵左右相加,要求行数相等,类似于pandas中的mer ...

  5. np.tile 和np.newaxis

    output   array([[ 0.24747071, -0.43886742],   [-0.03916734, -0.70580089],   [ 0.00462337, -0.5143158 ...

  6. numpy 辨异(四)—— np.repeat 与 np.tile

    >> import numpy as np >> help(np.repeat) >> help(np.tile) 二者执行的是均是复制操作: np.repeat: ...

  7. numpy 下的数据结构与数据类型的转换(np.array vs. np.asarray)

    1. np.asarray -- numpy 风格的类型转换 从已有多维数组创建新的多维数组,数据类型可重新设置 >> B = np.asarray(A, dtype='int32') 2 ...

  8. dtypes.py", line 499 _np_qint8 = np.dtype([("qint8", np.int8, (1,)])

    Traceback (most recent call last): File "<stdin>", line 1, in <module> File &q ...

  9. python多项式拟合:np.polyfit 和 np.polyld

    python数据拟合主要可采用numpy库,库的安装可直接用pip install numpy等. 1. 原始数据:假如要拟合的数据yyy来自sin函数,np.sin import numpy as ...

随机推荐

  1. Type safety: Unchecked cast from Object to ArrayList

    表明Object转化为ArrayList这个转化并不是安全的.. 编译的时候需要加入修饰符才能正常编译(具体是那个修饰符..不记得了.^_^),否则会提示有警告 当然这只是一个警告,如果楼主自信这个转 ...

  2. 签名“未签名”apk文件命令

    在发布至360.oppo应用市场时分别遇到了需要"应用加固"和"应用认领"的情况, 流程都是需要下载一个未签名的apk文件(安装包),然后签名后再上传. 我的做 ...

  3. input输入框和 pure框架中的 box-sizing 值问题

    在使用pureCSS框架的时候,遇到一个问题. input输入框,我给他们设置了宽度和padding值,我发现,在火狐和谷歌上面发现,增加padding值并不会影响最终的宽度,而在IE6 7下则会影响 ...

  4. Struts2--中文问题

    有中文的情况下, form method都要用post: 如果jsp输入中文返回到后台action输出时会显示乱码, struts.xml已经设置 <constant name="st ...

  5. PL/SQL Developer使用技巧、快捷键、存储过程调试

    1.类SQL PLUS窗口:File->New->Command Window,这个类似于oracle的客户端工具sql plus,但比它好用多了. 2.设置关键字自动大写:Tools-& ...

  6. 红黑树(C#)

    红黑树C#算法. 在线javascript演示地址:http://sandbox.runjs.cn/show/2nngvn8w using System; using System.Collectio ...

  7. Codeforces #377 Div2

    打得还不错的一场CF,题目质量也很高,今后还要继续努力 A题: 题意:给定一个数k,让其乘一个最小的数,使乘得以后的数要不被10整除,要不减去r以后被10整除,求这个最小的数 #include < ...

  8. dedecms如何修改共0页/0条记录为英文版?

    近日,在测试一个网站功能的时候,发现在搜索结果的下面为中文的“共0页/0条记录”,但客户的网站为英文版,所以我们需要将搜索的结果信息也要显示为英文,好了,我们开始动手修改dedecms的文件,以达到我 ...

  9. CodeForces 621B Wet Shark and Bishops

    记录一下每个对角线上有几个,然后就可以算了 #include<cstdio> #include<cstring> #include<cmath> #include& ...

  10. (中等) POJ 2528 Mayor's posters , 离散+线段树。

    Description The citizens of Bytetown, AB, could not stand that the candidates in the mayoral electio ...