// PC530 技术论坛 v1.0
● online 登录 / 注册
返回列表
人工智能与数据科学 #量子

【量子】三大量子算法直觉课:Deutsch-Jozsa、Grover 与 Shor【系列第 3 篇】


量子计算系列 · 第 3 篇
第 1 篇聊「能改变什么」,第 2 篇讲「qubit 是什么」。本篇进入 算法——三个里程碑式算法,分别回答三个不同的问题:
量子能不能比经典「少问几次就分出两类函数」?能不能更快搜到目标?能不能更快分解大整数?


先建立坐标系:量子加速不是同一种加速

算法 问题类型 经典复杂度 量子复杂度 实际影响
Deutsch-Jozsa 判断函数是否「恒定」 O(2ⁿ⁻¹) 最坏 O(1) 一次查询 教学意义 > 工程
Grover 无序数据库搜索 O(N) O(√N) 对称密码学密钥长度建议加倍
Shor 大整数分解 / 离散对数 亚指数(经典最优) 多项式 威胁 RSA/ECC,推动 PQC

三者的共同点:利用干涉(interference)把「错误答案」的概率幅抵消,「正确答案」的概率幅放大——而不是「2ⁿ 个并行宇宙各算一遍再汇总」。


算法一:Deutsch-Jozsa ——「问一次就够」的教科书开场

问题设定

有一个隐藏函数 f: {0,1}ⁿ → {0,1},承诺属于两类之一:

  • 恒定(constant):所有输入输出相同,如 f(x)=0 或 f(x)=1
  • 平衡(balanced):恰好一半输入得 0、一半得 1

经典算法最坏要查 2ⁿ⁻¹ + 1 次才能确定类别。
Deutsch-Jozsa(DJ)算法:1 次 对 f 的「量子查询」即可判定。

直觉(n=1 的最简版)


|0⟩ ──H──●──H──  测 → 0 则 constant,1 则 balanced
|1⟩ ──H──⊕──H──
         f

- 第一个 H 制造叠加:同时「询问」f(0) 与 f(1) 的输入
- Oracle(黑盒 f)把相位写入:f(0) 时 |0⟩ 不变,f(1) 时 |1⟩ 取负——**相位 kickback**
- 第二个 H 让路径 **相长 / 相消干涉**
- 测量:恒定函数 → 一定测得 0;平衡函数 → 一定测得 1

### 为什么重要、为什么不常用

**重要**:历史上 **第一个严格证明** 量子计算可在特定任务上 **指数级减少查询次数**。  
**不常用**:现实世界很少遇到「函数承诺恒定或平衡」这种人造约束;它是 **理解 oracle + 干涉** 的训练轮。

---

## 算法二:Grover —— 无序搜索的 √N 加速

### 问题设定

在 N = 2ⁿ 个条目中,恰好 1 个标记为「目标」。经典最坏要试 **N 次**;Grover 约 **π/4 · √N** 次。

### 几何直觉:在 Bloch 空间里旋转

把「目标态 |t⟩」和「其余均匀叠加态」张成二维平面:

1. **Oracle**:对 |t⟩ 做 **相位翻转**(乘以 -1)
2. **Diffusion(扩散算子)**:对均匀态做反射——「关于平均值的镜像」

每重复一轮 Oracle + Diffusion,状态向量 **向 |t⟩ 旋转约 2θ**,其中 sin θ ≈ 1/√N。  
大约 **√N 轮** 后,测得 |t⟩ 的概率接近 1。
        初始均匀态
           ↘  Oracle 翻转目标相位
              ↘  Diffusion 放大差异
                 ↘  重复 ~√N 次
                    → 高概率测中目标

能加速什么、不能加速什么

适用 不适用
暴力破解对称密钥(AES 密钥搜索) 排序(有结构的问题,经典更优)
SAT、图问题在某些启发式框架里作子程序 任意 NP 问题自动多项式加速(没有这种通用结果)
组合优化(配合 QAOA 等变分方法) 「把 Grover 套在 LLM 训练上」——不成立

对安全的实际含义

Grover 把 对称密码 的有效密钥长度减半(128 位 AES → 量子下约等价 64 位经典搜索难度,但仍需极大量子资源)。
所以 AES-256 在 post-quantum 语境下仍是合理选择;真正急的是 RSA/ECC(见 Shor)。


算法三:Shor —— 改变复杂度「类别」的分解算法

问题设定

