try ai
科普
编辑
分享
反馈
  • 量子阶寻找算法

量子阶寻找算法

SciencePedia玻尔百科
核心要点
  • 量子阶寻找算法将寻找序列周期的问题转化为量子相位估计问题。
  • 它将用于相位发现的量子傅里叶变换与经典的连分数算法相结合,以提取精确的整数阶。
  • 作为Shor算法的核心,它通过解决整数分解和离散对数问题,对RSA和ECC等主要密码系统构成直接威胁。
  • 其应用超出了密码学的范畴,为探究抽象数学群和数域的结构提供了强大的工具。

引言

量子阶寻找算法是量子计算的基石,它让我们得以一窥利用量子力学原理所释放的深远力量。当经典计算机在处理某些类型的问题(例如在庞大的数学序列中寻找隐藏的重复模式)时举步维艰,量子算法却为求解提供了优雅且指数级更快的路径。本文旨在弥合量子计算抽象理论与其中一个最强大工具的具体运作之间的知识鸿沟。本文将解构阶寻找算法,揭示它如何将一个数论挑战转化为一个量子物理学问题。在接下来的章节中,您将踏上一段从基本原理到改变世界的应用的旅程。“原理与机制”一章将逐步分解该算法,从将周期性编码到量子相位中,到使用量子傅里叶变换提取最终答案。随后,“应用与跨学科联系”一章将探讨此能力的深远影响,从其在破解现代密码学中的著名作用,到其作为纯粹数学中革命性工具的潜力。

原理与机制

想象一下,你身处一个声学特性奇特的房间,想要找到它的基本共振频率。你无法看见声波,但你可以拍手并倾听。拍手声是所有频率的混合,但房间本身会放大其特有的频率。如果你能以某种方式“看到”回声的频谱,你就会在那个共振频率处发现一个尖峰。量子阶寻找算法的原理与此惊人地相似。它对一个数学系统进行“拍手”,并使用量子棱镜来观察哪个“频率”产生了共振。这个频率,在经过恰当的解读后,便揭示了我们所寻找的阶。

乘法的节奏

在我们进入量子世界之前,让我们先来亲手实践一下这个经典问题。我们试图寻找的这个“阶”是什么?让我们取两个数,比如 x=7x=7x=7 和 N=15N=15N=15。现在,我们来看 xxx 的幂次序列,并且总是取除以 NNN 后的余数。这被称为模算术。

  • 71(mod15)7^1 \pmod{15}71(mod15) 就是 777。
  • 72=497^2 = 4972=49,而 49(mod15)49 \pmod{15}49(mod15) 是 444。
  • 73=7×4=287^3 = 7 \times 4 = 2873=7×4=28,而 28(mod15)28 \pmod{15}28(mod15) 是 131313。
  • 74=7×13=917^4 = 7 \times 13 = 9174=7×13=91,而 91(mod15)91 \pmod{15}91(mod15) 是 111。
  • 75=7×1=77^5 = 7 \times 1 = 775=7×1=7,我们又回到了起点!

结果序列为 7,4,13,1,7,4,13,1,…7, 4, 13, 1, 7, 4, 13, 1, \dots7,4,13,1,7,4,13,1,…。它有一个重复的模式,一种节奏。这个重复模式的长度是 444。我们称 777 模 151515 的​​阶​​为 r=4r=4r=4。对于任何互质的整数 xxx 和 NNN,这个序列 xk(modN)x^k \pmod Nxk(modN) 总是周期性的,而阶寻找问题就是找到这个周期的长度 rrr。对于小数,我们可以手工计算。但如果 NNN 是一个200位的数字,这将比宇宙的年龄还要长。我们需要一种更好的方法。我们需要一台量子计算机。

将节奏转化为相位

这是第一个天才之举。我们不能直接告诉量子计算机去乘数并寻找重复。我们需要将问题转化为它的母语:量子态、算符和相位的语言。

