在做计算机算法关于NP完全问题这一章的作业的时候,发现有很多概念理解的不是很透彻,然后就反复看老师的讲义,在网上查阅各种资料,花了很多时间来弄懂这块的内容。发现书上的概念太正式,定义太标准,不容易很快理解,而网上的资料有些地方论述的不够全面,像我这样的新手在遇到NP家族的概念和问题的时候就很容易懵逼…因此在此将我的心得与整理的资料放在这里,一方面供我以后自己参考,避免又搞混,一方面和大家进行交流。

一、概念介绍

下面就对这些令人头疼的概念做个简单的介绍和对比:

1. P类问题

这类问题是最简单的一类问题,即所有这类问题都可以用一个确定性算法在多项式时间内求出解。此类问题的复杂度是此类问题的一个实例的规模n的多项式函数。比如排序问题,求最短路径问题等。

2. NP(Non-deterministic Polynomial,即多项式复杂程度的非确定性问题)问题

有些问题很难找到多项式时间的解法(也许根本就不存在),但是如果给出了该问题的一个解,我们可以在多项式时间内判断这个解是否正确,比如对于哈密尔顿回路问题,如果给出一个任意的回路,我们可以很容易的判断出该回路是否是哈密尔顿回路(看是不是所有顶点都在回路中)。

P类问题是NP问题的子集,原因是P类问题既然能在多项式时间内求解,也必然能在多项式时间在验证它的解,满足NP类问题的定义。

3. NP完全问题(NPC)

如果所有NP问题都能在多项式时间内转化为A,则称A为NPC问题。

NPC是NP的子集。

4. NP-hard问题(NPH,NP困难问题)

问题A不一定是一个NP问题,但所有的NPC问题都可以在多项式时间内转化为A,则称A为NPH问题。

二、其他知识

1. NPC问题一定是NP困难问题

根据NP完全问题和NP困难问题的定义可以发现,NP完全问题A的定义中,除了要求对于所有别的判定问题A’ ∈NP,都有A’ ∝A,还要求A∈NP,而NP困难问题不一定是NP问题,所以可以看出NP完全问题是NP困难问题的子集,所以NP完全问题一定都是NP困难问题。

2.NP困难问题中包含的一些问题是既不属于NP也不属于P类问题的,一个典型的例子就是第k个最重子集问题。

3.证明一个新问题A是NPC问题的方法:

a.证明A∈NP;

b.选取一个已知的NPC问题B;

c.构造一个从B到A的变换f;

d.证明f为一个多项式变换。

这里一个关键的问题是如何选取参照物B和构造多项式变换f。在实际的证明中参照物的选择带有一定的经验性,已知的NPC问题越多越有利。第一个被证明的NPC问题是sat问题(可满足性问题),这个开创性的工作是由COOK完成的,自从他证明了sat问题是NPC问题以来,人们已经发现并证明了数千个NPC问题,如0/1背包问题和哈密尔顿回路问题等。

4.几个典型的NPC问题

三维匹配问题(3 dimensional matching,3DM);三元精确覆盖问题(exact cover by 3-set,X3C);顶点覆盖问题(vertex cover,VC);

哈密尔顿回路问题(Hamiltonian circuit,HC);划分问题(PARTS);三元可满足性问题(3SAT);团问题(CLIQUE);0/1背包(判定)问题(0/1KPS)

暂时先写这么多,本人水平有限,可能有些讲的不清楚的地方,欢迎批评指正。

