try ai
科普
编辑
分享
反馈
  • 量子谕示

量子谕示

SciencePedia玻尔百科
核心要点
  • 量子谕示是一种可逆子程序,它通过单一步骤为所有输入的叠加态计算一个函数,从而实现量子并行性。
  • 通过相位回踢,谕示将函数的输出编码到输入态的相位中,这是 Deutsch 算法和 Grover 算法等算法的关键机制。
  • 量子谕示是某些算法的核心组成部分,这些算法解决结构化问题(如 Shor 算法)比经典方法快指数倍,解决非结构化搜索问题(如 Grover 算法)快平方倍。
  • 量子力学中的线性原理从根本上限制了谕示,使其无法为检测纠缠等非线性属性构建谕示。

引言

在量子计算巨大威力的核心,存在一个似乎能扭曲计算规则的概念性工具:量子谕示。谕示作为一个假设的“黑箱”运作,它为了解量子算法如何能比经典算法指数级更快地解决某些问题提供了关键。本文通过剖析谕示的角色,从抽象理论走向具体机制和应用,旨在回答这一量子优势是如何实现的根本问题。

本探索将引导您了解使量子谕示如此强大的核心原理。第一章“原理与机制”将揭示谕示的内部工作方式,解释量子并行性和相位回踢这一巧妙技巧等概念。随后的“应用与跨学科联系”一章将展示这些原理的应用,从简单的演示性算法,到 Shor 和 Grover 的开创性方法,这些方法对密码学、优化乃至计算机科学的基础都具有深远影响。

原理与机制

想象一个神秘的黑箱。你可以输入一个问题(一个输入,我们称之为 xxx),它会给出一个答案(一个输出,f(x)f(x)f(x))。你不知道它内部是如何工作的,只知道它的功能。在计算机科学中,我们称之为​​谕示​​(oracle)。它是一个我们可以使用但无法窥探其内部的子程序。现在,如果我们能构建这个谕示的量子版本会怎样?这不仅仅是一次简单的升级;它就像赋予我们的黑箱同时回答近乎无限多个问题的能力。这就是人类已知的一些最强大量子算法背后的核心思想。

作为量子子程序的谕示

在量子世界里,一切都必须是可逆的。我们不能简单地计算出 f(x)f(x)f(x) 后就丢弃输入 xxx,因为这会抹去信息——这在量子力学中是绝对禁止的。因此,一个​​量子谕示​​,由酉算符 UfU_fUf​ 表示,其定义方式则更为巧妙。它需要两个量子寄存器:一个保存状态 ∣x⟩|x\rangle∣x⟩ 的输入寄存器和一个保存状态 ∣y⟩|y\rangle∣y⟩ 的输出寄存器(通常是一个“辅助”量子比特)。其作用定义如下:

Uf∣x⟩∣y⟩=∣x⟩∣y⊕f(x)⟩U_f |x\rangle|y\rangle = |x\rangle|y \oplus f(x)\rangleUf​∣x⟩∣y⟩=∣x⟩∣y⊕f(x)⟩

这里,⊕\oplus⊕ 代表模 2 加法,也就是我们熟悉的经典计算中的异或(XOR)操作。谕示保持输入 ∣x⟩|x\rangle∣x⟩ 不变,当且仅当 f(x)f(x)f(x) 为 1 时,翻转输出比特 yyy。