让我们定义一个量子算符,称之为 UxU_xUx​,它执行我们的模乘法。它的任务很简单:它接收一个代表数字 ∣y⟩|y\rangle∣y⟩ 的量子态,并将其转换为代表数字 ∣(xy)(modN)⟩|(xy) \pmod N\rangle∣(xy)(modN)⟩ 的量子态。因此,U7U_7U7​ 作用在态 ∣1⟩|1\rangle∣1⟩ 上会得到 ∣7(mod15)⟩|7 \pmod{15}\rangle∣7(mod15)⟩。再次作用它会得到 ∣49(mod15)⟩|49 \pmod{15}\rangle∣49(mod15)⟩,也就是 ∣4⟩|4\rangle∣4⟩。将 UxU_xUx​ 反复作用于态 ∣1⟩|1\rangle∣1⟩ 会让我们正好走过我们之前发现的循环:∣1⟩→∣7⟩→∣4⟩→∣13⟩→∣1⟩…|1\rangle \to |7\rangle \to |4\rangle \to |13\rangle \to |1\rangle \dots∣1⟩→∣7⟩→∣4⟩→∣13⟩→∣1⟩…。

这很有用,但真正的魔力发生在我们提出一个不同问题的时候。与其问 UxU_xUx​ 对简单态做什么,不如问它让哪些态(几乎)保持不变。在量子力学中,这些特殊的、有弹性的态被称为​​本征态​​。UxU_xUx​ 的一个本征态 ∣ψ⟩|\psi\rangle∣ψ⟩ 是指当你对其应用该算符时,你会得到相同的态,只是乘以一个称为​​本征值​​的复数 λ\lambdaλ。也就是说,Ux∣ψ⟩=λ∣ψ⟩U_x |\psi\rangle = \lambda |\psi\rangleUx​∣ψ⟩=λ∣ψ⟩。

事实证明,对于我们的算符 UxU_xUx​,存在着由循环中所有态的叠加构成的优美本征态。对于我们 r=4r=4r=4 的例子,一系列这样的态看起来是这样的: ∣ψs⟩=1r∑k=0r−1exp⁡(−2πiskr)∣xk(modN)⟩|\psi_s\rangle = \frac{1}{\sqrt{r}} \sum_{k=0}^{r-1} \exp\left(-\frac{2\pi i s k}{r}\right) |x^k \pmod N\rangle∣ψs​⟩=r​1​∑k=0r−1​exp(−r2πisk​)∣xk(modN)⟩ 其中 s=0,1,…,r−1s=0, 1, \dots, r-1s=0,1,…,r−1。当我们把算符 UxU_xUx​ 应用于其中一个态,比如 ∣ψs⟩|\psi_s\rangle∣ψs​⟩ 时,我们发现该态保持不变,但它获得了一个相位。而这个相位是一切的关键。本征值为: λs=exp⁡(2πisr)\lambda_s = \exp\left(\frac{2\pi i s}{r}\right)λs​=exp(r2πis​) 仔细看那个相位!它包含了 rrr,正是我们所要寻找的阶!在我们的例子中,x=7,N=15x=7, N=15x=7,N=15,我们找到了 r=4r=4r=4。如果我们把系统制备在对应于 s=1s=1s=1 的本征态上,其本征值将是 λ1=exp⁡(2πi⋅1/4)=i\lambda_1 = \exp(2\pi i \cdot 1/4) = iλ1​=exp(2πi⋅1/4)=i。我们已成功地将关于周期 rrr 的信息编码到了一个本征值的相位中。现在问题已经转化:为了找到阶 rrr,我们必须测量相位 ϕs=s/r\phi_s = s/rϕs​=s/r。

量子棱镜:寻找相位

这是一个量子计算机极其擅长的问题,通过一个称为​​量子相位估计​​的程序来解决。其核心是卓越的​​量子傅里叶变换 (QFT)​​,即经典信号处理中傅里叶变换的量子模拟。可以把QFT想象成一个完美的棱镜。如果你将白光(所有颜色的混合)射入棱镜,它会将光分离成其组成的彩虹色。同样,如果你给QFT输入一个作为多种不同“频率”叠加态的复杂量子态,QFT会将其转换为一个每个纯频率都被清晰分离并可以被测量的态。

该算法设置了两个寄存器。一个“目标”寄存器被制备在某个本征态 ∣ψs⟩|\psi_s\rangle∣ψs​⟩ 上。一个“控制”寄存器被制备在从 000 到 Q−1Q-1Q−1 所有可能数字的均匀叠加态上,其中 Q=2nQ=2^nQ=2n 是一个 nnn 量子比特的寄存器。然后,一系列受控操作有效地将本征态的相位“印刻”到控制寄存器上。控制寄存器的状态变成一个叠加态,其中每个基态 ∣j⟩|j\rangle∣j⟩ 的振幅都被一个相位 exp⁡(2πijs/r)\exp(2\pi i j s/r)exp(2πijs/r) 扭曲了。这创造了一个具有由 s/rs/rs/r 决定的单一纯频率的态。

