【计算理论】图灵机 ( 图灵机示例 )

简介: 【计算理论】图灵机 ( 图灵机示例 )

文章目录

一、图灵机示例

二、图灵机示例 2





一、图灵机示例


指令 L : ( p , 1 ) → ( q , 0 , L ) \rm L : (p,1) \to (q, 0, L)L:(p,1)→(q,0,L)


初始状态下 , 状态是 p \rm pp 读取头 指向的字符是 1 11 , 如下图 :

image.png



执行完 L \rm LL 指令之后 , p \rm pp 状态变为 q qq 状态 , 读取头将指向的字符 1 11 擦除 , 改为 0 00 , 向左移动一个单位 ( 这里不进行移动 ) ;

image.png



左端点向左移动默认不动说明 :


一般情况下我们计算时涉及的图灵机都是 向右无限延长的带子 , 带子有一个左端点 ;


当读写头当前已经指向左端点时 , 如果再向左移动 , 此时默认不进行移动 ;






二、图灵机示例 2


任务 : 设计一个图灵机 , 给定输入之后 , 图灵机会 在输入中寻找 1 11 字符 ;



算法 :


如果 找到了 1 11 字符 , 就会将该字符转变成 0 00 字符 , 然后将当前状态改为接受状态 f \rm ff , 然后停下来 ;


如果带子上的字符都读取完毕后 , 没有找到 1 11 , 只找到了空白字符 , 将该空白字符改为 1 11 , 然后向左移动一格 , 然后停下来 ;


( 自动机停下的前提是处于可接受状态 )



根据上述算法 , 构造图灵机 ;



图灵机设计 :


① 状态集 Q = { q , f } \rm Q = \{ q , f \}Q={q,f} , 其中 q \rm qq 是开始状态 , f \rm ff 是接受状态 ;


② 输入字符集 Σ = { 0 , 1 } \rm \Sigma = \{ 0, 1 \}Σ={0,1} ;


③ 带子字符集 Γ = { 0 , 1 , B } \rm \Gamma = \{ 0, 1, B \}Γ={0,1,B} , 其中 B \rm BB 是空白字符 ;



④ 指令 δ ( q , 0 ) = ( q , 0 , R ) \rm \delta (q, 0) = (q, 0, R)δ(q,0)=(q,0,R)


⑤ 指令 δ ( q , 1 ) = ( f , 0 , R ) \rm \delta (q, 1) = (f, 0, R)δ(q,1)=(f,0,R)


⑥ 指令 δ ( q , B ) = ( q , 1 , L ) \rm \delta (q, B) = (q, 1, L)δ(q,B)=(q,1,L)


上述图灵机设计中 , 最关键的部分是三条指令 ;



图灵机处于开始状态 q \rm qq , 读头指向 0 00 字符 , 左端的 00 0 000 是输入字符 , 查看图灵机是否接受 00 0 000 字符串 ;


下面图灵机后续都是 B \rm BB 空白字符 ;


image.png


根据指令 指令 δ ( q , 0 ) = ( q , 0 , R ) \rm \delta (q, 0) = (q, 0, R)δ(q,0)=(q,0,R) , 当前状态 q \rm qq , 当前指向字符 0 \rm 00 , 输出内容是 q , 0 , R \rm q, 0, Rq,0,R ,


即 状态变为 q \rm qq , 读头指向的字符变为 0 \rm 00 , 向右移动一个字符 ;


如下图 :

image.png



此时继续 根据指令 指令 δ ( q , 0 ) = ( q , 0 , R ) \rm \delta (q, 0) = (q, 0, R)δ(q,0)=(q,0,R) , 当前状态 q \rm qq , 当前指向字符 0 \rm 00 , 输出内容是 q , 0 , R \rm q, 0, Rq,0,R ,


即 状态变为 q \rm qq , 读头指向的字符变为 0 \rm 00 , 向右移动一个字符 ;


如下图 :




此时继续 根据指令 指令 δ ( q , B ) = ( q , 1 , L ) \rm \delta (q, B) = (q, 1, L)δ(q,B)=(q,1,L) , 当前状态 q \rm qq , 当前指向字符 B \rm BB , 输出内容是 q , 1 , L \rm q, 1, Lq,1,L ,