这可能看起来很抽象,我们来具体化一下。假设我们有一个简单的函数 f:{0,1}→{0,1}f: \{0,1\} \to \{0,1\}f:{0,1}→{0,1},它告诉我们输入是 0 还是 1。比如说,我们有一个来自 Deutsch 著名问题的特定“平衡”函数,定义为 f(0)=1f(0) = 1f(0)=1 和 f(1)=0f(1) = 0f(1)=0。我们将如何构建谕示 UfU_fUf​ 呢?我们只需看看它如何作用于所有可能的双量子比特基态 (∣00⟩,∣01⟩,∣10⟩,∣11⟩)(|00\rangle, |01\rangle, |10\rangle, |11\rangle)(∣00⟩,∣01⟩,∣10⟩,∣11⟩):

  • Uf∣00⟩=∣0⟩∣0⊕f(0)⟩=∣0⟩∣0⊕1⟩=∣01⟩U_f|00\rangle = |0\rangle|0 \oplus f(0)\rangle = |0\rangle|0 \oplus 1\rangle = |01\rangleUf​∣00⟩=∣0⟩∣0⊕f(0)⟩=∣0⟩∣0⊕1⟩=∣01⟩
  • Uf∣01⟩=∣0⟩∣1⊕f(0)⟩=∣0⟩∣1⊕1⟩=∣00⟩U_f|01\rangle = |0\rangle|1 \oplus f(0)\rangle = |0\rangle|1 \oplus 1\rangle = |00\rangleUf​∣01⟩=∣0⟩∣1⊕f(0)⟩=∣0⟩∣1⊕1⟩=∣00⟩
  • Uf∣10⟩=∣1⟩∣0⊕f(1)⟩=∣1⟩∣0⊕0⟩=∣10⟩U_f|10\rangle = |1\rangle|0 \oplus f(1)\rangle = |1\rangle|0 \oplus 0\rangle = |10\rangleUf​∣10⟩=∣1⟩∣0⊕f(1)⟩=∣1⟩∣0⊕0⟩=∣10⟩
  • Uf∣11⟩=∣1⟩∣1⊕f(1)⟩=∣1⟩∣1⊕0⟩=∣11⟩U_f|11\rangle = |1\rangle|1 \oplus f(1)\rangle = |1\rangle|1 \oplus 0\rangle = |11\rangleUf​∣11⟩=∣1⟩∣1⊕f(1)⟩=∣1⟩∣1⊕0⟩=∣11⟩

这个变换可以由一个简单的矩阵表示,该矩阵交换前两个基向量,并保持后两个不变。它巧妙地将经典函数的逻辑翻译成量子计算机能够理解的线性代数语言。同样的原理也适用于更复杂的函数,例如 Bernstein-Vazirani 算法中使用的函数 f(x)=s⋅x(mod2)f(x) = s \cdot x \pmod{2}f(x)=s⋅x(mod2),它同样会产生一个执行所需计算的特定酉矩阵。到目前为止,这似乎只是一种执行经典计算的复杂方式。但我们还没有使用量子力学的秘密武器:叠加。

量子并行性与相位回踢的魔力

从这里开始,故事变得真正奇妙起来。如果我们向谕示输入所有可能输入的叠加态会发生什么?让我们将输入寄存器制备在状态 1N∑x∣x⟩\frac{1}{\sqrt{N}} \sum_{x} |x\rangleN​1​∑x​∣x⟩ 上,其中 NNN 是所有可能输入的总数。应用一次谕示会得到:

Uf((1N∑x∣x⟩)∣0⟩)=1N∑x∣x⟩∣f(x)⟩U_f \left( \left( \frac{1}{\sqrt{N}} \sum_{x} |x\rangle \right) |0\rangle \right) = \frac{1}{\sqrt{N}} \sum_{x} |x\rangle|f(x)\rangleUf​((N​1​x∑​∣x⟩)∣0⟩)=N​1​x∑​∣x⟩∣f(x)⟩

看!在一次操作中,我们计算了每一个 x 对应的 f(x)f(x)f(x)。结果是一个巨大的纠缠态,包含了该函数所有的输入-输出对。这种现象被称为​​量子并行性​​。就好像我们的谕示同时回答了所有可能的问题。这是像 Shor 算法这类算法实现指数级加速的核心原因,该算法用于寻找函数 f(x)=ax(modN)f(x)=a^x \pmod Nf(x)=ax(modN) 的周期。它只需调用一次谕示来创建这个状态,该状态包含了函数整个周期结构的信息,然后使用量子傅里叶变换来提取那个周期——这是一项经典计算机需要指数级时间才能完成的壮举。

但这里有个问题。如果我们测量这个状态,我们只能随机得到一对 ∣x⟩|x\rangle∣x⟩ 和 ∣f(x)⟩|f(x)\rangle∣f(x)⟩。所有其他信息都会丢失。量子算法设计的艺术就在于如何在不破坏这些海量信息的情况下,将它们引导出来。其中一个最优雅的技巧被称为​​相位回踢​​(phase kickback)。

