深入探讨复杂性:物理工作、停机问题与P vs NP复杂性
1. 物理工作与复杂性的联系
直观上,问题越复杂,找到解决方案所需的工作量就越大。物理工作与复杂性之间存在直接联系,因为工作是能量的函数,而能量又与信息直接相关。
以简单电池为例,当所有n个电子都在电池阴极一侧时,电池的电压U(势能)达到最大,此时很容易预测电子的位置,电子i位于阴极的概率$p_i(at cathode) = 1$,电子概率函数的香农熵$H(X) = 0$。当使用电池时,电子从阴极向阳极移动,势能转化为功。在此过程中,$0 ≤ p_i(at cathode) ≤ 1$,电池持续做功直至达到平衡。在平衡状态下,$p_i(at cathode) = p_i(at anode) = \frac{1}{2}$,此时$U = 0$,信息含量稳步增加到最大值$H(X) = n$比特(n为电子数量)。给电池充电可使这一过程逆转,即添加外部能量可使U恢复到$U_{max}$,$H(X)$恢复到0比特。
由于能量可以从一种形式转换为另一种形式,这个例子具有普遍性,并非仅限于电能。实际上,能量与信息之间的这种直接联系是众所周知的:擦除比特(即让事情更确定)需要做功(因此需要能量),而不确定性是免费的。
许多物理学家仍在争论信息与能量关系的深层含义。但很明显,我们从宇宙中观察到的一切都是信息,无论是通过视觉、触觉、嗅觉,还是间接通过测量(如辐射测量)。因此,无论我们是否愿意,信息定律都支配着我们的感知。这意味着物理学家的一些工作必然涉及信息研究,热力学、统计力学和量子物理学等领域已经形成了自己的熵概念。此外,由于能量和信息密切相关,支配能量的原理(已经研究了数百年)也支配着信息(有意识地研究了几十年)。例如,翻转一个开关需要最少的能量,通常一个方向是免费的(如重力可以下拉但不能上推,或者将晶体管设置为关闭状态不需要电子流动),而另一个方向则需要能量。在处理问题时,若要将所有可能的n位输入字符串减少到1位确定的输出,所需的能量与n比特成正比,即所需的工作量与问题所需的复杂性降低程度成正比,能量就是计算复杂性,与需要确定的比特数成正比。
在理论上,复制一个比特不需要能量,因为没有减少不确定性,也不需要做出决策。但在实践中,复制需要做功。这是因为信息和能量有一个共同特性:信息和能量都依赖于参考框架。从一个参考框架来看是信息的内容,从另一个参考框架来看可能是噪声。例如,在同一图像中,与“是否有狗”相关的像素对于“是否有汽车”的问题可能是无关的,甚至可能使决策更困难。当我们将源存储库中的n比特内存复制到目标存储库时,目标存储库可以处于任何状态,其状态完全不确定。通过使目标存储库与源存储库相同,我们将目标状态的不确定性降低了n比特,这需要做功。但从源的角度来看,没有减少不确定性,因此不需要消耗能量。值得庆幸的是,能量或信息模型通常不会改变参考框架,因为它们只回答一个问题,到目前为止,改变参考框架的能力似乎是人类独有的。
有趣的是,等效内存容量可以解释为模型能够确定的最大比特数。给定将一位设置为确定状态所需的最小能量,它也是一种能量度量。
2. 停机问题的物理视角
在计算机科学中,停机问题是指根据任意计算机程序的描述和输入,确定该程序是会结束运行还是会永远运行下去。艾伦·图灵在1936年证明,不存在一个通用算法可以解决所有可能的程序 - 输入对的停机问题。这个证明是一个矛盾证明,但没有提供解释。结合能量守恒原理和相关推论,我们可以对停机问题的不可判定性给出更有建设性的解释。
任何输入都需要用n比特信息进行编码,因此需要进行n次二进制决策来处理。这意味着,从能量方程来看,停机问题可以解决,但前提是解决停机问题所花费的能量与执行程序所花费的能量相同。然而,如果一个程序不停机,这将需要无限量的能量。也就是说,如果停机问题可以解决,那么一个需要无限能量才能运行的问题(例如“输入是否与π相同”),通常可以用有限的能量来解决,这显然违反了能量守恒定律,可能会导致制造出永动机,而我们知道这是不可能的。
当然,我们总能找到一些特殊程序,其停机问题可以在不花费无限能量的情况下解决。例如:
while True:
# Perform some operation
pass
这个程序显然永远不会停机,但它没有减少任何不确定性,实际上是一种非常低效的无所作为的方式,从物理角度讲,这个程序没有执行任何工作。
同样,任何程序都可以被模拟,这在模拟器和虚拟机中实际进行。模拟是可能的,因为模拟不会破坏或创造任何能量。如果模拟在程序不停机的情况下再次达到完全相同的内存状态,那么程序将不会停机,因为它陷入了一个无尽的、无法逃脱的循环。因此,当我们将自己限制在有限内存时,可以通过模拟来解决停机问题,但实际上,只有当被模拟的计算机非常小时,这才是可行的,因为具有n比特内存的计算机有$2^n$种可能的内存状态需要检查是否重复。
3. 钻石存在的信息解释
晶体是一种固体材料,其组成部分(如原子、分子或离子)以高度有序的微观结构排列,形成向各个方向延伸的晶格。钻石是碳元素的一种固体形式,其原子以晶体结构排列。在自然界中,当含碳流体在高压和高温下溶解时会形成钻石,也可以在高压和高温下从高纯度碳中生长合成钻石。从信息的角度来看,关键因素是在高温和高压下形成的高度可预测的结构。
热力学中有两个非常基本的方程将这些关键因素联系在一起:亥姆霍兹自由能和吉布斯自由能。亥姆霍兹方程处理温度,吉布斯方程处理压力。为了简化,我们只使用亥姆霍兹方程,其定义如下:
-
亥姆霍兹自由能定义
:$A \equiv U - TS$
- $A$是亥姆霍兹自由能(单位:焦耳)。
- $U$是系统的内能(单位:焦耳)。
- $T$是周围环境的绝对温度(开尔文)。
- $S$是系统的熵(单位:焦耳每开尔文)。
亥姆霍兹自由能是一种热力学势,用于衡量“在恒定温度下从封闭热力学系统中可获得的有用功”。我们对这个方程进行代数改写,得到$\frac{A - U}{T} = -S$。由此可以看出,无论$A$或$U$的值如何(且$U ≤ A$),当$T$升高时,左边整个项的结果会趋近于0,即$S$会变得非常小。低熵意味着要么不确定性非常小,要么描述系统所需的比特数很少,换句话说,就是高度有序的结构,也就是晶体。用吉布斯自由能和压力也可以进行类似的推导。当然,还有许多更多的细节需要考虑,一个四变量方程无法完全描述,但这个例子表明信息复杂性在物理过程中起着直接作用,许多物理学家因此主张用比特来衡量$S$,而不是用焦耳每开尔文。
以下是一个简单的表格总结亥姆霍兹自由能相关信息:
| 参数 | 含义 | 单位 |
| ---- | ---- | ---- |
| $A$ | 亥姆霍兹自由能 | 焦耳 |
| $U$ | 系统内能 | 焦耳 |
| $T$ | 绝对温度 | 开尔文 |
| $S$ | 系统熵 | 焦耳每开尔文 |
下面用mermaid绘制一个流程图来展示钻石形成与亥姆霍兹自由能的关系:
graph LR
A[高温高压环境] --> B[含碳流体]
B --> C[原子排列有序]
C --> D[低熵状态]
D --> E[形成晶体(钻石)]
F[亥姆霍兹自由能A=U - TS] --> D
G[温度T升高] --> F
这个流程图展示了在高温高压环境下,含碳流体中的原子排列变得有序,导致熵降低,从而形成晶体(钻石)的过程,同时体现了亥姆霍兹自由能与这一过程的关系。
深入探讨复杂性:物理工作、停机问题与P vs NP复杂性
4. P vs NP复杂性问题
P vs NP问题,通俗来讲,是询问是否每个能“快速验证”解的问题也能“快速解决”。从形式上看,它是要确定是否每个能被非确定性算法在多项式时间内接受的问题,也能被确定性算法在多项式时间内接受。
一般来说,能用算法在多项式时间(这里的时间指“步骤”)内给出答案的问题属于“P”类问题,多项式时间定义为最大为$O(n^k)$,其中k是常数,n是字符串的长度。而对于一些问题,比如可满足性问题(SAT),虽然目前还没有已知的多项式步骤算法来找到答案,但如果有人提供了答案,却可以快速验证,这类问题属于“NP”类问题,即“非确定性多项式时间”问题。“P vs NP”问题的答案将决定那些能在多项式时间内验证解的问题是否也能在多项式时间内解决。
以SAT问题为例,布尔公式$F(x_1, …, x_d)$是可满足的,当且仅当存在变量的至少一个配置向量$\vec{x}$,使得$F(\vec{x}) = true$。库克提出的默认算法如下:
def SAT(F):
d = ... # 变量数量
for i in range(0, 2**d):
x = binarized(i)
if F(x) == True:
return True
return False
该算法的挑战在于,如果公式不可满足,就必须遍历d个变量的所有$2^d$种配置。在O表示法中,while循环的迭代次数是$O(2^d)$,这明显大于多项式时间$d^k$(k为常数)。然而,检查一个特定配置是否满足公式可以在$O(n)$时间内完成,其中n是描述公式的字符串长度。所以该算法的总运行时间在O表示法中是$O(n * 2^d)$。
从更现代的角度来看,布尔公式是数据表的模型,d个布尔变量有$2^{2^d}$个唯一的真值表。任何模型,无论是神经元、二叉树还是命题公式,通常需要$log_2 2^{2^d} = 2^d$比特的等效内存容量(MEC)来表示任何真值表。由于O表示法根据函数的增长率来表征函数,并且一般来说,没有可能的字母表或编码可以使字符串的指数增长率变为多项式,除非限制字符串的总长度。所以,假设能以$O(n)$步骤评估任何命题公式的配置,实际上是将“公式长度轴”对数化了,因为实际增长是指数级的。此外,算法通常必须遍历所有$2^d$比特,因为为了准确评估公式,所有比特至少要被触及一次。
社区在研究P/NP复杂性时,开始讨论特定表示形式的布尔公式的可满足性问题,即k - SAT问题。公式F采用合取范式(CNF),其中每个子句恰好有k个文字。例如,$(x_1 \vee \neg x_2 \vee \neg x_3) \wedge (\neg x_4 \vee x_5 \vee x_6)$是k = 3的CNF公式,$(x_1 \vee x_3) \wedge (x_2 \vee x_3)$是k = 2的CNF公式。
下面是不同k值的k - SAT问题的分析:
| k值 | 解决情况 | 所需步骤 | 最坏情况公式长度 |
| ---- | ---- | ---- | ---- |
| k = 1 | 较简单,将每个取反变量设为0,其他设为1,若存在$x_i \wedge … \wedge \neg x_i$形式的子句则不可满足 | 线性步骤 | $2^d$比特 |
| k = 2 | 有巧妙的多项式算法 | 多项式步骤 | $2^d$比特 |
| k ≥ 3 | 未知通用多项式算法 | - | - |
对于k = 1的情况,解决1 - SAT只需要与描述公式所需符号数量成线性关系的步骤,但由于描述所有公式所需的MEC仍然是$2^d$比特,在最坏情况下,仍有公式需要$2^d$比特来描述。在1 - SAT中,一个子句最多携带1比特信息,所以最坏情况下公式所需的最小子句数$c = \frac{2^d}{log_2 d}$。对于k = 2的情况,有一个巧妙的多项式算法来解决2 - SAT,但最坏情况下公式的长度仍然是$2^d$比特,预期子句数$c = \frac{2^d}{2 + 2 * log_2 d}$。对于k ≥ 3,目前还没有已知的算法可以将算法的外层循环从$2^d$步推广到多项式步数。
用mermaid绘制一个流程图来展示k - SAT问题的解决思路:
graph LR
A[k - SAT问题] --> B{k值}
B -->|k = 1| C[简单解决,线性步骤]
B -->|k = 2| D[多项式算法解决]
B -->|k ≥ 3| E[未知通用多项式算法]
5. 总结与思考
目前所有计算机主要进行命题逻辑和循环操作,试图以少于样本空间$\Omega$所规定的步骤来评估命题逻辑公式,通常只能是个别情况。一般来说,将一位设置为确定状态需要$O(1)$能量,虽然我们可以投入尽可能多的能量来加速,但在当前计算机架构下,每个开关的翻转都需要时间和能量。例如,模拟计算方法在k ≥ 3的k - SAT问题实例上可以显示多项式模拟时间复杂度,但代价是依赖于指数增长的辅助变量。
对于自动化建模,一般来说,模型不能用比完全评估原始模型更少的工作量来被其他模型预测。SAT问题的表述可以被看作是一个启发性的模型,它虽然不准确,但激发了数不清的计算机科学家致力于提高算法效率。
虽然SAT问题的定义存在不明确性,但这并不一定意味着整个P/NP理论无效。例如旅行商问题(TSP),其输入不是指数增长的,但至今没有人发明出多项式算法来找到最短往返路径。此外,从理论上讲,有可能构建一种计算机,在有足够能量消耗的情况下,每次时间步长能使指数数量的比特达到确定状态,因为我们可以将宇宙本身看作一个大型计算机。
总之,复杂性问题,无论是物理工作与信息的关系,还是P vs NP问题,都充满了挑战和未知,值得我们持续深入研究。
超级会员免费看
576

被折叠的 条评论
为什么被折叠?



