计算理论第三章——丘奇-图灵论题

本文介绍了计算理论中的丘奇-图灵论题,详细阐述了图灵机的基本定义,包括状态转移、输入和带子等元素。后续探讨了多带图灵机、非确定图灵机以及枚举器的概念,指出这些变形保持了与普通图灵机相同的表达能力,但具有不同的识别特性。文章强调了图灵可识别和图灵可判定的区别,以及各种图灵机之间的等价关系。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

计算理论第三章——丘奇-图灵论题

3.1 图灵机的形式化定义

  • 定义3.1 :图灵机是一个7元组 ( Q , Σ , Γ , δ , q 0 , q a c c e p t , q r e j e c t ) (Q,\Sigma,\Gamma,\delta,q_0,q_{accept},q_{reject}) (Q,Σ,Γ,δ,q0,qaccept,qreject)
  • Q是状态集
  • Σ \Sigma Σ是输入字母表
  • Γ \Gamma Γ是带子字母表
  • δ \delta δ是状态转移函数
  • q 0 q_0 q0是初始状态
  • q a c c e p t q_{accept} qaccept是接受状态
  • q r e j e c t q_{reject} qreject是拒绝状态
  • 格局:当前状态、当前带子内容和当前读写头位置构成了图灵机的格局

    例如 u q v uqv uqv,表示一个格局,状态为 q q q,读写头指向 v v v字符串的首字母,读写头左侧的字符串为 u u u

  • 图灵可识别:一个语言能被图灵机识别称为图灵可识别的

    图灵可判定:在一个输入上能够判断是接受还是拒绝**(跟图灵可识别一个很大的区别在于图灵可判别可以判定是拒绝状态)**

3.2 图灵机的变形

我们上面定义的图灵机是比较普通的图灵机,还有很多图灵机的变种,它们有着各种各样奇特的能力,但是表达能力与普通图灵机相同。

举例:(主要是书上的一些图灵机的变形,我觉得重点是这个变形与普通图灵机等价的证明)


(1)多带图灵机

多带图灵机与普通的图灵机很类似,但是有多条带子。

开始时,输入出现在第一条袋子上,其他带子都是空白的。转移函数允许多个带子同时进行读、写和移动读写头。

多带图灵机与单带图灵机等价
  • 单带图灵机是一个特殊的多带图灵机,所以可以使用多带图灵机模仿单带图灵机,即能被单带图灵机识别的语言都能被多带图灵机识别

  • 证明单带图灵机 S S S能模仿多带图灵机 M M M,即能被多带图灵机识别的语言都能被单带图灵机识别

    ​ 对于输入 w = w 1 . . . w n w=w_1...w_n w=w1...wn

    1. ​ S在自己的带子上放入:
      # w ˙ 1 w 2 . . . w n # B ˙ # B ˙ # . . . # \# \dot w_1w_2...w_n\#\dot B\#\dot B \#...\# #w˙1w2...wn#B˙#B˙#...#
      说明:每个#前面都是多带图灵机M一条带上的内容,上面带点的是这条带上读写头针对的位置(称为虚拟读写头), B B B代表空,设多带图灵机M有 k k k条带子

    2. 为了模拟M,S在其带子上从第一个#开始往右移动,直到扫描到第 ( k + 1 ) (k+1) (k+1)个#,其目的是确定每个读写头下的符号。然后对S进行二次扫描,根据M的更新运动规则,更新带子

    3. 如果某个虚拟读写头,指向的字符为 # \# #,那么说明在多带图灵机M上已经指向了对应带子的空白区域,指向这个空白区域,可能后期会更改这个空白区域,即加入字符。所以在S上,要将这个指向的字符 # \# #改为空格符,并将包括#的右端字符整体往右移动

结论:

​ 一个语言是图灵可识别的,当且仅当被一个多带图灵机识别


(2)非确定图灵机

非确定图灵机如其名,对于每个格局,其下一个格局可能有多种可能。

相当于是一棵树,不同的分支代表不同的动作。

非确定型图灵机与确定型图灵机等价
  • 确定型图灵机本身就是一种特殊的非确定型图灵机,即能被确定型图灵机识别的语言都能被非确定型图灵机识别。

  • 用确定型图灵机D来模拟非确定型图灵机M

    用D来模拟M的思路,是让D模拟M的所有可能分支,如果分支进入了接受状态,则接受。

    M在输入 w w w上的计算看作一棵树,我们不能采用深度优先的方法来遍历M的所有分支,因为很有可能进入一个分支之后就会进入到死循环。所以我们采用广度优先的方法。

    确定型图灵机有三个带子,如图

    在这里插入图片描述

​ 第一条带子为输入带,用于存放非确定性图灵机的输入。

​ 第二条带子为模拟带,即进行正常的更新操作

​ 第三条带子为地址带,表示当前访问节点的位置,比如 231 231 231,表示从根出发选择它的第二个子节点,再走到下一个节点的第三个子节点……。

D的描述如下:

  1. ​ 开始时,第一个带子上是输入 w w w,第二和第三个带子都是空的
  2. ​ 把第一个带子复制到第二个带子,并将第三个带子的字符串初始化为 ε \varepsilon ε
  3. ​ 用第二个带子去模拟 N N N在输入 w w w上的非确定型计算的某个分支。在N的每一步之前,查询第三个带子上的下一个数字,以决定在 N N N的转移函数所允许的选择中作何选择。如果第三个带子上没有符号剩下,或这个非确定型的选择是无效的,则放弃这个分支,转到第4步。如果遇到接受格局,则接受这个输入。
  4. ​ 在第三个带子上,用字符串顺序的下一个串来代替原有的串。转到第2步,以模拟 N N N计算的下一个分支。
结论

一个语言是图灵可识别的,当且仅当存在非确定型图灵机识别他


(3)枚举器

枚举机所枚举的语言就是打印出来的语言。

一个语言是图灵可识别的,当且仅当存在枚举器枚举它
  • 如果有枚举器E枚举了语言A,那么有图灵机M识别A

    M="对于输入 w w w:

      1. 运行$E$。每当$E$输出一个串时,则与$w$比较
      1. 如果$w$在$E$的输出中出现过,那么接受,否则拒绝"
    
  • 如果有图灵机 M M M识别语言 A A A,那么有枚举器 E E E枚举 A A A

    E="忽略输入

    1. 对于 i = 1 , 2 , 3... , i=1,2,3..., i=1,2,3...,重复下列步骤。
    2. 对于 s 1 , s 2 , . . . , s i s_1,s_2,...,s_i s1,s2,...,si中的每一个,M以其作为输入运行 i i i
    3. 如果有计算接受,则打印出相应的 s j s_j sj"

E E E枚举 A A A

E="忽略输入

1. 对于$i=1,2,3...,$重复下列步骤。
1. 对于$s_1,s_2,...,s_i$中的每一个,M以其作为输入运行$i$步
1. 如果有计算接受,则打印出相应的$s_j$"
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值