我们不将辅助量子比特初始化为 ∣0⟩|0\rangle∣0⟩,而是将其制备在特殊状态 ∣−⟩=12(∣0⟩−∣1⟩)|-\rangle = \frac{1}{\sqrt{2}}(|0\rangle - |1\rangle)∣−⟩=2​1​(∣0⟩−∣1⟩)。现在看看当我们把 ∣x⟩∣−⟩|x\rangle|-\rangle∣x⟩∣−⟩ 送入谕示时会发生什么:

Uf∣x⟩∣−⟩=∣x⟩12(∣0⊕f(x)⟩−∣1⊕f(x)⟩)U_f |x\rangle|-\rangle = |x\rangle \frac{1}{\sqrt{2}} (|0 \oplus f(x)\rangle - |1 \oplus f(x)\rangle)Uf​∣x⟩∣−⟩=∣x⟩2​1​(∣0⊕f(x)⟩−∣1⊕f(x)⟩)

如果 f(x)=0f(x) = 0f(x)=0,辅助量子比特的状态变为 12(∣0⟩−∣1⟩)=∣−⟩\frac{1}{\sqrt{2}}(|0\rangle - |1\rangle) = |-\rangle2​1​(∣0⟩−∣1⟩)=∣−⟩。 如果 f(x)=1f(x) = 1f(x)=1,辅助量子比特的状态变为 12(∣1⟩−∣0⟩)=−12(∣0⟩−∣1⟩)=−∣−⟩\frac{1}{\sqrt{2}}(|1\rangle - |0\rangle) = - \frac{1}{\sqrt{2}}(|0\rangle - |1\rangle) = -|-\rangle2​1​(∣1⟩−∣0⟩)=−2​1​(∣0⟩−∣1⟩)=−∣−⟩。

我们可以为任意 f(x)f(x)f(x) 简写为:

Uf∣x⟩∣−⟩=(−1)f(x)∣x⟩∣−⟩U_f |x\rangle|-\rangle = (-1)^{f(x)} |x\rangle|-\rangleUf​∣x⟩∣−⟩=(−1)f(x)∣x⟩∣−⟩

这太惊人了!函数的输出值 f(x)f(x)f(x) 根本没有被写入辅助量子比特。辅助量子比特完全保持在 ∣−⟩|-\rangle∣−⟩ 状态不变。取而代之的是,函数的值作为一个​​相位因子​​(+1+1+1 或 −1-1−1)被“回踢”到了输入寄存器上。我们没有直接与信息交互,就将信息从一个量子比特传递到了另一个——这纯粹是一种量子效应。

驾驭相位:从简单演示到宏大算法

这种相位回踢机制是许多量子算法背后的引擎。让我们以最简单的例子——Deutsch 问题为例,看看它是如何工作的。在这个问题中,我们被保证一个函数 f:{0,1}→{0,1}f: \{0,1\} \to \{0,1\}f:{0,1}→{0,1} 要么是​​常数​​函数(f(0)=f(1)f(0)=f(1)f(0)=f(1)),要么是​​平衡​​函数(f(0)≠f(1)f(0) \neq f(1)f(0)=f(1))。经典计算机需要查询两次谕示才能确定。而量子计算机只需要一次查询。

工作原理如下:

  1. 从状态 ∣0⟩∣1⟩|0\rangle|1\rangle∣0⟩∣1⟩ 开始。
  2. 对两个量子比特都应用 Hadamard 门,产生状态 12(∣0⟩+∣1⟩)⊗12(∣0⟩−∣1⟩)\frac{1}{\sqrt{2}}(|0\rangle + |1\rangle) \otimes \frac{1}{\sqrt{2}}(|0\rangle - |1\rangle)2​1​(∣0⟩+∣1⟩)⊗2​1​(∣0⟩−∣1⟩)。注意第二个量子比特现在处于 ∣−⟩|-\rangle∣−⟩ 状态,已为相位回踢做好准备。
  3. 应用谕示 UfU_fUf​。由于相位回踢,状态变为:12((−1)f(0)∣0⟩+(−1)f(1)∣1⟩)⊗∣−⟩\frac{1}{\sqrt{2}} ((-1)^{f(0)}|0\rangle + (-1)^{f(1)}|1\rangle) \otimes |-\rangle2​1​((−1)f(0)∣0⟩+(−1)f(1)∣1⟩)⊗∣−⟩。
  4. 现在,我们对第一个量子比特应用最后一个 Hadamard 门。

