模拟图灵机XN×2

1.算法分析

1)将十进制数转换为二进制数

              接收一个十进制数的输入,转换为二进制数在末尾添加一个‘,’号,按照规则进行数据转换。

编码转换规则:0→01→10, →110;

2)将二进制数转换为收缩扩展二进制的编码

              处理方法:

内态为0,输入为0→内态为0,输出为0,右移;

内态为0,输入为1→内态为1,输出为0,右移;

内态为1,输入为0→内态为0,输出为1,右移;

内态为1,输入为1→内态为10,输出为0,右移;

内态为10,输入为0→内态为11,输出为1,右移;

内态为11,输入为0→内态为0,输出为1,STOP;

3)结果输出

              将图灵机结果利用规则转换为二进制和十进制。

编码转换规则:0→010→1110 →;

2. 概要设计

       1)结构设计

              该程序由Test与Function类组成,程序通过输入的十进制数据利用Function类的toBinCode方法将其二进制化后,将结果赋给Test类的setBinCode方法将二进制数据转换为图灵机二进制编码。

    利用Test类的runProess方法启动图灵机,该方法将二进制码binCode转换为ArrayList类型存放在binCodeList中,并对binCodeList进行遍历,根据当前内态的值判断该执行哪条指令,该功能有Switch语句实现,每一个跳转语句中包含一个对应状态下的执行指令方法:instruction_1~ instruction_4。这些方法依据这XN*2型图灵机编码转换规则进行的。通过每一步的计算来修改binCodeList的值,直到达到终止条件即S=1时,停止循环,并将苏数据返回。

    将返回的处理好的图灵机结果,并将binCodeList转换为String类型的二进制编码binCode,再转换为int类型的十进制数decNum最终将结果输出。

2)算法流程

 

图1 算法流程图

 

3. 测试

       输入数据,查看每步结果:

图2 测试代码

 

图3 测试结果

 

4.调试

   通过debug工具,进行程序追踪。

图4 测试类调试

 

5.心得体会

      对XN*2型图灵机有了更深的了解,通过程序代码的方式实现了图灵机运算流程,非常有意思。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值