计算理论第四章——可判定性
一、 可判定性语言
与正则语言相关的可判定性
(1)ADFAA_{DFA}ADFA是一个可判定语言
ADFA={<B,w>∣B是DFA并且接受w}A_{DFA}=\left\{<B,w>|B是DFA并且接受w\right\}ADFA={<B,w>∣B是DFA并且接受w}
识别ADFAA_{DFA}ADFA的图灵机MMM
MMM="对于输入<B,w><B,w><B,w>,其中BBB是DFADFADFA,www是字符串:
-
在输入www上运行BBB
-
如果模拟以接收状态结束,则接受;如果模拟以非接收状态接受,则拒绝"
(2)ANFAA_{NFA}ANFA是一个可判定语言
ANFA={<B,w>∣B是NFA且接受w}A_{NFA}=\left\{<B,w>|B是NFA且接受w\right\}ANFA={<B,w>∣B是NFA且接受w}
识别ANFAA_{NFA}ANFA的图灵机S
SSS="对于输入<B,w><B,w><B,w>,BBB是NFANFANFA,www是串:
- 将NFANFANFA BBB转化为DFADFADFA CCC
- 在输入<C,w>上运行识别ADFAA_{DFA}ADFA的图灵机M
- 如果MMM接受,则接受;如果MMM拒绝,则拒绝"
(3)AREXA_{REX}AREX是一个可判定语言
AREX={<R,w>∣R是正则表达式,w是串,R派生w}A_{REX}=\left\{<R,w>|R是正则表达式,w是串,R派生w\right\}AREX={<R,w>∣R是正则表达式,w是串,R派生w}
识别AREXA_{REX}AREX的图灵机PPP
PPP="对于输入<R,w><R,w><R,w>,RRR是正则表达式,www是串
-
将RRR转化为NFANFANFA AAA
-
在输入<A,w><A,w><A,w>上运行识别ANFAA_{NFA}ANFA的图灵机M
-
如果MMM接受,则接受;如果MMM拒绝,则拒绝"
(4)EDFAE_{DFA}EDFA是一个可判定语言
EDFA={<A>∣A是一个DFA且A接受的语言为空}E_{DFA}=\left\{<A>|A是一个DFA且A接受的语言为空\right\}EDFA={<A>∣A是一个DFA且A接受的语言为空}
识别EDFAE_{DFA}EDFA的图灵机TTT
TTT="对于输入<A><A><A>,A是图灵机
-
标记A的初始状态
-
重复以下操作,直到没有状态可被标记
-
对于一个状态,如果有一个到达它的转移是来源于一个已被标记过的状态,那么标记这个状态
-
如果没有接受状态被标记,那么接受,否则拒绝“
(5)EQDFAEQ_{DFA}EQDFA是一个可判定语言
EQDFA={<A,B>∣A,B都是DFA,且L(A)=L(B)}EQ_{DFA}=\left\{<A,B>|A,B都是DFA,且L(A)=L(B)\right\}EQDFA={<A,B>∣A,B都是DFA,且L(A)=L(B)}
识别L(A)=L(B)L(A)=L(B)L(A)=L(B),相当于识别L(C)=(L(A)∩L‾(B))∪(L‾(A)∩L(B))L(C)=(L(A)\cap \overline L(B)) \cup (\overline L(A) \cap L(B))L(C)=(L(A)∩L(B))∪(L(A)∩L(B))为空
识别EQDFAEQ_{DFA}EQDFA的图灵机FFF
FFF="对于输入<A,B><A,B><A,B>,A和B都是DFA
-
根据描述构造DFA C
-
在输入<C><C><C>上运行识别EDFAE_{DFA}EDFA的图灵机TTT
-
如果T接受,则接受;如果T拒绝,则拒绝"
与上下文无关语言相关的可判定性
(1)ACFGA_{CFG}ACFG是一个可判定语言
ACFG={<G,w>∣G为上下文关文法且能派生出w}A_{CFG}=\left\{<G,w>|G为上下文关文法且能派生出w\right\}ACFG={<G,w>∣G为上下文关文法且能派生出w}
识别ACFGA_{CFG}ACFG的图灵机SSS
SSS="对于输入<G,w>,其中GGG为上下文无关文法,www为串
-
将GGG转化为一个与之等价的CNF G1CNF \,G_1CNFG1
-
列出所有2n−12n-12n−1步派生的结果,nnn为www的长度。若n = 0 , 列出所有一步之类的派生结果
-
如果在这些派生结果中有www,则接受;否则,拒绝"
(2)ECFGE_{CFG}ECFG是一个可判定语言
ECFGE_{CFG}ECFG={<G>∣G为上下文无关语言且L(G)=∅}\left\{<G>|G为上下文无关语言且L(G)=\varnothing \right\}{<G>∣G为上下文无关语言且L(G)=∅}
识别ECFG的图灵机为RE_{CFG}的图灵机为RECFG的图灵机为R
RRR="对于输入<G><G><G>,其中G为上下文关文法
-
将GGG中的终结符都做上标记
-
重复以下操作,直至没有变量可以标记
-
如果GGG有规则A→U1U2...UkA\rightarrow U_1U_2...U_kA→U1U2...Uk,且U1,U2,...,UkU_1,U_2,...,U_kU1,U2,...,Uk中的每个符号都已经作过标记,则AAA做标记
-
如果被标记的变量中不包含初始变量,那么接受;否则拒绝"
二、不可判定性
如果一个集合AAA是有限的或者与NNN具有相同的规模,则称AAA是可数的。
存在不能被图灵机识别的语言
证明:
由所有图灵机组成的集合是可数的,每个图灵机有一个编码,编码都是Σ\SigmaΣ上的字符串。先写下长度为1的字符串,在写下长度为2的字符串,……。将这个排列与0,1,2,……进行对应,这样就有一个从图灵机编码到NNN的对应关系,则所有图灵机组成的集合是可数的。
由所有语言组成的集合是不可数的。
首先无限循环的二进制序列是不可数的,以β\betaβ记所有无限循环的二进制序列组成的集合。
设ϝ\digammaϝ为字母表Σ\SigmaΣ上所有语言组成的集合。有Σ∗={s1,s2,⋅⋅⋅}\Sigma^{*}=\left\{s_1,s_2,···\right\}Σ∗={s1,s2,⋅⋅⋅},对于任一语言A∈ϝA\in \digammaA∈ϝ,在β\betaβ中都有唯一编码。如果si∉As_i \notin Asi∈/A,则编码的第iii位为零。所以ϝ\digammaϝ与β\betaβ存在一个一一对应的关系。所以所有语言组成的结合是不可数的。
既然图灵机是可数的,所有语言组成的集合是不可数的,那么就会存在不能被图灵机识别的语言。
ATMA_{TM}ATM是不可判定语言
ATM={<M,w>∣M是一个图灵机且接受w}A_{TM}=\left\{<M,w>|M是一个图灵机且接受w\right\}ATM={<M,w>∣M是一个图灵机且接受w}
证明:
设H是ATMA_{TM}ATM的判定器,即:
H(<M,w>)={接受如果M接受w拒绝如果M拒绝w
H(<M,w>)=\begin{cases}
接受 \quad 如果M接受w\\
拒绝 \quad 如果M拒绝w
\end{cases}
H(<M,w>)={接受如果M接受w拒绝如果M拒绝w
现在设计一个图灵机DDD
D(<M>)={接受如果M接受<M>拒绝如果M不接受<M>
D(<M>) = \begin{cases}
接受 \quad 如果M接受<M>\\
拒绝 \quad 如果M不接受<M>
\end{cases}
D(<M>)={接受如果M接受<M>拒绝如果M不接受<M>
那么有
D(<D>)={接受如果D不接受<D>拒绝如果D接受<D>
D(<D>)=\begin{cases}
接受 \quad 如果D不接受<D>\\
拒绝 \quad 如果D接受<D>
\end{cases}
D(<D>)={接受如果D不接受<D>拒绝如果D接受<D>
存在矛盾。所以ATMA_{TM}ATM是不可判别的
- 一个语言是图灵可判别的的,当且仅当它是图灵可识别的和图灵补可识别的
- ATM‾\overline {A_{TM}}ATM是不可识别的
本文探讨了计算理论中的可判定性概念,涉及DFA、NFA、正则表达式的判定以及不可判定语言如ATM的例子,强调了图灵机在语言识别中的作用。文章指出,一个语言是否可判定取决于它是否可识别及其补集是否可识别。
972

被折叠的 条评论
为什么被折叠?



