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问题的字面解释 非确定型多项式完全问题

NP问题的字面解释非确定型多项式完全问题一、背景介绍1. NP问题的概念NP问题是计算机科学和数学领域中一个重要的概念,即“非确定性多项式时间”(Non-deterministic Polynomial time),它代表了一类能在多项式时间内被验证的问题。
这类问题的解决方案虽然不能在多项式时间内被找到,但一旦有了一个解,却能够在多项式时间内被验证。
简而言之,如果一个问题可以在多项式时间内被验证,则它是一个NP问题。
2. 多项式完全问题的概念多项式完全问题是一类特殊的NP问题,它具有以下两个性质:它是一个NP问题;任何一个NP问题都可以在多项式时间内规约到它。
也就是说,如果有一个多项式时间算法能够解决任何一个多项式完全问题,那么就能够解决所有的NP问题。
3. 非确定型多项式完全问题非确定型多项式完全问题是NP问题中最困难的一类问题,它要求在多项式时间内验证一个解的存在,并且这个验证需要非确定性算法。
换言之,虽然这类问题的解可以在多项式时间内被验证,但却无法在多项式时间内被求解。
非确定型多项式完全问题是计算理论中一个极具挑战性的问题。
二、定义和性质1. 非确定型多项式完全问题的定义非确定型多项式完全问题是指一个问题,如果它是一个NP问题,并且任何一个NP问题都可以在多项式时间内归约到它,那么它就是一个非确定型多项式完全问题。
每一个非确定型多项式完全问题都是NP 问题,但不是所有的NP问题都是非确定型多项式完全问题。
2. 非确定型多项式完全问题的性质非确定型多项式完全问题具有以下一些重要性质:(1)困难性:非确定型多项式完全问题是计算上的一类最困难问题,它们无法在多项式时间内被求解。
(2)通用性:任何一个NP问题都可以在多项式时间内归约到非确定型多项式完全问题,因此解决了一个非确定型多项式完全问题就意味着可以解决所有的NP问题。
(3)实际意义:非确定型多项式完全问题在实际生活中具有广泛的应用,例如在计划问题、调度问题、网络设计等方面都有重要的地位。
算法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完全问题
np完全问题的解题策略

np完全问题的解题策略NP完全问题是计算复杂性理论中的一个重要问题类别,指的是在多项式时间内无法求解的问题。
这类问题的解题策略主要有以下几种:暴力穷举法、分支定界法、动态规划法、贪心法、图论法等。
1.暴力穷举法:暴力穷举法是最直观的解题策略,它的基本思想是穷尽所有可能的解,然后逐一验证是否满足问题的条件。
在NP完全问题中,通常会有指数级别的可能解,这导致了暴力穷举法的计算复杂度非常高,因此在实际应用中往往无法使用。
然而,暴力穷举法可以作为验证其他解法的正确性的手段。
2.分支定界法:分支定界法是一种基于搜索的解题策略,它将搜索空间划分为一系列子问题,并通过剪枝策略来减少搜索空间的大小。
分支定界法的基本思想是优先搜索最有可能导致问题解的子问题,当发现某个子问题的最优解不可能超过当前找到的最优解时,剪枝该子问题的搜索。
分支定界法对于某些NP完全问题能够得到较好的近似解,但并不能保证一定能够找到最优解。
3.动态规划法:动态规划法是一种将复杂问题分解为更小的子问题来求解的方法。
在解决NP完全问题时,动态规划法通常涉及将原始问题划分为一系列子问题,并通过计算子问题的最优解来逐步推导出原问题的最优解。
动态规划法的关键是要找到问题的递推关系和边界条件。
然而,由于NP完全问题的特殊性,动态规划法并不一定能够求解最优解,但可以用于部分问题的近似解。
4.贪心法:贪心法是一种通过每一步都选择当前最优解的策略来求解问题的方法。
在解决NP完全问题时,贪心法通常从问题的某个初始解出发,然后根据某个启发式准则逐步构建解。
然而,由于贪心法只考虑当前最优解,而没有考虑全局最优解,因此在NP完全问题中并不一定能够得到最优解。
然而,贪心法常常能够得到较好的近似解,且其计算效率较高。
5.图论法:图论法是一种通过建立问题的图模型来求解问题的方法。
在解决NP完全问题时,图论法通常将问题的实例映射为图的某种形式,并通过对图的遍历、搜索等操作来求解。
NP完全问题

