【计算理论】计算理论总结 ( 图灵机设计 ) ★★

举报
韩曙亮 发表于 2022/01/11 00:51:29 2022/01/11
【摘要】 文章目录 一、图灵机二、图灵机设计三、图灵机设计示例 1 一、图灵机 图灵机要素 : ① 有限多状态集 , ...





一、图灵机



图灵机要素 :

有限多状态集 , Q \rm Q Q ;

有限多个字符集 , Σ \rm \Sigma Σ ;

带子字符集 , Γ \rm \Gamma Γ , 包含 Σ \rm \Sigma Σ ;

转换函数 , 即指令集 , δ \delta δ ;

开始状态 , q 0 \rm q_0 q0 , 包含在 Q \rm Q Q 中 ;

空白字符 , u \rm u u , 包含在 Γ − Σ \rm \Gamma - \Sigma ΓΣ ( 相对补集 ) 集合中 ;

一些接受状态 , F \rm F F , 其中 F ⊆ Q \rm F \subseteq Q FQ ;


指令与转换函数 : 图灵机是根据指令进行计算的 , 指令 是一个 转换函数 δ \rm \delta δ ;

转换函数 δ \rm \delta δ 两个输入参数 :

  • 参数一 : 状态 q \rm q q , 该状态是 Q \rm Q Q 中的元素 , q ∈ Q q \in\rm Q qQ ;
  • 参数二 : 带子字符 Z Z Z , 该字符是 Γ \rm \Gamma Γ 集合中的元素 , Z ∈ Γ \rm Z \in \Gamma ZΓ ;

转换函数 δ \rm \delta δ 输出是一个三元组 :

  • 输出一 : 状态 p \rm p p ;
  • 输出二 : 带子字符 Y \rm Y Y ;
  • 输出三 : 方向 D \rm D D , 向左或向右 , 读取头下面要移动的方向 ;

指令 δ \rm \delta δ 表示的含义解析 :

δ ( q , Z ) = ( p , Y , D ) \rm \delta(q, Z) = (p, Y, D) δ(q,Z)=(p,Y,D) 转换函数 , 其中 q , Z \rm q,Z q,Z 是两个输入 , p , Y , D \rm p, Y, D p,Y,D 是三个输出 ,

开始时图灵机的 状态是 q \rm q q 状态 , 读取头指向的字符是 Z \rm Z Z ,

执行该转换函数 δ \rm \delta δ , 会将 状态转变为 p \rm p p 状态 , 将 读取头指向的带子上的字符 Z \rm Z Z 擦除 , 并改为 Y \rm Y Y , 然后 沿着 D \rm D D 方向 , 移动一格单位 ;

其中 D \rm D D 方向可以是 L \rm L L 向左移动 , 也可以是 R \rm R R 向右移动 ;



格局 Configuration , 格局是给图灵机照一个 快照 , 下图就是图灵机在计算过程中 , 某一个时刻的快照 ;

在这里插入图片描述

将图灵机计算过程 , 每个步骤都照一份快照 , 通过轨迹将这些快照联系到一起 , 就可以得到一个数据结构 ,

上述格局可以记作 00 q 1 B \rm 00q1B 00q1B , 该写法表示 与 某个格局 ( 快照 ) 一一对应 ;

在 图灵机中 , 读头指向 1 1 1 , 就将状态写在 1 1 1 的左边 ;





二、图灵机设计



图灵机的设计很复杂 , 一般情况下 , 不需要设计出图灵机的具体的指令 ,

只需要 使用语言描述图灵机的读写头在带子上的操作 即可 ;


设计图灵机 , 只需要 将图灵机描述出来 即可 ;

证明问题属于 P \rm P P , 只需要将问题使用图灵机判定的过程描述出来 , 计算出该问题的时间复杂度的数量级 ;





三、图灵机设计示例 1



给定语言 : A = { 0 k 1 k : k ≥ 0 } \rm A = \{ 0^k1^k : k \geq 0 \} A={0k1k:k0} , 设计出该语言对应的图灵机 ;


M 1 \rm M_1 M1 图灵机算法设计如下 : 算法的描述是双引号 “” 中的内容 , 这是操作意义上的图灵机 , 只描述图灵机读头操作 , 没有必要将图灵机指令整体设计出来 ;

M 1 = \rm M_1 = M1= "在长度为 n \rm n n 的字符串 w \rm w w 上进行如下计算 :

① 扫描整个带子上的字符串 , 查看 0 0 0 1 1 1 的顺序 , 所有的 0 0 0 必须在所有的 1 1 1 前面 ; 如果顺序错误 , 进入拒绝状态 ;

② 扫描整个带子 , 遇到一个 0 0 0 , 就划掉一个 1 1 1 ; 如果带子上存在 0 0 0 1 1 1 , 该操作重复进行 ;

③ 如果最后只剩下 0 0 0 或只剩下 1 1 1 , 说明 两个数字的个数不等 , 进入拒绝状态 ; 如果最后带子上只剩下空白字符 , 说明两个数字个数相等 , 进入接受状态 ; "

文章来源: hanshuliang.blog.csdn.net,作者:韩曙亮,版权归原作者所有,如需转载,请联系作者。

原文链接:hanshuliang.blog.csdn.net/article/details/111488027

【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。