计算复杂性理论031104(2)
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
第三章计算复杂性理论主要内容
3.1 Turing机
3.2 计算复杂性理论
3.3 NP完全性理论的基本概念
3.4 NP完全性证明
3.5 用NP完全性理论分析问题
3.6 NP难度
3.1 Turing机
一、Turing机的定义
1. 基本模型
2. 基本Turing机的变种
单向带的Turing机
k条带的Turing机
非确定型的Turing机
二、Turing机模型的等价性
1. 单向带Turing机与基本Turing机等价
2. k条带的Turing机与基本Turing机等价
3. 非确定型Turing机与基本Turing机等价
一、Turing机的定义
1. 基本模型
双向无限带的Turing机M = <Q,∑,Γ,δ,q
,B,F>, 其中Q 有穷状态集
Γ有穷带字符集
∑输入字符集∑⊂Γ
B 空白字符, B∈Γ-∑
q 0初始状态, q
∈Q
F 终结状态集, F⊂Q,q
Y ,q
N
∈F
δ: (Q-F)×Γ→Q×Γ×{L,R} 状态转移函数
(ID)
α1qα
2
表示此刻Turing机的FSC处于状态q,读写头
指在串α
2
的第一个字符.
例如Turing机M的某时刻的状态转移函数是
δ(q,x
i
) = (p,Y,L)
带上的字符串为x
1x
2
...x
i
...x
n
, 读写头指向字符x
i
, 则
它的瞬间描述是:
x 1x
2
...x
i-1
qx
i
...x
n
┣x1x2...x i-2px i-1Yx i+1...x n ┣表示由左边的ID一步达到右边的ID
┣*表示由左边的ID经有限步达到右边的ID
被M接受的语言记作L(M),是∑*上的字的集合.
当这些字左端对齐方格1放在带上,M处于状态q
,M的
带头指向方格1时, 经过有限步M将停机在接受状态q
Y
, 即
L(M)={ω|ω∈∑*,∃α
1,α
2
∈Γ*(q
ω⊢*α
1
q
Y
α
2
)}
如果字ω不是L(M)中的字, M可以不停机或停机在拒斥状态q
N
.
例1 L={0n1n|n≥1}, 设计接受L的Turing机如下: M = <Q,∑,Γ,δ,q
,F>
Q = {q
0,q
1
,q
2
,q
3
,q
Y
},
∑= {0,1},
Γ= {0,1,X,Y,B},
F = {q
Y }. 其中q
Y
代表接受停机状态.
初始将字符串放在从1到n方格中, FSC处在状态q
, 读写头指向方格1.将第一个0改写成X, 然后带头向右扫描. 遇到第一个1, 将1改为Y, 然后带头向左扫描. 遇到第一个X改为向右扫描. 这时进入下一个巡回.每个巡回将一对0和1改为X和Y, 直到接受或拒斥停机.
例如输入0011,Turing 机动作如下:
q 00011┣Xq 1011┣X0q 111┣Xq 20Y1┣q 2X0Y1┣Xq 00Y1 ┣XXq 1Y1┣XXYq 11┣XXq 2YY ┣Xq 2XYY ┣XXq 0YY ┣XXYq 3Y ┣XXYYq 3┣XXYYq Y
转移函数如下(其中__代表拒斥停机状态)
1X Y B q 0
(q 1,X,R)____(q 3,Y,R)__q 1(q 1,0,R)(q 2,Y,L)__
(q 1,Y,R)__q 2(q 2,0,L)__(q 0,X,R)(q 2,Y,L)__q 3______(q 3,Y,R)q Y
2.基本Turing机的变种
单向无限带的Turing机带方格从1开始, 向右无限长. 其它与基本Turing机相同.
多带的Turing机k条双向带, k个读写头, 其中k为大于1的常数. 初始将输入写在第一条带的方格1到n内. 其它带为空. 每个读写头扫描一条带,可以改写被扫描方格的字符, 读写头然后向左或向右移动一个方格. 读写头的动作由FSC的状态及k条带所扫描的k个字符来决定.
非确定型的Turing机(NDTM)
一个有限状态控制器FSC, 猜想模块GM, 读写头, 只写头, 双向无限带.
状态, 带方格的1到n写上输入x, 初始FSC处于q
其它方格为空白字符B. 读写头指在方格1, 只写头
指在方格-1.
计算分为猜想阶段和检查阶段.
猜想阶段
状态下的待用状态.
FSC处于q
猜想模块GM指挥只写头,每次一步在所扫描的方格内写下 中的某个字符, 然后左移一个方格或不动.
到某个时刻, 猜想模块进入待用状态, 这时有限状
状态下的活跃状态. 从此刻起, 计算进态控制器进入q
入检查阶段,而猜想模块是否继续动作, 或怎样动作, 完全是任意的.
检查阶段
与确定型的Turing机完全一样. 如果FSC进入接受状态, 则计算停止, 接受x. 如果进入拒斥状态, 则计算停止, 不接受x.