《通用顺序搜索问题》
L. A. Levin
摘要
本文研究了几种著名的“顺序搜索类型”问题,并证明这些问题只能在解决任何同类型问题所需的时间内得到解决。
1 简介
在阐明算法的概念之后,证明了许多经典问题的算法不可解性(例如,群元素恒等问题、流形的同胚问题、丢番图方程的可解性等)。这消除了寻找解决这些问题的实用方法的问题。然而,解决其他问题的算法的存在并没有消除它们的类似问题,因为这些算法规定的工作量非常大。这就是所谓的顺序搜索问题的情况:布尔函数的最小化、有限长度的证明搜索、确定图同构等。所有这些问题都通过枚举所有可能性的简单算法来解决。然而,这些算法需要指数级的工作时间,数学家们已经形成了这样的信念:更简单的算法是不可能的。已经获得了许多支持其有效性的严肃论据(参见[1, 2]),但没有人能够证明这一说法。(例如,尚未证明找到数学证明所需的时间比验证它们所需的时间更多。)但是,如果我们假设存在一些(甚至是人为构造的)顺序搜索类型的问题,而这些问题无法通过简单的算法(就计算量而言)解决,那么可以证明许多“经典”顺序搜索问题(包括最小化问题、证明搜索问题等)也具有此属性。这构成了本文的主要结果。
2 定义和问题
如果对于某个 k:
且
则函数 f(n) 和 g(n) 相互间被称为可比函数:
同样,我们将理解“小于或可比”一词。
定义 1. 顺序搜索类型问题(或简称顺序搜索问题)将被称为以下形式的问题:“给定 x,找到某个长度与 x 的长度相当的 y,使得 A(x, y) 得到满足”,其中 A(x, y) 是某个可通过工作时间与 x 的长度相当的算法验证的属性。(这里,算法可以理解为,例如,Kolmogorov-Uspensky 算法或
图灵机,或正常算法;x、y 是二进制字)。准序列搜索问题将被称为确定这样的 y 是否存在的问题。
我们将考虑这六种类型的问题。其中考虑的对象以二进制字的形式自然编码。自然编码的选择并不重要,因为它们都提供可比较的代码长度。
1. 给定基数的子覆盖
- **问题**:给定一个有限集合 \( S \) 及其由500个元素子集构成的覆盖,找出一个基数为 \( k \) 的子覆盖(或确定是否存在这样的子覆盖)。
2. 给定大小的析取范式(DNF)
- **问题**:给定一个部分布尔函数的表格形式。找出一个大小为给定值的析取范式(DNF)来实现这个函数在定义域内(或确定是否存在这样的 DNF)。
3. 命题公式的可推导性或可否定性
- **问题**:确定一个给定的命题逻辑公式是否可推导(即是否能从公理中推出)或可否定(即是否不可满足)(或者等价地,确定一个给定的布尔公式是否等于一个常量)。
4. 图同态的寻找
- **问题**:给定两个图,找出一个从一个图到另一个图的同态映射(或确定是否存在这样的映射)。
5. 图同构的寻找
- **问题**:给定两个图,找出一个同构映射(或确定是否存在这样的映射)从一个图到另一个图(或到其一个子图)。
6. 矩阵填充与条件
- **问题**:我们考虑一个整数矩阵,其中的整数范围从1到100,并且有关于哪些数字可以垂直或水平相邻的条件。边界上的数字已经给出,要求在满足这些条件的情况下填充整个矩阵。
3 主要结果
设 f(n) 为单调函数。
定理 1. 如果存在任何顺序搜索(准顺序搜索)类型的问题,且其求解时间不能少于 f(n),且参数长度与 n 相当,则问题 1-6 也具有此性质。
证明的思路是,问题 1-6 是“通用顺序搜索问题”。
定义 2. 设 A(x, y) 和 B(x, y) 分别定义顺序搜索问题 A 和 B。如果有三种算法 r(x)、p(y) 和 s(y),其工作时间与参数长度相当,使得 A(x, p(y)) ⇔ B(r(x), y) 和 A(x, y) ⇔ B(r(x), s(y))(即,从 A 问题 x,很容易构造出等效的 B 问题 r(x)),则我们称问题 A 归结为 B。任何顺序搜索问题归结为的问题都称为“通用问题”。因此,定理 1 的证明实质在于以下引理。引理 1。问题 1-6 是通用顺序搜索问题。对于大多数有趣的顺序搜索问题,所述方法显然可以轻松获得定理 1 和引理 1 等结果。但是,问题仍然是证明此定理中存在的条件。长期以来,人们在这个方向上进行了大量的尝试,并获得了许多有趣的结果(例如,参见 [3, 4])。然而,各种顺序搜索问题的普遍性可以在不解决这个问题的情况下建立。在 Kolmogorov-Uspensky 算法系统中,还可以证明以下内容:
定理 2。对于任意顺序搜索问题 A(x, y),存在一种算法,可以在乘以常数和添加与 x 的长度相当的值的时间内以最优时间解决它。