ITnews 版 (精华区)

发信人: petrel (紫燕*自在飞花轻似梦*燕燕于飞), 信区: ITnews
标  题: 有趣的算法世界---算法之根(2)    
发信站: 哈工大紫丁香 (Fri Aug  8 10:03:08 2003)

有趣的算法世界---算法之根(2)    PercyLee(原作) 
  
关键字     算法,图灵机,图灵机算法 
  


 

很高兴又和大家见面,我们继续我们的”有趣的算法世界”之旅.

既然文章的题目为”算法之根”,当然我希望能带您来看看算法世界的本源------开始形式
化的地方.上次提到了丘奇-图灵论题:

 

算法的直觉概念               等于                 图灵机算法

这是我们本篇文章的根本.可是匆匆的,我们还没有对这个”图灵机算法”详细解说,就结束
了上次之旅.这次我们详细的继续上次的风景.

宽泛的讲,图灵机是个代数结构(或代数系统).虽然经过上次,您也知道了什么是代数结构,
可是,咱们先不马上就说图灵机的定义.因为上次还遗留个题目呢,那个自动窗的问题.

分析一下,这个问题可不难哦.

首先您注意到,窗子时刻只能处于两个状态之一: 关 或 开! 它改变状态的途径,也就是收
集环境信息,再根据一定的控制变换决定是保持现在的状态还是改变它.这个控制变换是最
为关键的,我们可以把它表示为一张表,如果假设:

a: 白天 且 天气允许 ,

b: 黑夜 或 天气不允许 .

则表为:

                 |   a    |    b        

           关 |   开      关

           开 |   开      关

由此您不难想象自动窗工作的原理.我们把它描述如下:

       q为状态信号,取值为”关”或”开”,x为环境变量,取值为a或b(a,b定义如上).


       (1) 置初始状态 q←窗子的状态(关或开);

       (2) x←获得环境变量;

       (3) 如果 x为a,做

            (3.1) 如果 q为关,发送”开”信号, q←开,转(2); 

            (3.2) 如果 q为开,转(2);

       (4) 如果 x为b,做

            (4.1) 如果 q为关,转(2);

            (4.2) 如果 q为开,发送”关”信号, q←关,转(2).

 

之所以讨论这个问题,因为它也是个模型,有穷自动机模型.它也是用来计算的,虽然它的能
力远远不如图灵机;考虑到它的状态只有有限个(比如自动窗中),显然它是做不了计算机的
模型的.

尽管如此,在编译原理的文法分析中,在很多单片机控制的电子产品中,它是很有所作为的.


在讨论它时,更多的是利用它的状态图,比如本例子中的状态图为:

  

同样,如果把它形式化,您也可以把它看作一种代数结构(想一想,把环境变量a和b看作运算
).但我们不再做这项工作,我们来看更为强大的模型:图灵机.

图灵机与有穷自动机是相似的,但图灵机有一个无限的存储.它能做实际计算机能做的所有
事情.作为计算机的通用模型,在1936年由图灵提出.至今我们还没有突破此模型.(虽然我是
如此的希望在有生之年看到改进的计算机基本模型:)

图灵机模型用一个无限长的带子作为无限存储,它还有一个读写头,这个读写头能在带子上
读,写和移动.如下图:

 

 

 

开始时,带子上只有输入串,其它地方都是空的.当它需要保存信息时,读写头就把信息写在
带子上.为了读某个输入或写下的信息,带子可能将读写头往回移动到这个信息所在的地方
.这样读,写和移动,机器不停的计算,直到产生输出为止.机器实现设置了两种状态: 接受或
拒绝 状态.如果进入这两种状态,就产生输出 接受或拒绝;否则机器就继续执行下去,永不
停机.

 

我们来看个图灵机的例子,呵呵,或许只有如此您才认可丽人魅力呢.

 

e.g. 玩一个小游戏,用您的数字小键盘0键随意输入一个串,如果: 0个数为2的方幂(即为2
^n),那么您将被打一次手心.  J

则我们可以描述一个图灵机TM M,它将胜任这项监测工作(而打手心的事由我负责J).

M=” 对输入的字符串 w:

1)       从左往右扫描整个带子,隔一个消去一个0.

2)       如果在第一步之后,带子上只剩下唯一的一个0,则接受.

3)       如果在第一步之后,带子上包含不止一个0,并且0的个数是奇数,则拒绝.

4)       让读写头回到带子的最左端.

5)       转到第一步. “

 

这即是一个图灵机,而且您可以证明M中的算法是可以达到要求的.当然,为了易于理解,我们
给出的是图灵机算法的高层描述.图灵机有它的形式定义,也可以用状态图来描述,只是那将
是相当的麻烦的.我们只给出一般的图灵机的形式定义.

 

如果L表示读写头往左移动一个字符,R往右.

一个图灵机是一个7元组(Q,∑,Γ,δ,q0,q1,q2),其中Q,∑,Γ都是有穷集合,并且

1)       Q 是状态集.

2)       ∑是输入字母表,不包括特殊空白符号︺.

3)       Γ 是带字母表,其中: ︺∈Γ,∑是Γ的子集.

4)       δ: Q×Γ→Q×Γ×{L,R}是转移函数.

5)        q0∈Q是起始状态.

6)        q1∈Q是接受状态.

7)        q2∈Q是拒绝状态,且 q2≠q1.

 

图灵机的计算,就是这样在一定规则下的读,写与移动,规则即转移函数δ .其他形式的图灵
机还有很多,例如有多个带子的或非确定性的.他们被称为图灵机的变形.而原来的普通图灵
机,都是这个样子:

 

多带图灵机,和普通图灵机相似,只是有多个带子,每个带子都有自己的读写头,用于读和写
.如下图:

 

开始时,输入只出现在第一个带子上,其他的带子都是空白.但转移函数允许所有的读写头同
时进行读,写和移动.

看起来或许多带图灵机的计算能力比普通图灵机的能力要强,但恰非如此:它们的计算能力
是等价的!这可以证明.但是,效率却未必哦.

非确定性的图灵机,非常容易理解,在计算的任何时刻,机器可以在多种可能性中选择一种继
续进行.它的计算是一课树,不同的分枝对应着机器不同的可能性.如果某个计算分枝导致接
受状态,则接受该输入.与多带图灵机相同的是,它的计算能力与普通图灵机也是一样的.证
明过程,您可以去看一本计算理论方面的书.

 

至此,您是否理解了什么是图灵机?如果是的话,则请您用您带的照相机(眼睛即可),给那个
丘奇-图灵论题照一次像(永远保存在您的心底),这是我们这趟旅行最可珍藏的风景之一.


 
 


--

                    ·  一沙一世界,一花一天堂  *





※ 来源:.哈工大紫丁香 bbs.hit.edu.cn [FROM: 202.118.239.116]
[百宝箱] [返回首页] [上级目录] [根目录] [返回顶部] [刷新] [返回]
Powered by KBS BBS 2.0 (http://dev.kcn.cn)
页面执行时间:3.405毫秒