计算理论扩展概念——计算历史归约法

写这篇的原因是因为我在写计算理论作业的第一题时就被难住了……于是一怒之下就查到了一些扩展资料,在此分享给大家(文末有我找到的文章所叙述内容的 B B B站视频讲解!),希望对大家有帮助捏~

那么,让我们陆续请出今天的两位主角:计算历史和线性有界自动机~

计算历史:(其实不算是很新的概念了!)设 M M M是一个图灵机, ω \omega ω是一个输入串,若 M M M接受 ω \omega ω,则在这个过程中产生的格局序列 C 1 , C 2 . . . C l C_1,C_2...C_l C1,C2...Cl(其中 C 1 C_1 C1为起始格局, C l C_l Cl为接受格局)就被叫做 M M M ω \omega ω上的接受计算历史。反之,若 C l C_l Cl不为接受格局而为拒绝格局,则称该格局序列为 M M M ω \omega ω上的拒绝计算历史

可以看出,计算历史都是有限序列。因为接受格局或者拒绝格局的存在意味着该图灵机必然停机(如果陷入循环则不存在接受/拒绝格局),所产生的格局总数自然是有限多的。这点对于我们后面的分析十分重要。

计算历史在处理 A T M A_{TM} ATM的归约问题时具有重要作用!接下来我们就用计算历史归约方法来解决几个判定实例!

在解决例子之前,我们先来看看一个全新的概念:线性有界自动机

线性有界自动机(LBA):是一种削弱版的图灵机,它不允许读写头离开包含输入的带子的区域,也就是从左端封口变成了左右端均封口。

尽管线性有界自动机的存储功能受限,但不要小看了它的能力!其实 A D F A A_{DFA} ADFA A C F G A_{CFG} ACFG E D F A E_{DFA} EDFA E C F G E_{CFG} ECFG的判定器都是 L B A LBA LBA哦~

另外, L B A LBA LBA所识别的语言是一种我们课上没有讲到的语言:上下文有关语言(CSL),对应的文法是上下文相关文法。但是这已经是支线任务的支线任务了,所以今天就不过多叙述这个上下文相关文法了www

接下来我们就来证明 A L B A = { ⟨ M , ω ⟩ ∣ M A_{LBA}=\{\langle M,\omega\rangle|M ALBA={⟨M,ωM是一个接受串 ω \omega ω L B A } LBA\} LBA}是可判定的!

在证明之前,先要发现这么一个事实:对于一个输入长度为 n n n的、有 q q q个状态和 g g g个带子字母表中的字符的图灵机 M M M,可以求出 M M M的格局总数为 q n g n qng^n qngn(关键在于格局总数有限!)

我们姑且把 L B A LBA LBA看做一种弱一点的图灵机,仍然沿用了格局等图灵机概念。那么我们可以设计出判定 A L B A A_{LBA} ALBA的算法:

模拟 M ( ω ) M(\omega) M(ω),执行 q n g n qng^n qngn步,若中途或者到最后停机了,则该接受接受,该拒绝拒绝;若 M M M还没有停机,由于格局总数就 q n g n qng^n qngn这么多,说明必然会出现重复格局,也就是陷入循环,应当拒绝。

因此 A L B A A_{LBA} ALBA可判定!

接下来还有几个例子哦!

(1) E L B A = { ⟨ M ⟩ ∣ M E_{LBA}=\{\langle M\rangle|M ELBA={⟨MM是一个 L B A LBA LBA L ( M ) = ∅ } L(M)=\empty\} L(M)=}是不可判定的

我们可以通过计算历史归约,证明 A T M A_{TM} ATM可归约到 E L B A E_{LBA} ELBA,也就是可以用 E L B A E_{LBA} ELBA构造 A T M A_{TM} ATM

我们先构造这样的 L B A   M 1 LBA\ M_1 LBA M1,它只接受 ⟨ M , ω ⟩ \langle M,\omega\rangle M,ω的接受计算历史(为什么 L B A LBA LBA能够接受接受计算历史也是需要讨论的,这里包括下面的 P D A PDA PDA拒绝接受计算历史的问题都很复杂很复杂,纯文字叙述太过于费力了,建议看文末的B站视频的讲解)。再用 E L B A E_{LBA} ELBA M 1 M_1 M1进行判定,如果判定为空则拒绝(没有接受计算历史当然拒绝了呗),不为空则接受,这样就判定了 A T M A_{TM} ATM

但是 A T M A_{TM} ATM不可判定呀,所以 E L B A E_{LBA} ELBA不可判定!

接下来还有一个问题,也贴近我们的作业了:

(2) A L L C F G = { ⟨ G ⟩ ∣ G ALL_{CFG}=\{\langle G\rangle|G ALLCFG={⟨GG是一个 C F G CFG CFG L ( G ) = Σ ∗ } L(G)=\Sigma^*\} L(G)=Σ}是不可判定的

类似地,我们可以构造 P D A   M 1 PDA\ M_1 PDA M1 它只拒绝 ⟨ M , ω ⟩ \langle M,\omega\rangle M,ω的接受计算历史(上面说明了,想了解为什么能够构造出这样的 P D A PDA PDA请参考文末视频),然后用 A L L C F G ALL_{CFG} ALLCFG来判定, A L L C F G ALL_{CFG} ALLCFG接受则拒绝,拒绝则接受

有了 A L L C F G ALL_{CFG} ALLCFG的不可判定性,我们才能利用我们所学的归约解决 E Q C F G EQ_{CFG} EQCFG的不可判定问题(所以第一题就这么折磨人真的好吗……

有关本文章讨论问题的 B B B站视频:

【【北京大学】理论计算机科学基础(全70讲)】 https://www.bilibili.com/video/BV1m4411p7nS/?p=45&share_source=copy_web&vd_source=617e5dcd119202210b54ad9f264d5833

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值