清华大学算法分析与设计课件第10讲_NP完全性理论

合集下载

NP完全问题详解PPT课件

NP完全问题详解PPT课件
' p ,就说判定问题是一个 NP 难题。 2、 NP 完全问题
定义 12.7 令是一个判定问题,如果: (1) NP,并且: (2) 对 NP 中的所有问题' NP,都有' p ; 则称判定问题是 NP 完全的。
3、 NP 难题和 NP 完全问题的差别 是 NP 完全问题,'是 NP 难题, 则必定在 NP 类中,而'不一定在 NP 类中。
第16页/共53页
例 已知哈密尔顿回路问题 HAMILTONIAN CYCLE 是一个 NP 完全问题,证明货郎担
问题 TRAVELING SALESMAN 也是一个 NP 完全问题。
哈密尔顿回路问题:给定无向图G (V , E ),是否存在一条回路,使得图中每个顶点在
回路中出现一次且仅一次。
货郎担问题:给定n个城市和最短距离l ,是否存在从某个城市出发、经过每个城市一
第9页/共53页
12.1.2 NP类问题
二、 NP 类判定问题 1、定义: 定义 12.5 如果对某个判定问题,存在着一个非负整数k ,对输入规模 为n的实例,能够以O ( nk )的时间运行一个非确定性的算法,得到 yes 或no的答案,则该判定问题是一个 NP 类判定问题。 2、特性: 存在确定性的算法,能够以多项式时间,来检查和验证在推测阶段产 生的答案。
第12页/共53页
12.1.2 NP类问题
3、P类问题和 NP 类问题的差别: P 类问题可以用多项式时间的确定性算法来进行判定或求解; NP 类问题可以用多项式时间的确定性算法来检查和验证它的解。 P,必然有 NP ,所以,P NP。 猜测 NP P。该不等式是否成立、至今还没有得到证明。
第13页/共53页
12.2 NP完全问题

第十章 NP完全问题

第十章  NP完全问题

第十章 NP 完全问题10.1 引言首先说明一下问题的复杂性和算法的复杂性的区别,下面只考虑时间复杂性。

算法的复杂性是指解决问题的一个具体的算法的执行时 间,这是算法的性质;问题的复杂性是指这个问题本身的复杂程度,是问题的性质。

比如对于排序问题,如果我们只能通过元素间的相互比较来确定元素间的相互位置,而没有其他的附加可用信息,则排序问题的复杂性是O(nlgn),但是排序算法有很多,冒泡法是O(n^2),快速排序平均情况下是O(nlgn)等等,排序问题的复杂性是指在所有的解决该问题的算法中最好算法的复杂性。

问题的复杂性不可能通过枚举各种可能算法来得到,一般都是预先估计一个值,然后从理论上证明。

如果∏是任意一个问题,对∏存在着一个算法,他的时间复杂度是)(k n O ,其中n 是输入规模,k 是非负整数,则认为存在一个解问题∏的多项式时间算法。

多项式时间算法是一个有效算法。

把存在多项式时间算法的问题,称为易解决问题;把时间复杂度是以指数函数或排列时间算法的问题,称为难解问题。

为什么用多项式作为划分的标准呢?1) 对于使用的多项式算法来说,多项式的次数很少大于三;2) 多项式时间可解问题类具有很好的封闭性。

即加、减、组合等运算封闭;3) 对很多合理的计算模型来说,在一个模型上用多项式时间可解的问题,在另一个模型上也可以在多项式时间内获得解决。

有两类问题:一类是判定问题,另一类是优化问题。

判定问题的只牵涉到两种情况:yes 或no。

优化问题则牵涉到极值问题(最大化或最小化)。

判定问题很容易转换为优化问题。

为了研究问题的复杂性,我们必须将问题抽象,为了简化问题,我们只考虑一类简单的问题,判定性问题,即提出一个问题,只需要回答yes或者no的问题。

任何一般的最优化问题都可以转化为一系列判定性问题,比如求图中从A到B的最短路径,可以转化成:从A到B是否有长度为1的路径?从A到B是否有长度为2的路径?…从A 到B是否有长度为k的路径?如果问到了k的时候回答了yes,则停止发问,我们可以说从A到B的最短路径就是k。

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中的所有问题都可以通过多项式时间的确定性 算法来进行求解或判定。

算法设计与分析ppt课件

