NP完全问题
世界十大难题

世界十大难题1、NP完全问题(NP-C问题)NP完全问题(NP-C问题),是世界七大数学难题之一。
NP的英文全称是Non-deterministicPolynomial的问题,即多项式复杂程度的非确定性问题。
简单的写法是NP=P?,问题就在这个问号上,到底是NP等于P,还是NP不等于P。
NP就是Non-deterministicPolynomial的问题,也即是多项式复杂程度的非确定性问题。
而如果任何一个NP问题都能通过一个多项式时间算法转换为某个NP问题,那么这个NP问题就称为NP完全问题(Non-deterministicPolynomialcompleteproblem)。
NP完全问题也叫做NPC问题。
2、霍奇猜想霍奇猜想是代数几何的一个重大的悬而未决的问题。
由威廉·瓦伦斯·道格拉斯·霍奇提出,它是关于非奇异复代数簇的代数拓扑和它由定义子簇的多项式方程所表述的几何的关联的猜想,属于世界七大数学难题之一。
二十世纪的数学家们发现了研究复杂对象的形状的强有力的办法。
基本想法是问在怎样的程度上,我们可以把给定对象的形状通过把维数不断增加的简单几何营造块粘合在一起来形成。
3、庞加莱猜想庞加莱猜想(Poincaréconjecture)是法国数学家庞加莱提出的一个猜想,其中三维的情形被俄罗斯数学家格里戈里·佩雷尔曼于2003年左右证明。
2006年,数学界最终确认佩雷尔曼的证明解决了庞加莱猜想。
1904年,法国数学家亨利·庞加莱提出了一个拓扑学的猜想:“任何一个单连通的,闭的三维流形一定同胚于一个三维的球面。
”简单地说,一个闭的三维流形就是一个有边界的三维空间;单连通就是这个空间中每条封闭的曲线都可以连续的收缩成一点,或者说在一个封闭的三维空间,假如每条封闭的曲线都能收缩成一点,这个空间就一定是一个三维圆球。
4、黎曼假设黎曼猜想是关于黎曼ζ函数ζ(s)的零点分布的猜想,由数学家黎曼于1859年提出。
NP完全问题

2.1.5 判定问题规约的定义
定义:令和是两个判定问题,如果存在一个 具有如下性能的算法A,可以用多项式的时间,把 问题的实例I转换为问题的实例I,使得I与I的 答案一致,就称以多项式时间规约于,记为 p
举例:问题是:给定一个长度为n整数数组D 和一个整数k判断是否存在D中的一个元素和k相等。 问题是:给定一个长度为m整数数组E和一个整 数k判断是否存在E中的两个元素,其和与k相等。 用于的实例I向的实例I转换的多项式算法A
判定问题举例:给定一个带整数权的有向图G和一 个正整数k,是否存在着一条长度小于k的哈密尔顿回 路?
优化问题举例:给定一个带整数权的有向图G,其 最短路径长度的哈密尔顿长度是多少?
1.3 优化问题向判定问题的转换
判定问题举例:给定一个带整数权的有向图G和一个正整数k, 是否存在着一条长度小于k的哈密尔顿回路? 优化问题举例:给定一个带整数权的有向图G,其最短路径 长度的哈密尔顿长度是多少?
第12章 NP完全问题
1. NP完全问题概述 2. P类和NP类问题 3. NP完全问题 4. co_NP类和NPI类问题
1. NP完全问题概述
1.1 Church-Turing论题和Cook-Karp论题 1.2 问题分类 1.3 优化问题向判定问题的转换
1.1 Church-Turing论题和CookKarp论题
性质:NP难题包含NP完全问题。但有些NP难题 不是NP完全问题,因为它可能不在NP问题中
3.2 多项式规约关系的传递性定 理
定理:多项式规约关系满足传递性:令、、 是三个判定问题,满足 p , p , 则有 p
证明:通过规约关系的定义,必定存在着多项 式算法A和A, A使得的实例I(规模是n) 以多项式时间转换为的实例I,A使得的实 例I以多项式时间转换为的实例I。而A和A的 多项式级别性质使得实例I的规模是n的多项式级 别的。综合起来,的任意实例都能在多项式 级别转换为的实例
第八章 NP完全问题.ppt