当我们对这个控制寄存器应用逆量子傅里叶变换时,我们的量子棱镜便开始工作。它接收这个单频信号,并将其所有振幅聚焦到一个单一的输出态上。当我们测量该寄存器时,我们得到一个数字 kkk。在一个理想的、完美的世界里,如果 Q⋅s/rQ \cdot s/rQ⋅s/r 是一个整数,那么测量将总是得到结果 k=Q⋅s/rk = Q \cdot s/rk=Q⋅s/r。测量到这个精确的 kkk 的概率是1,而测量到任何其他值的概率恰好是0。在更现实的情况下,测量概率将在值 Q⋅s/rQ \cdot s/rQ⋅s/r 附近呈现尖峰,这意味着我们的测量值 kkk 将非常非常接近这个值。

从量子测量到经典答案

我们差不多成功了。量子计算机完成了它宏伟的工作,给了我们一个经典的整数 kkk。我们知道: kQ≈sr\frac{k}{Q} \approx \frac{s}{r}Qk​≈rs​ 这是对相位的一个绝佳近似,但它不是我们的最终答案。我们想要 rrr,但我们不知道 sss(它是在本征态被“选择”时由自然随机决定的)。此外,k/Qk/Qk/Q 只是一个近似值。我们如何从像 341/1024341/1024341/1024 这样复杂的十进制数中提取出简单的分数 s/rs/rs/r 呢?

这时,一个优美的经典数论工具——​​连分数算法​​——前来救场。这个算法是寻找任何数字的最佳有理逼近的终极工具。你给它一个像 341/1024341/1024341/1024 这样的分数,它会生成一系列越来越好的、逼近它的简单分数,称为渐近分数。对于分数 341/1024341/1024341/1024,其渐近分数序列的前几项是 0/1,1/2,1/3,…0/1, 1/2, 1/3, \dots0/1,1/2,1/3,…。我们正在寻找一个分母 rrr 不太大的分数 s/rs/rs/r(它必须小于 NNN)。在这种情况下,1/31/31/3 是一个主要候选者。我们可以快速检查分母 r=3r=3r=3 是否是正确的阶,如果是,我们就成功了!

探索的现实:微妙之处与策略

当然,宇宙很少如此简单。一个物理理论的真正美妙之处在于它如何处理那些棘手的细节。

  • ​​掷骰子般的随机性:​​ 量子测量随机挑选出其中一个相位 ϕs=s/r\phi_s = s/rϕs​=s/r 来进行估计。如果随机选择的 sss 恰好与 rrr 互质,那么连分数方法将产生 rrr。但如果不是呢?假设真实的阶是 r=4r=4r=4,而我们碰巧测量了 s=2s=2s=2 的相位。我们的比率是 k/Q≈2/4=1/2k/Q \approx 2/4 = 1/2k/Q≈2/4=1/2。连分数算法将忠实地报告这个简化了的分数,给我们的分母是 222,而不是 444!我们找到了真实阶的一个因子,或称​​子阶​​。这不是失败,而是一个不完整的线索。

  • ​​整合线索:​​ 如果一次算法运行给出的候选阶 r′r'r′ 不成立(即 xr′≢1(modN)x^{r'} \not\equiv 1 \pmod Nxr′≡1(modN)),那么很可能我们找到了这样一个子阶。我们该怎么办?我们再运行一次!第二次运行可能会给我们另一个子阶。假设第一次运行给我们 s1=90s_1=90s1​=90,第二次运行给我们 s2=105s_2=105s2​=105。那么真实的阶 rrr 必须同时是这两者的倍数。因此,rrr 最可能的候选者是满足此条件的最小数:​​最小公倍数 (lcm)​​。在这种情况下,lcm(90,105)=630\text{lcm}(90, 105) = 630lcm(90,105)=630。通过结合“失败”运行中的线索,我们可以锁定正确答案。

  • ​​宏观视角:​​ 这整个阶寻找机器是Shor算法中用于分解 NNN 的量子引擎。一旦我们找到了一个随机选择的数 xxx 的阶 rrr,我们检查 rrr 是否为偶数。如果是,我们可以计算 gcd⁡(xr/2−1,N)\gcd(x^{r/2}-1, N)gcd(xr/2−1,N) 和 gcd⁡(xr/2+1,N)\gcd(x^{r/2}+1, N)gcd(xr/2+1,N),它们很可能是 NNN 的非平凡因子。但有时,统计数据对我们不利。我们可能发现 rrr 是奇数,或者我们的计算得出了一个平凡因子(如1和 NNN)。在这些情况下,对于那个特定的 xxx 分解失败了。这不是量子算法的失败,而是它所基于的数论的一个特性。我们只需丢弃那个 xxx,换一个新的再试一次。成功的概率非常高,以至于尝试几次几乎保证会成功。

