【1】
经典问题:电路可满足性问题
The circuit satisfiability problem asks, given a circuit, whether there is an input that makes the circuit output TRUE, or conversely, whether the circuit always outputs FALSE.


【2】

  • P: can be solved in polynomial time
  • NP: If the answer is YES + this fact that can be checked in polynomial time
  • co-NP: If the answer is NO + this fact that can be checked in polynomial time

【3】

  • NP-hard: no one in their right mind should believe a np-hard problem can be solved in polynomial time.—所有的NP问题都能约化到他,但他本身不一定是个NP问题

Π is NP-hard ⇐⇒ If Π can be solved in polynomial time, then P=NP

  • NP-complete:( the hardest problems in NP) it is both NP-hard and an element of NP. —所有的NP问题都能约化到他,而且他本身也一定是个NP问题
  • 所以:NP-Hard问题要比 NPC问题的范围广

P问题就是指该问题能在多项式复杂度内解决。

NP问题就是指该问题能在多项式复杂度内被验证。

复杂度一般用大写字母O表示,多项式复杂度记为O(n(^k))。

NP-hard问题就是比NP问题更困难解决的问题,通常NP问题都可以说是NP-hard问题,但是不是所有的NP-hard问题都是NP问题(有些NP-hard问题无法被验证)

NP-complete(NPC问题)就是既是NP问题也是NP-hard问题。

链接:https://www.jianshu.com/p/9cad6175a1ea

The Cook-Levin Theorem:Circuit satisfiability is NP-complete.


【4】
reduction:如果能找到这样一个变化法则,对任意一个程序A的输入,都能按这个法则变换成程序B的输入,使两程序的输出相同,那么我们说,问题A可归约为问题B。(一个问题归约为另一个问题,时间复杂度增加了,问题的应用范围也增大了)

如何证明一个问题是NP-hard?
To prove that problem A is NP-hard, reduce a known NP-hard problem to A.

boolean formula
形如:

要使整个formula的结果是TRUE,则每个clause的值都为TRUE,那么每个clause里的元素只需要有一个是TRUE,那么最终的结果就是TRUE。

SAT问题
已知电路可满足性问题(CSAT)是NP-hard,找到一个变化法则将CSAT约化成SAT,那么既然CSAT是NP-hard,则可证明SAT是NP-hard。

可以通过上图所示深度优先搜索的方式,在线性时间O(n)内将任何 boolean circuit 转化成 boolean formula,Tus,we have a polynomial-time reduction from CSAT to SAT:

SAT is NP-complete.


【5】 3SAT:3SAT is just SAT restricted to 3CNF formulas
prove that 3SAT is NP-hard :
虽然已经证出SAT是np-hard,但CSAT更容易理解,所以证明3SAT是np-hard依然是找到一个变化法则将CSAT直接约化成3SAT,只是在将 boolean circuit 转化成 boolean formula时,保证每个clause里只有三个元素
四步走可以完成:

  1. Make sure every AND and OR gate has only two inputs. If any gate has k > 2 inputs, replace it with a binary tree of k−1 two-input gates.
  2. Write down the circuit as a formula, with one clause per gate. This is just the previous reduction.
  3. Change every gate clause into a CNF formula.
  4. Make sure every clause has exactly three literals.

通过以上步骤由boolean circuit 转化成的3CNF formula,最终结果看起来体型非常庞大,但他仍然只是一个常数因子,并且这个约化过程可在多项式时间内完成。

3SAT is NP-complete.


【6】 Maximum Independent
从无向图中的顶点中选出k个并且k个顶点之间互不相邻,最大的k就是最大独立集( MAXINDSET)

证明MAXINDSET是NP-hard: reduction from 3SAT
在多项式时间内,将3CNF formula reduce to 一个无向图,找到使3CNF formula为TRUE的安排,则可找到该无向图的最大独立集,即可证明。
转换规则:
1)formula里出现的每一个字母,图中都有对应的节点
2)在同一个clause里的字母用一条边连接
3)变量(字母)和其逆用一条边连接(如x和x )
证明过程:
一个3CNF formula:

转换成一个无向图:

设3CNF formula有k个clause,则对应的无向图的最大独立集为k
分析:
independent set ⇒ satisfying assignment:最大独立集的顶点之间没有边,所以他们不可能在一个clause里,且不会互逆(互逆的都用边连起来了),将最大独立集中的所有节点值都设为TRUE,则对于原来的3CNF formula来说,每一个clause都是TRUE,则整个formula的值也是TRUE。

satisfying assignment ⇒ independent set: 这个更好理解,由formula为TRUE推到存在这样的一个无向图的最大独立集,将每个clause里选一个字母取真即可(因为按照上面的规则,一个formula一定可以转成一个无向图)


【7】 Clique
从无向图的顶点集中选出k个并且k个顶点之间任意两点之间都相邻(完全图),最大的k就是最大团(MAXCLIQUE)
证明 MAXCLIQUE是NP-hard: reduction from MAXINDSET
为找出最大独立集与最大团的关系,取上文中给出的例子前两个clause举例:

按照规则得出的无向图G如下:

则对应的边补图G’如下:

所以很容易发现,在每个clause里取一个即为图G的最大独立集,同时也是图G’的最大团,中间只需要一个多项式时间内的边补图转化。


【8】Vertex Cover
找到一个结点集合使得图上的每一条边的至少一端是在集合中

在independent set中,任意2个结点<u,v>都不会有一条边相连,所以与u,v相连的结点一定在集合外面,所以independent set的补集一定是vertex cover的,显然,independent set和vertex cover其实是两个顶点互补的问题


【9】K-Coloring
找到一种染色方式,使得每一条边两个顶点的颜色都不一样
证明3COLORABLE is NP-hard: reduction from 3SAT
在多项式时间内,将3CNF formula reduce to 一个无向图,找到使3CNF formula为TRUE的安排,则可找到该无向图的3-coloring染色方式。
染色规则:
1)truth gadget :三个顶点均有边相连,需要三种颜色,三种颜色的名字就叫Ture,False,Other(任何一种颜色)

2)variable gadget:由上图,所以a和a逆的颜色只能是true,或false

3) clause gadget: a clause gadget for (a∨b∨c逆).

所以,已知一个3CNF formula为TRUE,可以由以上规则得到一个被染色的图;已知一个3-coloring的图,可以根据上述方式反推到一个值为TRUE的3CNF formula


【10】Hamiltonian Cycle (?)
给定一个图,判定是否有经过图中每个顶点且仅一次的回路
证明Hamiltonian Cycle is NP-hard: reduction from vertex cover
思路:已知一个图G和一个整数k,我们将其转换为另一个图G’,这样,当且仅当G的顶点覆盖为k时,G’才具有哈密顿环
转换规则:
对于原来图G中的每条边,我们在G’中用形式如下的edge gadget对应:

【11】 Subset Sum
给定一组整数X和一个整数t,确定集合X里是否具有其元素总和为t的子集。
证明Subset Sum is NP-hard: reduction from vertex cover
思路:给定一个图G和一个整数k,我们需要将其转换为一个整数集合X和一个整数t,这样,当且仅当图G的顶点覆盖为k时,集合X的子集总和为t。
转换规则:
1)将图G的边从0到m-1任意编号,对于每一条边i,集合X中有一个对应的整数 bi ,定义为4的i次方;对于每一个顶点v在集合中对应的整数ai,定义为:(dalta(v)是所有端点有v的边的集合)

即:集合X里,元素都是以4为底的
2)如果第m个整数表示顶点,则数字值为1,否则为0。对于i<m,如果第i个整数表示边i或者边i的一个顶点,则数字值为1,否则为0
所以,目标和定义为:

假设图G的顶点覆盖大小为k,认为有一个集合X的子集Y,其中元素是图G顶点覆盖的所有顶点v对应的整数ai,一个端点属于顶点覆盖的边i对应的整数bi,这些子集Y中元素的和刚好等于t。


【12】总结

————————————————
版权声明:本文为CSDN博主「我要笑遍全世界」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/weixin_42241382/article/details/102636778