•NP-完全问题:NP类中最困难的问题。 •COOK定理:3SAT是NP -完全问题。 •证明:使用TURING机! •归约:多项式时间转化
最著名的NPC问题: SAT 3SAT CLICHÉ 图的着色 三元匹配; 划分问题 独立集, 顶点复盖 HAMILTON道路:
第三章 NP-完全问题
Cook 定理
The notion of reducing one problem to another may be defined formally in one of several ways. The choice of which one to use depend on the application. Today our choice is a simple type of reducibility called mapping-reducibility (many-one reducibility).
证明思路
如果语言A有性质(3.1),那么对于任何输入x,一个
NTM M可以通过以下方法决定是否x A:首先猜测
一个长为 的符号行y,然后在多项式时间内验证是 否<x,y> B,对每个x A,那个使<x,y> B的长为 P(|x|)的符号行y称为x的佐证或者证据。
满意问题(Sat):给出一个布尔公式 ,决
Sat 是NP-完全问题(Cook定理)
NP完全问题的例子
3-Sat问题是NP-完全问题(该乘积的每个 因子是恰含三项的初等和) 注意:CNF表示合取范式,是初等和的乘 积。3-CNF的意思
NP完全问题的例子
平面3-Sat是NP-完全问题。
多项式时间图灵归约
多项式时间多对一归约 反映一种最简单
算法10_NP完全问题

