本文主要是介绍TURING,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
Turing
内容:对于XN+1或XN2图灵机进行模拟,任意给定的十进制数a,转换为收缩扩展二进制的编码,再编程模拟此Turing机的运行过程,要求输出从开始运行起的每一步骤的结果。 用C或C++或java或python语言实现程序解决问题。
1.算法分析
1)输入一个十进制数,将十进制转化成二进制;
2)将二进制转化成图灵机扩展的二进制编码;
3)通过图灵机XN2运算指令进行编码,输出每一步的运算结果;
4)编码之后,将相应的编码先转化为二进制,再将二进制转换为相应的数字,输出,得到结果。
(通过图灵机(XN×2) 在扩展二进位上的运算指令实现将二进制数乘2的运算,进而将所得到的扩展二进位数转换成二进制数,得到结果。)
2.概要设计
//求扩展二进制,存在t[]中
int Binarynumber(int p[],int t[],int num)
{
t[0]= 0;
int step=1;
for(int j=0;j<=num;j++)
{
if(p[j] == 1)
t[step++]= p[j];
t[step++]= 0;
}
t[step++]=1;
t[step++]=1;
t[step]= 0;
//检测此处是否正确
for(int k=0; k<=step; k++)
printf("%d",t[k]);
printf("\n");
return step+1;
}
//将模拟后的拓展编码转换为二进制,存放在p[]
int convert_Algorism(int p[],int t[],int count2)中
{
int m=0,n=0;
int result=0;
int leap=1;
//最后三位是110,表逗号,不考虑
while(m<count2-4)
{
//相邻的俩个数相等是00的情况
if(t[m]==t[m+1])
{
p[n]=0;
n++;
m++;
}
else
//相邻的俩个数不相等是10或01的情况
{
p[n]=1;
n++;
m=m+2;
}
}
3.测试
图:运行界面
这篇关于TURING的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!