如何证明NP-Hard Problems相关推荐

  1. 惊天大突破!「我国数学家证明 NP=P」!道翰天琼认知智能机器人平台API接口大脑为您揭秘。

    惊天大突破!「我国数学家证明 NP=P」!道翰天琼认知智能机器人平台API接口大脑为您揭秘. 2020年7月出版的<计算机科学>(中国计算机学会会刊)发表了国防科技大学教授.湘潭大学计算机 ...

  2. Np计算机领域,我国数学家证明NP=P

    2020年7月出版的<计算机科学>(中国计算机学会会刊)发表了国防科技大学教授.湘潭大学计算机学院特聘教授姜新文题为<哈密顿图判定问题的多项式时间算法>的论文,这标志着在数学和 ...

  3. P问题、NP问题、NPC问题的概念及实例证明

    美剧<基本演绎法>(也就是美版"福尔摩斯")第 2 季第 2 集中,两位研究 NP 问题的数学家被谋杀了,凶手是同行,因为被害者即将证明"P=NP 问题&qu ...

  4. 【计算理论】计算复杂性 ( NP 完全问题 - 布尔可满足性问题 ★ | 布尔可满足性问题是 NP 完全问题证明思路 ) ★

    文章目录 一.NP 完全问题 - 布尔可满足性问题 ★ 二.布尔可满足性问题是 NP 完全问题证明思路 一.NP 完全问题 - 布尔可满足性问题 ★ 布尔可满足性问题 ( Boolean Satisf ...

  5. 模拟退火算法解决np_P和NP问题与解决方案| 演算法

    模拟退火算法解决np P问题 (P Problems) P is the set of all the decision problems solvable by deterministic algo ...

  6. 什么是NP问题,什么是NP hard问题,什么是NP完全问题。

    http://www.cs.pitt.edu/~ztliu/wordpress/2011/05/np-problem/ 首先解释一下什么是NP问题,什么是NP hard问题,什么是NP完全问题. 看下 ...

  7. P vs NP vs NP Complete vs NP Hard

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

  8. p问题、np问题、npc问题、np难问题的理解(纯属个人见解)

    最近因为要证明np问题,所以找了一系列概念去理解这4个问题.理解的时候看到好多人给出了不同的答案,我下面会借鉴别人的答案来总结出一份对于我自己来说,最容易理解这4个问题的说法. 预备知识了解: 这部分 ...

  9. P vs. NP 五十年:AI正在解决不可解问题

    来源:AI科技评论 作者:Lance Fortnow 编译:Don 编辑:青暮 P和NP问题一直是计算机领域的老大难问题,那么在近50年间,人们对这个问题有什么深入的研究呢?让我们在本文中深挖这个世纪 ...

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

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

最新文章

  1. 实验中遇到的Quartus II的Warning的解释、原因以及解决方法
  2. Ubuntu 16.04 Steam
  3. 若依集成jsencrypt实现密码加密传输方式
  4. bzoj 1617: [Usaco2008 Mar]River Crossing渡河问题(DP)
  5. java executor 例子_Java中Executor框架的实例
  6. DevOps使用教程 华为云(5)迭代计划 进度管理
  7. 目标检测之FPN网络详解
  8. Pyinstaller的安装和使用
  9. 高德导航过程中实时获取道路信息
  10. 【自然语言处理】【多模态】OFA:通过简单的sequence-to-sequence学习框架统一架构、任务和模态
  11. 不会产生ICMP差错报文的情况
  12. 一篇爽文带你全面了解mysql的索引
  13. 正点原子STM32(基于HAL库)3
  14. linux安全(1)
  15. Error(1.0.5 1107071739): D:\SAE_SDK_Windows_1.0.5\apps\/divjs/1/config.yaml is not existed解决方法...
  16. html从入门到精通胡菘,高职电商网页设计教学实践(共2831字).doc
  17. 垃圾邮件过滤python_手把手教你用 python 和 scikit-learn 实现垃圾邮件过滤
  18. HTML制作圣诞树,小白都会使用的教程。
  19. Endnote X7导入中文文献时,出现信息不全
  20. TwinCAT3 编程字体设置

热门文章

  1. [Giveaway] 来自AnyBizSoft、4Media、EASEUS的限时免费软件
  2. Java基础教程——字节流
  3. linux kprobe rootkit学习
  4. 引用数据类型的一些知识
  5. Posix信号量操作函数
  6. 漫谈 Clustering (3): Gaussian Mixture Model
  7. 孙鑫VC学习笔记:第十一讲 (三) 如何把元文件保存到文件当中
  8. 为什么败者树的访问外存次数要比胜者树少_为什么说蒙地卡罗搜索树MCTS是AlphaZero的核心?[AlphaZero理论篇之三]...
  9. c++求两点的距离利用友元_「20525」高中数学:“二面角”和“点到平面的距离”的通解...
  10. python和pytorch关系_pytorch 模拟关系拟合——回归实例