算法设计与分析ppt课件
2
ACM国际大学生程序设计竞赛
ACM国际大学生程序设计竞赛(英文 全称:ACM International Collegiate Programming Contest(ACM-ICPC或 ICPC)是由美国计算机协会(ACM)主办 的,一项旨在展示大学生创新能力、团队 精神和在压力下编写程序、分析和解决问 题能力的年度竞赛。经过30多年的发展, ACM国际大学生程序设计竞赛已经发展成 为最具影响力的大学生计算机竞赛。赛事 目前由IBM公司赞助。
第3章 动态规划 3.1 矩阵连乘问题 3.2 动态规划算法的基本要素 3.3 最长公共子序列 3.4 最大子段和 3.5 凸多边形最优三角剖分 3.6 多边形游戏 3.7 图像压缩 3.8 电路布线 3.9 流水作业调度 3.10 0-1背包问题 3.11 最优二叉搜索树 3.12 动态规划加速原理
7
1.1 算法与程序
算法:是满足下述性质的指令序列。
输 入:有零个或多个外部量作为算法的输入。 输 出:算法产生至少一个量作为输出。 确定性:组成算法的每条指令清晰、无歧义。 有限性:算法中每条指令的执行次数有限,执行
每条指令的时间也有限。
程序:是算法用某种程序设计语言的具体实现。
4
教材与参考书
教 材:
◦ 算法设计与分析(第三版) 王晓东,2007年 5月,电子工业出版社。
参考书:
◦ 徐士良编,C常用算法程序集,华大学出版 社,1998年
◦ 霍红卫编,算法设计与分析 西安电子科技 大学出版社,2005年
◦ 卢开澄编,计算机算法导引,清华大学出 版社,2003年
5
部分目录
算法分析是计算机领域的“古老”而“前沿” 的课题。
10

算法设计与分析王红梅NP完全理论PPT课件

算法设计与分析王红梅NP完全理论PPT课件
❖ 关键——存在一个确定性算法,能够以多项式时间来检 查和验证猜测阶段所产生的答案。 例: NP类问题——Hamilton问题
汉诺塔问题不是NP类问题
第14页/共33页
P类问题和NP类问题的主要差别: ✓ P类问题可以用多项式时间的确定性算法来 进行判定或求解; ✓ NP类问题可以用多项式时间的非确定性算法 来进行判定或求解。
通常将存在多项式时间算法的问题看作是易解问题 (Easy Problem),将需要指数时间算法解决的问题 看作是难解问题(Hard Problem)。
例:易解问题——排序问题、查找问题、欧拉回路 难解问题——TSP问题、 Hanio问题、Hamilton回路
第7页/共33页
为什么把多项式时间复杂性作为易解问题和 难解问题的分界线?
第3页/共33页
例:对三个数进行排序的判定树

a1<a2


a2<a3


a1<a3

a1<a2<a3
a1<a

3
a2<a1<a3 否
a2<a

3

a1<a3<a2
a3<a1<2
a2<a3<a1
a3<a2<a1
第4页/共33页
2.1.3 最优算法
所谓最优算法(Optimality Algorithm)是 指在某一种度量标准下,优于该问题的所有 (可能的)算法。
第24页/共33页
定义2.7 令Π是一个判定问题,如果对于NP类 问题中的每一个问题Π',都有Π'∝pΠ,则称判定 问题Π是一个NP难问题。

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

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

17
近似算法的性能
若一个最优化问题的最优值为c*,求解该问题的一个 近似算法求得的近似最优解相应的目标函数值为c,则将 c * c max , 该近似算法的性能比定义为= c 。在通常情况 c* 下,该性能比是问题输入规模n的一个函数ρ(n),即 c * c max , ≤ρ(n)。 c c* 该近似算法的相对误差定义为= c * 。若对问题 cc* 的输入规模n,有一函数ε(n)使得 c * ≤ε(n),则称 ε(n)为该近似算法的相对误差界。近似算法的性能比 ρ(n)与相对误差界ε(n)之间显然有如下关系: ε(n)≤ρ(n)-1。
4
这种问题的答案,是无法直接计算得到的,只能通过间 接的“猜算”来得到结果。这也就是非确定性问题。而这些 问题的通常有个算法,它不能直接告诉你答案是什么,但可 以告诉你,某个可能的结果是正确的答案还是错误的。这个 可以告诉你“猜算”的答案正确与否的算法,假如可以在多 项式时间内算出来,就叫做多项式非确定性问题。而如果这 个问题的所有可能答案,都是可以在多项式时间内进行正确 与否的验算的话,就叫完全多项式非确定问题。
2
10
接受该语言CLIQUE的非确定性算法:用非确定性选择指令选 出包含k个顶点的候选顶点子集V,然后确定性地检查该子集是否 是团问题的一个解。算法分为3个阶段: 算法的第一阶段将输入串w#v分解,并计算出n= | w | ,以及 用v表示的整数k。若输入不具有形式w#v或|w|不是一个平方数就 2 拒绝该输入。显而易见,第一阶段可 O ( n ) 在时间内完成。 算法的第三阶段是确定性地检查V’的团性质。若V’是一个团 则接受输入,否则拒绝输入。这显然可以在 O ( n 4 ) 时间内完成。 4 因此,整个算法的时间复杂性为O ( n ) 。

《算法设计与分析》第10章

《算法设计与分析》第10章

例10-1 在n个元素的数组a中查找给定元素x,如 果x在其中,则确定使a[j]==x的下标j,否则输出-1。 【程序10-1】不确定搜索算法 void Search(int a[],T x) { int j=Choice(0,n-1); if(a[j]==x) { cout<<j;Success(); } cout<<-1;Failure();
10.2 Cook定理和证明

10.2.1 Cook定理
斯蒂芬· 库克(Steven Cook)于1971年证明了第一 个 NP 完全问题,称为 Cook 定理。 Cook 定理表明可满 足性问题是NP完全的。CNF可满足性问题也被证明是 NP 完全的。自从 Cook 证明了可满足性问题是 NP 完全 的之后,迄今为止至少有300多个问题被证明是NP难 度问题,但尚未证明其中任何一个是属于P的。 定理10-1 (Cook定理)可满足性问题在P中,当且 仅当P=NP。 定理10-2 CNF可满足性问题是NP完全的。
例 10-3 ( 最大集团及其判定问题)无向图G=(V, E) 的一个完全子图称为该图的一个集团 ( clique)。 集团的规模用集团的顶点数衡量。最大集团问题是 确定图G的最大集团规模的问题。最大集团判定问 题(G, k)是对给定正整数k,判定图G是否存在一 个规模至少为k的集团。
【程序10-3】 最大集团判定问题不确定算法 void Clique(int g[][mSize],int n,int k) { S=; for(int i=0;i< k;i++){ int t=Choice(0,n-1); if (tS) Failure(); S=S∪{t}; } for ( 对所有(i,j),iS,jS且ij) if((i,j)E) Failure(); Success(); }

算法与计算复杂性课程(10)NP完全理论应用

算法与计算复杂性课程(10)NP完全理论应用

NP完全性理论的应用用NP完全性理论进行子问题分析子问题的定义子问题的计算复杂性子问题的NP完全性证明NP难度搜索问题Turing归约NP-hard, NP-easy1子问题的定义及其实例定义设判定问题π=(Dπ,Yπ), 若Dπ’⊆Dπ, Yπ’⊆Yπ∩Dπ’,则称π’=(Dπ’,Yπ’) 是π的子问题.子问题的问题与原问题一样,定义域缩小.通过对实例的参数加以限制得到子问题.子问题实例限制子句中文字的个数得到SAT的子问题3SAT,2SAT 限制顶点度数、平面图、二部图、无圈图等得到图论问题的子问题限制常数K 的大小,如K=2, K=3 等得到子问题23努力扩大已知区域,缩小未知区域当P ≠NP 时,存在不属于NPC 也不属于P 的问题子问题的计算复杂性有先行约束的多处理机调度问题优化问题:给定任务集T, m 台机器,∀t∈T, l(t)∈Z+, T上的偏序≺.若σ:T→{ 0, 1, …, D }满足下述条件,则称T 为可行调度.∀t∈T, σ(t)+l(t)≤D∀i, 0 ≤i≤D, | { t∈T: σ(t) ≤i < σ(t)+l(t) }| ≤m∀t, t’∈T, t ≺t’⇔σ(t)+l(t) ≤σ(t’)求使得D 最小的可行调度.条件说明:任务在截止时间前完成同时工作的台数不超过m有偏序约束的任务必须按照约束先行4任务集如图所示,m=2,求使得D 最小的可行调度.实例5调度问题的子问题结构从上到下:偏序任意、树形偏序、无偏序约束从左到右:处理器台数限制逐步放大从前到后:各任务等长工作时间、任意工作时间78m =1, l 任意, 偏序任意(绿色面积)算法:1. 计算所有任务的工作时间之和Time2. if Time ≤D ,存在可行调度.3. 按照偏序从高层依次取任务,进行安排即可.m 任意, l 为常数, 偏序为空(浅兰色箭头)算法:1. Time ←⎡|T |/m ⎤l2.if Time ≤D ,存在可行调度.3. 将任务按顺序依次分配到m 台机器上.某些子问题属于P的说明9m 任意,l 为常数,偏序为树(深兰色箭头)关键路径算法:1.按照偏序关系,从树叶依次拿任务,每次至多下移m 个结点.2.将分配次数与D 比较,如果不超过D , 回答Yes. 分配次数至少为树高,可以证明时间为多项式时间.m =2, 偏序任意, l 为常数(紫色箭头)算法:H.N.Gabow,An almost linear algorithm for two processors scheduling, J.Assoc.Comput.Math,29, 1982, 766-780.某些子问题属于P的说明(续)10极大多项式可解的子问题π:(绿色)π是多项式时间可解的,并且不存在其他多项式可解的子问题π’,使得π是π’的子问题.极小NP 完全的子问题π(红色)π是NP 完全的,并且不存在其他NP 完全的子问题π’使得π’是π的子问题.极小未解决的子问题π:(黄色)π的子问题都属于P, 但不知π是否属于P ,也不知P 是否属于NPC.极大未解决的子问题π: (棕色)π的父问题都是NP 完全的,但不知π是否属于P ,也不知P 是否属于NPC.术语简介12对于由于顶点度数D 限制得到子问题的NPC 证明,通常采用局部替换法,设计新的保持性质不变,又能降低顶点度数的顶点替换.例2 顶点3 着色问题原问题:任意无向图的顶点3 着色问题子问题:最大度数D 不超过4 的顶点3 着色问题基本单元:度数k 大于等于5 的顶点替换成:子结构H k (内部顶点度数不超过4 的连续k −2个三角形)局部替换法的实例13对于G 中的k 度顶点,k ≥5, 替换成k -2个连续的三角形H k ,H k 具有k 个外顶点(和外部顶点邻接)H k 的顶点度数不超过4H k 的出口(外顶点)度数为2H k 可着3色,且每个外顶点着同色H k 的结构14下图的v 1 和v 2 是5度顶点,被H 5替换得到新的图,其中灰色区域表示替换后的两个H 5.替换实例NP难度搜索问题定义判定问题与搜索问题的关系搜索问题的形式定义Turing归约定义性质NP难,NP易与NP等价Turing归约的应用15搜索问题定义:一个搜索问题π有实例集Dπ, 对于π中的任何实例I,有一个有穷的解集合Sπ[I].如果存在算法A,对于任何实例I∈Dπ, A 都停机,并且如果Sπ[I]=∅,则回答无解,否则给出Sπ[I]中的一个解,那么称A解搜索问题π.例如,巡回售货员的优化问题,STS[I]就是实例I 中所有最短巡回路线的集合. Hamilton 回路的构造性问题,当G 中不存在Hamilton回路时回答无解,否则给出一条Hamilton回路.SHC [I]中是所有的HC的集合.搜索问题的定义及实例16判定问题与搜索问题之间的关系判定问题是搜索问题的特例.对于判定问题π,若I 属于Yπ, 则Sπ[I]={ Yes },若I 属于Dπ-Yπ, 则Sπ[I]={ No }.17搜索问题的形式说法设Σ是有穷字符表,R ⊆Σ+×Σ+ 称为Σ上的符号串关系,Σ+=Σ*−{ε},长度至少为1 的有穷串的集合.搜索问题π,I 为π的任意实例,I 在合理编码系统e 下的编码为x, 其编码系统的字符集为Σ. 令R[π,e]={ (x,y): x∈Σ+是实例I∈Dπ在e下的编码,y∈Σ+是解s∈Sπ[I]在e下的编码}则R 中的有序对由有解的实例的编码及其对应的一个解的编码构成18搜索问题的形式说法(续)定义函数f : Σ+→Σ*, x∈Σ+, 如果存在y∈Σ+使得(x,y)∈R, 则令f(x)=y, 否则f(x)=ε,那么称函数f 实现符号串关系R.实现符号串如果存在DTM 程序M计算的函数fM关系R,则称M解符号串关系R.如果存在多项式时间的DTM 程序M解R[π,e],则称搜索问题π在编码系统e下是多项式可解的.1920设π1, π2是搜索问题,A 是利用解π2的假想子程序s 解π1的算法,且只要s 是多项式时间的,A 也是多项式时间的,则称算法A 是从π1到π2 的多项式时间的Turing 归约. 这是也称π1 Turing 归约到π2,记作π1∝T π2.Turing归约Turing Reduction 非形式定义Turing归约(续)形式定义:带外部信息源的Turing 机OTM (Oracle Turing Machine)21OTM有穷带字符集Γ输入字符集Σ⊂Γ,空白字符b∈Γ−Σ., q h, q c, q r分别表示初始状有穷状态集Q, 其中含有q态、停机状态、访问外部信息源状态和恢复计算状态., q c})×Γ×(Σ∪{ b})转移函数δ:( Q−{ qh→Q×Γ×(Σ∪{b})×{-1,1}×{-1,1}×{-1,1}基本只写基本只写只读22输入x∈Σ+初始:x 写在基本带上方格1 到|x|,其余方格为b. Oracle的输入带(只写带)为b.每个带的带头置方格1.初始状态为q0.OTM的计算23OTM的计算(续)计算:,则计算结束,基本带方格1 到最右边非空若q=qh白方格的符号串是输出串.若q∈Q−{q, q c}, s1, s2分别为基本带和只读带扫描的h字符,且δ(q,s1,s2) = (q’,s1’,s2’, Δ1, Δ2, Δ3)那么状态变成q’,基本带字符改写为s’, 只写带字符改1’, 基本带、只写带、只读带带头分别移动Δ1,写为s2Δ2, Δ3.2425若q = q c ,y 为Oracle 输入带的字符串,z = g (y )为外部信息源函数,在一步之内将外部信息源Oracle 的输出带(只读)的1到|z | 方格写上z ,其余为b ;将输入带清为空白;将只读头,只写头置1;q c 变成q r . 基本带的内容、读写头不变.OTM的计算(续)26相对化的OTM 程序:设Mg 是M 与外部信息源g 相结合的相对化OTM 程序. 其带字符表为Γ,输入字符表为Σ.多项式时间的OTM 程序:如果存在多项式P 使得对于一切x ∈Σ+,Mg 在P (|x |) 步内停机,则称Mg 是多项式时间的OTM 程序.OTM 程序计算函数f :设Mg 对一切x ∈Σ+停机, 且停机时方格1到最右边非空白方格的字符串是f Mg (x ),那么它计算函数f Mg : Σ+→Σ*相对化的OTM程序27多项式时间的Turing归约:设R 1,R 2是Σ上的两个符号串关系,M 是输入字符集为Σ的OTM 程序,如果对于每个实现R 2 的函数g :Σ+→Σ*,相对化的OTM 程序Mg 都是多项式时间的OTM 程序,且Mg 计算的函数实现R 1,那么称M 是从R 1到R 2的多项式时间的Turing 归约,记作R 1∝T R 2Turing归约的形式定义29传递性π1∝T π2,π2∝T π3⇒π1∝T π3多项式变换是Turing 归约的特例.设π1多项式变换到π2, 如下设计解π1 的算法A :1. 对于π1的任何实例I ,先将I 变换成π2实例I ’,2. 利用解π2 的假想子程序s 对I ’识别.3. 如果I ’是肯定实例,则I 也是肯定实例;4. 如果I ’是否定实例,则I 也是否定实例.易见只要s 是多项式时间的,则A 也是多项式时间的. 因此π1∝T π2.Turing归约的性质NP难度定义设π是搜索问题,如果存在NP 完全问题π’使得π’π,则称π是NP-hard. 这意味着在多项式可计算的∝T角度看,π至少像NPC 问题一样难.π’, 设π是搜索问题,如果存在NP 问题π’使得π∝T则称π是NP-easy.设π是搜索问题,如果π是NP-hard, 同时也是NP-easy, 则称π是NP等价的.NP-easy ≼NP等价(包含NPC问题) ≼NP-hard30相关结果所有的NPC 问题都是NP-hard.因为多项式变换是Turing归约的特例.若π∈NPC, 则π多项式可解⇔P = NP若π是NP-hard, 则π多项式可解⇒P = NP若π是NP-easy, 则π多项式可解⇐P = NP若π是NP等价, 则π多项式可解⇔P = NP31相关结果(续)设π是判定问题,π为NPC ⇏πc为NPCπ为NP-hard ⇒πc为NP-hard证明:设π为NP-hard,任取实例I∈Dπ, I 也是πc的实例,且I∈Yπ⇔I∈Dπc−Yπc设s 是解πc的算法,如下得到解π的算法:先调用s对于实例I求解. 如果回答”Yes”, 则回答”No”,否则回答”Yes”. 从而证明了πTuring归约到πc. 据Turing归约的性质,πc 为NP-hard.32Turing归约的应用1.证明许多NPC 问题所对应的优化或构造问题为NP-hard.2.证明某些非NP 类的判定问题是NP-hard说明:1. 将解对应优化问题或构造问题的算法作为解判定问题算法的子程序,得到解判定问题的算法,从而构造了从判定问题到对应优化问题或构造问题的Turing归约.33实例—证明NP等价例1巡回售货员问题(TSO)是NP等价的.证:易证TSO是NP-hard. 下面证明TSO 是NP-easy.引入中间问题:巡回售货员的延伸问题(TSE)TSE实例:有穷城市的集合C= { c, c2, …, c m}1, c j∈C, d(c i, c j)∈Z+,距离∀ci长度限制B∈Z+,, …,cπ(k) >部分旅行路线ϑ= < cπ(1)问:ϑ是否可以延伸成全长不超过B的全程旅行< cπ(1), …, cπ(k), cπ(k+1), …, cπ(m)>?易证TSE属于NP.3435设s (C ,d ,ϑ,B )是解TSE 的子程序,其中C 为城市集,d 为距离函数,ϑ为部分旅行,B 为长度限制.下面构造解TSO 的算法.思路:用二分法确定最短路旅行长度B *旅行长度界于m →m ×d , d = max{ d (c i , c j )}每次取中点值验证是否存在能延伸到此长度的旅行根据最小长度值B *确定旅行路线从c 1开始,依次检查<c 1,c 2>,<c 1,c 3>…是否能延伸到B *长度的旅行,选择第一个可延伸的顶点c i . 按照上面方法确定后面的其他顶点.TSO 到TSE 的Turing归约40例2 第k 个最大子集实例:有穷集A , ∀a ∈A , S (a )∈Z +, 正整数B ≤S (A ),K ≤2|A |, 其中问:是否至少存在K 个不同的子集A ’,满足S (A ’)≤B ?这个问题不是NP 问题. 要猜想A 的K 个子集,K 不是|A | 的多项式, 输入规模为|A | ⎡log K ⎤⎡log S (A )⎤没办法用它的多项式个符号写下猜想.可以证明这个问题是NP-hard.∑=∈Aa a S A S )()(实例--分析非NP类问题的难度Turing归约命题:第k 个最大子集问题是NP-hard.下面构造从均分问题到这个问题的Turing归约.设s[A,S,B,K]是解第K个最大子集的子程序,其中A = { a1, a2, …, a n}S: A→Z+B≤S(A)K≤2n设A= { a,a2, …,a n },S:A→Z+是均分的实例,如1下构造解均分问题的算法.41算法说明步1到步7 二分法找L*.L* 的含义:至少Lmin个子集其和不超过S(A)/2.至多Lmax−1 个子集其和不超过S(A)/2.恰好有L*个子集其和不超过S(A)/2.步8 检查是否有一个子集其和等于S(A)/2.如果至少有L* 个子集其和≤b−1<b,那么没有一个子集其和恰好等于S(A)/2.44复杂性估计步1到步7二分法查找L*调用s[A, S, b, L]子程序log2n= O(n)次步8调用s[A, S, b, L]子程序 1 次如果s 是多项式时间的算法,则算法也是多项式时间的.45复杂性类的谱系NP之外Co-NPPSPACEP之内NCP完全46NP与Co-NP的结构前提:NP ≠Co-NP⇒P ≠NP49并行计算的PRAM模型PRAM(Parallel Random Access Machine)特征:1. 无限大共享存储器(用于处理器之间交换数据)2. 有限或无限个(n的多项式个)功能相同的处理器3. 指令集相同:逻辑运算、算术运算、访问内存、输入输出、转移4. 执行每条指令的时间相同,且与处理器个数无关50。

从NP完全性谈起——计算复杂性理论介绍共40页PPT

从NP完全性谈起——计算复杂性理论介绍共40页PPT
Thank you
从NP完全性谈起——计算复杂性理论 介绍
36、“不可能”这个字(法语是一个字 ),只 在愚人 的字典 中找得 到。--拿 破仑。 37、不要生气要争气,不要看破要突 破,不 要嫉妒 要欣赏 ,不要 托延要 积极, 不要心 动要行 动。 38、勤奋,机会,乐观是成功的三要 素。(注 意:传 统观念 认为勤 奋和机 会是成 功的要 素,功的第 三要素 。
39、没有不老的誓言,没有不变的承 诺,踏 上旅途 ,义无 反顾。 40、对时间的价值没有没有深切认识 的人, 决不会 坚韧勤 勉。
6、最大的骄傲于最大的自卑都表示心灵的最软弱无力。——斯宾诺莎 7、自知之明是最难得的知识。——西班牙 8、勇气通往天堂,怯懦通往地狱。——塞内加 9、有时候读书是一种巧妙地避开思考的方法。——赫尔普斯 10、阅读一切好书如同和过去最杰出的人谈话。——笛卡儿
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

Lecture 10. NP完全性理论清华大学软件学院清华大学 1内容提要•计算模型与计算复杂度关系•问题分类:【P】与【NP】类•NP-难【hard】问题,NP完全集•第一个NPC问题和NPC问题集•如何证明一个问题是NPC问题涉及到的算法理论基础•原则上是否存在一般数学问题的解题步骤的判决问题【希尔波特第十问题】•图灵机的停机问题:是否存在一个图灵机,他可以回答其它图灵机是否停机【既算法是有界的】•图灵公理:凡是可计算的函数都可以用一台图灵机来计算•P-NP-NPC问题定义及其猜想:NPC是一类不可以在多项式时间内计算的问题。

清华大学 3明代数学家程大位著《算法统宗》中关于珠算的插图机械式手动计算机清华大学 5机械计算机•法国数学家、哲学家帕斯卡在1642年发明了一种机械计算机,并与1649年取得专利。

帕斯卡的计算机采用一种齿轮系统,其中一小轮转十个数字,下一个小轮便转动一个数字,通过齿轮系的联动,可以进行加法和减法的运算.图灵•大半个世纪以来,数学家、计算机科学家提出了各种各样的计算模型都被证明是同图灵机器等价的。

这一理论已被当成公理,它不仅是计算机科学的基础,也是数学的基础之一。

为纪念英国数学家Turing(1912-1954) 而设立的图灵奖成为计算机界的诺贝尔奖.清华大学7图灵机模型图灵机定义•一个图灵机是一个7元组(Q,∑,Γ,δ,q0,q1,q2), 其中Q,∑,Γ都是有穷集合,并且•1) •2) •3) 集. •4) •5) •6) •7) Q 是状态集.∑是输入字母表,不包括特殊空白符号︺. Γ是带字母表,其中: ︺∈Γ,∑是Γ的子δ: Q×Γ→Q×Γ×{L,R}是转移函数. q0∈Q是起始状态.q1∈Q是接受状态.q2∈Q是拒绝状态,且q2≠q1图灵机模型•图灵机模型用一个无限长的带子作为无限存储, 它还有一个读写头,这个读写头能在带子上读, 写和移动: 开始时,带子上只有输入串,其它地方都是空的.当它需要保存信息时,读写头就把信息写在带子上.为了读某个输入或写下的信息,带子可能将读写头往回移动到这个信息所在的地方.这样读,写和移动,机器不停的计算, 直到产生输出为止.机器实现设置了两种状态: 接受或拒绝清华大学9多带图灵机,•和普通图灵机相似,只是有多个带子,每个带子都有自己的读写头,用于读和写.如图清华大学11非确定性的图灵机•非常容易理解,在计算的任何时刻,机器可以在多种可能性中选择一种继续进行.它的计算是一课树,不同的分枝对应着机器不同的可能性.如果某个计算分枝导致接受状态,则接受该输入.与多带图灵机相同的是,它的计算能力与普通图灵机也是一样的.当然他的计算能力就不一样了。

