NPC问题的证明(可满足性问题、3-CNF可满足性问题、团问题、顶点覆盖问题)
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可满足性问题、团问题、顶点覆盖问题)相关推荐
- 【计算理论】计算理论总结 ( P 、NP 、NPC 总结 ) ★★
文章目录 一.P 类 二.NP 类 三.NPC 类 ( NP 完全 ) 四.P .NP .NPC 三者关系 一.P 类 P\rm PP 类 : ★ 所有 能够被 确定性 单个带子图灵机 , 在 多项式 ...
- P、NP、NPC问题
转自:http://blog.csdn.net/wwy851/article/details/6082007 最近看了很多关于P.NP和NPC问题的文章,但是都不是很系统全面,很多叙述的也不太清楚,有 ...
- 【算法】P问题 NP问题 NPC问题 NPH问题的定义与理解
一.前言 二.多项式 三.时间复杂度 四.P问题 五.NP问题 六.NPH问题,NPC问题 七.已经被证明的NPC问题 八.一些具体问题的总结 九.总结 一.前言 在讨论算法的时候,常常会说到这个问题 ...
- P、NP以及NPC问题
P.NP.NPC 概念 > P问题:能够在多项式时间内解决的决策问题. -举例: 图搜索问题.最短路径问题.最小生成树问题······ > NP问题:不能在多项式时间内解决或不确定能不能在 ...
- P问题, NP问题, NPC问题, NP-hard问题
复杂度级别: 1)多项式级别O(n^k);2)非多项式级别,如,指数级O(a^n)和阶乘级别O(n!).后者的复杂度无论如何都大于前者. 归约(约化):如果能找到这样一个多项式变换法则,对任意一个程序 ...
- (数学)P、NP、NPC、NP hard问题
概念定义: http://m.elecfans.com/article/757041.html https://www.cnblogs.com/AndyJee/p/5048556.html P问题:能 ...
- 初识「零知识」与「证明」
副标题:探索零知识证明系列(一) 作者:郭宇 本文已更新至Github: https://github.com/sec-bit/learning-zkp/blob/master/zkp-intro/1 ...
- 人工智能提纲式汇总+简要分析 可用于复习《人工智能——一种现代的方法》
文章目录 人工智能 第一章 什么是AI 第二章 智能Agent 理性AI的任务环境的规范描述 第三章 通过搜索进行问题求解 1.搜索树 BFS 宽度优先搜索 UCS 一致代价搜索 DFS 深度优先算法 ...
- 计算机算法设计与分析(国科大考试)
Exam 简答题 1,陈述算法在最坏时间下的时间复杂度和平均时间复杂度:这两种评估算法复杂性的方法各自有什么意义? 答:最坏情况下的时间复杂度称之为最坏时间复杂度,一般不特别说明,讨论的时间复杂度均是 ...
最新文章
- 基于Idea从零搭建一个最简单的vue项目
- 腾讯——这可是一只“骨骼清奇”的狗
- 百度Tera数据库介绍——类似cassandra,levelDB
- 缓存(CDN缓存,浏览器(客户端)缓存)
- Django--ORM操作
- 可变分区存储管理实验报告总结_操作系统第5次实验报告:内存管理
- Apache PHP-fpm Mariadb
- ue4导入倾斜摄影_倾斜摄影建模干货|还怕搞不定CC空三?这里只要5分钟……
- 分析华为毕昇JDK8:类数据共享CDS有效果,幅度很小
- C/C++[codeup 1397,2020]查找
- 电赛公开课整理(二),电路基础,截图+模电知识【16000字】【原创】
- JavaScript在线解压 ZIP 文件 JavaScript 怎样在线解压 ZIP,jszip实现解压压缩包,并下载压缩包内文件
- 3d模型转obj格式
- rainmeter 修正天气插件信息不准确 设置居住城市
- 统计学的计算机实现的心得体会,浅谈我对统计学的认识
- UDP数据丢包跟踪与总结
- Ping命令出现 Packet filtered
- 聊聊我当面试官的感受吧
- Android应用开发性能优化完全分析,移动应用开发课程报告
- uniapp判断是否打开定位GPS
热门文章
- 免费的crm系统部署在自己的服务器,CRM软件的三种部署方式
- 请教股票曲线图的问题
- linux系统浏览器最小化,调整Firefox火狐浏览器的最小化、最大化、关闭按钮键大小...
- IntelliJ IDEA终于支持对Redis 的可视化窗口操作了,真香!
- 树莓派3配置局域网打印服务器惠普打印机HP1108
- 详解拦截器和过滤器的区别
- 51智能小车(舵机、超声波、蓝牙)
- MATLAB图像处理--高斯低通滤波、高斯高通滤波(代码及示例)
- wordpress(DUX主题)怎么给文章添加历史上的今天
- 公司电脑监控软件有哪些?监控哪些内容?