NDTM and Concept of NPCompletenessWord文件下载.docx
- 文档编号:21347547
- 上传时间:2023-01-29
- 格式:DOCX
- 页数:15
- 大小:98.04KB
NDTM and Concept of NPCompletenessWord文件下载.docx
《NDTM and Concept of NPCompletenessWord文件下载.docx》由会员分享,可在线阅读,更多相关《NDTM and Concept of NPCompletenessWord文件下载.docx(15页珍藏版)》请在冰豆网上搜索。
DTM与NDTM识别的语言范围也相同,都是递归可枚举集。
两者的计算能力在多项式意义下是否等价?
回答是不知道。
大多数科学家倾向于不等价,少数倾向于等价,但也有科学家称,
这个问题属于不可判定问题:
既不能肯定,也不能否定。
用NDTM求解问题举例:
集合的等分割问题:
若集合{i1,i2,…in}中的ij均为正整数(n≥2,这些ij允许相同),
是否存在一种分划,将诸ij分成两部分,使得两部分数的和相等。
e.g.{1,1,1,4}不存在等分割,而{2,7,6,2,5}存在等分割。
一般全搜索方法需要的比较次数为:
+
+…+
=
故比较次数为(2n)。
该问题目前尚未找到多项式时间的算法。
对应的0-1串问题:
给定一个0-1串
(1相当于分隔符),
如果存在某种分划的方法,把这些0分成两部分(连续的0不能分断),
使得两部分中0的个数恰好相等,则说该0-1串属于L。
如果不存在这样的分法,则说该0-1串不属于L。
e.g.100100000001000000100100000(相当于{2,7,6,2,5})存在等分割,而10101010000(相当于{1,1,1,4})不存在等分割。
该问题目前尚未找到一个DTM能在多项式时间里实现判定。
但有一个3带NDTM可以在最多2n+2(n为串长)步里完成判定。
在状态q0:
输入为(1,b,b)时带1不变,
带2、带3打上&
后带头右移,由q0进入q1。
在状态q1(进行并行的选择):
输入为(1,b,b)时,
可以有两种选择(并行),进入q2或q3,带1头右移一格。
在状态q2(把带1上的一串0复制到带2上):
输入为(0,b,b)时,
在带2上打1个0,然后带1,带2头右移一格,停留在q2;
输入为(1,b,b)时回到q1,其余不改变。
输入为(b,b,b)时,则此时输入串已读完,进入q4准备进行比较,
带2、带3头各左移一格。
在状态q3(把带1上的一串0复制到带3上):
除输入为(0,b,b)时在带3上打一个0,然后带1、带3头右移外,
其余与q2类似。
在状态q4(比较带2与带3上0的个数):
若带2与带3当前均为0,
则带2与带3均左移一格;
若带2、带3同时到达&
,则说明有相同多个0,进入接受状态q5。
(若带2、带3只有一个到达&
,则说明0的个数不等,
即该路径所确定的分割不满足要求,因此执行立即中断。
)
e.g.{2,7,6,2,5}对应的0-1串为:
100100000001000000100100000bb…
在ID序列树中有一条路径上的执行所对应的结果为:
带2:
&
00000000000;
带3:
00000000000(满足要求)
还有一条路径上的执行所对应的结果为:
00000000000;
00000000000(也满足要求)
故该3带NDTM接受上述给定的0-1串(上述两情形均进入q5)。
说明:
该NDTM对类似于110110010这样串也可接受,
即相邻的1(均作为分隔符)的个数可以不止一个。
上述问题的时间复杂度:
2n+2-m/2这里m为输入串中0的个数,故1的个数为n-m。
q0→q1:
1次(由初始状态进入并行选择状态);
q1→q2加q1→q3:
n-m(1的个数)次(进行选择的次数);
q2→q1加q3→q1:
n-m-1次(一串0复制完回到并行选择状态的次数);
q2→q2加q3→q3:
m(0的个数)次(复制0的次数);
q2→q4加q3→q4:
1次(读完最后一个字符(0或1)进入比较状态);
q4→q4:
进行带2与带3上0的个数的比较,最多不超过m/2次;
q4→q5:
1次(进入接受状态)。
总计最多移动2n+2-m/2次,当m=0时达到最大值2n+2。
等分割问题的另一种输入表示形式:
#B(i1)#B(i2)#…#B(ip)
B(ij)是整数ij的二进表示形式。
(前面用ij个0来表示整数ij实际上是ij的一进表示形式。
一进表示长度与二进表示长度之间是指数(反之是log)关系,
即n的一进表示长度=(2n的二进表示长度)
e.g.n=1000的一进表示长度为1000,二进表示长度为
+1=10
故对同一问题采用二进表示时,输入规模可以小很多。
对二进表示输入构造的NDTM为:
读完一个B(ij)时,可以有两种选择:
把B(ij)加到带2或加到带3上。
诸B(ij)加完后判断带2、带3上的数是否相等。
若该问题的二进表示长度为n2,则时间复杂度为O(n2)。
表面看起来两个时间复杂度同阶,但二进的比一进的要快指数倍。
用DTM模拟NDTM(穷举法)
设某个NDTM在T(n)时间里接受一个长为n的输入串,
则该NDTM的ID序列树中有一条路径(即一个ID序列)
长度为T(n)且该序列的最后一个ID中包括接受状态qf。
这个ID序列可以描述为:
ID0├ID1,j1├ID2,j2├…├IDT(n),jT(n)
状态变化为
ID1,j1表示在第1步从q0出发,取第j1个选择后进入qi1;
ID2,j2表示在第2步从
出发,取诸选择中的第j2个进入
,……
于是该序列可以对应一个数的序列(j1,j2,…jT(n))。
取d=函数映射到的子集中元素个数的最大者
(即可供并行选择的最大选择数)。
选择计数从0开始(e.g.第0,第1,…,第d-1)。
因此,每一个长度为T(n)的ID序列都对应一个串=j1#j2#…#jT(n),
且满足:
对1≤k≤T(n),有0≤jk≤d-1。
但反之不成立,即有些满足上述条件的串不对应任何ID序列。
(e.g.d=5但q0只有两个选择,则j1=2或3或4的不对应任何ID序列。
DTMM’模拟NDTMM:
M’按字典序每次产生一个串,
若对应于ID序列
,则M’模拟M在此序列中的每一个动作;
若不对应于任何ID序列,则抛弃该,按字典序去产生一个新的。
Th:
任给一台NDTMM,都可以构造一台模拟M的DTMM’,
使得两者所接受的语言相同。
若M的时间复杂度为T(n),
则M’的时间复杂度为O(dT(n)),d是大于0的常数。
另外,用DTM模拟NDTM的平凡下界是T(n)。
目前尚未证明,是否存在某个语言L,
它能在T(n)时间里被一台NDTM接受,
而不能被任何一台DTM在O(T(n))时间里接受。
(该命题的证明或反证的难度都极大。
P类与NP类语言
语言族P=﹛L|L是一个能在多项式时间内被一台DTM接受的语言﹜
NP=﹛L|L是一个能在多项式时间内被一台NDTM接受的语言﹜
∵DTM是特殊的NDTM,∴PNP。
但是,是否有PNP即:
是否有一个语言使得L∈NP但LP?
回答是:
不知道。
由于Turing机较原始,构造起来比较不便,
故也考虑用其它计算模型来定义P类与NP类。
我们已知:
DTM,RAM,RASP在对数耗费标准下多项式相关。
即有:
在对数耗费标准下,L能在多项式时间里被一台DTM所接受iff
L能在多项式时间里被一台RAM或一台RASP所接受。
∴P类亦可由RAM或RASP来定义。
而NP类则要由非确定性RAM或RASP来定义。
非确定性RAM和RASP:
只要在指令集中引入一条非确定性转移语句choice(l1,l2,…,lk),
使程序不确定地转移到标号为l1或l2或…或lk的位置。
也可以引入一条非确定性赋值语句x=choice(a1,a2,…,ak),
把a1或a2或…或ak不确定地赋给x。
Th:
在对数耗费标准下,非确定性的TM,RAM,RASP
也是多项式相关的。
∴NP类可由NRAM或NRASP来定义,比NDTM更直观一些。
可以猜想,若PNP,
则NP类中“最难的”的语言一定属于NP类而不属于P类;
反过来,若NP类中“最难的”语言属于P类,
那么NP类中其它的语言必然属于P类,从而一定有P=NP。
L多项式变换为L0的定义:
设L、L0分别是字母表∑、∑0上的语言(字符串的集合),
若存在两个闭包间的一个变换f:
∑*→∑
,满足
1)∈∑*,∈Lf()∈L0;
2)若的长为n,则f()的长不超过PL(n),这里PL(n)是一个多项式;
3)任取∈∑*,设的长度为n,则f()在多项式时间p(n)内可计算。
则称L可多项式变换为L0,记作L≤pL0。
≤p亦称Karp归约。
若L≤pL0,则有L0∈PL∈P。
即当L≤pL0成立时,
若0∈L0是多项式时间可接受的,
则∈L也是多项式时间可接受的。
于是,判断L是否属于P类,可以看L0是否属于P类。
≤p具有传递性:
L1≤pL2,L2≤pL3L1≤pL3
NP-完全性语言
定义1(狭义,Karp):
称满足下述2条的语言L0是NP-C的:
1)L0∈NP;
2)L∈NP,都有L≤pL0。
定义2(广义,Cook):
1)L0∈NP;
2)若识别∈L0的确定性算法时间复杂度为T(||)≥||,
则L∈NP,可以找到一个能行的确定性算法来识别L中的任何串γ,
其时间复杂性不超过T(PL(|γ|)),
这里PL是一个依赖于L的确定的多项式。
此时称L多项式归约于L0,记为LpL0(亦称Cook归约)。
说明
a)定义1的要求严,定义2的要求松,即满足定义1满足定义2。
b)至今尚未发现满足定义2而不满足定义1的语言(两者大体等价)。
c)把Th中的≤p换成p,Th仍然成立。
d)定义1简明,定义2烦琐,故通常采用定义1,
且变换与归约通常也不加以区别。
引入NP-完全性概念的意义
如果存在一台DTM在多项式时间里接受某个NP-C语言,
则所有NP类语言均可找到DTM在多项式时间里接受,从而有P=NP。
如果某个NP类语言不存在DTM在多项式时间里接受(即P≠NP),
则所有NP-C语言都不存在DTM在多项式时间里接受,
即有NP-C∩P=。
语言与问题
判定问题:
Yes-No问题
e.g.1等分割问题(Partitioning):
e.g.2Hamilton回路问题(HC):
任给一个无向图G,问是否存在一条回路,
经过G中的点一次且仅一次(H回路)。
e.g.3可满足性问题(SAT):
任给一个含n个命题变元p1,p2,…,pn的合取范式F,
问是否存在一组真值指派(令p1=1,p2=2,…,pn=n,i或为0或为1),
使得F的值为1(True)。
e.g.(
∨
)∧(
)是一个合取范式。
如果一个判定问题能够象等分割问题那样,
将该类问题中的每一个实例编码为一个符号串
(e.g.
或#B(i1)#B(i2)#…#B(ip)),
使得该实例的回答为Yes当且仅当它的编码在多项式时间里
被一台NDTM所接受,则称该判定问题属于NP类。
对于P类问题也可以类似地进行定义。
(只需将定义中的NDTM换为DTM。
如何进行编码?
有一些“标准”的方法:
1.整数用十进制或二进制表示。
2.图的顶点用整数表示,边(vi,vj)用(i,j)表示。
3.布尔表达式的命题变元用整数表示。
)编码为(1∨2)(1∨2∨3)
e.g.着色问题(Coloring):
任给一个具有n个顶点的无向图,
是否可用k种颜色对n个顶点着色,使得任何有边相连的两个顶点,
都具有不同的颜色?
该问题的编码:
k,n(i1,j1)…(im,jm)这里(ip,jp)∈E(1pm)
NP-完全性问题
若某个判定问题进行编码后,所对应的语言L0是NP-C的,
则称该问题是NP-C的。
如果某个NP-C问题可以在多项式时间里求解(给出算法),
则所有NP问题均可在多项式时间里求解,从而有P=NP。
如果某个NP问题不存在多项式时间的解(即P≠NP),
则所有NP-C问题都不存在多项式时间的解,即有NP-C∩P=。
∴NP-C问题是NP问题中“最难的”。
上述Th是从问题的角度(而不是语言)重述了
引入NP-完全性概念的意义。
最优化问题(不是Yes-No问题)可以与一个判定问题相对应。
e.g.团集问题(CLIQUE):
任给一个无向图G,找出G中最大的团集。
团集:
点的集合,满足:
任两点之间均有边相连。
对应的判定问题:
G中是否有k-团(k个顶点的团集)?
k-团问题的编码:
k-(i1,j1)(i2,j2)…(im,jm)这里(ip,jp)∈E(1pm)
若已知某判定问题在多项式时间里有解,则可采用二倍步长的方法,
首先找到回答为No的规模k’,然后再用二分的方法,
不断收缩查找范围,直到最后找到回答为Yes的最大(小)规模k。
因此,若判定问题在多项式时间里有解,
则最优化问题在多项式时间里也有解。
反之,若已知最优化问题的解,则对应的判定问题的答案立即可知。
∴判定问题与最优化问题在多项式意义下是等价的。
由于最优化问题不是Yes-No问题,故最优化问题不属于NP类。
因此,最优化问题不属于NP-完全性问题。
但是,有些最优化问题(对应的编码∈L0)可以满足
NP-完全性定义的第2条要求:
L∈NP,都有L≤pL0。
满足上述条件的问题被称为NP-hard问题。
由于NP-C问题同时满足两个条件,
故NP-C问题当然是NP-hard问题,且有NP-C=NP-hard∩NP。
注意:
有的书或文献讲到NP-hard问题时指的是狭意的,
即不属于NP类的NP-hard问题。
在那里作者把我们所讲的NP-hard问题(广义)分为两类:
在NP类中的(NP-C问题,他们不把这类问题算为NP-hard问题)
和不在NP类中的(狭意的NP-hard问题)。
第一个被证明的NP-C问题:
SAT(最典型的NP-C问题)
CookTh:
SAT∈NP-C(参见Aho书P379Th10.3)
证明思路:
设L∈NP,则存在一台NDTM(单带)M
在多项式时间里识别L中每一个长为n的字符串。
设是M的输入,长为n。
∵L∈NP,∴若M接受,
则M有一个不超过p(n)步(p是一个多项式)的ID序列,
其最后一个ID中含有接受状态qf。
另外,M所用的格子不超过p(n)个。
(∵最多移动p(n)步,每步最多只能移动一格。
注意到序列ID0├ID1├ID2├┅├IDp(n)接受
当且仅当以下7条被满足:
1.在每一个时刻(ID中),读写头恰好只注视着一个带格。
2.每个ID在每个带格中恰好有一个带符号。
(带格中不可能有两个以上的带符号。
3.每个ID中恰好有一个状态。
4.从一个ID进到下一个ID时,
至多只能修改在移动前带头所注视的那个带格中的符号。
5.相继的ID之间,是根据移动函数δ来改变状态、
当前格中的符号以及带头位置。
6.第一个ID是初始ID。
7.最后一个ID中的状态是接受状态。
Cook证明了:
7条中的每一条都可对应于一个布尔表达式,
(参见Aho书P381)且得到每个表达式最多需要O(p3(n))时间,
每个表达式的长最多为O(p3(n))。
令0为这7个布尔表达式的积(与),
则得到0最多需要O(p3(n))时间,0的符号长度最多为O(p3(n));
且为M所接受iff7条均被满足iff0是可满足的(值为1)。
于是,L∈NP,都有L≤pLSAT成立,且由Aho书P376例4,
有LSAT∈NP。
故SAT问题是NP完全的。
推论:
布尔表达式的合取范式可满足性问题(CNF-SAT)∈NP-C。
根据离散数学中的结论:
任何一个布尔表达式都可在多项式时间里变换为与之等价的CNF,
且该CNF的长度最多为原布尔表达式长度n的多项式倍数,
故有LSAT≤pLCNF-SAT。
由≤p的可传递性知:
L∈NP,都有L≤pLCNF-SAT成立。
另外,不难证明LCNF-SAT∈NP。
于是有:
CNF-SAT∈NP-C。
k-合取范式(k-CNF):
每一个合取项的变元个数不超过k个。
e.g.(
)是一个3CNF。
k-CNF可满足性问题(k-CNF-SAT或k-SAT):
判定一个k-合取范式是否可满足。
LCNF-SAT≤pL3CNF-SAT(参见Aho书P384Th10.4)
采用引入命题变元的方法,则可把CNF中的每一个合取项
等价地变换为一个3CNF公式。
需要注意的是:
1-SAT和2-SAT∈P。
是一个2CNF。
作业:
对上例进行研究,从而找出一个算法,它能在多项式时间里
判定任一给定的2CNF公式是否可满足。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- NDTM and Concept of NPCompleteness