�
以多项式作为分界函数?
原因有两个: 一,常见算法大致分为两类: 一类是多项式时间内可实现的 另一类需要指数时间(O(cn)) 多项式时间算法的可实现性远大于指数时间算法. (参见P8,表1.2)
以多项式作为分界函数?
二,多项式时间算法与计算模型无关 算法的研究依赖于计算模型.在不同类型计算模型 上实现算法,计算时间不同. 广义Church—Turing命题:不同计算模型上的计算 时间有多项式关系. 多项式与多项式的复合函数是多项式,因此,多项 式时间算法与计算模型无关.
SATISFIABILITY∝pCLIQUE
几个典型的NPC问题
顶点覆盖问题(VERTEX COVER) 判定问题:VERTEX COVER 输入:无向图G=(V,E),正整数k 问题:图G中是否存在一个大小为k的顶点覆盖
顶点覆盖定义:若存在 V ′ V, ′ = k,使得对 V 任意的 (u , v ) ∈ E,都有 u ∈ V ′或 v ∈ V ′, 则称 V ′为 图 G 的一个大小为 k的顶点覆盖.
NP类问题
一般而言,验证解比求解易. 对具有指数时间的问题,有些可用不确定性算法求 解.该算法包含两个阶段: 推测阶段 对规模为n的输入实例x,产生一个输出y. 验证阶段 检验y是否满足解形式,是否是解.
NP类问题
推测阶段是具有多项式时间的非确定性(nondeterminism)算法,对输入实例x,下次产生的输出 可能不是y. 验证阶段是具有多项式时间的确定性算法.
阿达尔定理告诉我们,对有些难解问题,即使提高计 算机运行速度,也不能在多项式时间内验证.即并非 所有的难解问题都属于NP类.
np完全问题

