一.实验目的

  1. 掌握图灵机的概念和基本结构,理解图灵机的基本指令和编码方式;
  2. 掌握图灵机的编程方法。
    二.实验内容
    对于任意给定的一台Turing机和任意给定的字符串w ( w不含空格),编程模拟此Turing机的运行过程,要求输出从开始运行起的每一步骤的结果。
    三.流程图
    图灵机的模拟

源代码

package 作业;
import java.util.*;
public class 作业 {
		public static void main (String[] args)
		{
			int s=0;
			int [] str= {0,1,0,1,0,1,1,0,0,0};//对字符串进行赋值
			int temp=0;//内态初始值为0
			for(int i=0;i<9;i++)//利用循环对字符串进行操作
			{
								s=s+1;//判断字符运行到第几次
				if(str[i]==0&temp==0)//执行00->00
					{
					str[i]=0;
					temp=0;
					for(int k=0;k<str.length;k++)//将每一个字符串变化的过程输出
					{
						System.out.print(+str[k]);
					}
					System.out.println("此时第"+s+"位发生变化");
					continue;//跳出当前循环
					}
				if(str[i]==1&temp==0)//执行01->10
				{
					str[i]=0;
					temp=1;
					for(int k=0;k<str.length;k++)//将每一个字符串变化的过程输出
					{
						System.out.print(+str[k]);
						
					}
					System.out.println("此时第"+s+"位发生变化");
					continue;
				}
				if(str[i]==0&temp==1)//执行10->01
				{
					str[i]=1;
					temp=0;
					for(int k=0;k<str.length;k++)//将每一个字符串变化的过程输出
					{
						System.out.print(+str[k]);
					}
					System.out.println("此时第"+s+"位发生变化");
					continue;
				}
				if(str[i]==1&temp==1)//执行11->10 0
				{
					temp=10;
					str[i]=0;
					for(int k=0;k<str.length;k++)//将每一个字符串变化的过程输出
					{
						System.out.print(+str[k]);
						
					}
					System.out.println("此时第"+s+"位发生变化");
					continue;
				}
				if(str[i]==0&temp==10)//执行10 0->11 1
				{
					str[i]=1;
					temp=11;
					for(int k=0;k<str.length;k++)//将每一个字符串变化的过程输出
					{
						System.out.print(+str[k]);
						
					}
					System.out.println("此时第"+s+"位发生变化");
					continue;
				}
				if(str[i]==0&temp==11)//执行11 0->01
				{
					str[i]=1;
					temp=0;for(int k=0;k<str.length;k++)//将每一个字符串变化的过程输出
					{
						System.out.print(+str[k]);
						
					}
					System.out.println("此时第"+s+"位发生变化");
					break;//步骤结束跳出循环
				}
			}
			System.out.print("经过运算的结果为:");//输出最终结果
			for(int k=0;k<str.length;k++)
			{
				System.out.print(+str[k]);
			}
		}
		}

四.测试图片

图灵机的模拟图灵机的模拟

相关文章: