跳到正文
EN

9.9

Shor 算法思想

因数分解 → 求周期 → 用 QFT 读周期:三级跳的每一步都手算 N = 15 的例子;多项式对亚指数的量级差距,正悬在 RSA 头顶。

建议先掌握

学完本节你应该能

  • 复述完整链条:分解 N ⇒ 求 a^x mod N 的周期 r ⇒ 由 gcd(a^{r/2} ± 1, N) 取出因子
  • 用 N = 15、a = 7 手算全流程,验证每一环
  • 解释 QFT 为什么能把「周期」变成「可测的峰」:周期叠加 → 干涉集中
  • 对比量子 O((log N)³) 与经典亚指数复杂度,说清对 RSA 的现实威胁与时间表

Grover 的结尾指了条路:要指数加速,得找有结构的问题。 1994 年 Peter Shor 找到了那个问题——大数因数分解。 它的结构是一种隐藏的周期性,而「用干涉找周期」, 从双缝实验起就是量子力学的看家本领。 这一节不深入数论证明,但把整条逻辑链和量子部分算透。

问题开门:一道乘法容易、除法要命的算术题

3×5=153\times5=15,口算。反过来「15 = ? × ?」也不难。 但把数字换成 617 位(2048 比特):两个千位大素数相乘,电脑毫秒级完成; 从乘积反推两个因子,用已知最快的经典算法(数域筛), 需要的时间量级是

exp ⁣[c(lnN)1/3(lnlnN)2/3],c1.9(9.9.1)\exp\!\left[c\,(\ln N)^{1/3}(\ln\ln N)^{2/3}\right],\qquad c\approx1.9\tag{9.9.1}

——亚指数:比多项式糟得多。对 2048 位的 NN, 今天全球算力加起来也要以千年计。RSA 公钥密码的安全性正是押在这条单行道上: 公钥里明晃晃写着 NN,谁能分解它谁就能读一切密文。

第一级跳:分解 ⇒ 求周期(经典数论,只用结论)

Shor 的第一步是把问题改写。随便挑一个与 NN 互素的 aa,考察模幂函数

f(x)=axmodN(9.9.2)f(x)=a^x \bmod N\tag{9.9.2}

它必然是周期的:f(x+r)=f(x)f(x+r)=f(x),最小正周期 rraa。 数论给出一座桥(陈述不证):

rr 是偶数,且 ar/2≢1(modN)a^{r/2}\not\equiv-1\pmod N,则 gcd(ar/21,N)\gcd(a^{r/2}-1,\,N)gcd(ar/2+1,N)\gcd(a^{r/2}+1,\,N) 给出 NN 的非平凡因子。

直觉一句话:ar1a^r\equiv1 意味着 (ar/21)(ar/2+1)0(modN)(a^{r/2}-1)(a^{r/2}+1)\equiv0\pmod N—— NN 整除这个乘积却(在条件下)不整除任一因子, 所以 NN 的素因子被拆开分给了两边,用 gcd\gcd(辗转相除,快得很)各领回一个。 随机选 aa 时条件以至少 1/21/2 的概率满足,不满足就换个 aa 重来。

手算 N=15N=15,取 a=7a=7

71=7,72=494,732813,74911(mod15)(9.9.3)7^1=7,\quad 7^2=49\equiv4,\quad 7^3\equiv28\equiv13,\quad 7^4\equiv91\equiv1\pmod{15}\tag{9.9.3}

周期 r=4r=4,偶数,且 724≢17^2\equiv4\not\equiv-1。于是

gcd(721,15)=gcd(48,15)=3,gcd(72+1,15)=gcd(50,15)=5(9.9.4)\gcd(7^2-1,15)=\gcd(48,15)=3,\qquad \gcd(7^2+1,15)=\gcd(50,15)=5\tag{9.9.4}

15=3×515=3\times5,成功。整个算法里唯一困难的步骤只剩:求周期 rr 经典地求周期不比直接分解便宜(要把 ff 算到上万亿步才见一个循环); 量子力学接手的正是这一步。

第二级跳:把周期装进叠加态

照 DJ 的方子开场:第一寄存器(tt 个 qubit,Q=2tr2Q=2^t\gg r^2)打满 HH, 对每个 xx 并行算模幂,写入第二寄存器:

1Qx=0Q1xaxmodN(9.9.5)\frac{1}{\sqrt Q}\sum_{x=0}^{Q-1}\ket{x}\ket{a^x\bmod N}\tag{9.9.5}

现在测量第二寄存器(也可以不测,只是讲解方便),得到某个值 f0f_0。 第一寄存器随之塌缩到所有给出该值的 xx 的等权叠加—— 而这些 xx 恰好构成一个等差数列 x0, x0+r, x0+2r,x_0,\ x_0+r,\ x_0+2r,\dots

Ψ=1mj=0m1x0+jr,mQ/r(9.9.6)\ket{\Psi}=\frac{1}{\sqrt m}\sum_{j=0}^{m-1}\ket{x_0+jr},\qquad m\approx Q/r\tag{9.9.6}

周期已经刻进态里,但直接测量只会随机吐出一个 x0+jrx_0+jr—— 随机起点 x0x_0 把周期信息搅浑了(每轮重跑 x0x_0 都不同)。老问题: 装进去的信息取不出来。老答案:干涉。这次的干涉机器是量子傅里叶变换。

第三级跳:QFT 把周期变成峰

量子傅里叶变换(QFT)是 DJ 里那排 HH 的豪华版——把「按位相位」升级为「连续相位」:

QFTx=1Qy=0Q1e2πixy/Qy(9.9.7)\mathrm{QFT}\ket{x}=\frac{1}{\sqrt Q}\sum_{y=0}^{Q-1} \ee^{2\pi\ii xy/Q}\ket{y}\tag{9.9.7}

HnH^{\otimes n} 的相位只有 ±1\pm1;QFT 的相位在单位圆上取 QQ 个刻度。 它可用 O(t2)O(t^2) 个门实现——HH 加受控相位旋转,本节不展开线路。)

接下来

Shor 需要万亿级的门操作接连不出错,而真实的 qubit 娇气得很: 门误差百分之一都算优秀,放着不动也会悄悄漂移。 经典计算机靠冗余备份纠错,可是量子态不可克隆(9.5 节)、 一测就塌(9.1 节)——还怎么备份、怎么发现错误? 下一节是本章压轴:量子纠错。它的答案漂亮得出人意料, 而且正是这章所有概念——纠缠、测量、稳定的关联——的一次总集合。

全站第 73 / 106 节 · 用 翻页