让我们分析第一个量子比特。

  • 如果 fff 是​​常数​​函数,那么 f(0)=f(1)f(0)=f(1)f(0)=f(1),所以相位相同。状态与 (∣0⟩+∣1⟩)(|0\rangle + |1\rangle)(∣0⟩+∣1⟩) 或 −(∣0⟩+∣1⟩)-(|0\rangle + |1\rangle)−(∣0⟩+∣1⟩) 成正比。Hadamard 门将其转换为 ∣0⟩|0\rangle∣0⟩。
  • 如果 fff 是​​平衡​​函数,那么 f(0)≠f(1)f(0) \neq f(1)f(0)=f(1),所以相位相反。状态与 (∣0⟩−∣1⟩)(|0\rangle - |1\rangle)(∣0⟩−∣1⟩) 或 (−∣0⟩+∣1⟩)(-|0\rangle + |1\rangle)(−∣0⟩+∣1⟩) 成正比。Hadamard 门将其转换为 ∣1⟩|1\rangle∣1⟩。

仅需一次查询后,我们测量第一个量子比特。如果得到 ∣0⟩|0\rangle∣0⟩,函数是常数函数。如果得到 ∣1⟩|1\rangle∣1⟩,它是平衡函数。我们对函数的全局属性一无所知,但通过将我们的查询置于叠加态,并巧妙地读取最终相位的干涉模式,我们以 100% 的确定性解决了问题。这个基本原理可以推广:在此类算法结束时测量到全零状态的概率,直接取决于函数输出中 0 和 1 的平衡情况。

这种相位翻转技巧也是 Grover 搜索算法的核心。谕示的工作是通过翻转其相位来“标记”所需项。然而,对于非结构化搜索,单次查询是不够的。如果你有一个包含 16 个项目的数据,并且只翻转其中一个的相位,单次测量找到它的概率仍然只有 1/161/161/16——不比随机猜测好。完整的 Grover 算法需要一个额外的步骤,即一个“扩散算符”,被重复应用以放大那个被特殊标记的状态的振幅。谕示的角色仅仅是提供最初的关键标记。

不可能的艺术:谕示的局限

鉴于这种能力,我们很自然会想:我们能为量子态的任何属性构建一个量子谕示吗?例如,我们能否构建一个“纠缠检测器”谕示,告诉我们一个双量子比特态 ∣ψ⟩|\psi\rangle∣ψ⟩ 是否纠缠?让我们设想一下它的作用:如果 ∣ψ⟩|\psi\rangle∣ψ⟩ 是可分离的,它什么也不做;如果 ∣ψ⟩|\psi\rangle∣ψ⟩ 是纠缠的,它将一个辅助量子比特从 ∣0⟩|0\rangle∣0⟩ 翻转到 ∣1⟩|1\rangle∣1⟩。

这看起来非常有用,但从根本上说是不可能的。原因直击量子力学的核心:​​线性​​。任何量子操作,包括谕示,都必须是线性变换。我们可以通过将两个可分离态 ∣00⟩|00\rangle∣00⟩ 和 ∣11⟩|11\rangle∣11⟩ 相加,来创建纠缠态,比如 Bell 态 ∣Φ+⟩=12(∣00⟩+∣11⟩)|\Phi^+\rangle = \frac{1}{\sqrt{2}}(|00\rangle + |11\rangle)∣Φ+⟩=2​1​(∣00⟩+∣11⟩)。

如果我们的纠缠检测器是线性的,那么将它应用于叠加态 12(∣00⟩+∣11⟩)\frac{1}{\sqrt{2}}(|00\rangle + |11\rangle)2​1​(∣00⟩+∣11⟩),必须与分别应用于每个部分然后相加的结果相同。

  • 应用于纠缠态 ∣Φ+⟩|\Phi^+\rangle∣Φ+⟩ 时,谕示应该输出 ∣Φ+⟩∣1⟩|\Phi^+\rangle|1\rangle∣Φ+⟩∣1⟩。
  • 应用于可分离部分时,它会得到 12UD(∣00⟩∣0⟩)+12UD(∣11⟩∣0⟩)=12(∣00⟩∣0⟩)+12(∣11⟩∣0⟩)=∣Φ+⟩∣0⟩\frac{1}{\sqrt{2}}U_D(|00\rangle|0\rangle) + \frac{1}{\sqrt{2}}U_D(|11\rangle|0\rangle) = \frac{1}{\sqrt{2}}(|00\rangle|0\rangle) + \frac{1}{\sqrt{2}}(|11\rangle|0\rangle) = |\Phi^+\rangle|0\rangle2​1​UD​(∣00⟩∣0⟩)+2​1​UD​(∣11⟩∣0⟩)=2​1​(∣00⟩∣0⟩)+2​1​(∣11⟩∣0⟩)=∣Φ+⟩∣0⟩。

