图灵机,可以被定义为下面这样一个七元结构:
Q:内部状态集,具有有限元素;
q:初始内部状态;
f:接受状态;
L:可接受字符集,具有有限元素;
b:空白字符;
T:初始有序字符集,其元素记为T(i),如果某个i的T(i)未定义,则为b;
s:状态转移规则表,是一个部分函数,将状态<q, t>(q不为f)映射为<q', t'>(q'可以是f),并将当前字符集上的指标i进行转移,成为i-1或者i+1。
当然,这里还有一个上面没给出的图灵机的状态:
w:图灵机是否已停机。
因此,一台图灵机一旦开始工作,就是从初始状态<q, t>开始的一连串的状态转移,此时w为false。
而如果遇到某个状态<q', t'>是规则表中没有定义的,即无法通过部分函数s进行映射,则图灵机停机,w为true,但图灵机当前状态不为f。
如果更具状态转移规则s,图灵机进入到了某个状态<f, t>,则此事图灵机停机。
因此,图灵机的状态<w,q>有这么三种:<false, *>,<true, not f>,<true, f>。
上面这些都很基本,没啥好说的。
我们容易证明,上述对图灵机的定义和一些别的定义是等价的。
比如说,对于状态转移规则表,原本的定义为(Q / {f}) × T ==> Q × T × {1, -1}的一个部分函数,但我们实际上也可以略加拓展为(Q / {f}) × T ==> Q × T × {1, 0, -1},这样的一个函数。
只需要对Q的选择加以调整,使得新的Q包含原Q的所有内容,还包含一个状态back,当当前转移规则将状态转移为back时,这一步必然是+1,而后的一部必然是-1,那么就实现了从只能前后移的双态拓展为可以前后移与停留的三态。
非但如此,对于任意多个有限集,它们总是可以和一个有限集做一一对应的,因此即便Q是n维离散有限空间,或者T是n维离散有限空间,本质上都和一维的Q及一维的T的配置没有区别。
更进一步,即便不是有限集,只要是离散集,N维集总是存在到一个一维集的一一映射的,因此T所处的介质即便不是一维的纸带而是N维的超平面(从而N是n维离散空间),也和只能左右移动的原始图灵机没有分别。
接着,除了一次前后移动或者前后移动或停留这么一个三态以外,我们也很容易证明,即便移动规则调整为“在n处数据为t状态为q根据规则s将数据修改为t'再运动到n'处并将状态修改为q'”这么一种更加宽泛的运动,本质上也不会和原始的图灵机的定义。
而,在这个定义下,状态转移规则s不再是(Q / {f}) × T ==> Q × T × {1, -1}的部分函数,而是一个(Q / {f}) × T × N ==> Q × T × N的部分函数,或者可以简单写为Q × T × N ==> Q × T × N的部分函数(既然是部分函数了,那么只要在初态为f时无定义即可)。
而,在此定义下,原本作为背景而存在的定位用的“纸带”,或者说“定位背景”,则可以被赋予更多的意义,比如它也兼顾了数据和状态的功能。
事实上,既然N、Q和T都是离散集,Q和T还是有限集,那么总可以构造一个N',它和N × Q × T同构,从而整个图灵机的运算就变成了在这个N'上,Q和T都是{0}的单元素集,而状态转移函数s则完全是N'到N'的部分函数。
在这个意义上,我们其实可以认为,将N、Q、T看作一个整体的话,那么图灵机就是在这个离散集上的群作用G(当然,既然s本身是部分函数的话,所以严格说来其实这里也不能称为是群作用,只能视为某种morph吧):
对于初始状态S_0,图灵机可以看作S_n = G^n S_0。然后存在状态判定函数check,判断S_n是否符合某组特征,如果符合则停机。
当然,上面这种全部混搭在一起的观点未必能把问题都看清楚,所以我们还是保留N、Q、T的三元结构,N不再记录状态和数据,而仅仅给出不同状态和数据之间的“相邻”关系。
我们可以很显然地看到,T其实和N是很有强关系的。虽然可以接受的字符的全体构成T,但N的不同位置上的T的元素数据t,却是和N的元素位置n“绑定”在一起的。
而,另一方面,Q的元素,图灵机的状态q,却和N或者T都没有太明显的关系,一台图灵机只有一个状态q。
这样的情况可以和物理上的一些情况做个类比:
假定N是时空背景,T是某个规范场的势能,而Q是一个粒子M和这种规范场耦合的荷。M在N上运动,遇到势T(n),改变规范场的同时自己也被作用,从而轨迹不断地被修正,因此整个运动过程可以看作是一个粒子M与规范场T不断相互作用的过程,M在N上的位置不断被修改,Q和T也不断被修改。状态转移规则s在此就是规定了如何相互作用的规则。
当然了,实际上图灵机和规范场论的相似性也就仅仅停留于此了。严格的规范场论,Q、T和s之间的耦合是非常严密的,从而这三者都不会如图灵机一般自由。但,如果我们摒弃规范场的想法,仅仅是从纤维丛的角度来考虑的话,则会发现,或许图灵机和物理之间的差异,也没那么大。
从纤维丛的角度来看,图灵机就是一个不断改变着纤维丛截面和自身所带荷的在背景时空上运动的粒子,而规范场论和图灵机的区别在于,规范场论的背景时空与纤维都是连续的,满足特定的群结构,势与粒子的作用关系满足一套物理预设;而图灵机的背景时空与纤维则是离散的,且不满足群结构,也不满足那套物理预设。如果不考虑纤维丛是离散的还是连续的这点,那么我们可以说图灵机的范畴比规范场论的范畴更大。
下面,我们来考虑上述模型下,图灵机工作的时候是怎么样一个样子。
我们先将状态转移规则s分解为两部分:S_Q和S_T。
他们都是Q × T × N的函数,且有:
其中,对于Q部分,如果根据状态转移规则s,图灵机的读写头应该左移(-1)或者右移(+1)的,那么就有:
其中q_null是一个特殊的状态,可以使得状态转移函数已经给出q_null,且不改变t。
现在,我们可以做一个一般化:
将Q和T看作是同一个空间的两个字空间,从而(跟随读写头所在位置的)状态q和(记录在底流形N的每个点上所有的矢量空间内的)状态t可以看作是一个更大的矢量空间中矢量v的两个不同方向上的分量。
因此,我们可以将动力学方程写为:
且当我们知道读写头的移动dn后,上述方程可以写为:
于是,这里其实也就要求了q_null是求和所依赖的矢量空间加法的零元。
这样的空间和函数总是可以构造出来的,因为它不过就是原本状态转移规则加上一些额外规则后的一个变种罢了。
下面,我们将其“连续”化,并引入可以在N上任意移动而不单单是左右移一格的模型(并略作调整):
这样一来,我们基本上就得到了一个最一般化的、连续空间中的类图灵机的概念模型。
而,如果我们将移动局限在n的领域,而非全空间,那么在进行恰当的调整悉数后,上面的积分方程(在一类不那么变态的函数S的情况下)可以被写成如下的微分方程:
而这货就是热扩散方程。
而,事实上,即便我们不考虑这个特殊情况下的微分方程,就考虑原来的积分方程,也容易发现,这就是应用在热扩散过程上的惠更斯原理,而S便是传播子。
于是,现在整个模型就是这样的:
一个连续空间N上有一个纤维丛V,然后类图灵过程就是在这样一个纤维空间上的热扩散过程。
当然,和真正严格意义上的图灵机相比,除了现在底流形和纤维从离散变成了连续外,状态转移规则s也变成了传播子S,且支持更丰富类型的状态转移。
而,一个标准图灵过程现在就是在纤维丛N × V上一个初始区域出发,经过一系列扩散过程后,终止与某个特殊的末态位置,其中该末态位置的矢量v满足v的Q部分为结束状态q_stop。
在这个模型下,NTM(非确定图灵机)可以看作这个纤维空间上的路径积分。
因此,NTM=DTM的本质就是说:如果一个NTM可以来到某个停机区域中的位置,那么必有一根经典路径,其对应一台DTM,也可以在该位置停机。
由于NTM仅仅是给出了多DTM同时扩散,彼此之间没有相互作用,所以NTM=DTM并没有什么好惊讶的。
在上面的模型中,一个NTM其实等于将DTM所处的纤维丛进行了又一次的扩大,从一个q扩展为多个q:q1, q2, q3...qn,从而彼此之间其实没有耦合,NTM可以从源扩散到目标区域,仅仅是因为源比较多,扩散起来比较“全面”,但本质上和DTM没有不同。
既然已经推广到这样了,那么让我们接着推广:假定现在允许多台连续纤维空间中的类图灵机同时进行运行,或者说在这个纤维空间中有多个源同时进行扩散,并且传播子S1和S2之间存在耦合,比如简单的耦合是所有的传播子S公用同一个Q区域,于是一台S对V的修改可以影响到另一台S。
当然,这个问题在标准图灵机模型下,本质上不会改变什么,因为多台图灵机和一台图灵机在标准图灵机模型下是没有根本性差别的。
因为,在离散的情况下,我可以让一个图灵机记下所有多台图灵机的状态,然后模拟每一台的每一步运算,从而将多台同时处理变成一台分步处理,本质上没有什么区别。
那么,在连续空间的情况下,会如何呢?理论上来说,依然没有本质上的突破。
在现在的模型下,两台机器(未必是图灵机,而是这里的类图灵机,从概念上说更类似RealMachine,当然,不是“真实的机器”的意思)如果从任意一个位置作为源,并且当一台在有限时间t1时候,另一台总能在有限时间t2,使得两者在底流形指定区域内的纤维界面相同,那么这两者等价。
因此,上面的问题就变成了:对于任意一组传播子S的多源扩散,是否总可以找到一个传播子S,使得单源扩散可以在上述等价的意义上给出等价的结论?
这个就未知了。
如果,进一步,我们为S引入随机性,并且整个纤维空间都存在热噪音——每个点上的随机扩散运动,那么上述等价意义上的NTM和DTM之间,对于现在的连续纤维丛上的类图灵机,是否还能给出等价的结论呢?
而且,假定这样现在传播子可以判断何时“放大”热噪音,何时“抑制”热噪音的话,这样的系统不是很奇妙么?
当然,我们知道,对于RealMachine,由于热噪音和计算精度的要求,我们事实上总是会对输入和输出进行“离散化”处理的。
因此,前面定义的类图灵机在输入和输出都离散化的情况下,是否可以和某台标准图灵机对应呢?
显然,如果这台类图灵机不停机,而是一直输出内容的话,就不会和标准图灵机等价。而,现实世界的libev和uv库告诉我们,永不停机,其实未必是坏事。
另一方面,计算精度有的时候并不是必须要考虑的东西。
如果我们的计算本身只要求一个大概的分布,而不要求精确值的话,也就是我们处理的是fuzzy function与fuzzy logic,那么精确并不是必须的,从而整个计算过程并不要求离散化,至少对输入不作要求,只要在输出的时候离散化到某几个特定范畴。这样的话,由于计算精度要求带来的约束就可以放宽。
对于热噪音也是如此,如果S可以根据要求,在某些时候“放大”噪音的空闲,某些时候“抑制”噪音的贡献,将噪音作为随机源,甚至是不能作出决策时的决策,那么噪音也未必就一定要通过离散化给消去。
因此,对RealMachine的约束要求,现在看来,未必就是必然将这里的类图灵机退化还原到图灵机的要求——只要我们不要求绝对精确的计算,即可。
这样的思维产物到底是否真正突破了图灵机的局限,从而可以和更加精妙的机器,即,我们的人脑,相媲美呢?
这个就很难说啦。
好,睡前唠叨结束。