除了在纸笔媒介系统下以书面符号形式进行数学计算外,从一开始我们也设计和制造计算工具,利用这些工具来进行数学计算。 现代计算机是计算工具的最新产品。上世纪三十年代,英国数学家图灵(Alan Mathison Turing,1912.6-1954.6)提出了图灵机的概念,其基本原理如下。
1纸带
用于输入与输出,可以设想为一个无限长的纸带,纸带分为一个个单元格Rn,每个单元格上记录某个字符表中的一个字符R(a),或者为空。
2读写头
读写头可以在纸带上左右移动,其作用是:
读取当前单元格里的字符;
擦除当前单元格里的字符;
将一个字符写入当前单元格。
任意时刻读写头只能在一个单元格上操作,此单元格称为扫描单元格。
图中的控制器可分解为下面的逻辑部件:
3字母表
字母表包括了输入纸带单元格上可以有的字符,读写头可以写入单元格的字符,比如字符集是{“1”“0”“+”“=”“︺”}。
4状态集
图灵机在任意时刻都处于一种状态下,所有的状态构成状态集{s0、s1、s2、s3、s4、s5},其中包括:
开始状态s0、每次运行的开始都处于此状态;
停机状态s5、当图灵机进入此状态时,机器就停止运行,此状态下纸带留下的字符为计算结果或者问题无解。
5控制规则
读写头读取当前单元格的字符,结合当前机器的状态,可决定:
一、图灵机的新状态;
二、图灵机的响应操作,包括:
擦除:擦除当前单元格的内容;
写入:在当前单元格写入字符集中的一个字符;
移动:向左移动或向右移动。
图灵机的操作可抽象为:((当前状态、当前读入)→(新状态、当前写入、移动方向))。一个图灵机可能的(当前状态、当前读入)组合称为其格局,它们对应的控制规则决定了图灵机的行为。我们构造个简单的例子,这个例子是二进制个位数的加法运算。设计七种状态:(整体可以有不同的设计)
s0:初始状态;
s1:被加数=1;
s2:被加数=0;
s3:被加数、加数=1;
s4:被加数、加数不一致;
s5:被加数、加数=0;
S6: 停机状态。
字符表为{“1”“0”“+”}。
“擦除”操作表示清空单元格内容。
可制定的规则如下:
原状态 |
读取字符 |
写入字符 |
移动方向 |
目标状态 |
s0 |
1 |
1 |
右 |
S1 |
s0 |
0 |
擦除 |
右 |
S2 |
S1 |
+ |
+ |
右 |
S1 |
S2 |
+ |
+ |
右 |
S2 |
S1 |
1 |
擦除 |
左 |
S3 |
S1 |
0 |
擦除 |
左 |
S4 |
S2 |
1 |
1 |
左 |
S4 |
S2 |
0 |
擦除 |
左 |
S5 |
S3 |
+ |
0 |
无作用 |
S6 |
S4 |
+ |
擦除 |
无作用 |
S6 |
S5 |
+ |
擦除 |
无作用 |
S6 |
|
|
|
|
|
纸带上的输入是字符串“1+0=”,将进行的过程如下:
过程 |
开始 |
结束 |
状态 |
1 |
【1】+0 |
1+0 |
S0→s1 |
2 |
1【+】0 |
1+0 |
S1 |
3 |
1+【0】 |
1+ |
S1→s4 |
4 |
1【+】 |
1 |
S6 |
注:【】符号表示括号中的字母在当前单元格。
本站声明:
1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。
原创文章,作者:ItWorker,如若转载,请注明出处:https://blog.ytso.com/293134.html