谕示必须同时产生两个不同且相互矛盾的结果!这是不可能的。纠缠检测器的梦想被优美而严谨的线性逻辑所击碎。谕示无法判断像纠缠这样不是“线性”的属性——也就是说,在叠加下不被保持的属性。

因此,量子谕示并非魔法。它是一个工具,被精巧地制作出来,以利用量子世界的规则——叠加、干涉和线性——来以一种全新的方式执行计算。它允许我们同时提出许多问题,但艺术在于以一种能让我们理解宇宙以相位和概率的语言所给出的答案的方式来构思问题。

应用与跨学科联系

既然我们已经窥视了量子谕示奇特而美妙的机制,你可能会想:“这一切都是为了什么?”这是一个合理的问题。我们讨论过的原理——叠加、纠缠、干涉、相位回踢——不仅仅是抽象的好奇心。当通过量子谕示这一概念进行引导时,它们就变成了强大的工具,将量子物理学的世界与计算机科学、数学、密码学甚至生物学等不同领域连接起来。

谕示的真正美妙之处在于其抽象性。它让我们能够提出一个强有力的问题:“如果我有一台能够检验答案的机器,那么量子计算机找到该答案能有多快?”这种简单的重新框架将谕示从一个单纯的子程序转变为一座概念的桥梁,将计算领域最深的谜题与自然界的基本法则联系起来。在本章中,我们将踏上一段旅程,看看这座桥梁是如何建成的,从阐明量子原理的简单问题开始,到打破经典局限的算法,最终到达我们所认为的“可计算”的前沿。

作为量子探针的谕示:揭示隐藏属性

想象你有一个函数,一个简单的黑箱,它接受一个比特(0 或 1)并输出一个比特。你被保证该函数要么是常数的(总是给出相同的输出),要么是平衡的(以相等的比例给出 0 和 1)。在经典情况下,你会如何确定它是哪种?你必须用 0 测试它,看输出,然后再用 1 测试,再看输出。需要两次查询。你别无选择。

这正是量子谕示首次展示其威力的地方。在 Deutsch 算法中,谕示只对函数求值一次,但作用于所有可能输入的叠加态上。通过相位回踢的魔力,谕示不仅仅是计算函数的值;它将函数的全局属性——其“平衡性”或“常数性”——印刻在量子态的相位上。最终的测量会确定无疑地揭示这个属性。例如,如果一个函数 f(x)f(x)f(x) 的谕示恰好表现得像一个称为 Pauli-Z 门的特定量子门,算法将明确告诉你该函数是平衡的。相反,如果函数是常数的,比如对所有 xxx 都有 f(x)=0f(x)=0f(x)=0,系统的最终状态将会完全不同,导致测量结果明确地指示“常数”。量子计算机一举了解了关于函数整体的某些信息。

这似乎只是一个微小的进步,但它是一座宏伟冰山的尖端。Bernstein-Vazirani 算法将这一原理发挥到了极致。在这里,谕示通过计算函数 f(x)=s⋅x(mod2)f(x) = s \cdot x \pmod 2f(x)=s⋅x(mod2)(输入 xxx 与秘密 sss 的按位点积)来隐藏一个秘密的 nnn 比特字符串 sss。经典地,要找到 sss 的所有 nnn 个比特,你至少需要查询函数 nnn 次。然而,量子算法仅通过对谕示的一次查询就找到了整个字符串 sss。同样,通过用所有 2n2^n2n 个可能输入的叠加态查询谕示,关于 sss 的每一个比特的信息都被编码进了最终的量子态中。