if(a[j]==x) { cout<<j;
Success();
执行时间都为O(1) //不确定算法成功终止
}
cout<<-1; Failure(); }
若算法执行中需作出一系列的Choice函 数//不选确择定,算当法且失仅败当终C止hoice的任何一组选
择都不会导致成功信号时,算法在O(1)
时间不成功终止。
ch10.6
不确定机的执行方式,可理解为不受限制的并行计算:
➢不确定机执行不确定算法时,每当Choice函数进行 选择时,就好像复制了多个程序副本,每一种可能的 选择产生一个副本,所有副本同时执行。一旦一个副 本成功完成,将立即终止所有其他副本的计算。
➢如果存在至少一种成功完成的选择,一台不确定机 总能做出最佳选择,以最短的程序步数完成计算,并 成功终止。
在不不确确定定搜机索上算执法行:的算法称为不确定算法(non
dveotiedrSmeianricsht(iicntaal[g],oTrxit)hm如)果。一个判定问题实例的解为真,
{
Choice函数每一次总能在O(1)时
int j=Choice(0,n-1); 间//从内{做0,1出,.导..,n致-1成}中功任的意正选确取选一择个。值
算法设计与分析
第10章 NP完全问题
学习要点: 确定算法和不确定算法 判定问题和最优化问题的关系 可满足性问题 P类问题和NP类问题 NP难度(NP hard)和NP完全(NP complete)问题 Cook定理 典型的NP完全(或NP难度)问题的证明
ch10.2
章节内容:
10.1 基本概念 10.2.1 Cook定理 10.3 一些典型的NP完全问题
13 NP-完全问题

随机存取存储程序机RASP
1、RASP的结构 、RASP的结构
RASP的整体结构类似于RAM,所不同的是RASP的程序是存 储在寄存器中的。每条RASP指令占据2个连续的寄存器。第一个 寄存器存放操作码的编码,第二个寄存器存放地址。RASP指令用 整数进行编码。
2、RASP程序的复杂性 、RASP程序的复杂性
一些难解问题
(5)可满足性问题
这个问题也称合取范式的可满足问题。 这个问题也称合取范式的可满足问题。 一个合取范式形如:A1∧A2∧…∧An(即若干子句的逻辑乘) ∧An( 一个合取范式形如:A1∧A2∧ ∧An 即若干子句的逻辑乘) 子句Ai形如:a1∨a2∨…∨ak,其中aj(1<=j<=k) Ai形如 ∨ak,其中aj(1<=j<=k)为某一布尔变 子句Ai形如:a1∨a2∨ ∨ak,其中aj(1<=j<=k)为某一布尔变 量或是该变量的非。 量或是该变量的非。 合取范式的可满足性问题:是否有一组对所有命题变量的赋值 合取范式的可满足性问题: T),使得整个CNF取值为真( CNF取值为真 (F或T),使得整个CNF取值为真(T)。
一些难解问题
(6)图的团集问题
图G=<V,E>的团集,是指G的一个完全子图,即该子图中任意两 G=<V,E>的团集,是指G的一个完全子图, 的团集 个互异的顶点都有一条边相连。 个互异的顶点都有一条边相连。 无向图G=<V,E>的团集问题: 无向图G=<V,E>的团集问题:求G的最大子团。 G=<V,E>的团集问题 的最大子团。
13 NP完全问题
Hale Waihona Puke 学习要点• • • •
Chapter-9_NP完全问题

9 NP完全问题 NP Complete Problem
南京理工大学
本章内容提要
• • • • • • • 易解问题与难解问题 P类问题和 类问题 类问题和NP类问题 类问题和 NP完全问题 完全问题 co-NP类问题 类问题 NPI类问题 类问题 P、NP、co-NP、NPI类之间的区别与联系 、 、 、 类之间的区别与联系 NP完全问题的计算机处理技术简介 完全问题的计算机处理技术简介
南京理工大学
9.1.2 易解问题与难解问题的主要区别
在学术界已达成这样的共识: 在学术界已达成这样的共识:把多项式时间复杂性作为 易解问题与难解问题的分界线,主要原因有: 易解问题与难解问题的分界线,主要原因有: 1) 多项式函数与指数函数的增长率有本质差别
问题规模 n logn n
1 10 20 50 100 0 3.3 4.3 5.6 6.6 1 10 20 50 100
特点:对同一输入实例,运行算法 ,所得结果是一样的。 特点:对同一输入实例,运行算法A,所得结果是一样的。
• 定义 定义9.2(P类问题 如果对于某个判定问题 ,存在一个非 类问题): 类问题 如果对于某个判定问题∏, 负整数k,对于输入规模为n的实例 能够以O(nk)的时间运 的实例, 负整数 ,对于输入规模为 的实例,能够以 的时间运 行一个确定性算法,得到yes或no的答案,则称该判定问题 的答案, 行一个确定性算法,得到 或 的答案 ∏是一个 是一个P(Polynomial)类问题。 类问题。 是一个 类问题
3) 多项式时间复杂性忽略了系数,不影响易解问题与难解 多项式时间复杂性忽略了系数,
问题的划分
问题规模n 问题规模 5 10 100 1000 多项式函数 n8 390625 108 1016 1024 108n 5×108 × 109 1010 1011 n1000 51000 101000 102000 103000 1.1n 1.611 2.594 13780.6 指数函数 20.01n 1.035 1.072 2
NP完全问题

时间复杂度:时间复杂度并不是表示一个程
序解决问题需要花多少时间,而是当问题规模扩大 后,程序需要的时间长度增长得有多快。
• 也就是说,对于高速处理数据的计算机来说,处理某一个 特定数据的效率不能衡量一个程序的好坏,而应该看当这 个数据的规模变大到数百倍后,程序运行时间是否还是一 样,或者也跟着慢了数百倍,或者变慢了数万倍。 • 不管数据有多大,程序处理花的时间始终是那么多的,我 们就说这个程序很好,具有O(1)的时间复杂度,也称常数 级复杂度;数据规模变得有多大,花的时间也跟着变得有 多长,这个程序的时间复杂度就是O(n),比如找n个数中 的最大值;而像冒泡排序、插入排序等,数据扩大2倍, 时间变慢4倍的,属于O(n^2)的复杂度。还有一些穷举类 的算法,所需时间长度成几何阶数上涨,这就是O(a^n)的 指数级复杂度,甚至O(n!)的阶乘级复杂度。
如何证明一个问题是NP完全性问题
• 首先找出一个已知为NP完全性问题,通过 归约说明待证明的问题也是NP完全性问题, 其原因是如果可以再多项式时间解决这个 问题,就可以在多项式时间解决所有的已 知的全部NP完全问题。
例如:
• • • • 已知顶点覆盖问题为NP完全问题 顶点覆盖问题: 输入:图G和一个整数K。 输出:如果图G中不超过k个定点的一个子集s使得图G中 的每一条边至少有一个端点在S中,则输出YES,否则输 出NO。 证明团问题是NP完全问题 团问题: 输入:图G和一个整数K。 输出:如果图G中不少于k个定点的一个子集S是一个完全 图,则输出YES,否则输出NO。
• 非确定性是指在理论计算机科学中,针对 各种计算机器模型(自动机),在每一时 刻,根据当时的状态和输入,若机器有多 个动作可供选择时,则称机器为非确定性 的;相反,若机器的动作可唯一确定时。 • 且非确定性是相对于确定性来说,对于非 确定性的机器,在性能各方面要高于确定 性机器。
NP完全的问题