现代计算机模型清华大学13随机存取机RAM•类似现代计算机,有一个只读输入带、只写输出带、指令计数器、内存储器、其零号寄存器用作累加器,内存不能写,每个内存可以存放任意大的整数。

有12条指令:load、store、add、sub、mult、div、read、write、jump、jgtz、jzero、halt。

练习•利用RAM设计一个计算多项式函数求值的程序:其中多项式为<a0,a1,…,an>,变量为x。

•考虑问题:程序是什么?输入是什么?复杂度是多少?清华大学15随机存取存储程序机RASP •除了程序可以存储在存储器中并可以修改,其它与RAM都一样。

RAM、RASP复杂度耗费标准•均匀耗费:不论计数器内整数多长,其读写、运算耗费均相等•对数耗费:耗费与其二进制表示的位数成正比:既与数字大小的对数成正比清华大学17图灵机模型与RAM模型计算能力和复杂性关系•定理一、上述计算模型的计算能力等价:既能够用图灵机计算的问题一定能够用RAM计算,反之亦然。

•定理二、在对数耗费标准下、图灵机与RAM的计算复杂度可在多项式时间内相互归约。

问题变换与复杂性归约•利用变换和归约可以把一个问题的复杂性归结到另一个问题的复杂性•问题A变换到问题B是指:–将问题A的输入变换为问题B的适当输入–求解问题B–把问题B的输出变换为问题A的正确解清华大学19说明A∝τ ( n ) B:是指在完成问题A 到B的转换过程中的转换过程需要O(τ(n))时间。