挑战极限

像任何优秀的科学仪器一样,当我们把阶寻找算法推向极限,甚至“不正确地”使用它时,它会揭示出迷人的物理学。

  • ​​如果我们打破第一条规则会怎样?​​ 理论建立在 xxx 和 NNN 互质的基础上。如果我们用它来处理一对像 x=12,N=30x=12, N=30x=12,N=30 这样共享一个公因子6的数会怎样?序列 12k(mod30)12^k \pmod{30}12k(mod30) 不再是严格周期性的。它变为最终周期性:1,12,24,18,6,12,24,…1, 12, 24, 18, 6, 12, 24, \ldots1,12,24,18,6,12,24,… 在最初几步之后,它落入一个长度为4的循环。那么量子算法会发现什么?它会发现这个循环的周期,r′=4r'=4r′=4。该算法足够稳健,能够找到任何存在的周期性。

  • ​​硬件缺陷怎么办?​​ 真实的量子计算机存在错误。假设我们的量子门并不完美,每次应用 UxU_xUx​ 算符时都会引入一个小的、系统性的相位误差 δ\deltaδ。这会毁掉计算吗?不。它只是将这个额外的相位加到了我们试图测量的相位上。结果是,最终测量的峰值 kkk 会发生一个可预测的偏移。这显示了非凡的韧性;算法对相位很敏感,但其方式可以被分析并可能被校正。

  • ​​如果我们的硬件太小了怎么办?​​ 假设我们想找到 x=3x=3x=3 模 N=55N=55N=55 的阶,但我们量子计算机的目标寄存器只能处理模 111111 的算术。算法将运行一个不同的酉算子 U3,11′U'_{3,11}U3,11′​,而不是 U3,55U_{3,55}U3,55​。算法不会失败,而是会尽职地报告 333 模 111111 的阶,即 r′=5r'=5r′=5。这个“失败”实际上是对中国剩余定理的实验性证明!模 555555 的真实阶(为 202020)是模 555 的阶(为 444)和模 111111 的阶(为 555)的最小公倍数。在一个美妙的转折中,硬件的限制帮助我们剖析了问题的数学结构。

归根结底,量子阶寻找算法不仅仅是用于因数分解的巧妙子程序。它是量子思维方式的深刻展示:将一个寻找周期的数字、离散问题,转化为一个寻找相位的模拟、波动问题。这是经典数论与量子叠加之间的一支舞蹈,证明了将世界不仅仅看作比特的集合,而是看作振动、干涉的概率波交响乐的力量。

应用与跨学科联系

既然我们已经摆弄了量子阶寻找算法的引擎,观察了它的齿轮——相位估计、巧妙的傅里叶变换——现在是时候开着它去兜风了。这真是一趟非凡的旅程!这不仅仅是某个实验室的好奇之物,一个寻找问题的解决方案。它是一把万能钥匙,能打开以前被认为无法撬开的锁。它的发现,给远离其诞生地的量子物理实验室的诸多领域带来了震动。在本章中,我们将穿越这些领域,从非常实用的数字安全世界到纯粹数学的领域,来领略寻找隐藏节奏的真正力量和惊人范围。

密码破解者的噩梦

在我们现代世界,一个巨大的数字堡垒保护着我们的秘密——银行转账、私人信息、安全网站。这个堡垒的墙壁是由数学问题构筑的,这些问题被设计成易于建立但解决起来却异常困难。几十年来,其中两堵最坚固的墙是​​整数分解​​问题和​​离散对数​​问题。