�
P类和NP类问题
确定性算法 :算法执行的每一个步骤,都有确定的选择. 重新用同一输入实例运行该算法,所得到的结果严格一致. P类判定问题 类判定问题是由具有多项式时间的确定性算法来解的判定 问题
最短路径判定问题 SHORTEST PATH: 给定有向赋权图 G = ( V , E ) (权为正整数),正整数 k ,及两个顶点 s, t ∈V ,是否 存在着一条由 s 到 t ,长度至多为 k 的路径. 可排序的判定问题 SORT: 给定 n 个元素的数组,是否可以按非降顺序排序.
P类判定问题的补 改变判定问题的提法,"是否可以","是否存在"改为 "是否不可以","是否不存在"的判定问题
可排序判定问题的补 NOT_SORT: 给定 n 个元素的数组,是否不可以按非降顺序排序. 最短路径判定问题的补 NOT SHORTEST PATH: 给定有向赋权图 G = ( V , E ) (权为正整数),正整数 k ,及两个顶点 s, t ∈V ,是否不存 在一条由 s 到 t ,长度至多为 k 的路径.
NP类问题
非确定性算法 1,问题 ∏ 的非确定性算法的两个阶段:推测阶段和验证阶段. 2,推测阶段:对规模为 n 的输入实例 x ,以多项式时间 O ( n i ) 产生输出 y ,而不管 y 的 正确性 3,验证阶段:以多项式时间 O ( n j ) 的确定性算法验证两件事情: 1)检查上一阶段的输出 y 是否具有正确的形式. 如果 y 不具正确的形式,算法就以答案 no 结束; 2)如果 y 具有正确的形式,则继续检查 y 是否是问题的输入实例 x 的解. 如果它确实是问题实例 x 的解,则以答案 yes 结束,否则,以答案 no 结束.
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 学习要点• • • •
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
NP完全问题
NP完全问题,是世界七大数学难题之一。
NP的英文全称是Non-deterministic Polynomial 的问题,即多项式复杂程度的非确定性问题。
简单的写法是NP=P?,问题就在这个问号上,到底是NP等于P,还是NP不等于P。
概述
NP完全问题是不确定性图灵机在P时间内能解决的问题,是世界七大数学难题之一。
NP完全问题排在百万美元大奖的首位,足见他的显赫地位和无穷魅力。
数学上著名的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的问题,也即是多项式复杂程度的非确定性问题。
非确定性问题详解
什么是非确定性问题呢?有些计算问题是确定性的,比如加减乘除之类,你只要按照公式推导,按部就班一步步来,就可以得到结果。
但是,有些问题是无法按部就班直接地计算出来。
比如,找大质数的问题。
有没有一个公式,你一套公式,就可以一步步推算出来,下一个质数应该是多少呢?这样的公式是没有的。
再比如,大的合数分解质因数的问题,有没有一个公式,把合数代进去,就直接可以算出,它的因子各自是多少?也没有这样的公式。
这种问题的答案,是无法直接计算得到的,只能通过间接的“猜算”来得到结果。
这也就是非确定性问题。
而这些问题通常有个算法,它不能直接告诉你答案是什么,但可以告诉你,某个可能的结果是正确的答案还是错误的。
这个可以告诉你“猜算”的答案正确与否的算法,假如可以在多项式时间内算出来,就叫做多项式非确定性问题。
而如果这个问题的所有可能答案,都是可以在多项式时间内进行正确与否的验算的话,就叫完全多项式非确定问题。
完全多项式非确定性问题可以用穷举法得到答案,一个个检验下去,最终便能得到结果。
但是这样算法的复杂程度,是指数关系,因此计算的时间随问题的复杂程度成指数的增长,很快便变得不可计算了。
解释
人们发现,所有的完全多项式非确定性问题,都可以转换为一类叫做满足性问题的逻辑运算问题。
既然这类问题的所有可能答案,都可以在多项式时间内计算,人们于是就猜想,是否这类问题,存在一个确定性算法,可以在多项式时间内,直接算出或是搜寻出正确的答案呢?这就是著名的NP=P?的猜想。
方法
解决这个猜想,无非两种可能,一种是找到一个这样的算法,只要针对某个特定NP完全问题找到一个算法,所有这类问题都可以迎刃而解了,因为他们可以转化为同一个问题。
另外的一种可能,就是这样的算法是不存在的。
那么就要从数学理论上证明它为什么不存在。
前段时间轰动世界的一个数学成果,是几个印度人提出了一个新算法,可以在多项式时间内,证明某个数是或者不是质数,而在这之前,人们认为质数的证明,是个非多项式问题。
可见,有些看来好象是非多项式的问题,其实是多项式问题,只是人们一时还不知道它的多项式解而已。
如果判定问题π∈NP,并且对所有其他判定问题π∈NP,都有π'多项式变换到
π(记为π'∞π),则称判定问题π 是NP完全的。
对P类,NP类及NP完全问题的研究推动了计算复杂性理论的发展,产生了许多新概念,提出了许多新方法。
但是还有许多难题至今没有解决,P=NP?就是其中之一。
许多学者猜想P≠NP,但无法证明。
简述:
一个NP-完全的问题具有如下性质:它可以在多项式时间内求解,当且仅当所有的其他的NP-完全问题也可以在多项式时间内求解。
P是所有可在多项式时间内用确定算法求解的判定问题的集合。
NP问题是所有可用多项式时间算法验证其猜测准确性的问题的集合。
令L1和L2是两个问题,如果有一确定的多项式时间算法求解L1,而这个算法使用了一个在多项式时间内求解L2的确定算法,则称L1约化为L2。
如果可满足性约化为一个问题L,则称L问题是NP-难度的。
如果L是NP难度的且L(-NP,则称L是NP-完全的。
NP并不是NON-POLYNOMIAL,把NP说成是NON-POLYN OMIAL,是望文生义,读书不求甚解。
事实上,如果你能够证明某个NP问题是个N ON-POLYNOMIAL的问题,你就可以去领那七个百万美元数学大奖中间的一个了。
数学上著名的NP问题,完整的叫法是NP完全问题,也即“NP COMPLETE”问题,简单的写法,是NP=P?的问题。
问题就在这个问号上,到底是NP等于P,还是N P不等於P。
证明其中之一,便可以拿百万美元大奖。
这个奖还没有人拿到,也就是说,NP问题到底是Polynomial,还是Non-Polynomial,尚无定论。
Mr. X信口开河
敢说NP就是Non-Polynomial,真是不知天高地厚,惹人笑话。
NP里面的N,不是Non-Polynomial的N,是Non-Deterministic,P代表Polynomial倒是对的。
NP就是Non-deterministic Polynomial的问题,也即是多项式复杂程度的非确定性问题。
[编辑本段]
非确定性问题的概述
什么是非确定性问题呢?有些计算问题是确定性的,比如加减乘除之类,你只要按照公式推导,按部就班一步步来,就可以得到结果。
但是,有些问题是无法按部就班直接地计算出来。
比如,找大质数的问题。
有没有一个公式,你一套公式,就可以一步步推算出来,下一个质数应该是多少呢?这样的公式是没有的。
再比如,大的合数分解质因数的问题,有没有一个公式,把合数代进去,就直接可以算出,它的因子各自是多少?也没有这样的公式。
这种问题的答案,是无法直接计算得到的,只能通过间接的“猜算”来得到结果。
这也就是非确定性问题。
而这些问题的通常有个算法,它不能直接告诉你答案是什么,但可以告诉你,某个可能的结果是正确的答案还是错误的。
这个可以告诉你“猜算”的答案正确与否的算法,假如可以在多项式时间内算出来,就叫做多项式非确定性问题。
而如果这个问题的所有可能答案,都是可以在多项式时间内进行正确与否的验算的话,就叫完全多项式非确定问题。
完全多项式非确定性问题可以用穷举法得到答案,一个个检验下去,最终便能得到结果。
但是这样算法的复杂程度,是指数关系,因此计算的时间随问题的复杂程度成指数的增长,很快便变得不可计算了。
人们发现,所有的完全多项式非确定性问题,都可以转换为一类叫做满足性问题的逻辑运算问题。
既然这类问题的所有可能答案,都可以在多项式时间内计算,人们於是就猜想,是否这类问题,存在一个确定性算法,可以在指数时间内,直接算出或是搜寻出正确的答案呢?这就是著名的NP=P?的猜想。
解决这个猜想,无非两种可能,一种是找到一个这样的算法,只要针对某个特定NP完全问题找到一个算法,所有这类问题都可以迎刃而解了,因为他们可以转化为同一个问题。
另外的一种可能,
就是这样的算法是不存在的。
那么就要从数学理论上证明它为什么不存在。
有些看来好像是非多项式的问题,其实是多项式问题,只是人们一时还不知道它的多项式解而已。