第 11 课 · Simon 算法与 Abel 隐藏子群——统一视角 · 模块二:算法主线

Simon 问题:二对一承诺与生日悖论

  • 命题框:承诺 $f(x)=f(y) \iff y = x\oplus s$($s \ne 0$),任务:求 $s$;$f$ 把 $\{0,1\}^n$ 折叠成 $2^{n-1}$ 对 $\{x, x\oplus s\}$
  • 推导/演算步骤(编号行):
    1. 成对结构演算(教材练习 1 第 1 题):$n=2$、$s=11$ → 全部输入对 $\{00,11\}$、$\{01,10\}$,共 2 对 $= 2^{n-1}$ ✓
    2. 一次碰撞即泄露:$x\ne y$ 且 $f(x)=f(y)$ → $s = x\oplus y$(承诺"仅当"方向直接给出)
    3. 生日悖论:固定 $x$,随机 $y\ne x$ 与之碰撞概率 $1/(2^n-1)$(教材练习 2 第 1 题);$k$ 次查询含 $\approx k^2/2$ 个输入对 → 碰撞概率 $\approx k^2/2^n$
    4. 数值演算 $n=10$:$k=8$ → $64/1024 = 1/16 \approx 6\%$;$k=32 = \sqrt{2^{10}} = 2^5$ → 概率升为常数 → 经典需 $\Theta(2^{n/2}) = \Theta(\sqrt{2^n})$ 次查询
  • 结果框:经典 $\Theta(2^{n/2})$ 次查询才能撞出一次碰撞(等价于求出 $s$)——与量子 $O(n)$ 的差距本课逐步兑现
类型definition-derivation