图灵机目录

  • 一、图灵机介绍
  • 二、设计思想
  • 三、转移函数
  • 四、程序设计
  • 五、运行结果
  • 六、实现源码

一、图灵机介绍

这里是图灵机的定义,防止有同学忘记了,就再提一下。

二、设计思想

因为我们是要求做PPT上台演讲的,所以我直接将我的PPT内容选择性地展示出来了。

三、转移函数

因为我只用了一张纸带,所以,需要用到的状态比较多,一共36个状态,手写了一遍,字迹比较潦草,不过不影响思路。

四、程序设计

然后核心就是用字典存储上面的状态转移函数,从q0开始,每次读一个就进行转移,最后计算完后,读头还必须要回到初始位置。这样就模拟出读头在纸带上的移动。

下面用图片描述一下变化状态,为了节省空间,每个字母就是代表有n个1,比如a就表示这里是a个1,以此类推




五、运行结果

计算出10000大概要花费30s,两个原因:1、Python编译速度很慢,C++实现起来肯定会快很多 2、单带计算读头移动次数太多,距离太长,可以改为多带实现,会更快。

六、实现源码

#纸袋初始状态为:@a0x0b0y0000
#输入需要计算的a、x、b、y
a=input('请输入a的值:')
x=input('请输入x的值:')
b=input('请输入b的值:')
y=input('请输入y的值:')
#开始将空格@和1还有0写上纸带,纸袋假设无限长
list=['@']
for i in range(int(a)):list.append('1')
list.append('0')
for i in range(int(x)):list.append('1')
list.append('0')
for i in range(int(b)):list.append('1')
list.append('0')
for i in range(int(y)):list.append('1')
for i in range(4):list.append('0')
for i in range(10000):list.append('@')
#转移函数,用字典存储
dict={'q0,1':'q1,a,R','q1,1':'q1,1,R','q1,0':'q2,0,R','q2,1':'q3,x,R','q3,1':'q3,1,R','q3,0':'q4,0,R','q4,1':'q4,1,R','q4,0':'q5,0,R','q5,1':'q5,1,R','q5,0':'q6,0,R','q6,0':'q7,1,R','q7,0':'q7,0,R','q7,@':'q8,0,L','q8,1':'q8,1,L','q8,0':'q8,0,L','q8,x':'q2,x,R','q6,1':'q6,1,R','q2,0':'q9,0,L','q9,x':'q9,1,L','q9,0':'q9,0,L','q9,1':'q9,1,L','q9,a':'q0,a,R','q0,0':'q10,0,R',#a*x已完成'q10,1':'q11,x,R','q11,1':'q11,1,R','q11,0':'q12,0,R','q12,1':'q12,1,R','q12,0':'q13,0,R','q13,1':'q13,1,R','q13,0':'q14,0,R','q14,1':'q15,c,R','q15,1':'q15,1,R','q15,0':'q16,0,R','q16,0':'q17,1,R','q17,0':'q17,0,R','q17,@':'q18,0,L','q18,0':'q18,0,L','q18,1':'q18,1,L','q18,c':'q14,c,R','q16,1':'q16,1,R','q14,0':'q19,0,L','q19,c':'q19,1,L','q19,0':'q19,0,L','q19,1':'q19,1,L','q19,x':'q10,x,R','q10,0':'q20,0,R',#a*x*x已完成'q20,1':'q21,b,R','q21,1':'q21,1,R','q21,0':'q22,0,R','q22,1':'q23,y,R','q23,1':'q23,1,R','q23,0':'q24,0,R','q24,1':'q24,1,R','q24,0':'q25,0,R','q25,1':'q25,1,R','q25,0':'q26,0,R','q26,0':'q27,1,R','q27,@':'q28,0,L','q28,1':'q28,1,L','q28,0':'q28,0,L','q28,y':'q22,y,R','q26,1':'q26,1,R','q22,0':'q29,0,L','q29,y':'q29,1,L','q29,0':'q29,0,L','q29,1':'q29,1,L','q29,b':'q20,b,R','q20,0':'q30,0,R',#b*y已完成'q30,1':'q30,1,R','q30,0':'q31,0,R','q31,1':'q31,1,R','q31,0':'q32,0,R','q32,1':'q32,1,R','q32,0':'q33,1,R','q33,1':'q33,1,R','q33,0':'q34,0,L','q34,1':'q35,0,L','q35,1':'q35,1,L','q35,0':'q35,0,L','q35,b':'q35,1,L','q35,x':'q35,1,L','q35,a':'q35,1,L','q35,@':'q36,@,R'#a*x*x+b*y已完成}
state='q0'
point=1
while(state!='q36'):#(q0,1)state=state+','+list[point]#1->alist[point]=dict[state].split(',')[1]#L or Rdirection=dict[state].split(',')[2]if direction=='R':point=point+1else:point=point-1#q0->q1state=dict[state].split(',')[0]
count=0
last_index=0
first_index=0
num=0
while(count<6):last_index = last_index + 1if(list[last_index]=='0'):count=count+1if(count==5):first_index=last_index
num=last_index-first_index-1
print("结果为:",num)

只有十分努力,才能看起来毫不费力。

用Python实现ax²+by的图灵机【形式语言与自动机】相关推荐

  1. 【形式语言与自动机】图灵机

    [形式语言与自动机]图灵机 一.图灵机 在经过有限状态机的介绍之后,再来看一种功能更强大的机器. 图灵机基本结构 〉 一条分格的无限长的纸带,每格可容纳一个字符 〉 一个读写头,可以在纸带上移动(可以 ...

  2. 形式语言与自动机 Part.6 图灵机

    课程名:形式语言与自动机 作者:Lupinus_Linn 许可证:CC-BY-NC-SA 3.0 创作共用-署名-非商业性-相同方式共享 署名(英语:Attribution,BY):您(用户)可以复制 ...

  3. 形式语言与自动机 Part 3.有限自动机

    课程名:形式语言与自动机 作者:Lupinus_Linn 许可证:CC-BY-NC-SA 3.0 创作共用-署名-非商业性-相同方式共享 署名(英语:Attribution,BY):您(用户)可以复制 ...

  4. 形式语言与自动机 Part.4 正则语言,2DFA,MealyMoore机

    课程名:形式语言与自动机 作者:Lupinus_Linn 许可证:CC-BY-NC-SA 3.0 创作共用-署名-非商业性-相同方式共享 署名(英语:Attribution,BY):您(用户)可以复制 ...

  5. 形式语言与自动机 Part.5 上下文无关语言与下推自动机(PDA)

    课程名:形式语言与自动机 作者:Lupinus_Linn 许可证:CC-BY-NC-SA 3.0 创作共用-署名-非商业性-相同方式共享 署名(英语:Attribution,BY):您(用户)可以复制 ...

  6. 形式语言与自动机 Part.1绪论, Part.2 语言与文法

    课程名:形式语言与自动机 作者:Lupinus_Linn 许可证:CC-BY-NC-SA 3.0 创作共用-署名-非商业性-相同方式共享 署名(英语:Attribution,BY):您(用户)可以复制 ...

  7. 形式语言与自动机及其在NLP中的应用

    摘要 形式语言与自动机是计算机科学的理论基础,对于计算机科学与技术专业人才的计算思维能力培养极其重要.本文首先从Chomsky谱系出发,对形式语言的概念和类别进行了阐述,然后按照形式文法与自动机之间的 ...

  8. 形式语言与自动机学习复述笔记

    形式语言与自动机学习复述笔记 文章目录 形式语言与自动机学习复述笔记 本文说明 文法 文法的乔姆斯基分类 有穷自动机 正则语言 正则文法 关系 正则表达式 正则表达式RE->$\epsilon$ ...

  9. 计算理论 形式语言与自动机_下推式自动机(PDA)| 计算理论

    计算理论 形式语言与自动机 Pushdown Automaton (PDA) is a kind of Automaton which comes under the theory of Comput ...

最新文章

  1. 【机器学习】 LightGBM——优于XGBoost提升的集成算法(安装+对比XGBoost改进+参数说明+python代码实例)
  2. DSO(dsoframer)的接口文档
  3. python库下载安装报错_Python 各种库的安装
  4. 解封装(四):avformat_find_stream_info探测获取封装上下文并打印
  5. C++中,int a = 10的后面的操作
  6. FL Studio剪辑菜单的使用方法
  7. 如何使用计算机中的导出,解决方案:如何使用Canon 2525i复印机将文档扫描到计算机中并生成PDF格式?...
  8. JavaScript学习手册一
  9. aws saa考试费用是多少?aws saa考试准备多久才能考试?
  10. 2019年Java春招汇总,技术类校招社招千道面试题,几百份大厂面经(附答案+考点)...
  11. 计蒜客 青出于蓝胜于蓝 (树状数组 + dfs序)
  12. Java语言高级(第三部分)异常多线程 ->(个人学习记录笔记)
  13. [转]拍照怎么搜题?(上)
  14. 最新爱叶解析接口搭建php网站源码 附4k画质测试效果
  15. OCR:财务报表识别
  16. Verilog 流水线设计
  17. Unity移动应用如何在Bugly上查看崩溃堆栈
  18. matlab三角函数降次,Matlab实验-传递函数表示方法.ppt
  19. Dependencies for Graphs 阅读笔记
  20. 【React】 详解下一代开源混合应用框架Reapp

热门文章

  1. Putty打开.pem加密的服务器
  2. php pdf添加水印图片,php pdf添加水印(中文水印,图片水印)
  3. 这个是我学习的所有sql语句的写法
  4. 头的各个部位示意图_图解圆锥破碎机润滑油路,7个主要润滑部位特点分析
  5. 全球计算机工程专业研究生排名,美国计算机工程专业研究生前100排名
  6. oneproxy mysql_Mysql 中间件 oneProxy总结
  7. mysql pdo 获取最后一条sql_一条sql语句的执行过程-mysql
  8. React 从入门到进阶之路(二)
  9. bzoj 3028 食物——生成函数
  10. C语言 · 8皇后问题改编