# 碰撞与元素唯一性:从抽样加 Grover 到 Johnson 图量子行走 "找两个相同输出"是算法设计中最常见的需求之一:密码学家想知道一个哈希函数是否容易被找到碰撞(生日攻击),数据库系统要检测重复记录,而许多量子算法的核心子程序本质上都是某种碰撞搜索。但在量子查询复杂度的语境下,"碰撞"其实对应两个经常被混淆、难度却截然不同的版本。**Collision problem** 带有强承诺:函数要么是一一的,要么是严格二对一的;**element distinctness** 没有任何承诺,只问列表中是否存在任意重复。前者可以用 $O(N^{1/3})$ 次查询解决,后者的最优查询复杂度是 $\Theta(N^{2/3})$。两个指数 $1/3$ 与 $2/3$ 都不是凭空掉下来的:它们分别来自"样本表大小 $r$"与"Grover 搜索成本"、"量子行走维护成本"与"命中标记态成本"之间的平衡。本课的目标是把这两个平衡逐项推导出来,并沿此框架扩展到 $k$-distinctness、claw finding 与多碰撞问题。 阅读本课需要的前置知识:Grover 搜索与振幅放大(ch03)、量子行走的基本概念(ch06 的量子行走一课有所帮助但不必须)、以及查询模型(oracle model)的约定——我们把一次对 $f(i)$ 的求值记为一次查询,而查询之外的计算暂不计费,到第 8 节再回头清算这笔账。 :::{admonition} 本课知识点 :class: tip 1. **[碰撞与元素唯一性的承诺差异](#promise-difference)**——能写出两个问题的承诺与判定任务,说明承诺问题与完全函数的区别,并用碰撞证据数量的多寡解释 $N^{1/3}$ 与 $N^{2/3}$ 的难度差直觉。 2. **[经典基线:生日悖论与线性下界](#classical-baseline-collision-element-distinctness)**——能推导抽 $r$ 个样本全无碰撞的概率 $P_{\mathrm{no}}\approx e^{-r(r-1)/2N}$,并分别说明 collision 的 $\Theta(\sqrt N)$ 与 element distinctness 的 $\Theta(N)$ 论证。 3. **[抽样表加 Grover 算法](#sampling-grover)**——能写出建表与表外 Grover 两步,论证二对一承诺下表外恰有 $r$ 个标记项,令两项同阶解出 $r=N^{1/3}$,并定量说明该套路对唯一碰撞退化为 $\Omega(N)$。 4. **[量子行走搜索框架与 Johnson 图实现](#walk-search-framework)**——能写出成本公式 $S+O(1/\sqrt{\delta\epsilon})\cdot(U+C)$、说明三种成本在 Johnson 图 $J(N,r)$ 上分别为 $r$、$O(1)$、$0$ 次查询,并解释两个平方根因子分别来自振幅放大与谱隙。 5. **[标记比例、谱隙与参数平衡](#epsilon-delta-balance)**——能由组合计数导出 $\epsilon=\Theta(r^2/N^2)$、由 Johnson 图特征值导出 $\delta=\Theta(1/r)$,并平衡 setup 与行走步数得到 $O(N^{2/3})$。 6. **[查询下界与最优性](#lower-bounds)**——能写出两个问题的匹配下界及所用方法,并用"成对证据比单点证据贵"解释下界为何是 $N^{2/3}$ 而非 Grover 式 $\sqrt N$。 7. **[查询复杂度与时间复杂度的区分](#query-vs-time)**——能解释在叠加的子集上可逆维护 $D(S)$ 为何让朴素数组的 update 时间乘 $r$、总时间达 $O(N^{4/3})$,并说明可逆数据结构与 QRAM 假设如何把额外开销压到 polylog 量级。 8. **[k-distinctness、claw 与频率矩推广](#extensions)**——能把参数平衡推广到 $k$-distinctness 得 $O(N^{k/(k+1)})$、核验 learning graph 的改进指数,并写出 claw 的乘积图思路与频率矩恒等式 $F_2=N+2\cdot\#\{i 提示:二对一情形下每个输出值恰有两个原像,恰好配成一对碰撞。 **练习 2【经典基线:生日悖论与线性下界】**(→ [2 节](#classical-baseline-collision-element-distinctness)) 1. 复算第 2 节的逐步论证:已查 $t$ 个输入且尚未碰撞时,写出第 $t+1$ 个输入不产生碰撞的概率,并把各步相乘得到 $P_{\mathrm{no}}\approx e^{-r(r-1)/2N}$,指出两步近似各用在何处。 2. 取 $N=10^6$:解 $e^{-c^2/2}=1/2$ 求出 $c$,写出以约 $1/2$ 概率发现碰撞所需的查询数;若要求成功概率不低于 $0.9$,$c$ 又应取多大? 3. 用对抗论证说明确定性算法判定 element distinctness 必须 $N$ 次查询;随机算法的 $\Omega(N)$ 下界又依靠什么原则把这一定量结论转移过来? > 提示:对手前 $N-1$ 次查询一律回答互不相同的值,这在两种答案下都合法。 **练习 3【抽样表加 Grover 算法】**(→ [3 节](#sampling-grover)) 1. 写出 Brassard–Høyer–Tapp 算法的两个步骤与表外 Grover 搜索的标记条件;在表内未发现碰撞的二对一输入上,说明表外恰有多少个标记项、标记比例是多少。 2. 最小化 $r+\sqrt{N/r}$:令两项相等解出最优 $r=N^{1/3}$,再用对 $r$ 求导的方法验证最优点的确在两项同阶处。 3. (抽样失效的定量验证)第 3 节断言:对唯一碰撞用"反复抽表加 Grover"的总成本约为 $\frac{N}{2r}\cdot r+\sqrt N=\Omega(N)$。补全推导:样本含某个指定端点的概率为什么是 $\Theta(r/N)$?若改为"样本同时含两个端点才收工",成本又如何变化? > 提示:同时含两端点的概率约为 $(r/N)^2$,此时表内查重即可发现碰撞,不再需要表外 Grover。 **练习 4【量子行走搜索框架与 Johnson 图实现】**(→ [4 节](#walk-search-framework)) 1. 写出量子行走搜索的总成本公式 $S+O(1/\sqrt{\delta\epsilon})\cdot(U+C)$,说明 $S$、$U$、$C$ 各对应什么操作,以及在 Johnson 图 $J(N,r)$ 上三者的查询次数各是多少。 2. 写出 Johnson 图 $J(N,r)$ 的顶点与相邻定义并计算每个顶点的度;再解释为什么顶点取 $r$ 元子集而不是有序 $r$ 元组。 3. 解释谱隙为何以 $\sqrt\delta$ 而非 $\delta$ 进入成本公式:由 $\lambda_j=\cos\varphi_j$ 与 $\arccos(1-\delta)\approx\sqrt{2\delta}$ 说明行走算子的特征相位与转移矩阵特征值的关系,并指出经典成本 $O(1/(\delta\epsilon))$ 中两个因子各自对应的时间尺度。 > 提示:行走算子是两个反射的乘积,特征相位是转移矩阵特征值的反余弦。 **练习 5【标记比例、谱隙与参数平衡】**(→ [6 节](#epsilon-delta-balance)) 1. 由 Johnson 图特征值公式 $\lambda_j=\frac{(r-j)(N-r-j)-j}{r(N-r)}$ 计算 $\lambda_1$,推导 $\delta=\frac{N}{r(N-r)}=\Theta(1/r)$,并用"每步只更换抽屉中的一个元素"解释混合时间 $\Theta(r)$ 的直觉。 2. (精确计数)对唯一碰撞对 $\{i^*,j^*\}$,从 $\binom{N-2}{r-2}/\binom Nr$ 出发,逐步推出 $\epsilon=\frac{r(r-1)}{N(N-1)}$;并对 $N=100$、$r=10$ 分别用两种表达式算出数值、比较与近似 $(r/N)^2$ 的误差。 3. 最小化 $r+N/\sqrt r$:令两项相等解出最优 $r=N^{2/3}$,再用对 $r$ 求导的方法验证最优点确实在两项同阶处;与 $r+\sqrt{N/r}$ 的平衡对照,说明两个指数的差异来自哪一项。 > 提示:求导得 $1-\frac12 N r^{-3/2}=0$,解出 $r=(N/2)^{2/3}$,与平衡解只差常数因子。 **练习 6【查询下界与最优性】**(→ [7 节](#lower-bounds)) 1. 写出 element distinctness 与 collision problem 的最优查询复杂度,以及给出匹配下界的两类方法名称;说明上、下界匹配对这两个算法意味着什么。 2. 解释"成对证据比单点证据贵":为什么单次查询 $f(i)$ 获得的信息只有将来恰好查到配对位置时才"兑现"?这一事实如何把下界从 Grover 式的 $\sqrt N$ 推高到 $N^{2/3}$? > 提示:能区分"无碰撞"与"唯一碰撞"的多项式单项式必须同时涉及两个配对位置。 **练习 7【查询复杂度与时间复杂度的区分】**(→ [8 节](#query-vs-time)) 1. 说明查询模型中哪些操作不计费;解释为什么用普通数组在叠加的 $S$ 上维护 $D(S)$ 会让每步 update 的时间多乘一个 $r$,从而行走阶段总时间为 $O(N\sqrt r)$、在 $r=N^{2/3}$ 时反而慢于经典排序。 2. 可逆哈希、radix tree 与嵌套行走把每次 update/check 的额外时间开销压到什么量级?为什么 update 不能留下会泄露路径信息的垃圾比特?引用本课结论时应分别报告哪两类复杂度? > 提示:垃圾比特会把分支信息写入环境,等效于对行走态做了一次非预期的测量。 **练习 8【k-distinctness、claw 与频率矩推广】**(→ [9 节](#extensions)) 1. (learning graph 指数)验证 $k=2$ 时 $\frac34-\frac1{4(2^k-1)}=\frac23$;计算 $k=3,4$ 的指数并与普通行走的 $k/(k+1)$ 比较,说明 learning graph 的相对优势随 $k$ 如何变化。 2. ($k$-distinctness 平衡)对普通 Johnson 图行走推导 $k$-distinctness 的最优 $r=N^{k/(k+1)}$,并验证 $k=2,3$ 时分别回到 $N^{2/3}$、$N^{3/4}$;解释为什么 $k$ 增大时量子加速的余量变小。 3. (频率矩恒等式)证明 $F_2=N+2\cdot\#\{i 提示:$m_a^2$ 恰是"函数值同为 $a$ 的有序对"个数,拆成对角项与非对角项两部分。 ## 参考文献与 Zoo 覆盖 - Collision 基线:Zoo 18、21、315,含 [Brassard--Høyer--Tapp](https://arxiv.org/abs/quant-ph/9705002)。 - Element distinctness:Zoo 7、374,核心为 [Ambainis Johnson 图算法](https://arxiv.org/abs/quant-ph/0311001)。 - $k$-distinctness 与时间高效 walk:Zoo 154、172、173、363、464,见 [Multidimensional Quantum Walks](https://arxiv.org/abs/2208.13492)。 - Claw、频率矩与多碰撞:Zoo 277、364、365、535,另含 Zoo 172--173 的 nested update 技术。