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

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

一、 可判定性语言

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

(1) A D F A A_{DFA} ADFA是一个可判定语言

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

识别 A D F A A_{DFA} ADFA的图灵机 M M M

M M M="对于输入 < B , w > <B,w> <B,w>,其中 B B B D F A DFA DFA, w w w是字符串:

  1. 在输入 w w w上运行 B B B

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

(2) A N F A A_{NFA} ANFA是一个可判定语言

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

识别 A N F A A_{NFA} ANFA的图灵机S

S S S="对于输入 < B , w > <B,w> <B,w>, B B B N F A NFA NFA, w w w是串:

  1. N F A NFA NFA B B B转化为 D F A DFA DFA C C C
  2. 在输入<C,w>上运行识别 A D F A A_{DFA} ADFA的图灵机M
  3. 如果 M M M接受,则接受;如果 M M M拒绝,则拒绝"
(3) A R E X A_{REX} AREX是一个可判定语言

A R E X = { < R , w > ∣ R 是正则表达式, w 是串, R 派生 w } A_{REX}=\left\{<R,w>|R是正则表达式,w是串,R派生w\right\} AREX={<R,w>R是正则表达式,w是串,R派生w}

识别 A R E X A_{REX} AREX的图灵机 P P P

P P P="对于输入 < R , w > <R,w> <R,w> R R R是正则表达式, w w w是串

  1. R R R转化为 N F A NFA NFA A A A

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

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

(4) E D F A E_{DFA} EDFA是一个可判定语言

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

识别 E D F A E_{DFA} EDFA的图灵机 T T T

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

  1. 标记A的初始状态

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

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

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

(5) E Q D F A EQ_{DFA} EQDFA是一个可判定语言

E Q D F A = { < A , B > ∣ A , B 都是 D F A , 且 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))为空

识别 E Q D F A EQ_{DFA} EQDFA的图灵机 F F F

F F F="对于输入 < A , B > <A,B> <A,B>,A和B都是DFA

  1. 根据描述构造DFA C

  2. 在输入 < C > <C> <C>上运行识别 E D F A E_{DFA} EDFA的图灵机 T T T

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

与上下文无关语言相关的可判定性

(1) A C F G A_{CFG} ACFG是一个可判定语言

A C F G = { < G , w > ∣ G 为上下文关文法且能派生出 w } A_{CFG}=\left\{<G,w>|G为上下文关文法且能派生出w\right\} ACFG={<G,w>G为上下文关文法且能派生出w}

识别 A C F G A_{CFG} ACFG的图灵机 S S S

S S S="对于输入<G,w>,其中 G G G为上下文无关文法, w w w为串

  1. G G G转化为一个与之等价的 C N F   G 1 CNF \,G_1 CNFG1

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

  3. 如果在这些派生结果中有 w w w,则接受;否则,拒绝"

(2) E C F G E_{CFG} ECFG是一个可判定语言

E C F G E_{CFG} ECFG= { < G > ∣ G 为上下文无关语言且 L ( G ) = ∅ } \left\{<G>|G为上下文无关语言且L(G)=\varnothing \right\} {<G>G为上下文无关语言且L(G)=}

识别 E C F G 的图灵机为 R E_{CFG}的图灵机为R ECFG的图灵机为R

R R R="对于输入 < G > <G> <G>,其中G为上下文关文法

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

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

  3. 如果 G G G有规则 A → U 1 U 2 . . . U k A\rightarrow U_1U_2...U_k AU1U2...Uk,且 U 1 , U 2 , . . . , U k U_1,U_2,...,U_k U1,U2,...,Uk中的每个符号都已经作过标记,则 A A A做标记

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

二、不可判定性

如果一个集合 A A A是有限的或者与 N N N具有相同的规模,则称 A A A是可数的。

存在不能被图灵机识别的语言

证明:

由所有图灵机组成的集合是可数的,每个图灵机有一个编码,编码都是 Σ \Sigma Σ上的字符串。先写下长度为1的字符串,在写下长度为2的字符串,……。将这个排列与0,1,2,……进行对应,这样就有一个从图灵机编码到 N N N的对应关系,则所有图灵机组成的集合是可数的。

由所有语言组成的集合是不可数的。

首先无限循环的二进制序列是不可数的,以 β \beta β记所有无限循环的二进制序列组成的集合。

ϝ \digamma ϝ为字母表 Σ \Sigma Σ上所有语言组成的集合。有 Σ ∗ = { s 1 , s 2 , ⋅ ⋅ ⋅ } \Sigma^{*}=\left\{s_1,s_2,···\right\} Σ={s1,s2,⋅⋅⋅},对于任一语言 A ∈ ϝ A\in \digamma Aϝ,在 β \beta β中都有唯一编码。如果 s i ∉ A s_i \notin A si/A,则编码的第 i i i位为零。所以 ϝ \digamma ϝ β \beta β存在一个一一对应的关系。所以所有语言组成的结合是不可数的。

既然图灵机是可数的,所有语言组成的集合是不可数的,那么就会存在不能被图灵机识别的语言。

A T M A_{TM} ATM是不可判定语言


A T M = { < M , w > ∣ M 是一个图灵机且接受 w } A_{TM}=\left\{<M,w>|M是一个图灵机且接受w\right\} ATM={<M,w>M是一个图灵机且接受w}

证明:

设H是 A T M A_{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
现在设计一个图灵机 D D D
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>
存在矛盾。所以 A T M A_{TM} ATM是不可判别的

  • 一个语言是图灵可判别的的,当且仅当它是图灵可识别的和图灵补可识别的
  • A T M ‾ \overline {A_{TM}} ATM是不可识别的
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值