通常n 表示问题A 的规模,如果τ(n) 是多项式,则称问题A 可在多项式时间内变换为问题BP 、NP 类定义• P ={L|L 是一个能够在多项式时间内被一台确定性图灵机所接受的语言}• NP ={L|L 是一个能够在多项式时间内被一台非确定性图灵机所接受的语言} • 遗留概念说明:– 语言– 语言与图灵机【算法与图灵机】 – 为什么选择多项式变换与归约的关系命题一:若问题 A 的计算时间下界为 T (n ),且 A ∝τ ( n ) B :则 T(n)-τ (n ) 问题 B 的一个计算时间下界命题二:若问题 B 的计算时间上界为 T (n ),且 A ∝τ ( n ) B :则 T(n)-τ (n ) 问题 A 的一 个计算时间上界清华大学 21A Formal-language framework •形式化语言框架的一些概念简介:–Alphabet ∑:is a finite set of symbols–A language L over ∑ is any set of string made upof symbols from ∑. If ∑ = {0,1}, thenL={10,11,101,111,1011,…} is the language ofbinary representations of prime numbers,⎦ε is the empty string.⎦∑*={ε,0,1,00,01,11,…} is the set of all strings– Every language is an element of ∑*.清华大学23多项式时间内可求解问题·多项式时间内可求解的问题的特点–多项式时间可求解的问题被认为是易处理的,有三条理由:理由1:尽管 ( n100 ) 算法被认为是不易处理的,但事实上还没有什么实际问题有如此之高的多项式算法。