算法:NP问题,NP完全问题(NPC),NPhard问题相关推荐

  1. NP问题、NP难问题(NPH)和NP完全问题(NPC)理解

    看算法的时候经常会碰到NP问题.NP难问题(NPH)和NP完全问题(NPC)等术语,每次碰到的时候都似懂非懂,这次专门在网上搜了一些资料看,做一下记录,权当加深印象. NP是指Non-determin ...

  2. P,NP,NPC,NP-Hard,co-NP问题辨析

    学算法学到这章,真是神仙打架.上网学习各位前辈的文章,看的我也是眼花缭乱.终于看到一篇易于理解的(网址附于文末),看过之后写写自己的理解.如有错误,请各位前辈指正! P问题,在这里不说全称了,感觉说了 ...

  3. P问题、NP问题、NP完全问题和NP-hard问题

    在讲P类问题之前先介绍两个个概念:多项式,时间复杂度.(知道这两概念的可以自动跳过这部分) 1.多项式: 恩....就是长这个样子的,叫x最高次为n的多项式.... 2.时间复杂度 在计算机算法求解问 ...

  4. P NP NPC NP-hard以及多项式时间

    @[TOC]P NP NPC NP-hard以及多项式时间 P NP NPC NP-hard以及多项式时间 你好! 这是你第一次使用 Markdown编辑器 所展示的欢迎页.如果你想学习如何使用Mar ...

  5. 零知识证明之什么是QAP?什么是P/NP、NP完全问题(NPC问题)、NP hard问题?多项式时间

    文章目录 一.什么是NP问题 1. 多项式时间 2. 关于阶乘 n! 12字助记词真的安全吗? 3. 现实中的NP类问题 二.P是否等于NP, N=NP是否成立 三.什么是NP完全或NP完备 四.什么 ...

  6. P、NP、NP完全问题、NP难问题

    可以在多项式时间内求解的问题称为易解的,而不能在多项式时间内求解的问题称为难解的. P类问题:多项式类型,是一类能够用(确定性的)算法在多项式的时间内求解的判定问题. 只有判定问题才属于P 不可判定问 ...

  7. P类问题、NP类问题、NPC类问题、NP难问题

    在讨论算法的时候,常常会说到这个问题的求解是个P类问题.NP类问题.NPC类问题.NP难类问题.在讲P类问题之前先介绍两个概念:多项式,时间复杂度.多项式:ax^n^+bx^n-1^+c在计算机算法求 ...

  8. 时间复杂度与NP/NP难/NP完全问题的最简单理解法

    任何关于算法.编程.AI行业知识或博客内容的问题,可以随时扫码关注公众号「图灵的猫」,加入"学习小组",沙雕博主在线答疑~此外,公众号内还有更多AI.算法.编程和大数据知识分享,以 ...

  9. 【NPC】1、NP、P、NPC概念介绍

    一.P.NP.NPC概念 1971年,Stephen Cook提出了第一个NPC问题:布尔可满足性问题. 1973年, Leonid Levin提出了21个经典的NPC问题. 1979年,Garey和 ...

  10. P vs NP vs NP Complete vs NP Hard

    目录 1.写在前面 2.千禧年世纪难题 3.P类和NP类问题特征 4.NPC问题 5.NP-Hard问题 6.总结 1.写在前面 我们看到一个问题,经常会说:"这个没法做,是一个NP问题&q ...

最新文章

  1. logback配置文件
  2. Jsoup下载图片报错:UnsupportedMimeTypeException
  3. 趣链 BitXHub跨链平台 (10)跨链自治
  4. 【Java】统计随机抽出两个小于等于N的互异正整数的频率
  5. Canvas实战---模仿GOOGLE浮动小球效果
  6. knn算法(分类)-机器学习
  7. 数据结构47:查找算法
  8. Rust : 独一无二的Some
  9. linux查看文件权限_Linux权限管理 -- 文件权限
  10. Spring Boot集成微信扫码登录(实测通过)
  11. mysql查找数据库文件位置
  12. 开发大脑潜能的11种良方法
  13. SEM和SEO的区别?
  14. 电脑宝马,大量宝马车电脑通病故障检修方法
  15. 怎么看待小公司的规章制度?
  16. scikit-learn功能大全
  17. 今天开始学Convex Optimization:第3章 Convex Sets and Convex functions
  18. 电脑可以连接别的手机热点,唯独连接不上某个手机热点怎么办法?
  19. java高校心理测评管理系统计算机毕业设计MyBatis+系统+LW文档+源码+调试部署
  20. 达梦:如何登录数据库(基础篇)

热门文章

  1. ROS踩坑|warning:clock skew detected. Your build may be incomplete
  2. 如何在字符串中加双引号
  3. MySQL错误:Can't create table‘..’ (errno:150)解决方案
  4. 不经一番寒彻骨,那有冰冻三尺,那有不经波折的人生?
  5. 徐州智伴机器人_智伴机器人和天猫精灵功能方面有什么区别?
  6. 亚马逊SP-API对接JAVA版(amazon selling-partner)
  7. 计算机 优质课教案,计算机优质课教案.doc
  8. tk.mybatis的批量插入扩展
  9. MPLab X 配置字的设置
  10. JS使用技巧-如何解决谷歌浏览器下载图片、PDF文档时只打开不下载的问题?