这是一个没有经典类比的惊人结果。它也揭开了谕示本身的神秘面纱。一个用于 Bernstein-Vazirani 问题的谕示并非某种不可知、神奇的设备。它可以由一系列简单的标准量子门——特别是 CNOT 门——构建而成。秘密字符串 sss 直接编码在实现谕示的量子电路的结构中。谕示是一段硬件,为解决一个问题而被编程。

作为钥匙的谕示:解锁隐藏结构

然而,量子谕示真正的“杀手级应用”不在于揭示静态属性,而在于发现隐藏的模式。数学和计算机科学中许多最困难的问题都可以归结为在一个函数中找到一个周期。

Simon 算法提供了蓝图。想象一个函数,它有一个秘密的“周期字符串” sss,使得 f(x)=f(x⊕s)f(x) = f(x \oplus s)f(x)=f(x⊕s),其中 ⊕\oplus⊕ 是按位异或。经典地,找到 sss 就像在一座巨大、黑暗的豪宅里寻找一个幽灵;它可能需要指数级的查询次数。而使用 fff 的谕示的量子计算机,则采用了一种远为巧妙的技巧。单次查询并不能揭示 sss。相反,它会产生一个随机字符串 yyy,这个字符串与 sss 有着特殊的关系:它们的按位点积为零,即 s⋅y≡0(mod2)s \cdot y \equiv 0 \pmod 2s⋅y≡0(mod2)。这是关于 sss 的比特的一个线性方程。通过重复几次算法,我们收集到这样一个方程组,然后用基本的高中代数知识就足以解出秘密字符串 sss。量子谕示与傅里叶变换相结合,就像一把钥匙,将一个不可能的搜索问题变成了一个可解的方程组。

正是这个原理——使用谕示寻找隐藏周期——是 Shor 算法背后的引擎,这是最著名的量子算法。经典上分解大数 NNN 的困难与寻找模幂函数 f(x)=ax(modN)f(x) = a^x \pmod Nf(x)=ax(modN) 的周期之困难紧密相关。通过构建一个计算此函数的量子谕示,Shor 的算法可以有效地找到这个周期,从而计算出 NNN 的因子。

同样强大的思想也可以被用来对付保护我们数字信息的许多密码系统。现代密码学的大部分安全性都依赖于像离散对数问题(DLP)这类问题的经典计算难度。这个问题要求我们在给定 ggg、hhh 和一个大素数 ppp 的情况下,在表达式 h≡gx(modp)h \equiv g^x \pmod ph≡gx(modp) 中找到指数 xxx。一个拥有量子计算机的对手原则上可以为一个巧妙选择的周期函数(如 F(u,v)=guhv(modp)F(u, v) = g^u h^v \pmod pF(u,v)=guhv(modp))构建一个谕示。这个函数的周期与秘密离散对数 xxx 直接相关。通过找到这些周期,量子计算机可以解开秘密 xxx 并破解加密。谕示这个抽象概念突然变成了对全球安全的非常现实的威胁,从而推动了整个后量子密码学领域的发展。

作为探照灯的谕示:加速非结构化搜索

到目前为止,我们已经看到谕示在处理具有隐藏结构的问题上表现出色。但对于暴力搜索又如何呢?在大海捞针,在未排序的电话簿中寻找特定名字,或在数万亿个可能性中为一个复杂问题找到一个满足条件的解?这正是 Grover 算法的领域。

Grover 算法的谕示只是一个验证器。它不知道答案,但如果看到答案就能认出来。给定一个潜在的解决方案,谕示只会说“是”或“否”。经典地,如果你有一个包含 NNN 个项目的搜索空间,在最坏的情况下你可能需要检查所有 NNN 个项目。Grover 算法使用一种称为振幅放大的过程,仅需约 N\sqrt{N}N​ 次对谕示的查询,就能以高概率找到那个“是”的项目。这不像 Shor 算法那样的指数级加速,而是平方级加速——但它适用于极其广泛的问题。

想象一下试图找到一组补丁来修复一个庞大软件系统中所有已知的漏洞。从 mmm 个可用补丁中找到正确的 kkk 个补丁的组合是 NP 完全的集合覆盖问题的一个例子。组合的数量可能大得惊人,由二项式系数 (mk)\binom{m}{k}(km​) 给出。经典计算机可能不得不尝试所有组合。而量子计算机可以实现一个谕示来检查给定的组合是否有效,Grover 算法将以与该巨大数字的平方根成比例的加速找到一个解决方案。类似的故事也适用于其他后勤噩梦,比如哈密顿路径问题,其目标是找到一条恰好访问网络中每个城市一次的路线。搜索空间的大小为 N!N!N!,量子加速将是 N!\sqrt{N!}N!​。

