NPC问题的证明

一、基础概念

  • P问题:如果一个判定问题能在多项式的时间内解决,那么这个判定问题就属于P问题
  • NP问题:对于一个判定问题,如果给定一个可能的解实例(称为“证书”),可以在多项式时间内验证这个解实例,即判定为真还是为假,那么它是 NP问题。
  • NPC问题:如果任何一个NP问题都能通过一个多项式时间算法,转换某个NP问题,那么这个NP问题就称为NPC问题。
  • NP-Hard问题: 如果任何一个NP问题都能通过一个多项式时间算法,转换某个问题,但这个问题不一定是NP问题,那么它是 NP-Hard问题
    由于

二、NPC问题的证明:

证明方法:

  • 首先证明问题L属于NP问题;
  • 其次,找出一个NPC问题L’,如果L’能在多项式时间内约简到L,即证明L属于NP-Hard问题;(证明原理:因为对于任意一个NP问题L’’,都能在多项式时间约简到L’,而L’又能在多项式时间内约简到L,所以任意的一个NP问题L’’,都能约简到问题L,即L是NP-Hard问题)
  • 于是就证明了L属于NPC问题。

三、NPC问题证明举例:

电路可满足性问题(CirsuitSAT)

问题描述:
给定一个电路图,如果存在一组输入信号,使输出为"1",那么此电路使可满足的。

证明过程暂略。


可满足性问题(SAT)

问题描述:
由 N个布尔变元X1,X2,X3…Xn,和M个布尔连接符(如:与、或、非、蕴含、等价…)构成的布尔表达式F,如果存在一组布尔变元和布尔连接符实例,判别F输出为1,则为可满足。

证明过程:
1. 证明SAT属于NP问题:
给定一组布尔变元和布尔连接符的实例,即一个证书y,显然可以在多项式时间类判定是否F的输出为1 。即证SAT属于NP问题。

2. 证明CirsuitSAT问题可以在多项式时间内约简到SAT问题:

  • 任意一个电路图都可以在多项式时间内转化一个布尔表达式F, 即对于CirsuitSAT问题的任何一个实例,都可以在多项式时间内转化成一个SAT问题的实例。
  • SAT问题可满足当且仅当CirsuitSAT问题可满足:
    易知,SAT问题可满足 —> CirsuitSAT问题可满足,
    且CirsuitSAT问题可满足—>SAT问题可满足。

3-CNF可满足性问题(3-CNF-SAT)

问题描述:由 3n个布尔变元X1(1)…Xn(1)…X1(2)…Xn(2)…X1(3)…Xn(3),构成的n个子句C1C2C3…Cn-1Cn,每个子句为Ci = (X1(i)或X2(i)或X3(i)),布尔表达式F=C1且C2且C3…且Cn-1且Cn,如果存在一组布尔变元赋值,可以判别F输出为1,则为3-CNF-SAT是可满足的。

证明过程暂略。
提示:SAT是可以通过公式构造,转化成3-CNF-SAT的。
如a+c*b 等价于(y2且 y2等价于c且b) 且 (y1且 y1等价于a且y2)


团问题(Clique)

问题描述:
给定义一个无向图G = <V,E>和一个正整数k,是否可以在图G中找出一个大小为k的完全子图(一个团)。

证明过程:
1. 团问题是NP问题。
对于一个给定的无向图G和整数k,以顶点集V的一个子集V’做证书,只需要验证V’是否是G中的一个大小为k的团。显然,只需要检查V’中的任意两个点u,v,是否有(u,v)属于G,可以知道这能在多项式时间内完成。所以团问题是NP问题。

2. 一个3-CNF可满足性问题可以在多项式时间内约简成一个团问题。

  • 约简算法构造:对于3-CNF-SAT的一个实例 F = C1 C2…C3…Cn-1Cn ,子句 Ci有三个不同的文字l1(i),l2(i),l3(i),对于两个子句中的两个文字 la(i)和 lb(j),如果满足
    (1)i != j
    (2)la(i)不是 lb(j)的非
    那么在图G中可以用一条边连接 la(i)和 lb(j)

  • 证明F是可满足的当且仅当G有一个大小为k的团。
    a. 假定F是可满足的,那么每个子句中都可以给一个文字赋值为1,那么根据约简算法的构造,图G中一定有一个大小为k的团
    b. 假定图G有一个大小为k的团,那么依据对应关系,团中的 k个点对应的 k个文字可以赋值为1,而这 k个文字属于 F中不同的子句,可以知道 F必然是可满足的。


顶点覆盖问题(VertexCover)

问题描述:
给定一个无向图G<V,E>,和一个整数k,求是否存在一个点集V’,使得所有的(u,v)属于E,都有u属于V’或者v属于V’(或者u和v都属于V’),且V’的大小为k。

证明过程:
1. 证明VertexCover属于NP问题:
给定一个点集V’(即一个证书y),只需要遍历G中所有的边,判断其是否在点集V’上满足“顶点覆盖”的条件,易知这可以在多项式时间内判断,即VertexCover问题,可以在多项式时间内验证。所以VertexCover属于NP问题。