即 状态变为 q \rm qq , 读头指向的字符变为 1 \rm 11 , 向左移动一个字符 ;


如下图 :




此时继续 根据指令 指令 δ ( q , 0 ) = ( q , 0 , R ) \rm \delta (q, 0) = (q, 0, R)δ(q,0)=(q,0,R) , 当前状态 q \rm qq , 当前指向字符 0 \rm 00 , 输出内容是 q , 0 , R \rm q, 0, Rq,0,R ,


即 状态变为 q \rm qq , 读头指向的字符变为 0 \rm 00 , 向右移动一个字符 ;


如下图 :




此时继续 根据指令 指令 δ ( q , 1 ) = ( f , 0 , R ) \rm \delta (q, 1) = (f, 0, R)δ(q,1)=(f,0,R) , 当前状态 q \rm qq , 当前指向字符 1 \rm 11 , 输出内容是 f , 0 , R \rm f, 0, Rf,0,R ,


即 状态变为 f \rm ff , 读头指向的字符变为 0 \rm 00 , 向右移动一个字符 ;


此时的状态 f \rm ff 是接受状态 , 自动机停止运行 ;


如下图 :




图灵机 与 自动机 接受的条件是不同的 ;


图灵机计算过程中 , 一旦到达接受状态 , 立刻停机 , 不再继续进行计算 ; 并且称该图灵机是可接受的 ;


自动机即使到达接受状态 , 也要把自动机读取的字符读取完毕 , 才停止计算 ; 然后在查看最终的状态是否是接受状态 ;


目录
相关文章
|
运维 前端开发 搜索推荐
大象转身-平台架构如何拥抱业务创新
如果你正在负责一个超大复杂型平台(比如电商、支付、物流)的架构师,且面临各种技术负债(比如架构复杂性、团队协同复杂性),同时业务又面临从平台服务,到场景化创新的转型。那么这篇文章也许对你有收获。
112541 25
|
12月前
|
编解码 Kubernetes 容器
有奖评测!容器服务 Kubernetes 版 ACK 文档体验评测等你来
诚邀容器服务 Kubernetes 版 ACK 用户参与文档体验评测!2024年8月14日至9月25日,完成15个场景任务并提供真实评分、改进建议及体验视频,即可获300元现金奖励;最佳建议另有100元奖金。任务需对比多云文档并按指引录制视频。详情请见活动页面与钉群通知。名额有限,速来参加!
|
机器学习/深度学习 人工智能 自然语言处理
【强化学习】强化学习的概述及应用,附带代码示例
强化学习(Reinforcement Learning, RL)是机器学习中的一种重要范式,它通过让智能体(agent)在环境中采取行动并根据所获得的奖励(reward)来学习最优的策略(policy)。简而言之,强化学习的目标是让智能体学会在特定环境下做出决策,以最大化累积奖励。这种学习方式模拟了生物体如何在环境给予的正反馈(奖励)和负反馈(惩罚)中学习行为的过程。
2185 4
|
C语言 C++
CLion2022安装与使用
CLion2022安装与使用
328 0
CLion2022安装与使用
|
前端开发 JavaScript 测试技术
第十三章 React生命周期(新)
第十三章 React生命周期(新)
138 0
|
消息中间件 网络协议 网络架构
3. BGP 实验(一):基础实验
3. BGP 实验(一):基础实验
|
运维 监控 Cloud Native
从故障演练到运维工具产品力评测的探索 | 龙蜥技术
随着AI和云原生技术的发展,业界运维工具百花齐放,该如何让优秀的工具脱颖而出?
|
消息中间件 Kubernetes 网络协议
亿级万物互联新时代的物联网消息中间件EMQX调研
EMQ 创始人兼 CEO 李枫表示:「EMQX 5.0 是 MQTT 领域的一个里程碑式的成果。它不仅是全球首个单集群支持 1 亿连接的分布式 MQTT 消息服务器,也是首个将 QUIC 引入 MQTT 的开创性产品。
522 55
亿级万物互联新时代的物联网消息中间件EMQX调研
|
API Android开发
[Android]图片加载库Glide
[Android]图片加载库Glide
218 0