例如,著名的RSA密码系统的安全性,依赖于一个听起来简单的事实:虽然将两个大素数相乘对于计算机来说轻而易举,但取它们的乘积来找出原始素数却异常困难。这就像把两种颜色的颜料搅拌在一起;混合容易,分离开来几乎不可能。而Shor算法,以阶寻找算法为核心,正是一个非凡的“分离器”。

诚然,完整的算法包含了一些经典的巧妙之处。有时,你可能运气好,在量子魔法开始之前,仅通过计算一个随机选择的数与你的大数 NNN 的最大公约数,就用简单的经典检查找到了 NNN 的一个因子。但真正的威胁,真正的革命,在于量子部分。通过巧妙地将分解 NNN 的问题改写为在整数模 NNN 群中寻找一个元素的阶的问题,该算法将一个不可能的经典任务变成了一个可行的量子任务。它聆听数字结构中隐藏的周期性,并从那个节奏中推导出因子。

但故事并未因RSA而结束。另一堵数学高墙,即离散对数问题(DLP),支撑着其他密码系统,如Diffie-Hellman密钥交换。在这里,任务是在给定 ggg 和 hhh 的情况下,于方程 gx=hg^x = hgx=h 中找到指数 xxx。这就像知道了一段在环形键盘钢琴上演奏的旋律的起始音符和终止音符,却要弄清楚走了多少步。在经典上,这又是一项艰巨的任务。

你可能已经猜到接下来的发展了。破解整数分解的同一个量子阶寻找算法,也破解了离散对数问题。从本质上讲,它们都是数学家所称的阿贝尔群“隐藏子群问题”的实例。该算法的量子傅里叶变换经过精心调谐,可以在任何一种情况下找到隐藏的结构,即秘密的“子群”。这意味着一整类密码系统,而不仅仅是一个,在量子计算机面前都变得脆弱。

这个兔子洞还更深。近年来,密码学家们已经转向更抽象的数学领域来构建他们的堡垒。其中最重要的之一是椭圆曲线密码学(ECC),其中被“相乘”的“数”根本不是数,而是位于一条奇特优美的循环曲线上的点。椭圆曲线上的点群为一个离散对数问题提供了一个极其复杂的环境。然而,因为它本质上仍然是一个有阶可寻的群,其安全性在同样的量子“酸液”中瓦解了。对量子算法来说,群元素是整数、曲线上点还是其他什么东西都无关紧要。只要有一个群,它就能找到阶。正是这种横扫一切的力量,使得阶寻找算法成为一个真正的范式转变,迫使我们去发明全新一代的“后量子”密码学。

深入抽象的“动物园”

同一个工具能够破解如此不同类型的密码锁,这一事实暗示了一个更深层次的真理:该算法的力量不在于数字,而在于结构。它在群论的抽象世界中运作。群只是一个对象(任何对象)的集合,加上一个遵循一些基本一致性法则的组合规则。这些对象可以是整数、矩阵、一副牌的洗牌方式,或是晶体的对称性。阶寻找算法是探测这些群的节奏性质的通用工具。

让我们离开密码学的世界,进入这个数学结构的“抽象动物园”。在现代信息论中,数据经常在称为有限域的结构中被处理。这些是元素数量有限的数系,通常不是由整数而是由多项式构建的。该算法在这里感到宾至如归。它可以像处理整数一样轻松地找到有限域中元素的乘法阶,从而揭示该域的循环结构。

那么变换群呢?物理学的语言是用矩阵书写的,矩阵代表了空间的旋转、缩放和其他变换。所有来自有限域且行列式为1的 2×22 \times 22×2 矩阵集合构成一个称为 SL2(Fp)SL_2(\mathbb{F}_p)SL2​(Fp​) 的群。这是一个更为复杂的非阿贝尔群,其中乘法顺序至关重要。然而,如果我们从这个群中挑选一个矩阵,并问“这个变换必须应用多少次才能回到起点?”,我们就是在求它的阶。这会生成一个循环(因此是阿贝尔)子群,而我们的量子算法可以毫不费力地找到那个阶。它甚至可以处理在数论深入研究中出现的更深奥的矩阵群,例如主同余子群。