经验证明一但一个问题有多项式解,那么常常会有更加有效的解决方案。

清华大学25 理由2:在某一种计算模型下有多项式算法则在另一种计算模型下亦有多项式算法。

例如:一个问题在串行随机存取机上有多项式算法,则在图林机上亦有多项式算法,在并行机上亦如此。

理由3:多项式算法时间问题集合有非常好的封闭性质,它在加、乘、复合运算下都是封闭的【本课程研究的算法都是多项式的,研究的问题也是在多项式时间内可解的,对于不能在多项式时间内求解的问题该如何处判决问题· Dec i s i on 问题:如果I ={0,1}或 {yes, no },则称问题是判决【决策】问题,下面我们只关心判决问题。

优化问题一般都可以转换成判决 问题。

2.抽象问题:(What a problem is)抽象问题Q 是集合I 和S 上的二元关系。

其中 I 是问题实例集合,S 是问题解集合。

• 例如:①最短路径问题:问题实例(G , u 、v) : 一个圆和其上两个顶点;问题解是(u ~v)一个从u 到v 的由边相连的顶点集。

②查找最小值问题:问题实例: <a 1 , ⋯, a n >一个数组,问题解: 数m 。

清华大学 273.编码:抽象对象集合S的编码是:抽象对象集合S的编码是:E:S→∑*即把S中的对象e转化成一个二进制(可以是多进制)的串。

