算法分析与设计第4讲.docx
- 文档编号:2864591
- 上传时间:2022-11-16
- 格式:DOCX
- 页数:9
- 大小:62.74KB
算法分析与设计第4讲.docx
《算法分析与设计第4讲.docx》由会员分享,可在线阅读,更多相关《算法分析与设计第4讲.docx(9页珍藏版)》请在冰豆网上搜索。
算法分析与设计第4讲
上次内容:
(1)确定图灵机与P类,DTM多项式时间可解的-----P类
(2)非确定图灵机与NP类,NTM多项式时间可解的----NP类----多项式时间可验证的。
注意:
在定义时空复杂性时,我们只关心NTM程序计算回答为Yes的实例的时空复杂性。
回答否的实例不关心。
下面逐渐解释。
Rabin与Scott两个人最先在IBM做的工作。
(3)多项式变换与NP,上次讲到什么是多项式变换。
多项式变换的含义:
●1=<1,L1,1>;2=<2,L2,2>
●变换f:
1*2*,IL1,f(I)L2,1(I)=2(f(I))
●f变换可以在p(|I|=n)时间内计算完成。
则f称为由1到2的多项式规约。
(1)非确定型图灵机与验证机还是不同的,多项式时间可验证的问题被定义为NP问题。
(2)但是有一个结论:
一个问题是NP问题,当且仅当它是非确定型图灵机多项式时间可计算的。
(3)Rabin与Scott两个人最先在IBM做的工作。
定义了非确定型图灵机,也就有了非确定型计算。
非确定图灵机的时间复杂性难定义。
只关心回答Yes的实例的时间就好说了。
NP问题的定义,一个问题是多项式时间可验证的含义,一个实例若回答是,当然能猜出来,所以能正确回答yes。
NP问题可以认为若实例回答是,则存在不确定多项式时间算法正确回答的问题类。
*在定义NP问题时,只关心问题的那些回答Yes的实例。
回答No的实例不关心。
若对回答Yes的问题实例,存在NTM程序能够多项式时间回答是,则这个问题就是NP类。
*用不着关心那些回答No的实例。
若1可以多项式归约到2,则若2存在多项式算法,则1也有多项式算法。
前面的多项式规约进一步修改如下:
认为与前面的定义等价。
●1=<1,L1,1>;2=<2,L2,2>
●变换f:
,IL1,f(I)L2,
1(I)=Yes2(f(I))=Yes,充分必要的。
IY1f(I)Y2。
不关心回答No的实例。
实际前面NTM定义中就只关心回答Yes的实例。
与猜测能力有关。
如果定义猜测能力过于复杂,能力就太大了。
P问题可以在多项式时间回答是或否。
实际上,只定义那些回答Yes的实例能够多项式式时间验证就足以达到我们所要求的目的。
●f变换可以在p(|I|=n)时间内计算完成。
*不关心回答no的实例。
以后证明都用此定义。
再解释非确定Turing机:
规定
(1)猜测部件把解写在从-1开始向左的存储带上。
最多写输入长度的多项式个方格。
(2)我们自己编写的验证程序直接使用猜测解带方格中的内容,没写直接用。
(3)实际这不是最早的非确定型图灵机。
若有一个特殊问题,任意一个NP问题均可多项式规约到该问题,则该问题非常特殊。
严格定义时,要求是NP类问题。
这样的问题成为NP-Complete,若NP-Complete问题可以多项式时间解决,则其他所有NP问题都可以在多项式时间解决。
●首先要搞清楚,现在我们研究的问题是多项式时间可验证的问题类,最后只需要回答是和否即可以。
●有很多问题不是多项式时间可验证的,那个留到以后再说。
因此也不是NPC的。
这就是为什么只研究判定问题了。
●判定问题绝大多数都是多项式时间可验证的。
多项式变换的符号:
引理3.1:
若12,2P,则1P。
是为什么?
注意一点,当多项式可解时,否的实例也能在多项式时间回答。
引理3.2:
12,23,则13
定义3.10:
12,21,则称1和2多项式等价。
定义3.11:
NP,1NP,1,则称是NP-Complete的。
NP-完全的。
其他人有很多叫法。
简称NPC问题。
若是NPC问题,有多项式时间算法,则任意NP问题都有多项式时间求解算法。
定理3.12:
若有,NPC,则下述
(1)
(2)等价。
(1)PNP;
(2)P,即:
PNPP
若1NPC,2NP,12,则2NPC
这是最重要的一个定理。
只要有了一个NPC,其他问题也可以证明NPC了。
下面的问题是寻找第一个NPC问题。
§3.5Cook定理
任意一个NP问题都有一个多项式时间验证程序唯一代表改问题。
验证结果回答Yes或No。
SAT的例子:
Y=(u1
u5)(u2u3
)(
u4u5)(u1
)是否存在真值指派使Y=1。
Instance:
U={u1,u2,u3,u4,u5},C={C1,C2,C3,C4}
Query:
IfthereisassignationofUsuchthateveryclauseofCissatisefied.
定理3.4:
SATNPC。
证明:
(1)SATNP,首先要验证这个。
不验证不能说明是NPC。
*不属于NP是否属于NPC?
,不属于。
(2)将任意一个NP问题多项式规约到sat。
每个NP问题有一个对应一个NTM的多项式时间验证程序。
该验证程序最后回答Yes或No。
但是我们只关心回答Yes的NP问题实例。
任意一个NP问题的实例放在NTM存储带上,若回答yes,NTM程序多项式时间步验证给出正确回答。
把求解任意一个NP问题的NTM规约到sat。
设NTM描述为:
描述问题需要符号集
●={s1,s2,…,sm}={s[1],s[2],…,s[m]},s[i]=si
●Q={q0,q1=qy,q2=qn,q3,…,qr}
●(qi,si)=(qi’,si’,i),变化规则早已确定了,就是程序。
●P(n):
M接受输入I,|I|=n,按照计算,对于猜测的解,经过不超过P(n)步计算,到达停机态,P(n)是n的多项式函数。
每个实例都存放在读写带上了,要把这个实例变成SAT的实例。
实例为:
s[k1],s[k2],…,s[kn]。
怎样把这个实例变成SAT实例?
这个实例回答Yes变成的SAT实例也回答Yes。
要借助别的东西,借助验证程序。
可以形式化地描述验证程序,
(qi,si)(
i)
Qs
s0
s1
…
sm-1
sm
q1
…
qr
NTM执行程序的每一步状态都可以用SAT布尔变量表示。
开始规约:
变量描述求解过程,项约束求解中程序遵循的规则。
1.定义三种变量描述NTM的求解状态,
(1)Q[i,k]:
描述状态,0iP(n),0kr,在时刻i,M处于状态qk,(r+1)(P(n)+1)个这样的变量。
(2)H[i,j]:
描述读写头位置,0iP(n),-P(n)jP(n),在时刻i,M读写头正扫描带方格j。
(2P(n)+1)(P(n)+1)个变量。
(3)S[i,j,L]:
描述带方格内容,0iP(n),-P(n)jP(n),0Lm,在i时刻带方格j中的内容为符号sL,(m+1)(2P(n)+1)(P(n)+1)。
解释:
从0到p(n)每一个时刻的Turing机状态,读写头位置,读写带上的符号。
2.NTM程序接受判定问题的实例I,M运行中应遵循下述规则。
G1
在时刻i,M确切处在一个状态,q0,…,qr
G2
在时刻i,读写头确切地扫描一个带方格。
G3
在时刻i,每个带方格确切地含有一个符号,中的。
G4
在时刻0,对于输入I,计算处于验证阶段的起始状态。
G5
在时刻P(n),M处于qy状态,接受I。
G6
转换函数决定i时刻到i+1时刻的状态变化。
G1中的项如下构成:
(1){Q[i,0],Q[i,1],…,Q[i,r]},0iP(n)
(2){
,
},0iP(n),0jj’r
(1)的个数:
P(n)+1
(2)的个数:
(P(n)+1)
G2的构成如下:
(1){H[i,-P(n)],H[i,-P(n)+1],…,H[i,0],…,H[i,P(n)]}
0iP(n)读写头位于上述位置。
至少一个为真的。
但不能量个同时为真。
(2){
,
},0iP(n),-P(n)jj’P(n)
读写头不能同时指向两个带方格,所以综合
(1)
(2),每个时刻,读写头总指向固定一个带方格。
(1)的个数:
P(n)+1
(2)的个数:
(P(n)+1)
G3的构成:
(1){S[i,j,0],S[i,j,1],…,S[i,j,m]},0iP(n),-P(n)jP(n)
i时刻,j号带方格中的内容可能是s1,…,sm
(2){
,
},0iP(n),-P(n)jP(n),0kk’m
一个时刻一个方格中不可能含有两个符号。
(1)的个数:
(P(n)+1)(2P(n)+1)。
(2)的个数:
(P(n)+1)(2P(n)+1)
G4的构成:
{Q[0,0]}:
0时刻状态为q0
{H[0,0]}:
0时刻读写头位于0号带方格
{S[0,0,k0]},{S[0,1,k1]},…,{S[0,n,kn]}
{S[0,n+1,0]},{S[0,n+2,0]},{S[0,P(n),0]}
0时刻带方格中的内容分别为:
s[k0],s[k1],…,s[kn]。
其他带方格中是什么内容?
G5:
{Q[P(n),1]},时刻P(n)的NTM状态为qy=q1。
接受状态。
G6=G61G62,两个子项
G61:
保证在时刻i,若读写头不扫描带方格j,则在时刻i+1,j带方格的内容与i时刻j带方格的内容相同。
{
H[i,j],S[i+1,j,L]},0iP(n),-P(n)jP(n),0Lm
G61的个数:
(P(n)+1)(2P(n)+1)(m+1)
G61:
当NTM程序从一个状态转到另一个状态时,状态变化,读写头移动,符号改变遵从函数。
(qk,sL)=(
)
(1){
H[i+1,j+]}
i时刻的状态为qk,读写头位置为j,j方格中的符号为sL
则读写头移动为。
●0iP(n),-P(n)jP(n),0kr,0Lm
所以
(1)的clause个数是:
(P(n)+1)(2P(n)+1)(r+1)(m+1)
(2){
,Q[i+1,k’]}
0iP(n),-P(n)jP(n),0kr,0Lm。
所以
(2)的clause个数是:
(P(n)+1)(2P(n)+1)(r+1)(m+1)
(3){
,S[i+1,j,L’]}
0iP(n),-P(n)jP(n),0kr,0Lm
(3)的个数也不超过:
(P(n)+1)(2P(n)+1)(r+1)(m+1)
●上面是规约,首先说明这个规约是多项式规约,G1,G2,G3,G4,G5,G6都是多项式个clause,因此是多项式规约。
●下面说明规约后的计算情况:
若任意问题的实例I回答yes,则NTM程序最后停机在qy,此时必存在一个sat变量的真值指派使每个项均满足。
若sat实例存在真值指派使每个项均满足,则最后NTM会停机在yes态,相应问题的实例回答yes。
这就证明了第一个NP-complete问题。
再说明:
*为什么SAT能多项式时间可解,则NTM就不用猜测解了。
*s[0,-1,s1],s[0,-1,s2],…,s[0,-1,sm],
*s[0,-2,s1],s[0,-2,s2],…,s[0,-2,sm]
*…………
*s[0,-P(n),s1],s[0,-P(n),s2],…,s[0,-P(n),sm]
*0时刻的内容,由SAT实例计算出来。
Cook想了一个办法说明问题难度,任意一个NP问题都可以多项时间规约到SAT问题,即若SAT问题能够多项式时间解决,则其他所有NP问题都能多项时间解决。
正确回答是和否。
若1NPC,2NP,12,则2NPC。
已知satNP
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 算法 分析 设计