图灵机开发说明文档.docVIP

  1. 1、本文档共24页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
图灵机开发说明文档

典型图灵机的Java编程示例 一 图灵机概述 图灵机(TM)是一种重要的计算模型,它由英国数学家A.M.Turing于1936年提出。这个模型很好的描述了计算过程。无数的事实表明,任何算法都可以用一个图灵机来描述,这就是著名的丘奇论题。图灵机在可计算性理论中起着重要作用。可以证明图灵机识别的语言就是0型语言。 Components. Alan Turing sought to describe the most primitive model of a mechanical device that had the same basic capabilities as a human computer.图灵机The machine consists of the following compone的组成如下图所示: 它由一个状态控制器,一个读写头和一个输入带组成。其中输入带左右端可以无限伸长。带上的每一格恰好有一个字符。开始时,带上从编号为0开始的n个格存放着由有限输入字母表上的字符组成的字符串,第0格及其左边和第n+1格及其右边各格均为空白。空白是一个特殊的带符号,它不属于输入字母表。读写头一次可以在带上读或写一个字符,并可根据指令向左或向右移一格。状态控制器根据当前的状态,读到输入字符并发布指令。指令的内容包括状态转换,在带上的一格写上(更换)字符,以及读写头向左或向右移动一格等。 带子上的无穷多个小格可写、可擦;读写头可沿带子左右移动并在带上读写;每个图灵机有一个状态集Q,其中有一个开始状态和一个结束状态;还有一个符号集Σ={0,1,*};可形式化地描述为: 图灵机是一个七元组M=(Q,T,Σ,δ,q0,B,H) 其中: Q ---有限的状态集合; Σ ---有限的带字符集合; B ---空白符号,B∈Σ; T ---输入字符集合, T?Σ且 B?T; δ---下一次动作函数,是从QxΣ到QxΣx{L,R}的映射,即控制器的规则集合 q0 ---初始状态 ,q0 ∈Q; H ---终止状态集合,H?Q. 工作过程:首先从开始状态启动,每次动作都由控制器根据图灵机所处的当前状态和读写头所对准的符号决定下一步动作(或称操作)其中每一步包含三件事。各符号写到读写头当前对准的那个小格内,取代原来的符号。读写头向左或向右转动一格、或不动。一次动作会引起: (1)控制器改变状态; (2)在当前扫描到的单元上,重写一个字符取代原来的字符; (3)读写头左移或右移一个单元; 根据控制器的命令用某个状态(可以是原状态)取代当前的状态,使用图灵机进入一个新的状态。控制器的命令:(状态、符号)→(写符号,移动、状态),当图灵机进入一个结束状态就停机。计算任务宣告完成,带上的内容即为输出结果。 二 图灵机模拟器编程 1 软件开发环境简介 (1)Java JDK —— Java开发的底层支持工具 (2)Eclipse 3.2—— Java开发的IDE工具,用于编写图灵机的功能实现类和调用界面 2 图灵机概要设计 首先以下面的例子剖析一下设计图灵机的算法思想 2.1 含有同等数量a和b的字符串识别器 分析: 最初,图灵机M的带上已有字符a..b..a,前后都跟无限多个空白符#, 如下图(a),M开始动作的第一步先读到最左边的第一个a(或b),并改写为X, 如下图(b).然后右移去读最左边的第一个b(或a),并改写为X, 如下图(c).又左移当发现最边的X时,再看紧接着X之后是否为a(或b),若为a(或b),将其改写为X,然后再右移找X,若紧接X之后是b(或a),又将其改写为X.如此反复进行. 图灵机M按以上反复动作过程中,会出现以下情况: (1)当找a(b)时,如果不再有a(b),M应转向找b(a),如果还能找到b(a),说明b(a)的个数多于a(b)的个数,则M停止,表示不接受. 如果找不到b(a),说明a(b)与b(a)的个数相同,M应该进入终止状态.表示接受. (2)当找b(a)时,出现空白符#,说明a(b)的个数多于b(a)的个数,M停止,不接受. 通过上面的分析,可构造图灵机M=(Q,T,Σ,δ,q0,#,F),其中: Q ={q0,q1,q2,q3,q4} T = {a,b} Σ ={a,b,X,#}; F ={q4} δ 函数定义如下: δ(q0,a)=(q1,X,R) δ(q2,a)=(q2,a,L) δ(q0,X)=(q3,X,R) δ(q2,X)=(q0,X,R) δ(q1,a)=(q1,a,R) δ(q2,X)=(q2,X,L) δ(q1,b)=(q2,X,L) δ(q3,X)=(q3,X,R) δ(q1,X

文档评论(0)

panguoxiang + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档