给定合数 N,求一个非平凡因子。
RSA 的安全性建立在:经典计算机分解大整数「 практически不可行」

Shor(1994)证明:在量子计算机上,分解 N 可在 多项式时间 完成——不是快常数倍,是 从亚指数到多项式 的跃迁。

核心思路:分解 ≈ 找周期

  1. 随机选 a < N,求 gcd(a, N);若 >1 则 lucky,直接得因子
  2. 否则考虑函数 f(x) = aˣ mod N 的 周期 r
  3. 经典:求周期很难
  4. 量子:量子相位估计(QPE) + 量子傅里叶变换(QFT) 提取周期

量子傅里叶变换(QFT)在干什么

经典离散傅里叶变换:O(N log N)。
量子 QFT 对 n 个 qubit 的状态:O(n²) 个门——对 2ⁿ 维向量做 FFT 的量子版本。

QPE 把「本征相位 φ」读出来,φ 与 aˣ mod N 的周期 r 相关;
知道 r 后,用经典算法 gcd(a^(r/2) ± 1, N) 得到因子。

威胁有多大、什么时候成真

因素 现状(2026 视角)
算法 Shor 已成熟
硬件 分解 RSA-2048 估计需 数百万逻辑 qubit + 极长相干时间
时间线 业界常提 2030s–2040s 才可能威胁现行 RSA
对策 NIST PQC 已标准化 ML-KEM、ML-DSA 等,迁移应 现在启动

Harvest Now, Decrypt Later:对手今天截获密文,等量子机成熟再解密——长期保密数据(政府、医疗、基础设施)尤其紧迫。


三算法对比:一张表带走

DJ Grover Shor
年代 1992 1996 1994
加速类型 查询复杂度指数 搜索平方 分解/离散对数 指数→多项式
核心工具 相位 kickback + H Oracle + Diffusion QFT + QPE
工程价值 低(玩具问题) 中(对称密码、优化子程序) 高(公钥密码存亡)
学习价值 入门干涉 理解振幅放大 理解 QFT 与密码学

伪代码级流程(Grover,n=3 即 N=8)

# 概念流程,非完整 Qiskit
n = 3
qc = uniform_superposition(n)      # H⊗n |0⟩

iterations = int(pi/4 * sqrt(2**n))  # ≈ 2 次 for N=8
for _ in range(iterations):

    qc.oracle_mark_target(t)     # 目标相位 -1

    qc.diffusion()               # 关于平均反射
qc.measure_all()
# 高概率得到 |t⟩

```

Shor 的完整电路 远更复杂(模幂、QFT、经典后处理),建议用 Qiskit 教程 shor 模块跑小 N(如 15=3×5)看整体 pipeline,不必手推每个门。


常见误解澄清

误解 正解
「Grover 能破解 AES」 只能 平方级加速暴力搜索;AES-256 仍安全裕度大
「Shor 一出来 HTTPS 全废」 需大规模 容错 机;且 PQC 可替换握手算法
「DJ 证明了量子计算机万能」 只针对 极特殊承诺 的 oracle 问题
「有量子算法就能在 NISQ 上跑 Shor 分解 RSA」 当前噪声规模 远不够;Shor 演示多在 tiny N

与 AI / 数据科学的关系(本系列为何写在这里)

  1. Grover 可加速 无结构搜索——某些超参搜索、哈希碰撞、特征子集暴力筛选在理论上受益(常数大,实际慎用)
  2. Shor / 后量子 影响 模型部署、联邦学习、API 密钥 的长期加密方案
  3. QFT / 相位估计量子机器学习 里很多变分算法的数学 cousin
  4. 理解「 什么能加速、什么不能 」——避免被「量子 AI 1000 倍训练」营销忽悠

系列导航

篇序 主题 状态
第 1 篇 容错量子机若今日可用,能改变什么 已发 /forum/12/
第 2 篇 量子比特:叠加、纠缠、测量 待发 forum-quantum-series-02.md
第 3 篇 三大算法:DJ、Grover、Shor 本文
第 4 篇 量子纠错:物理比特 vs 逻辑比特 待写
第 5 篇 量子机器学习: hype 与真实用例 待写
第 6 篇 普通人如何入门:Qiskit、学习路径 待写

下一篇预告:为什么 Google 用 1000 个物理 qubit 才换 1 个「逻辑 qubit」?表面码、阈值定理、以及 NISQ 与容错之间还差什么。