NP完全问题 ppt课件

合集下载

算法分析设计NP完全问题PPT课件

算法分析设计NP完全问题PPT课件

if(a[j]==x) { cout<<j;
Success();
执行时间都为O(1) //不确定算法成功终止
}
cout<<-1; Failure(); }
若算法执行中需作出一系列的Choice函 数//不选确择定,算当法且失仅败当终C止hoice的任何一组选 择都不会导致成功信号时,算法在O(1)时 间不成功终止。
在不不确确定定搜机索上算执法行:的算法称为不确定算法(non
dveotiedrSmeianricsht(iicntaal[g],oTrxit)hm如)果。一个判定问题实例的解为真,
Hale Waihona Puke {Choice函数每一次总能在O(1)时间
int j=Choice(0,n-1); 内//从做{出0,1导,.致..,n成-1功}中的任正意确选选取择一。个值
即: ✓求解Q1的确定算法是通过调用求解Q2的确定算法完 成的, ✓对Q2算法实施的调用过程所需的时间是多项式时间 的。 那么:只要对问题Q2存在多项式时间求解算法,问题 Q1就能在多项式时间内得以求解。
第15页/共29页
约化存在以下性质: 性质10-1 若Q1∈P,Q2∝Q1,则有Q2 ∈P。 性质10-2 (传递性) 若Q1∝Q2,Q2∝Q3,则Q1∝Q3。
因为:对n个布尔变量赋值需要O(n)时间,计算公式 E(x,n)的时间为O(e),e是公式长度。
所以,可满足性问题的不确定算法时间为O(n+e)。
第13页/共29页
10.1.3 P类和NP类问题
P类问题:可在多项式时间内用确定算法求解的判定 问题。 NP类问题:可在多项式时间内用不确定算法求解的 判定问题。(多项式时间内可验证问题的解。)

参考资料NP完全问题-一些重要的概念.ppt

参考资料NP完全问题-一些重要的概念.ppt
2019/3/20 8
第一个难解的“可判定”问题是在六十年代初获 得的,它是Hartmanis和Stearns[1965]的复杂性 “谱系”工作的一部分,但是,这些结果只包括一些 “人工制造的”问题,它们被专门构造成具有所需要 的性质。直到七十年代初,Meyer和 Stockmeyer[1972],Fischer和Rabin[1974]以及 其他人终于成功地证明某些“自然的”可判定问题是 难解的,这些问题包括自动机理论、形式语言理论以 及数理逻辑中以前研究过的各种问题。实际上,他们 的证明表明甚至用“非确定型” (nondeterministic)计算机模型也不可能在多项式 时间内解这些问题,这种“非确定型”计算机模型具 有执行无限多个独立的并行计算序列的能力。这种 “不合理的”计算机模型在NP完全性理论中起着重要 的作用。 2019/3/20 9
2019/3/20
10
3、NP完全问题
• 可以用“非确定型”计算机通过多项式时间算法求解 的问题称为“NP类”问题。理论工作者们一方面继续 寻找更有力的方法来证明问题的难解性,同时又在努 力研究就难度而言各种问题相互联系的方式。发现问 题之间的这种相互联系常常可以给算法设计人员提供 有用的信息。证明两个问题相关的基本方法是通过给 出一个构造性变换把第一个问题的任一实例映射到第 二个问题的一个等价的实例,从而把第一个问题“归 约”为第二个问题。这样的变换提供了一个手段,把 解第二个问题的任何算法转变成解第一个问题的相应 的算法。
2019/3/20
16
实用中,知道一个问题是NP完全的就给我们提供 了有价值的信息,告诉我们采用什么样的途径可以是 最富有成效的。一定不要去优先寻找有效的、精确的 算法。现在比较适当的途径是集中精力致力于其他较 低目标的方法。例如,你可以寻找解决这个问题的各 种特殊情况的有效算法。寻找在大多数情况下看来能 快速运算的算法,虽然不能保证它在任何情况下都能 快速地运算。或者你甚至可以放松问题的某些方面, 寻找一个只能给出满足大部分要求的快速算法。简言 之,NP完全性理论的初步应用是帮助算法设计人员找 到最有可能得到有用的算法的努力方向。

第7章NP完全性理论1

第7章NP完全性理论1
最优化问题可以转换为一个不困难的判定问题。
例如: 最短单元路径问题<G,u,v>,是最优化问题。
路径问题(判定问题):设<G,u,v,k>,判定给定有 向图G和顶点u,v一个整数k,在u,v之间是否存在 一条包含至多k条边的路径。
编码
如果要用一个计算机程序来求解抽象问题,就必须用一种 程序能理解的方式来标识问题实例。
P Vs NP
NP P
P = NP? [Cook 1971, Edmonds, Levin,
Yablonski, Gödel]
问题就在这个问号上,到底是NP等于P,还是
NP不等于P。
Байду номын сангаас证明其中之一,
便可以拿百万美元大奖
这个奖还没有人拿到,也就是说,NP问题到底是 Polynomial,还是Non-Polynomial,尚无定论。
性与光滑性 “千僖难题”之七:贝赫(Birch)和斯维讷通-戴尔(Swinnerton-
Dyer)猜想
NP完全问题排在百万美元大奖的首位,足见他的显赫地位和无穷魅力。
优秀的算法设计者
在项目起初可行性分析阶段如果能够确定 一个NP完全问题,就可以提供充分的理论 依据说明其难处理性和可行性的问题。
哈密顿回路
• 穷举法:罗列出G的顶点的所有排列,然后对每一种排列进行检查,以确定它是否 是一条哈密顿回路。
• 多少运行时间? • 把图编码为其邻接矩阵,图中顶点数m为 ( n) 其中n=|<G>|是G的编码长度,则总
共会有m!种可能的顶点排列,因此算法的运行时间为
(m!) ( n!) (2 n )
申明. 点覆盖 P 独立集. 证明. 我们将证明 S 是一个独立集,当且仅当 V S 是一个点覆盖.

NP完全问题.ppt

NP完全问题.ppt
nc=O(mk)
不成立, 因为nc/(nlog2c)k→∞(c→∞), 对 所有常数k.
除了涉及数的计算外, 以前我们分析的多 项式复杂度算法,在以字符串为输入时,仍 是多项式复杂度算法.
问题2 作业调度问题
判定问题:是否存在罚款额不超过k的作业 调度?
优化问题:求最小罚款额调度
问题3 Bin packing问题
假设有n种物品,它们的尺寸分别为 s1,…,sn,0<si≤1另有任意多个箱子(Bins), 箱子的容量为1,
优化问题:求使用最小箱数的装箱方法
判定问题:任意给定k,是否存在一种装箱 方法使用的箱子数≤k?
Void nondetA(String input) String s=genCertif(); boolean checkOK=verifyA(input,s) if (checkOK) Output “yes“ return
checOK为false时不作反应.
“不确定” 指:对同一输入w, 算法使用任 意多个不同的c ,进行验证. 对不同c 的这 些计算,可以看作是同时定输入字符串w, 1. Guessing
不确定地写一个称为”certificate” (guessed 解)
的字符串c . c 实际上是可行解的一种表示; 例如, 表示背包 问题的n元组, 表示图的字符串或邻接矩阵. 2. checking 使用一确定的有多项式界的算法验证c是否为问 题的答案. 如果是给出yes, 反之, 不回答. 多项式界指: 写c 和验证的时间为O(q(|w|)), q( )为某一多项式, w为输入长度. 不能实现的、虚构的算法
(n mod j)计算时间为Θ(log2n)(bit级运算). 算法的复杂度为Θ(nlog2n).但n是输入长度

NP完全问题证明PPT幻灯片

NP完全问题证明PPT幻灯片

aA
i 1
k
k
k
s(ai ) 2 s(ai ) B s(ai ) B
i 1
i 1
i 1
k
4 s(ai ) i 1
假设A’ A使得A’和A-A’的元素大小之和相等,即
k
s(a) s(a) 2 s(ai )
aA'
aA A'
i 1
由于
k
s(b1 ) s(b2 ) 3 s(ai )
设V’是V中不超过K的顶点覆盖, 则V’中必包含Ti中的一个顶点 和每个Ej’中的两个顶点, 至少要n+2m个顶点. 而K=n+2m, 故V’中一 定只包含每个Ti中的一个顶点和每个Ej’中的两个顶点.
如下得到赋值 uiV’ t(ui)=T
ūiV’ t(ui)=F
Ej’’中的三条边有两条被Vj’V’中的顶点覆盖, 第三条必被 V’Vi中的顶点覆盖. 这表示在Vi中的这个顶点对应的文字取真. 所以子句cj被满足. 从而C被满足.
(w1,x2,y2),(w1,x2,y1),(w2,x1,y1) s(a1) = 01 00 00 01 00 01 = 210 + 24 + 20 s(a2) = 01 00 00 01 01 00 = 210 + 24 + 22 s(a3) = 00 01 01 00 01 00 = 28 + 26 + 22 B = 01 01 01 01 01 01
问题描述:给定一个3元合取范式α,判定它是否可 满足。
证明思路: 3-SAT∈NP是显而易见的。为了证明3-
SAT∈NPC,只要证明CNF-SAT∝p 3-SAT,即合取 范式的可满足性问题可在多项式时间内变换为3-SAT。

NP完全问题(纯理论)

NP完全问题(纯理论)

NP类问题举例—求真因子问题
国王: 顺序算法 宰相: 并行算法
是否所有的难解问题通过并行计算使其在多项式内可 解?
关于并行算法:当将一个问题分解到多个处理器上解 决时,由于算法中不可避免地存在必须串行执行的操 作,从而大大地限制了并行计算机系统的加速能力。
NP类问题举例—求真因子问题
阿达尔定律:串行执行操作仅占全部操作1%,解 题速度最多也只能提高一百倍。
以多项式作为分界函数?
原因有两个: 一、常见算法大致分为两类: 一类是多项式时间内可实现的 另一类需要指数时间(O(cn))
多项式时间算法的可实现性远大于指数时间算法。 (参见P8,表1.2)
以多项式作为分界函数?
二、多项式时间算法与计算模型无关 算法的研究依赖于计算模型。在不同类型计算模型 上实现算法,计算时间不同。
SATISFIABILITY∝p3-SATISFIABILITY
几个典型的NPC问题

图的着色问题(COLORING) 判定问题:COLORING 输入:无向图G=(V,E) 问题:是否可用k种颜色为图G的顶点着色,使 得相邻顶点不会有相同颜色。
3-SATISFIABILITY∝pCOLORING
定义12.3 令П 是一个判定问题,如果: (1) П ∈NP; (2) 对NP中的所有问题П ′∈NP,都有 П ′∝pП ; 则称判定问题П 是NP完全 (NPC)的。
P类、NP类、NPC类问题关系
根据定义,可用如下图表示三者之间的关系:
NP

NPC
P类、NP类、NPC类问题关系

对NPC问题,有个重要性质 对NPC类中的一个问题,如果能够证明用多项式 时间的确定性算法来进行求解或判定,那么, NP中的所有问题都可以通过多项式时间的确定性 算法来进行求解或判定。

10第十章 NP完全问题

10第十章 NP完全问题

2可满足问题:给出一个合取范式(CNF)形 式的布尔表达式f,这里每个字句恰好由两 个文字组成,问f是可满足的吗?
如果对于任意问题c,Π的补也在c中,我 们说问题类Π∈c在补运算下是封闭的。例如, 2着色问题的补可以陈述如下:给出一个图G, 它是2不可着色的吗?我们称这个问题为NOT2-COLOR问题。
还有很多计算模型,此处略。
量子计算模型是什么样子呢? 本章的讲解是初步入门,不讨论建立在相应计算模型上的 算法讨论。
10.1 引 言 前面所有的算法的运行时间可以用低次 多项式表示。现在有这样一类问题,这些问 题至今还没有找到有效的算法,而且在将来 也不大可能发现它们的有效算法。
设Π是任意问题,如果对问题Π存在 一个算法,它的时间复杂性是O(nk),其中n 是输入大小,k是非负整数,我们说存在求 解问题Π的多项式时间算法。
下面证明它是属于P类的。 由于2着色问题在P中,存在一个确定性 算法A,当展示一个2可着色图时,它停机 并回答yes,在展示一个图不是2可着色图 时,它停机并回答no。通过在算法A中简单 的交换yes和no,能够得出问题NOT-2COLOR的一个确定性算法。这样有如下定 理。
定理 10.1 P类问题在补运算下是封闭的
10.3 NP类(Nondeterministic Polynomial) NP类由这样的问题Π组成,对于这些问题 存在一个确定性算法A,该算法在对Π的一个 实例展示一个断言解时,它能在多项式时间 内验证解的正确性。即如果断言解导致答案 是yes,就存在一种方法可以在多项式时间内 验证这个解。
为了较形式地定义这个类,必须首先定义不 确定性算法的概念。对于输入x,一个不确 定性算法由下列两个阶段组成。 (a) 猜测阶段 在这个阶段产生一个任意字 符串y,它可能对应于输入实例的一个解, 也可以不对应解。事实上,它甚至可能不 是所求解的合适形式,它可能在不确定性 算法的不同次运行中不同。它仅仅要求在 多项式步数内产生这个串,即在O(ni)时间 内,这里n=|x|, i是非负整数。对于许多问 题,这一阶段可以在线性时间内完成。

第5章 NP-完全性

第5章 NP-完全性
第五章 NP-完全性 NP Completeness
内容提要
•多项式时间,多项式时间归约,多项
式时间可验证算法,多项式时间可判 定算法 •优化问题及其相关的判定问题 •P,NP,NP-难,NP-完全,CO-P,CO-NP •电路可满足性问题是NP-完全问题 •若干NP-完全性问题的证明
重点与难点
具有相同的可满足性。
K-CNF:一个布尔公式称为k-CNF公式,如果 它是一个CNF公式且它的每个子句恰有k个 变元或变元的负出现。
可满足公式:一个布尔公式称为可满足的,如 果存在对该公式中的变量的一种赋值,使 得布尔公式取值为真。
k-CNF可满足问题:任给定一个k-CNF公式 F,问F是否可满足? 2-CNF可满足问题――多项式时间可判定 k-CNF可满足问题――NP-完全(k 3)。
NP-完全理论
概述 问题Q的多项式时间算法:最坏情况时间复 杂度f(n)=O(nk),k是某一常数。
易解问题:有多项式时间算法;
难解问题:需要超多项式时间。
有些问题描述相似但其求解难度有本质不同:
•最短路径问题 V.S. 最长路径问题 •Eular回路问题 V.S. Hamilton回路问题
•2-CNF可满足性问题 V.S. 3-CNF可满足性
波斯特对应问题实例: Σ={0,1} 例1. A={1,10,011}, B={101,00,11} 其解为:(1,3,2,3) 1011 10 011 例2. A={1,10111,10},B={111,10,0} 其解为(2,1,1,3)或(2,1,1,3,2,1,1,3) 例3.A={10,011,101},B={101,11,011} 这个PCP问题实例无解。
34.1 多项式时间的定义
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
❖判定问题举例:给定一个带整数权的有向图G和一 个正整数k,是否存在着一条长度小于k的哈密尔顿回 路?
❖优化问题举例:给定一个带整数权的有向图G,其 最短路径长度的哈密尔顿长度是多少?
NP完全问题
1.3 优化问题向判定问题的转换
判定问题举例:给定一个带整数权的有向图G和一个正整数k, 是否存在着一条长度小于k的哈密尔顿回路? 优化问题举例:给定一个带整数权的有向图G,其最短路径 长度的哈密尔顿长度是多少?
for (int j=0; j<n; j++)
if (a[i] == a[j])
return yes; //修改为no
return no; //修改为yes
}
NP完全问题
2.1.5 判定问题规约的定义
❖定义:令和是两个判定问题,如果存在一个 具有如下性能的算法A,可以用多项式的时间,把 问题的实例I转换为问题的实例I,使得I与I的 答案一致,就称以多项式时间规约于,记为 p
❖定理:P类问题在补集下是封闭的
❖证明:对于P类问题中的任意问题,只要修 改相应的多项式级别算法A的代码,把返回yes的 改为返回no,把返回no的改为返回yes即可
boolean judgeEqual(int n, Elem[] a, Elem[] b){
for (int i=0; i<n; i++)
第12章 NP完全问题
1. NP完全问题概述 2. P类和NP类问题 3. NP完全问题 4. co_NP类和NPI类问题
NP完全问题
1. NP完全问题概述
1.1 Church-Turing论题和Cook-Karp论题 1.2 问题分类 1.3 优化问题向判定问题的转换
NP完全问题
1.1 Church-Turing论题和Cook P类问题
2.1.1 确定性算法 2.1.2 P类判定问题 2.1.3 在补集下封闭的定义 2.1.4 P类问题在不集下封闭定理 2.1.5 判定问题规约的定义 2.1.6 判定问题规约的定理 2.1.7 判定问题规约定理示例
NP完全问题
2.1.1 确定性算法
❖定义:假设A是问题的一个算法。如果 算法在处理实例的执行过程中每一个步骤 都有一个确定的选择,则称算法A是确定性 算法 ❖对于问题的确定性算法A,每一个实例 执行多次的结果是严格一致的
NP完全问题
2.1.2 P类判定问题
❖定义:如果对某个判定问题,存在着一个非 负整数k,对输入规模为n的实例,能够以O(nk) 的时间运行一个确定的算法,得到yes或no的答 案,则称该判定问题是一个P(Polynomial)类 判定问题 ❖举例:给定两个大小均为n的集合A和B,判断 这两个集合中是否存在着相同的元素?
❖证明:根据和 的规约特性,存在着多项式
算法A,把的实例I转换为的实例I,并且二者
运算结果一致。由于A是多项式的,因此,其输出
也是多项式的。A的运算结果(就是I)是一个多
项式规模的结果。而的实例可以用多项式规模的
时间运算得到结果。处理的实例I所需时间是:
I向I转换所需时间 + 处理I所需时间,这两个时间
❖计算复杂性理论有两个基本论题:Church-Turing论题和 Cook-Karp论题
❖Church-Turing论题:一个问题时可计算的当且仅当它在 图灵机上经过有限次计算得到正确的结果。这个论题把人 类所面临的问题分为两类:一类是可计算的,另一类是不 可计算的。但“有限次计算”是一个宽松的条件
NP完全问题
2.1.3 在补集下封闭的定义
❖可以把前述判定问题的提法改变:给定两个大 小均为n的集合A和B,判断这两个集合中是否不 存在着相同的元素? ❖这个问题是前述问题的补 ❖定义:令C是一类问题,如果对C中的任何问 题C,如果的补也在C中,则称C类问题在 补集下封闭
NP完全问题
2.1.4 P类问题在不集下封闭定 理
都是多项式级别的,因此处理的实例I是多项式
级别的
NP完全问题
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){
如果上述判定问题用下面函数解决:
boolean Hamilton(Graph g, int k);
则上述优化问题可以用二分的方式在下面的函数中解 决:
int minHamilton(Graph); //N二P完全分问题查找中调用Hamilton函数
2. P类和NP类问题
2.1 P类问题 2.2 NP类问题
❖举例:问题是:给定一个长度为n整数数组D 和一个整数k判断是否存在D中的一个元素和k相等。 问题是:给定一个长度为m整数数组E和一个整 数k判断是否存在E中的两个元素,其和与k相等。 用于的实例I向的实例I转换的多项式算法A
NP完全问题
2.1.6 判定问题规约的定理
❖定理:令和是两个判定问题,如果P,并 且 p ,那么P
❖Cook-Karp论题:一个问题是实际可计算的当且仅当它 在图灵机上经过多项式时间(步数)计算得到正确的结果。 Cook-Karp论题将可计算问题类进一步划分成两类:一类 是实际可计算的,另一类是实际不可计算的
NP完全问题
1.2 问题分类
❖有两类问题,一类是判定问题,另一类是优化问题
❖判定问题的解只涉及两种情况:yes或no;优化问题 则涉及极值问题
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++;
} }
函数transfer输出一个数组{6, 1, 3, 10, 12, 7},规模是n的多项式 级别。它含有3,因此原问题N结P完全果问是题 yes,否则原问题结果为no
相关文档
最新文档