如果一个问题的实例是由二进制串集构成,称其为具体问题。

我们称一个算法在O(T(n))时间内解决了一个具体问题,如果此问题i 的长度| i |是n,此算法可在O(T(n))时间内求解此问题。

一个抽象问题可以编码成具体问题。

清华大学29Problem vs. language•A decision problem Q can be regarded as alanguage L:– L={x∈∑*: Q(x)=1}•A language accepted by an algorithm A is – L={x∈{0,1}*: A(x)=1}•A language decided by an algorithm A if itaccepts all string x with A(x)=1 and rejected all string x with A(x)=0Polynomial time•We say that a language is accepted in polynomial time by an algorithm A if A accepts every binary string in L in polynomial time•We say that a language is decided in polynomial time by an algorithm A if A accepts every binary string in L in polynomial time, and rejects in polynomial time the string not in L清华大学31 Definition of the complexityclass P•P={L {0,1}*: there exists an algorithm A that decides L in polynomial time} •Theorem 34.2•P={L: L is accepted by a polynomial timealgorithm}Polynomial time verifications •Verification algorithm A is a two arguments algorithm where one argument is an ordinary input string x and the other is a binary string y called a certificate.•A two arguments algorithm A verify an input x if there exists a certificate y such that A(x,y)=1.清华大学33Language defined by verification •L={x in {0,1}*: there exists y in {0,1}* such that A(x,y)=1}The complexity class NP•A language L belongs to NP if and only if there exists a two-input polynomial-time algorithm A and a constant c such that•L={x in {0,1}*: there exists y in {0,1}* with |y|=O(|x|c) such that A(x,y)=1}•We say that algorithm A verifies language L in polynomial time.清华大学35NP两种定义的等价性•用非确定性图灵机和验证算法给NP类的定义是等价的关于团问题属于NP的两种表述•团:给定无向图和整数k,确定是否存在一个包含k顶点的完全子图【团】【Clique】。

相关文档
最新文档