一. 题目说明
对于任意给定的一台Turing机和任意给定的字符串w ( w不含空格),编程模拟此Turing机的运行过程,要求输出从开始运行起的每一步骤的结果。
二.题目分析
图灵机有一条无限长的纸带,纸带分成了一个一个的小方格,每个方格有不同的状态。有一个机器头在纸带上移来移去。机器头有一组内部状态,还有一些固定的程序。在每个时刻,机器头都要从当前纸带上读入一个方格信息,然后结合自己的内部状态查找程序表,根据程序输出信息到纸带方格上,并转换自己的内部状态,然后进行移动。用程序模拟图灵机的过程,输入一组字符串,并将内态储存起来,按照图灵机的基本指令来进行操作。本次模拟XNx2图灵机(数字乘以2)。
三. 算法构造
1.定义的数组长度并非输入的字符串原来的长度,而是多加了两位。
XNx2图灵机在停机之前会再往后挪两位数字,超出了字符串的长度。如果不加长数组的长度,在11 0->0 1 stop到这步就会出现以下问题问题,超出了数组范围。
2.在continute语句前还添加了输出的语句。是为了输出每一步的变换结果,展现整个过程。
四.算法实现(java)
1.流程图