2. 证明一个Clique问题可以在多项式时间内约简到一个VertexCover问题:
只需要证明,团问题<G,k>图G有一个大小为k的团当且仅当顶点覆盖问题<!G, |V| - k>图!G有一个大小为|V| - k的顶点覆盖。(其中!G是G的补图

  • 团问题<G,k>可以推导顶点覆盖问题<!G, |V| - k>
    设G有一个团V’且其大小为k,只需要证明V-V’是!G的顶点覆盖。
    因为对于任意的(u,v)属于!E,有(u,v)不属于E,而团V’中的点任意两点都构成G中的边,所以u或者v至少一个属于V-V’。即任意的(u,v)属于!E,有u或者v属于V-V’。

  • 顶点覆盖问题<!G, k>可以推导团问题<G,|V| - k>
    设!G有一个顶点覆盖V’且其大小为k,只需要证明V-V’是G的团。 如果(u,v)属于!E,u或者v至少一个属于V’,反过来,u且v都不属于V’,那么(u,v)不属于!E,即(u,v)属于E,即V-V’构成G的一个完全子图。

NPC问题的证明(可满足性问题、3-CNF可满足性问题、团问题、顶点覆盖问题)相关推荐

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

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

  2. P、NP、NPC问题

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

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

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

  4. P、NP以及NPC问题

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

  5. P问题, NP问题, NPC问题, NP-hard问题

    复杂度级别: 1)多项式级别O(n^k);2)非多项式级别,如,指数级O(a^n)和阶乘级别O(n!).后者的复杂度无论如何都大于前者. 归约(约化):如果能找到这样一个多项式变换法则,对任意一个程序 ...

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

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

  7. 初识「零知识」与「证明」

    副标题:探索零知识证明系列(一) 作者:郭宇 本文已更新至Github: https://github.com/sec-bit/learning-zkp/blob/master/zkp-intro/1 ...

  8. 人工智能提纲式汇总+简要分析 可用于复习《人工智能——一种现代的方法》

    文章目录 人工智能 第一章 什么是AI 第二章 智能Agent 理性AI的任务环境的规范描述 第三章 通过搜索进行问题求解 1.搜索树 BFS 宽度优先搜索 UCS 一致代价搜索 DFS 深度优先算法 ...

  9. 计算机算法设计与分析(国科大考试)

    Exam 简答题 1,陈述算法在最坏时间下的时间复杂度和平均时间复杂度:这两种评估算法复杂性的方法各自有什么意义? 答:最坏情况下的时间复杂度称之为最坏时间复杂度,一般不特别说明,讨论的时间复杂度均是 ...

最新文章

  1. 基于Idea从零搭建一个最简单的vue项目
  2. 腾讯——这可是一只“骨骼清奇”的狗
  3. 百度Tera数据库介绍——类似cassandra,levelDB
  4. 缓存(CDN缓存,浏览器(客户端)缓存)
  5. Django--ORM操作
  6. 可变分区存储管理实验报告总结_操作系统第5次实验报告:内存管理
  7. Apache PHP-fpm Mariadb
  8. ue4导入倾斜摄影_倾斜摄影建模干货|还怕搞不定CC空三?这里只要5分钟……
  9. 分析华为毕昇JDK8:类数据共享CDS有效果,幅度很小
  10. C/C++[codeup 1397,2020]查找
  11. 电赛公开课整理(二),电路基础,截图+模电知识【16000字】【原创】
  12. JavaScript在线解压 ZIP 文件 JavaScript 怎样在线解压 ZIP,jszip实现解压压缩包,并下载压缩包内文件
  13. 3d模型转obj格式
  14. rainmeter 修正天气插件信息不准确 设置居住城市
  15. 统计学的计算机实现的心得体会,浅谈我对统计学的认识
  16. UDP数据丢包跟踪与总结
  17. Ping命令出现 Packet filtered
  18. 聊聊我当面试官的感受吧
  19. Android应用开发性能优化完全分析,移动应用开发课程报告
  20. uniapp判断是否打开定位GPS

热门文章

  1. 免费的crm系统部署在自己的服务器,CRM软件的三种部署方式
  2. 请教股票曲线图的问题
  3. linux系统浏览器最小化,调整Firefox火狐浏览器的最小化、最大化、关闭按钮键大小...
  4. IntelliJ IDEA终于支持对Redis 的可视化窗口操作了,真香!
  5. 树莓派3配置局域网打印服务器惠普打印机HP1108
  6. 详解拦截器和过滤器的区别
  7. 51智能小车(舵机、超声波、蓝牙)
  8. MATLAB图像处理--高斯低通滤波、高斯高通滤波(代码及示例)
  9. wordpress(DUX主题)怎么给文章添加历史上的今天
  10. 公司电脑监控软件有哪些?监控哪些内容?