计算理论第四章——可判定性

本文探讨了计算理论中的可判定性概念,涉及DFA、NFA、正则表达式的判定以及不可判定语言如ATM的例子,强调了图灵机在语言识别中的作用。文章指出,一个语言是否可判定取决于它是否可识别及其补集是否可识别。

计算理论第四章——可判定性

一、 可判定性语言

与正则语言相关的可判定性

(1)ADFAA_{DFA}ADFA是一个可判定语言

ADFA={<B,w>∣B是DFA并且接受w}A_{DFA}=\left\{<B,w>|B是DFA并且接受w\right\}ADFA={<B,w>BDFA并且接受w}

识别ADFAA_{DFA}ADFA的图灵机MMM

MMM="对于输入<B,w><B,w><B,w>,其中BBBDFADFADFA,www是字符串:

  1. 在输入www上运行BBB

  2. 如果模拟以接收状态结束,则接受;如果模拟以非接收状态接受,则拒绝"

(2)ANFAA_{NFA}ANFA是一个可判定语言

ANFA={<B,w>∣B是NFA且接受w}A_{NFA}=\left\{<B,w>|B是NFA且接受w\right\}ANFA={<B,w>BNFA且接受w}

识别ANFAA_{NFA}ANFA的图灵机S

SSS="对于输入<B,w><B,w><B,w>,BBBNFANFANFA,www是串:

  1. NFANFANFA BBB转化为DFADFADFA CCC
  2. 在输入<C,w>上运行识别ADFAA_{DFA}ADFA的图灵机M
  3. 如果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是串

  1. RRR转化为NFANFANFA AAA

  2. 在输入<A,w><A,w><A,w>上运行识别ANFAA_{NFA}ANFA的图灵机M

  3. 如果MMM接受,则接受;如果MMM拒绝,则拒绝"

(4)EDFAE_{DFA}EDFA是一个可判定语言

EDFA={<A>∣A是一个DFA且A接受的语言为空}E_{DFA}=\left\{<A>|A是一个DFA且A接受的语言为空\right\}EDFA={<A>A是一个DFAA接受的语言为空}

识别EDFAE_{DFA}EDFA的图灵机TTT

TTT="对于输入<A><A><A>,A是图灵机

  1. 标记A的初始状态

  2. 重复以下操作,直到没有状态可被标记

  3. 对于一个状态,如果有一个到达它的转移是来源于一个已被标记过的状态,那么标记这个状态

  4. 如果没有接受状态被标记,那么接受,否则拒绝“

(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

  1. 根据描述构造DFA C

  2. 在输入<C><C><C>上运行识别EDFAE_{DFA}EDFA的图灵机TTT

  3. 如果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为串

  1. GGG转化为一个与之等价的CNF G1CNF \,G_1CNFG1

  2. 列出所有2n−12n-12n1步派生的结果,nnnwww的长度。若n = 0 , 列出所有一步之类的派生结果

  3. 如果在这些派生结果中有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为上下文关文法

  1. GGG中的终结符都做上标记

  2. 重复以下操作,直至没有变量可以标记

  3. 如果GGG有规则A→U1U2...UkA\rightarrow U_1U_2...U_kAU1U2...Uk,且U1,U2,...,UkU_1,U_2,...,U_kU1,U2,...,Uk中的每个符号都已经作过标记,则AAA做标记

  4. 如果被标记的变量中不包含初始变量,那么接受;否则拒绝"

二、不可判定性

如果一个集合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是不可识别的
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值