因为网友 十酒三 的 文章 ,突然对丢番图集产生了兴趣。
加上之前看 《永恒的图灵》 时也看到过相关的讨论,所以这里就记录一些关于 丢番图集 与 递归可枚举集 的想法。
要理解递归可枚举集,先要理解图灵机。
图灵机的定义,大家可以去查 维基百科 。
就个人而言,我比较喜欢这样的定义,虽然并不是必须的:
很显然, 的作用就是 description,而 的作用就是 configuration。前者描述了“纸带”,后者描述了当前图灵机的状态。
因此,图灵机的运作过程,可以认为是将一个图灵点放在一个初始状态的图灵空间的给定初始位置、并让它再转移规则的作用下“自由运动”所产生的“世界线”,且最后有三种可能:
当然,这么个说法其实没多大意义,只不过看起来比较“绚”而已。
如果图灵机最终被接受(当然也就停机了),那么此时它的图灵空间 被称为是“输出结果”,相应的,一开始的图灵空间 被称为“输入参数”。
因此,我们如果只看重一头一尾两个状态的画,那图灵机就是这样的: ,也即,它是将输入参数映射到输出结果的偏函数,这是一句废话。
我们如果将图灵空间中的状态限定为有限非空符号集 的幂集 ,那图灵机显然可以看作是能将有限个 映射到另一组有限个 的偏函数,即:
这里 ,是所有图灵机 可接受的输入状态的集合。而如果一个输入状态不在 ,那图灵机可能拒绝并停机,也可能永不停机。
这里,图灵机 的可接受输入状态集 被称为是一个“遍历可枚举集”。
同样的,如果一个集合 被称为是“遍历可枚举的”,那就表示存在一个图灵机 ,使得 恰好就是 的所有可接受输入状态构成的集合。
停机不可判定问题告诉我们:我们永远不可能找到一个通用图灵机 ,使得它能告诉我们任意一个图灵机 在给定输入状态下是否可以停机。
这也就是说,我们不可能找到一个通用图灵机 ,使得它能判断任意输入状态是不是某个图灵机 的可接受输入状态。
从而,这就等于是说,不存在一个通用图灵机能帮助我们来判断一个集合是否是遍历可枚举的。
另一方面,让我们来看一下丢番图集。
所有形如 的方程被称为“丢番图方程”,如果其中系数 、 和 都是整数的话。比如说,我们最常见的一元二次方程 就是一个丢番图方程;费马方程 也是一个丢番图方程,且我们知道当 时该方程没有整数解。
丢番图方程 的整数根的存在性是一个非常有趣且艰深的问题,比如费马方程在 时就没有整数根。
因此,是否存在一个算法,能自动判断任意输入的丢番图方程是否有整数解,就是一个很有趣的问题,如果存在的话,那包括费马大定理在内的很多问题就很容易解了。
现在,我们将一个丢番图方程 中所有的系数提取出来: ,总共有 个参数。
接下来,我们将这 个参数中的一部分固定(也可以都不固定),另一部分为可变参数(只能取整数),一组这样的可变参数就被称为一个“参数组”。所有能让该丢番图方程有整数解的参数组构成的集合,就被称为该丢番图方程的“丢番图集合”。
也就是说,丢番图集中的任意一个元素,都能确保对应的丢番图方程(包含那些被固定下来的整数参数)必然有整数解,反之则该丢番图方程没有整数解。
如果丢番图集和遍历可枚举集是一一对应的,那由于遍历可枚举集是不可判定的,所以也就是说至少存在一个丢番图集是无法通过图灵机来判定的,这就等于说,至少有一个丢番图方程(所有参数都固定),它是否有整数解是无法用图灵机来判定的。
这等于就是说:希尔伯特的第十个问题的答案是否定的。
为了证明(及证伪)希尔伯特的第十个问题,人们努力了很久。戴维斯、普特南及美国首位入选国家科学院的女数学家茱莉娅·罗宾逊一起努力了很久,最后证明到这样的程度:
完成最后这个猜想的证明、也即证明存在JR的,是俄罗斯数学家尤里·马基雅谢维奇。
于是,四个人联合起来就证明了:丢番图集金额遍历可枚举集是等价的。
这被称为 MRDP定理 ,也叫马基雅谢维奇定理。
历史介绍完了,下面说一下个人的想法。
这个定理很有趣,它告诉我们这么两件事:
发现没有?
这里有趣的地方在于:丢番图方程显然是连续可微的(虽然丢番图集与方程对应函数的自变量无关),而图灵机则是非常显然的离散客体,这两个乍看起来全然不同的东西,居然有如此奇妙的内在联系。
而且,更关键的是,我们印象里,方程与函数能做的事,图灵机都能做;但图灵机能做的事,方程与函数似乎未必都能做到。这样的两个“功能不对等”的东西,对于输入参数居然有相同的要求,似乎很让人惊讶。
但,转念想想又感觉似乎有一种必然,毕竟丢番图方程的数量和图灵机的数量,是一样多的,都是阿列夫0,因此存在这样的映射关系似乎很正常。
事实上,之所以用丢番图函数的参数而非输入变量来和图灵机的输入状态做对应,就是因为对于丢番图函数这类多项式函数而言,只要输入的变量不是无穷,那总是可以给出整数输出的;但系数如果不恰当的话,那方程就很可能找不到整数解。所以用参数而非变量来做对应,就看起来很合理了——我们甚至可以“猜想”那些整数解可能在某种程度上对用了相应类型图灵机的内部状态,甚至是输出,谁知道呢。
我之前甚至猜想,对于任意一个将 A 个输入数据映射到 B 个输出数据的图灵机,在任意编码规则(将数据映射到自然数)下,都可以找到至少一组丢番图函数(整系数多项式)与之一一对应,这组丢番图函数有 B 个,每个都要有 A 个独立输入变量。
但随后想想这样的同构映射应该是不存在的,因为首先任意这样的丢番图函数组必然都可以映射到一类图灵机,而这类丢番图函数的特点是对于任意输入的整数,都可以唯一确定地输出一个整数,那就是说每一这样的丢番图函数组对应的图灵机对于任意输入都必然能停机于接受状态——但这显然不是任意图灵机都能满足的情况,所以必然存在图灵机无法被这样的丢番图函数组描述。
所以这里就再次体现出了用丢番图函数的参数来对应图灵机输入的好处了。
好了, 不执着于这种内在联系带来的诧异感,让我们来考虑这么一个问题:
这两个集合,还能不能拓展?
尤其,在丢番图逼近中,我们已经不要求一个丢番图方程的参数必须是整数了,而可以是任意实数。这样,所有能让一个丢番图方程有整数解的实系数的子集构成的集,就是该丢番图方程的“拓展丢番图集”。
比如说, 这个丢番图方程的丢番图集为:
而它的拓展丢番图集则可以是:
明显大了很多,前者只是后者的一个子集。
但,这样的拓展似乎还不够“狂野”,让我们来看下面这个:
它是一个泛函,称为“丢番图泛函”,其中函数 和 被称为“参数函数”,函数 则是测试函数且要求 , 是实数的任意子集,被称为“限制域”,而 为实数的另一个任意子集,被称为“活动域”。假定,存在 及 使方程 成立,那么二元组 被称为是“丢番图问题组” 的一个“泛参数组”。 的所有泛参数组构成的集合,就是这个丢番图泛函的“泛丢番图集”。
注意,这里函数 、 、 都不要求光滑,甚至都不要求连续,所以完全可以是分段函数。而活动域 与限制域 也没有任何要求,可以是可数集,也可以是离散集(这两种情况下,积分就变成了求和),同样也可以是豪斯道夫集。我们一般可以固定活动域与限制域来讨论泛丢番图集。
显然,当取 、 时,泛丢番图集是上述拓展丢番图集与丢番图集的超集。
或者,更形式化的写法是:
现在对丢番图集的拓展算是很奔放地完成了,那么对遍历可枚举集的拓展呢?
或者,这里可以更准确地问,是对图灵机的拓展可以怎么玩。
在前面关于图灵机的定义中,有几个离散集:
如果将这两个集合推广呢?
比如这样:
取任意空间 为底空间,底空间上任意元素上都直积一个内禀空间(不要求离散与有限),称为“外状态空间”。而后, 上有一个“粒子” ,它对应到 中的一个元素,称为“位置”。 还有一个“内禀状态”,取值在“内状态空间”中。
现在,底空间、外状态空间与内状态空间都不要求离散或有限,可以是任意集合。
事实上,这样就有点纤维丛的意思了,但并不一样。
转移规则依然和前面所说的一样,先改变粒子所处位置的外状态,然后改变粒子的内状态,接着移动粒子到新的位置。它的作用有点像微分几何中的联络——但我们并不要求这种移动只能在邻近位置上移动,所以这可以说是添加了“虫洞”结构的纤维丛上的运动学问题了。当然,我们也可以和标准图灵机中读写头只能局限在左右移动一格一样,将这里对位置的改动限定在只能在当前点的邻域内移动,那这样看起来就更像是运动学问题了,于此同时对内状态和外状态的改变看起来也更像是主从联络与底流形联络所干的事了。
一旦粒子的世界线进入“无定义”的区域,就被拒绝并停止——可以类比掉入黑洞的奇点。
也可能粒子运动到了底流形上的特定区域,从而被接受并停止——可以类比闭合宇宙到达命运终结。
还有可能,粒子的世界线永远不会停止,一直在某个区域里打转——可以类比开放宇宙永不终结。
而这种超图灵机的初始状态,也就是底流形的初始状态,可以类比为宇宙在大爆炸时的状态。
好了,类比归类比,时空当然不是这种定义下的超图灵机了——大概不是吧。
现在,这种超图灵机的输入状态(以及输出状态)都不是离散集了。
如果 是连续空间,比如一个微分流形,那么输入状态就可以是 上的一条曲线,或者曲面。在这条曲线或曲面之外的点上的外状态都为 0,而在这条曲线或曲面上的点的外状态就构成了输入状态。
因此,很显然理论上泛丢番图集与这里的可接受输入状态之间,是可以做对应的。
于是,问题来了:
是否,任意上述拓展的超图灵机的可接受初始状态,与某个泛丢番图集,总能一一对应?
开个脑洞的话,就是这样的:
是否,任意物理规则下的闭合宇宙初始状态,与泛丢番图集,总能一一对应?
这个脑洞就比较奔放了——虽然更多只是好看,并无实际意义。
玩笑归玩笑,问题还是在的。
我们对丢番图集和图灵机分别做了拓展,尽可能地将它们“连续化”,然后提出了相应的泛丢番图集与超图灵可识别集之间,是否也存在如丢番图集与图灵可识别集之间那样的一一对应关系,这么一个问题。
当然,这个问题本身我当然现在是回答不了的。
我们来看下别的东西。
比如,可压缩性。
在图灵机领域,可压缩性与算法复杂度相关,具体来说是这样的:
这里我们故意将图灵机 与它的输入参数 分开。任意字符串 s 的 K 氏复杂度的定义由上面给出,它如果小于 ,那么就说 s 是可压缩的。
现在,我们试着将问题移植到超图灵机(记为 HTM)上。
我们将函数 称为超图灵机的一个状态函数。在开始运作之前的状态函数 被称初态,它是超图灵机接受的输入状态,而 上的一个元素被称为“初始位置”,代表读写头的“粒子”将从初始位置开始运动。如果粒子最终运动到指定的“终点位置”,则表示这台超图灵机停机于接受状态,此时的状态函数 被称为末态。
因此,停机于接受的超图灵机就是映射: 。
下面,我们可以定义一个能量函数 ,从而可以定义一个状态的能量:
另一方面,转移函数 本身也可以被编码,虽然我们目前不清楚到底应该如何编码,但可以形式化地记为 ,从而一样可以计算它的能量:
我们可以将一台超图灵机的转移规则的能量作为这台超图灵机的能量,从而就可以形式化地定义“算法复杂度”了:
如果 ,那我们就说状态函数 是可压缩的。
从类比的角度来看,可压缩状态意味着能量可以进一步降低的状态,事实上也就对应了熵可以进一步增高的状态,所以在这个系统中,“热力学熵”和超图灵机的信息熵应该是等价的,不可压缩状态也就意味着“黑体辐射”。
当然,还是那句话,这种类比只适合开脑洞,没多大实际意义。
或者,我们也可以和 十酒三 的思路一样,从代数的角度来看不可压缩性:
给定函数集 ,若对于集合 有如下关系成立,则称 在 上是可压缩的:
也即,存在至少一个函数,能让任意一项数据可以通过给定集合中的别的数据导出。我们将这个关系记为 。
这种形式的数据其实很常见,比如让我们选择一个 D 维矢量空间,函数集里只有一个矢量加法,而数据集我们取这个 D 维矢量空间的 D 个基矢,由于它们显然彼此是线性无关的,所以这个数据集无法在矢量加法集上被压缩。
而可压缩集当然也很多,比如现在我们将上面这个粒子中的函数集替换为矢量加法与矢量外乘,那我们只需要两个基矢就足够了,第三个基矢可以通过这两个基矢的外乘来得到,从而可以被压缩掉。
当然,问题可以变得更加复杂——假定数据集 在函数集 上不可压缩,但如果加上数据集 之后,集合 就能在 上压缩了,那这样的情况就很有趣了。
我们可以构造这样的函数:
因此,如果 在 上可压缩,那 。
同样的,我们也可以构造 是 的一个子集,可以通过 与函数 构造出 中的所有的元素。我们记 为数据集 通过函数 生成的数据集,所以显然有 。这样我们就可以定义另一个函数:
因此,这个函数体现了数据集的不可压缩的部分,假如 则 。
这两个函数可以在一定程度上刻画 与 的很多特性。
但,这样的性质如何和图灵机对应上,看起来还有点扑朔迷离——如果我们将这里的函数集替换成所有可能的图灵机,那显然我们可以将任意一个整数集都给压缩得渣都不剩,所以对于图灵机的情况而言,我们会要求加上图灵机本身的“长度”。
但在函数的问题中,函数的“长度”是我们不知道的东西。我们当然可以和上一部分所提的一样,将函数给编码,然后用编码长度来表达函数的“长度”,但这样的做法下可压缩性的表述就又会显得很不纯粹。
拉拉杂杂地写了很多看丢番图集与递归可枚举集的对应关系时的想法,基本都是脑洞为主。
这块感觉很有趣,可惜一直没时间系统地看下,挺可惜的。
本文遵守 创作共享CC BY-NC-SA 4.0协议