这种平方级加速甚至可能在计算生物学中找到应用。考虑 k-mer 计数的任务:计算长 DNA 序列中所有可能的长度为 kkk 的子串的出现次数。对于单个目标 k-mer,可以构建一个谕示来检查一段 DNA 是否与之匹配。量子计数,作为 Grover 算法的一个衍生,可以比经典地检查基因组中的每个位置快平方倍地找到总数。

然而,在这里,我们必须注入一剂费曼式的现实主义。虽然计算的量子核心得到了加速,但整个端到端的任务可能并没有。要计数 k-mer,计算机必须首先读取整个 DNA 序列(一个大小为 NNN 的输入),并最终写出所有不同的 k-mer 及其计数(一个大小为 DDD 的输出)。这些输入/输出操作是经典的瓶颈。无论中央处理单元中有多少量子魔法,都无法绕过读取和写入数据所需的时间。因此,虽然量子谕示为搜索本身提供了诱人的加速,但在某些现实世界场景的完整问题中,整体的渐进加速可能会消失。这是一个至关重要的教训:一个系统的速度取决于其最慢的部分。

在知识前沿的谕示:重新定义计算

也许量子谕示最深刻的作用是作为计算机科学基础领域进行思想实验的工具。在这里,物理学家和计算机科学家使用谕示来探究“困难”的本质。

复杂性理论将问题分为诸如 ​​NP​​(“是”的答案易于验证的问题)和 ​​co-NP​​(“否”的答案易于验证的问题)等类别。典型的 NP 完全问题是 SAT:一个给定的布尔公式是否可满足?它的补问题 TAUT——一个公式是否对所有输入都为真?——是 co-NP 完全的。NP 是否等于 co-NP 是一个重大的开放问题。

现在,让我们引入量子谕示。假设,量子计算机可以有效地解决 SAT,这意味着 SAT 属于 ​​BQP​​(有界错误量子多项式时间)类。这将意味着什么?因为一个公式 ψ\psiψ 是一个重言式当且仅当它的否定 ¬ψ\neg\psi¬ψ 是不可满足的,所以我们可以使用我们的 SAT 求解谕示来同样有效地解决 TAUT。这个简单的论证导出了一个惊人的结论:如果一个 NP 完全问题在 BQP 中,那么其对应的 co-NP 完全问题也在 BQP 中。这意味着 NP 和 co-NP 都是 BQP 的子集。从量子计算机的角度来看,NP 和 co-NP 之间看似根本的区别可能并不存在。这个假设性的结果并不能在经典世界中证明 NP=co-NPNP = co\text{-}NPNP=co-NP,但它极大地重塑了我们对计算宇宙的认知版图。

那么,量子计算机可以解决的问题类别 BQP,在这个版图中处于什么位置?我们知道它是一个强大的类别,但并非无所不能。复杂性理论中的一个里程碑式的结果表明 BQP⊆PSPACEBQP \subseteq PSPACEBQP⊆PSPACE,这意味着任何可以由量子计算机在多项式时间内解决的问题,也可以由经典计算机仅使用多项式大小的内存来解决(尽管可能需要指数级的时间)。这个结果的证明之所以非凡,是因为它“相对化”了:即使在拥有任何给定谕示的假设世界中,它都成立。这告诉了我们一些深刻的道理。经典计算机用来模拟量子计算机的方法——一种巧妙的计算技巧,它对所有可能的计算路径进行求和,而无需写下完整的量子态——是如此地稳健,以至于无论使用何种谕示它都有效。这意味着我们无法找到某种巧妙的谕示,能让量子计算机解决 PSPACE 之外的问题。它为量子计算的能力套上了一道根本性的束缚,这个边界不是由技术定义的,而是由信息自身的逻辑所定义。

从一个简单的探针到一个密码学的撬棍,从一盏探照灯到一块哲人石,量子谕示已被证明是一个极其丰富和多功能的概念。它是量子力学定律与计算逻辑相遇的中心枢纽,而在这个交汇处所做的发现,将继续照亮两者最深层的运作方式。