即使是简单的洗牌动作也具有群结构。8个物品的所有可能排列或洗牌方式的集合构成了“对称群” S8S_8S8​。每次洗牌都有一个阶——即必须重复多少次才能使物品回到原始序列。一个排列可以被分解为不相交循环,就像是同时发生的小规模独立洗牌。量子算法非常敏感,如果你用一个混合了来自不同循环元素的态来启动它,其最终测量结果将反映所有这些循环的节奏,其概率与它们的长度相关 [@problem-id:160788]。这就像敲响一个由多种金属制成的钟;量子测量就像对产生的声音进行傅里叶分析,告诉你它所含金属的共振频率。

揭示数字的最深层结构

旅程并未止于这些抽象结构。阶寻找算法最深远的应用或许是在纯数论——“数学的女王”——之中。在这里,它有潜力解决困扰数学家几个世纪的问题。

数论学家不仅研究普通整数。他们探索广义的数系,如高斯整数,即形如 a+bia+bia+bi 的数,其中 i=−1i = \sqrt{-1}i=−1​。就像我们可以将一个整数如 212121 分解为 3×73 \times 73×7 一样,我们也可以尝试将一个高斯整数如 555 分解为 (1+2i)(1−2i)(1+2i)(1-2i)(1+2i)(1−2i)。量子阶寻找算法可以被调整以在这些数系中工作,为探索新领域的因数分解提供了一个工具。这个问题让我们得以一窥其深层理论:该算法通过将问题投影到由群特征标定义的“傅里叶空间”来工作,而群特征标是群的基本频率或共振。

其巅峰成就可能是它在数域​​类群​​上的应用。简单来说,在某些数系中,我们熟悉的素数唯一因子分解思想不再成立。类群是一个有限群,它精确地衡量了这种失败的“程度”。它是代数数论中的一个基本对象,但经典计算它是一个极其困难的问题。类群的结构与其元素的阶有关。因此,我们的量子算法可以被用来探索类群的结构,这是现代数论最核心的任务之一。一个物理设备,一台量子计算机,可以被用来解决纯粹数学中最抽象、最核心的问题之一,这个想法简直令人震惊。它是连接物理世界与柏拉图世界的一座桥梁。

警示之言:当量子之锤砸错了钉子

在见识了这一系列辉煌的成功之后,人们很容易得意忘形,认为量子计算机可以加速任何难题。这是一个至关重要的误解。量子计算机不是万能的魔杖;它是一种专门的工具,你需要有合适的钉子才能用这把特别的量子锤。

考虑一个来自生物信息学领域的完全不同类型的难题:基因组组装。基因组测序后,它被切成数百万个微小的、重叠的DNA片段。计算任务是将这些片段以正确的顺序拼接起来,以重建原始基因组。在一个理想化的情况下,这等同于在一个巨大而复杂的图中找到一种特殊的路径——欧拉路径——它恰好遍历每个连接一次。

这是一项计算密集型任务。我们的量子工具包能帮忙吗?答案或许令人惊讶,是不能。寻找欧拉路径的问题似乎不具备阶寻找算法旨在利用的隐藏周期性结构。没有明显的群需要我们去寻找其阶。更根本的是,问题的答案是整个基因组序列——一个可能包含数十亿个字符的字符串。任何算法,无论是经典的还是量子的,至少都必须花时间写下这个庞大的答案。一个经典算法已经可以在与其长度成正比的时间内找到路径。你不可能在渐进性上比这更快!

这是一个很好的教训。量子加速并非凭空而来。它需要一种特定的问题结构,我们寻求的答案是一个小信息片段(比如一个阶,rrr),它能告诉我们关于一个巨大、隐藏模式的信息。量子算法擅长于在草堆中寻找这根针,但如果任务仅仅是描述整个草堆,它则不具备任何优势。

最初只是一个特定的量子程序,却引领我们进行了一次宏大的巡礼。我们见证了它重塑数字社会的力量,它作为探究抽象代数的通用工具的效用,以及它与数论最深刻问题的紧密联系。我们也了解了它的局限性,而这反过来又教会了我们,是什么让那些可解问题如此特别。量子阶寻找算法是物理学、数学和信息学之间意想不到而又美妙统一的证明。它向我们展示了,支配量子领域的奇特规则,与人类逻辑和思想的最深层模式产生了共鸣。