NP完全的问题一个NP-完全的问题具有如下性质:它可以在多项式时间内求解,当且仅当所有的其他的NP-完全问题也可以在多项式时间内求解。
P是所有可在多项式时间内用确定算法求解的判定问题的集合。
NP 问题是所有可用多项式时间算法验证其猜测准确性的问题的集合。
令L1和L2是两个问题,如果有一确定的多项式时间算法求解L1,而这个算法使用了一个在多项式时间内求解L2的确定算法,则称L1约化为L2。
如果可满足性约化为一个问题L,则称L问题是NP-难度的。
如果L是NP难度的且L(-NP,则称L是NP-完全的。
NP并不是NON-POL YNOMIAL,把NP说成是NON-POL YNOMIAL,是望文生义,读书不求甚解。
事实上,如果你能够证明某个NP问题是个NON-POL YNOMIAL的问题,你就可以去领那七个百万美元数学大奖中间的一个了。
数学上著名的NP问题,完整的叫法是NP完全问题,也即“NP COMPLETE”问题,简单的写法,是NP=P?的问题。
问题就在这个问号上,到底是NP等于P,还是NP不等于P。
证明其中之一,便可以拿百万美元大奖。
这个奖还没有人拿到,也就是说,NP 问题到底是Polynomial,还是Non-Polynomial,尚无定论。
NP里面的N,不是Non-Polynomial的N,是Non- Deterministic,P代表Polynomial倒是对的。
NP就是Non-deterministic Polynomial的问题,也即是多项式复杂程度的非确定性问题。
如果一个判定性问题的复杂度是该问题的一个实例规模n的多项式函数,则这种可以在多项式时间内解决的判定性问题属于P类问题。
P类问题就是所有复杂度为多项式时间的问题的集合。
通俗地称所有复杂度为多项式时间的问题为易解的问题类,否则为难解的问题。
有些问题很难找到多项式时间的算法(或许根本不存在),例如“找出无向图中哈米尔顿回路”问题。
但如果给了该问题的一个答案,可以在多项式时间内判断这个答案是否正确。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
boolean judgeEqual(int n, Elem[] a, Elem[] b){ for (int i=0; i<n; i++) for (int j=0; j<n; j++) if (a[i] == a[j]) return yes; //修改为no
2.1.7 判定问题规约定理示例
问题是:给定一个长度为n整数数组D和一个整数k判断是否存 在D中的一个元素和k相等。 问题是:给定一个长度为m整数 数组E和一个整数k判断是否存在E中的两个元素,其和与k相等 假设问题的输入实例I是一个长度为n=4的数组{2, 4, -1, 8}, 和一个整数3,转换算法A如下: int[] transfer(int n, int[] inst_ba){ int[] inst = new int [n*(n-1)/2]; int count = 0; for (int i=0; i<n; i++) for (int j=0; j<i; j++){ inst[count] = inst_bar[i] + inst_bar[j]; count++; } }
Cook-Karp论题:一个问题是实际可计算的当且仅当它 在图灵机上经过多项式时间(步数)计算得到正确的结果。 Cook-Karp论题将可计算问题类进一步划分成两类:一类 是实际可计算的,另一类是实际不可计算的
1.2 问题分类
有两类问题,一类是判定问题,另一类是优化问题 判定问题的解只涉及两种情况:yes或no;优化问题 则涉及极值问题 判定问题举例:给定一个带整数权的有向图G和一 个正整数k,是否存在着一条长度小于k的哈密尔顿回 路? 优化问题举例:给定一个带整数权的有向图G,其 最短路径长度的哈密尔顿长度是多少?
从定义上看:P类问题可以用多项式时间的确定 算法解决(判定或求解);NP类问题可以用多项 式级别的时间的确定算法进行检查、验证和判定 PNP。这是因为P类问题一定可以用多项式时 间的算法判定
猜测NPP,也就是猜测至少存在着一个问题, 它属于NP类,但它不属于P类。但迄今没有给出 证明
3. NP完全问题
2.1.6 判定问题规约的定理
定理:令和是两个判定问题,如果P,并 且 p ,那么P
证明:根据和 的规约特性,存在着多项式 算法A,把的实例I转换为的实例I,并且二者 运算结果一致。由于A是多项式的,因此,其输出 也是多项式的。A的运算结果(就是I)是一个多 项式规模的结果。而的实例可以用多项式规模的 时间运算得到结果。处理的实例I所需时间是: I向I转换所需时间 + 处理I所需时间,这两个时间 都是多项式级别的,因此处理的实例I是多项式 级别的
2.2.4 NP类问题举例
例一:给定n个城市、正常数k及城市之间的费用 矩阵C,判断是否存在一条结果所有城市一次且仅 一次、最后返回出发城市、费用小于常数k的回路 推测阶段:用纯随机的方式或相邻有通路城市之 间随机的方式产生一条路径长度是n的路径序列。这 个过程可以用多项式级别的时间完成
验证阶段:首先验证这条路径的相邻城市之间是 否有通路(第二种推测方式不需要);然后验证这 条路径是否经过且只经过每个城市一次;最后验证 这条路径的费用是否小于k。所有验证工作耗时是多 项式级别的
计算复杂性理论有两个基本论题:Church-Turing论题和 Cook-Karp论题 Church-Turing论题:一个问题时可计算的当且仅当它在 图灵机上经过有限次计算得到正确的结果。这个论题把人 类所面临的问题分为两类:一类是可计算的,另一类是不 可计算的。但“有限次计算”是一个宽松的条件
return no; //修改为yes
}
2,如果存在一个 具有如下性能的算法A,可以用多项式的时间,把 问题的实例I转换为问题的实例I,使得I与I的 答案一致,就称以多项式时间规约于,记为 p
举例:问题是:给定一个长度为n整数数组D 和一个整数k判断是否存在D中的一个元素和k相等。 问题是:给定一个长度为m整数数组E和一个整 数k判断是否存在E中的两个元素,其和与k相等。 用于的实例I向的实例I转换的多项式算法A
1.3 优化问题向判定问题的转换
判定问题举例:给定一个带整数权的有向图G和一个正整数k, 是否存在着一条长度小于k的哈密尔顿回路? 优化问题举例:给定一个带整数权的有向图G,其最短路径 长度的哈密尔顿长度是多少?
如果上述判定问题用下面函数解决: boolean Hamilton(Graph g, int k); 则上述优化问题可以用二分的方式在下面的函数中解 决:
可以把前述判定问题的提法改变:给定两个大 小均为n的集合A和B,判断这两个集合中是否不 存在着相同的元素? 这个问题是前述问题的补 定义:令C是一类问题,如果对C中的任何问 题C,如果的补也在C中,则称C类问题在 补集下封闭
2.1.4 P类问题在不集下封闭定 理
定理:P类问题在补集下是封闭的
2.2.5 NP类问题的特征
NP类问题的本质特征是:对于给定的一个 实例,能够以多项式时间判断它是不是问题 的实例;如果是,能够以多项式时间对它作 出问题中要求的yes或no的结果回答 NP问题的另一个特征是多项式级别的推测: 能够以多项式时间推测问题的实例
2.2.6 P类问题和NP类问题的关 系
函数transfer输出一个数组{6, 1, 3, 10, 12, 7},规模是n的多项式 级别。它含有3,因此原问题结果是yes,否则原问题结果为no
2.2 NP类问题
2.2.1 非确定算法举例
2.2.2 NP类问题算法的阶段 2.2.3 NP类判定问题的定义 2.2.4 NP类问题举例 2.2.5 NP类问题的特征 2.2.6 P类问题和NP类问题的关系
2.2.1 非确定算法举例
给定n个城市及其邻接费用矩阵,找出一个长度为n的序列, 每个元素代表一个城市: int[] getSequence(int n, int[] cities){ int[] result = new int[n]; for (int i=0; i<n; i++){ result[i] = (int)(Math.random()*n); } return result; } 这是一个多项式级别的算法,返回的序列长度为n,但不能 保证相邻两个城市之间有通路,也不能保证各个城市只经过 一次 也可以用城市之间有通路作为条件生成一个长度是n的序列, 这能保证两个相邻城市之间有通路,但不能保证经过且只经 过每个城市一次。这也可以在多项式级别的时间内完成
3.1 NP完全问题的定义 3.2 多项式规约关系的传递性定理 3.3 NP完全性的传递性定理 3.4 NP完全性的传递性举例 3.5 NP完全问题的重要特征 3.6 NP完全问题举例
3.1 NP完全问题的定义
定义:令是一个判定问题,如果对NP中每一个 问题NP,有 p ,就称问题是一个NP难题 定义:令是一个判定问题,如果属于NP,并 且对NP中每一个问题NP,有 p ,就称判定 问题是NP完全的,记为NPC
2.2.3 NP类判定问题的定义
定义:如果对某个判定问题,存在着一个非负 整数k,对输入规模为n的实例,能够以O(nk)的时 间运行一个非确定的算法,得到yes或no的答案, 则该判定问题是一个NP类判定问题 NP类判定问题的推测和验证合成之后是一个非 确定的算法,这个非确定的算法必须在多项式时 间内完成 NP的意义是:Nondeterministic Polynomial
int minHamilton(Graph); //二分查找中调用Hamilton函数
2. P类和NP类问题
2.1 P类问题 2.2 NP类问题
2.1 P类问题
2.1.1 确定性算法 2.1.2 P类判定问题
2.1.3 在补集下封闭的定义
2.1.4 P类问题在不集下封闭定理
2.1.5 判定问题规约的定义
3.4 NP完全性的传递性举例
已知哈密尔顿回路问题是一个NP完全问题, 证明货郎担问题也是一个NP完全问题
哈密尔顿回路问题 :给定无向图G=(V,E), 是否存在一条回路,使得图中每个顶点在回路中 出现且只出现一次 货郎担问题:给定n个城市和它们的距离矩 阵,以及距离L,是否存在从某个城市出发,经 过每个城市一次且仅一次,最后回到出发城市且 距离小于或等于L的路线
例二:m团问题CLIQUE:给定无向图G = (V, E)、 正整数m,判定V中是否存在m个顶点,使得它们导 出的子图构成一个完全图 推测阶段:可以随机地找出m个顶点(这些顶点 可以重复);也可以随机地找出m个不重复的顶点。 这项工作的时间复杂度是多项式级别的 验证和判断阶段:验证m个顶点是否不重复(对 第二种推测,可以省略该步),如果不重复,对于 这m个顶点,判断它们在原图中是否两两相邻。如 果是,则回答yes;否则,回答no。这项工作也可以 在多项式级别的时间内完成
3.3 NP完全性的传递性定理
定理:令和是NP中的两个问题,使得 p 。如果是NP完全的,则也是NP完全的 证明: 由于是NP完全的,如果令是NP中 任意一个问题,则有 p 。根据关系p的传 递性, p 。并且, 在NP中是任意的, 因此,是NP完全的
2.1.6 判定问题规约的定理
2.1.7 判定问题规约定理示例
2.1.1 确定性算法
定义:假设A是问题的一个算法。如果 算法在处理实例的执行过程中每一个步骤 都有一个确定的选择,则称算法A是确定性 算法 对于问题的确定性算法A,每一个实例 执行多次的结果是严格一致的
2.1.2 P类判定问题
第12章 NP完全问题
1. NP完全问题概述 2. P类和NP类问题
3. NP完全问题