# 半环矩阵乘法:Grover 基线、阈值 Boolean 化与输出敏感算法 矩阵乘法是组合算法中最常用的"聚合机器"。在环(如实数、整数、有限域)上,我们有 Strassen 型快速乘法,把 $n\times n$ 乘法的代价从 $n^3$ 压到 $O(n^\omega)$($\omega<2.373$)。但图算法真正需要的那些代数结构——Boolean 半环上的可达性、$(\min,+)$ 半环上的最短路、$(\max,\min)$ 半环上的瓶颈路径——都**没有加法逆元**,统称半环。减法与消去一旦不可用,Strassen 式的代数重组通常随之失效(第 1.3 节会把这句话拆开讲清楚),经典世界因此长期停留在接近 $n^3$ 的算法上。 量子侧的情形更有意思。半环矩阵积的每个输出 entry 是 $n$ 个候选的聚合:$C_{ij}=\bigoplus_k(A_{ik}\otimes B_{kj})$。而"在 $n$ 个候选中做 OR、取 min、取 max"恰好都是[量子搜索](../ch03-algo-basics/grover.md)能平方根加速的操作,于是立即得到一个通用的 $\widetilde O(n^{5/2})$ 基线。本课的主线就是追问:**这个 $5/2$ 是不是终点?** 答案是否定的,而且不同半环给出三条不同的路: 1. $(\max,\min)$ 乘积:阈值 Boolean 化 + 分块 + 矩形矩阵乘法,时间 $\widetilde O(n^{2.473})$(第 4 节); 2. 距离乘积($(\min,+)$):高位分解 + 支配乘积,时间 $\widetilde O(2^{0.64L}n^{2.46})$,其中 $L$ 是所需的有效位数(第 5 节); 3. Boolean 乘积:输出敏感 + 图碰撞,查询 $\widetilde O(n\sqrt\ell)$,其中 $\ell$ 是输出中 1 的个数(第 6 节)。 三条路共享同一个方法论:**让许多输出 entry 共享同一批"阈值测试"或"碰撞搜索",再用参数平衡决定"批量处理"与"零星量子搜索"的比重**。这与本站[collision 与元素唯一性](collision-element-distinctness.md)一课中"建表成本 vs 搜索成本"的平衡是同一门手艺,只是这里的两个竞争项换成了"经典矩形乘法"与"量子枚举"。 **前置知识。** 我们默认读者已学完本站第 3 章的 [Grover 算法](../ch03-algo-basics/grover.md)与[振幅放大](../ch03-algo-basics/amplitude-amplification.md)(特别是"$N$ 个条目、$t$ 个目标时搜索成本 $\widetilde O(\sqrt{N/t})$"这一结论),并了解查询模型的记账约定:一次 oracle 调用计一次查询,其余门操作另行计时间。第 6 节会用到[图碰撞](../ch12-quantum-graphs/graph-collision.md)(graph collision)问题,我们会在使用处给出定义,不必预先阅读该教程;同章的[collision 教程](collision-element-distinctness.md)对量子行走的讲解有助于理解背景,但同样不是必需的。 :::{admonition} 本课知识点 :class: tip 1. **[半环与三种矩阵乘积](#semiring-three-products)**——能写出半环的公理与统一乘法公式,并把 Boolean、$(\max,\min)$、$(\min,+)$ 三个乘积分别对应到传递闭包、瓶颈路径与最短路问题。 2. **[计算模型与经典瓶颈](#model-and-classical-barriers)**——能区分查询复杂度与时间复杂度两种记账,解释输出规模的 $\Omega(n^2)$ 下界,并说明 Strassen 式技巧为何在无减法半环上失效、Boolean 为何是例外。 3. **[量子搜索三原语](#quantum-search-primitives)**——能计算已知标记数搜索、SearchAll 枚举与 Dürr–Høyer 最小/最大搜索的查询成本,并推导 SearchAll 的变长求和界。 4. **[逐 entry Grover 基线](#grover-entrywise-baseline)**——能构造 $\widetilde O(n^{5/2})$ 的通用逐 entry 算法并复述其成本证明,指出"数据不共享、判断不共享"两处浪费与改进方向。 5. **[阈值化与支配乘积归约](#threshold-dominance-reduction)**——能证明阈值等价引理与还原恒等式,把 $(\max,\min)$ 乘积归约为截断支配乘积,并解释支配比较可以移项的原因。 6. **[广义支配乘积与参数平衡](#generalized-dominance-balance)**——能解释分块分解中"跨块 Boolean、同块量子枚举"的成本结构,验证参数平衡方程并复算 $n^{2.473}$ 的数值。 7. **[距离乘积的高位分解](#distance-product-decomposition)**——能说明和式阈值不可分解的原因与移项技巧,构造区间定位的平移矩阵并推导 $2^{0.64L}$ 中指数 $0.64$ 的来历。 8. **[输出敏感 Boolean 乘法与图碰撞](#output-sensitive-graph-collision)**——能把 Boolean 乘法化为近完全二部图上的图碰撞,用 Cauchy–Schwarz 收拢出 $\widetilde O(n\sqrt\ell)$ 查询界,并复述 $\ell$-Threshold 归约的匹配下界。 ::: ## 1. 问题、模型与经典基线 (semiring-three-products)= ### 1.1 半环与统一的乘法公式 **定义(半环)。** 一个半环 $(S,\oplus,\otimes)$ 由集合 $S$ 与两个二元运算组成,满足: - $(S,\oplus)$ 是交换幺半群:$\oplus$ 满足结合律与交换律,有零元 $0$($a\oplus 0=a$); - $(S,\otimes)$ 是幺半群:$\otimes$ 满足结合律,有单位元 $1$; - $\otimes$ 对 $\oplus$ 满足分配律:$a\otimes(b\oplus c)=(a\otimes b)\oplus(a\otimes c)$,$0$ 是吸收元($a\otimes 0=0$)。 与环唯一的差别是:**不要求 $a$ 有 $\oplus$ 逆元**。也就是没有减法。 $n\times n$ 矩阵在半环上的乘积逐 entry 定义为 $$ C_{ij}=\bigoplus_{k=1}^n A_{ik}\otimes B_{kj}, $$ 本课的三个主角是: $$ \begin{array}{c|c|c|c} \text{半环}&\oplus&\otimes&C_{ij}\\\hline \text{Boolean}&\lor&\land&\bigvee_k(A_{ik}\land B_{kj})\\ (\max,\min)&\max&\min&\max_k\min(A_{ik},B_{kj})\\ (\min,+)&\min&+&\min_k(A_{ik}+B_{kj}) \end{array} $$ 这三个乘积都不是抽象练习: - **Boolean 乘积**是计算**传递闭包 (transitive closure)** 的核心:邻接矩阵的 $r$ 次幂刻画"两步、四步、……可达"。 - **$(\min,+)$ 乘积**称为**距离乘积 (distance product)**。把边权矩阵反复做 $(\min,+)$ 自乘("反复平方"),$\lceil\log_2 n\rceil$ 轮后即得所有点对的最短路:长度至多 $2^r$ 的路径的最优值,恰是矩阵平方 $r$ 次后的 entry。 - **$(\max,\min)$ 乘积**给出**全点瓶颈路径 (all-pairs bottleneck paths)**:一条路径的"宽度"是它所经边的最小权,两段路径拼接后宽度是 $\min$,取所有中转方式的最优是 $\max$——正是一个 $(\max,\min)$ 乘积。它也以"关系的合成 (composition of relations)"之名出现在模糊逻辑中。 若某个 $k$ 使 $A_{ik}\otimes B_{kj}$ "贡献"了 $C_{ij}$(Boolean 情形即 $A_{ik}=B_{kj}=1$),称 $k$ 为 $C_{ij}$ 的一个 **witness**。输出 witness 与只输出数值是两类任务,后文会看到它们难度不同。 (model-and-classical-barriers)= ### 1.2 计算模型与记账 输入矩阵以 **entry oracle** 给出,两种等价形式都常见: $$ O_A:\ |i,j,z\rangle\mapsto|i,j,z\oplus A_{ij}\rangle \qquad\text{或}\qquad O_A:\ |i,j,0\rangle\mapsto|i,j,A_{ij}\rangle , $$ 一次对 $O_A$ 或 $O_B$ 的调用计为一次**查询**。除此之外要区分两种记账: - **查询复杂度**:只数 oracle 调用,与输入无关的门操作免费。第 6 节的输出敏感算法采用这种记账。 - **时间复杂度**:数所有计算步骤,其中把每次 oracle 调用计为 $1$。第 3–5 节的算法采用这种记账。Le Gall–Nishimura 明确说明:这对应于"输入可以被量子叠加地随机访问"的情形(即相干随机访问 / QRAM 类假设)。**这是一个模型依赖的保留条款**——在没有这种访问方式的电路模型里,读入输入本身就可能主导成本。 还有一笔账必须预先声明:输出是 $n^2$ 个 entry 的矩阵,**任何**算法把它写出来都要 $\Omega(n^2)$ 时间。因此所有亚立方的界都应读作"计算并输出矩阵"的界,而第 6 节会专门讨论输出规模 $\ell$ 如何反过来成为下界。 ### 1.3 经典算法能做到哪里:一个例外与两个瓶颈 **Boolean 是例外。** 虽然 Boolean 半环同样没有减法,但它可以"免费"嵌入整数环:把 $A,B$ 当作整数矩阵做普通乘法,则 $$ (AB)_{ij}=\sum_{k=1}^n A_{ik}B_{kj}\ \ge 1 \quad\Longleftrightarrow\quad \exists k:\ A_{ik}B_{kj}=1 \quad\Longleftrightarrow\quad C_{ij}=1, $$ 中间的等价用了"每个乘积项是 $0$ 或 $1$,且非负,因此和不小于 $1$ 当且仅当某项为 $1$"。中间量至多是 $n$,用 $O(\log n)$ 位即可精确表示,故 Boolean 乘积可在 $\widetilde O(n^\omega)$ 时间内经典完成。**这是半环中已知能用环乘法技巧的少数特例。** **Strassen 式技巧为什么对其他半环失效?** Strassen 算法的本质是把 $2\times 2$ 块乘法写成 $7$ 个"和差积"的组合,例如中间量 $(a_{11}+a_{22})(b_{11}+b_{22})$,最后再用减法重组出各个块。这里有两处硬依赖:中间量需要做**差**($a_{11}-a_{12}$ 这类表达式在半环里无定义),重组时需要**消去**(同类项相减留下想要的部分)。在 $(\min,+)$ 与 $(\max,\min)$ 中,"$-a$"不存在,双线性恒等式的整个重组流程无从执行。需要强调:这不是证明了下界——只是已知的代数技巧全部失效,问题的难度被转移到了组合算法上。 **两个瓶颈(本课写作所据论文时代的纪录):** - $(\max,\min)$ 乘积:最好的经典算法属于 Duan–Pettie,时间 $\widetilde O(n^{(3+\omega)/2})=O(n^{2.687})$; - 距离乘积:**在不对输入做任何假设的前提下,没有任何真正亚立方($n^{3-o(1)}$ 以下)的经典算法为人所知**。它与最短路等一批问题的著名子立方等价性说明这不是孤立的漏洞,而是一整片困难的代数结构。 顺带一提与第 6 节相关的第三个经典事实:Boolean 乘法在稀疏输入上有 Yuster–Zwick 的组合算法,我们在第 6.6 节与量子算法对照。 ### 1.4 历史脉络 把本课用到的线索按时间排好: - **2006,Buhrman–Špalek**(Zoo 19):首次研究矩阵积的量子复杂度,给出"验证 $AB=C$"的 $O(n^{3/2})$ 查询上界。验证的量子下界至今仍是公开问题(写作时最好的下界约为 $\Omega(n^{1.055})$)。 - **2010,Vassilevska Williams–Williams**(Zoo 157):证明路径、矩阵、三角形等一系列问题之间的子立方等价性,划定了"哪些问题一起难"的版图。 - **2012,Le Gall**(Zoo 155):输出敏感的 Boolean 乘法量子算法,以输出中 1 的个数 $\ell$ 为参数。 - **2012,Jeffery–Kothari–Magniez**(Zoo 161):把 Boolean 乘法化为图碰撞实例,得到对所有 $\ell$ 都成立的 $\widetilde O(n\sqrt\ell)$ 查询界与匹配下界——第 6 节的主角。 - **2013,Le Gall–Nishimura**(Zoo 206):本课主线。给出 $(\max,\min)$ 的 $\widetilde O(n^{2.473})$、距离乘积高 $L$ 位的 $\widetilde O(2^{0.64L}n^{2.46})$,是**首批在 Boolean 之外的半环上突破 $\widetilde O(n^{5/2})$ 直觉基线的量子算法**,也是首批在不假设稀疏性的前提下全面快于当时最好经典算法的半环乘法量子算法;其技术同时把经典距离乘积的 $2^L$ 因子改进到 $2^{0.96L}$。 (quantum-search-primitives)= ## 2. 三个量子搜索原语 后文所有复杂度都由三个原语拼成,先把它们和成本写清楚。设搜索空间 $U$,$|U|=N$,标记函数 $f:U\to\{0,1\}$,标记元素个数 $t_f=|f^{-1}(1)|$。 **原语一:搜索(已知标记数的下界)。** 若已知 $t_f\ge t$,则[振幅放大](../ch03-algo-basics/amplitude-amplification.md)给出 $\widetilde O(\sqrt{N/t})$ 次查询找到一个标记元素($\widetilde O$ 吸收把错误概率压到 $1/\mathrm{poly}(N)$ 所需重复的对数因子);若 $t_f=0$ 则可确定地宣告无解。 **原语二:枚举全部(变长搜索求和)。** **Lemma 1(quantum enumeration / SearchAll)**. 存在量子算法找出 $U$ 中**全部** $t_f$ 个标记元素,查询数 $$ \widetilde O\!\left(\sqrt{N/t_f}+\sqrt{N/(t_f-1)}+\cdots+\sqrt{N/1}\right)=\widetilde O\!\left(\sqrt{N\,(t_f+1)}\right). $$ **证明**。策略:维护剩余集合 $V$ 与计数 $t$(初始 $t=N$ 的保守估计)。反复用原语一在 $V$ 上搜索;找到一个标记元素就输出并从 $V$ 删除、$t$ 减一;失败则把 $t$ 减半再试。当剩余标记数恰为 $s$ 时,一次成功搜索成本 $\widetilde O(\sqrt{N/s})$,故总成本为左边部分和。对右边:对每个 $s\ge1$ 有 $$ \frac{1}{\sqrt{s}}\;\le\;2\big(\sqrt{s}-\sqrt{s-1}\big), $$ 因为 $\sqrt{s}-\sqrt{s-1}=\frac{1}{\sqrt{s}+\sqrt{s-1}}\ge\frac{1}{2\sqrt{s}}$。对 $s=1,\dots,t_f$ 求和,右边望远镜相消得 $\sum_{s=1}^{t_f}\frac1{\sqrt s}\le 2\sqrt{t_f}$,于是部分和 $\le\sqrt N\cdot 2\sqrt{t_f}=O(\sqrt{Nt_f})$。$t_f=0$ 时算法在 $t$ 降到 $1$ 后确定地宣告无解。Q.E.D. 这个"变长搜索再求和"的账本在后文出现两次(第 4.3 节的块内枚举、第 6 节的输出敏感枚举),它是"输出敏感"三个字的量化形式:成本随实际解数 $t_f$ 而非空间大小 $N$ 的平方根增长。 **原语三:最小/最大搜索(Dürr–Høyer)。** 给定 $g:U\to\mathbb R$,可用 $\widetilde O(\sqrt N)$ 次查询找到 $\arg\min g$(或 $\arg\max$)。机制:维护当前阈值 $M=g(x_0)$($x_0$ 任取),反复用变长 Grover 在 $\{x:g(x)0.302$)与 $\beta=\frac{\omega-2}{1-\alpha}$。我们只用到四条标准性质: - 齐次性与对称性:$\omega(kk_1,kk_2,kk_3)=k\,\omega(k_1,k_2,k_3)$,且对三个参数的任意置换不变; - 单调性:$\omega(k_1,k_2,k_3+k_4)\le\omega(k_1,k_2,k_3)+k_4$; - 朴素下界:$\omega(k_1,k_2,k_3)\ge\max\{k_1+k_2,\ k_1+k_3,\ k_2+k_3\}$(逐项相乘本来就需要这么多操作); - 对 $\alpha\le k\le1$:$\omega(1,k,1)\le 2+\beta(k-\alpha)$。 第 4、5 节复杂度里那些"非整"的指数($2.473$、$2.458$、$0.640$)全部来自把 $\omega(\cdot,\cdot,\cdot)$ 的这些界代入平衡方程——读者现在只需要记住:**矩形乘法的指数函数是可查表的已知量,平衡方程解出来后代入即可**。 (grover-entrywise-baseline)= ## 3. 逐 entry Grover:$\widetilde O(n^{5/2})$ 通用基线 **Proposition 2**. 设半环 $(S,\oplus,\otimes)$ 满足:(i) $n$ 个数的 $\oplus$ 聚合可用 $\widetilde O(\sqrt n)$ 次查询完成($\oplus$ 为 $\lor$ 时用原语一,为 $\min/\max$ 时用原语三);(ii) 每个 $\otimes$ 可在 $\mathrm{polylog}$ 时间内实现。则 $n\times n$ 半环乘积可在 $\widetilde O(n^{5/2})$ 时间(每查询计 $1$)内以高概率算出。 **证明**。固定 $(i,j)$,把 $C_{ij}=\bigoplus_{k=1}^n(A_{ik}\otimes B_{kj})$ 看作在候选集 $\{1,\dots,n\}$ 上、以"$A_{ik}\otimes B_{kj}$"为权值的聚合问题: - $\oplus=\lor$:$C_{ij}=1$ 当且仅当存在标记的 $k$(标记条件 $A_{ik}\land B_{kj}=1$),原语一给出 $\widetilde O(\sqrt n)$; - $\oplus=\min$ 或 $\max$:对权值 $g(k)=A_{ik}\otimes B_{kj}$ 用原语三,$\widetilde O(\sqrt n)$。 每次候选评估需要 $2$ 次查询(读 $A_{ik}$、$B_{kj}$)加 $\mathrm{polylog}$ 算术,故单个 entry 成本 $\widetilde O(\sqrt n)$;$n^2$ 个 entry 逐个处理,总代价 $\widetilde O(n^{5/2})$。Q.E.D. 这个基线覆盖 Boolean、$(\max,\min)$、$(\min,+)$ 三个半环,而且照搬了经典"三重循环"的结构。它有两个明显的浪费: 1. **数据不共享**。同一个 $A_{ik}$ 出现在整行 $n$ 个输出 entry 的候选列表里,逐 entry 处理等于把它读 $n$ 次; 2. **判断不共享**。判断"$C_{ij}\ge\lambda$"对一族阈值 $\lambda$ 是高度相关的 Boolean 量(第 4.1 节),逐 entry 二分阈值会重复做大量几乎相同的乘法。 对照经典基线还能看清它的位置:对 Boolean,$\widetilde O(n^{5/2})$ 被 $\widetilde O(n^{\omega})$ 完全压制,没有价值;对 $(\max,\min)$ 与距离乘积,它当时是量子一侧最好的已知界,且**已经优于当时最好的经典算法**($2.687$ 与"无亚立方算法")。改进的方向因此也很明确:要么让阈值判断被许多 entry 共享(第 4、5 节),要么让碰撞搜索被许多输出共享(第 6 节)。 ## 4. $(\max,\min)$ 乘积:阈值化、支配乘积与 $n^{2.473}$ (threshold-dominance-reduction)= ### 4.1 阈值 Boolean 化 **Lemma 3(阈值等价)**. 对阈值 $\lambda$ 定义 Boolean 矩阵 $$ A^{(\lambda)}_{ik}=1[A_{ik}\ge\lambda],\qquad B^{(\lambda)}_{kj}=1[B_{kj}\ge\lambda], $$ ($1[\cdot]$ 为指示函数。)则在 Boolean 半环中计算 $A^{(\lambda)}\cdot B^{(\lambda)}$,有 $$ C_{ij}\ge\lambda \quad\Longleftrightarrow\quad \big(A^{(\lambda)}\cdot B^{(\lambda)}\big)_{ij}=1, $$ 且 $C_{ij}=\max\{\lambda:\ (A^{(\lambda)}\cdot B^{(\lambda)})_{ij}=1\}$(在输入权值集合上取)。 **证明**。核心是 $\min$ 的阈值分解:对实数 $a,b$, $$ \min(a,b)\ge\lambda \;\Longleftrightarrow\; a\ge\lambda\ \text{且}\ b\ge\lambda, $$ 因为 $\min(a,b)$ 是两者中较小者,它不小于 $\lambda$ 当且仅当较小者不小于 $\lambda$,等价于两者都不小于 $\lambda$。于是逐条等价: $$ C_{ij}=\max_k\min(A_{ik},B_{kj})\ge\lambda \;\Longleftrightarrow\; \exists k:\ \min(A_{ik},B_{kj})\ge\lambda \;\Longleftrightarrow\; \exists k:\ A_{ik}\ge\lambda\ \land\ B_{kj}\ge\lambda, $$ 最后一个条件恰是"$(i,k)$ 在 $A^{(\lambda)}$ 中为 $1$ 且 $(k,j)$ 在 $B^{(\lambda)}$ 中为 $1$",即 Boolean 乘积的 entry 为 $1$。第二句由 $\{ \lambda : C_{ij}\ge\lambda\}$ 是向下封闭的集合($C_{ij}\ge\lambda'\ge\lambda\Rightarrow C_{ij}\ge\lambda$)直接得到:最大的可行 $\lambda$ 恰是 $C_{ij}$ 自身可能取到的值。Q.E.D. 这个引理说明 $(\max,\min)$ 乘积可以被"一族 Boolean 乘积"回答。朴素的用法是对每个 entry 二分 $\lambda$,但每次二分都要重新做一次几乎一样的 $n^3$ 级工作。真正需要的是**把一族阈值判断批量地塞进少量几次矩阵乘法**——这正是下一步。 ### 4.2 支配乘积与还原恒等式 Boolean 阈值化把"$A_{ik}$ 与 $B_{kj}$ 都要过关"写成两个独立条件。$(\max,\min)$ 的算法实际使用的是它的"单边"版本,称为**支配 (dominance)** 比较 $A_{ik}\le B_{kj}$。形式化地,对取值于 $\mathbb Z\cup\{\infty\}$ 的 $A$ 与 $\mathbb Z\cup\{-\infty\}$ 的 $B$: - **存在支配乘积** $A\ast B$ 是 Boolean 矩阵:$(A\ast B)_{ij}=1$ 当且仅当存在 $k$ 使 $A_{ik}\le B_{kj}$; - **截断支配乘积**(本教程记作 $A\oslash B$;原论文用一个专门的截断符号): $$ (A\oslash B)_{ij}=\max\{\,A_{ik}\ :\ A_{ik}\le B_{kj}\,\} $$ (若集合为空取 $-\infty$,即"所有 $A_{ik}$ 都严格大于 $B_{kj}$")。 **Lemma 4(还原恒等式)**. 设 $C$ 是 $(\max,\min)$ 乘积,则 $$ C_{ij}=\max\Big\{\,(A\oslash B)_{ij},\ \big(B^{\mathsf T}\oslash A^{\mathsf T}\big)_{ji}\,\Big\}, $$ 其中 ${\mathsf T}$ 表示转置。因此 $(\max,\min)$ 乘积可归约为两次截断支配乘积。 **证明**。先把每个 $\min$ 拆到"取的是哪一边"。对每个 $k$: $$ \min(A_{ik},B_{kj})= \begin{cases} A_{ik},& A_{ik}\le B_{kj},\\ B_{kj},& B_{kj}0.302$,按等号取值):$\beta=\frac{0.373}{0.698}\approx0.534$,$\alpha\beta\approx0.161$,于是 $$ \gamma\ \ge\ \frac{1+0.322-1.068}{5-0.322}=\frac{0.254}{4.678}\approx0.054, \qquad \frac{5-\gamma}{2}\ \le\ 2.473 . $$ 这就得到 Zoo 快照记录的 $$ \boxed{\ \widetilde O\!\left(n^{2.473}\right)\ } $$ (存在支配乘积本身按同一路线可得 $\widetilde O(n^{(5+\omega)/3})\le O(n^{2.458})$;当时最好的经典存在支配乘法是 $O(n^{2.684})$。) **保留条款(原文明确指出,必须随结论一起引用)**:$2.473$ 不是算法的内在常数,而是"把当时可用的矩形乘法指数代入平衡方程"得到的快照值;若经典矩形乘法上界改进,数值应随之更新,但**算法结构——"阈值批处理 + 量子边界搜索"——不变**。此外这是第 1.2 节所述时间模型下的结论(相干随机访问计单位成本),不是纯查询界。 ### 4.5 应用:全点瓶颈路径 $(\max,\min)$ 乘法的一个 entry 回答"经某条指定中转边的最大瓶颈";完整的全点瓶颈路径只需反复平方:令 $D^{(1)}$ 为边权矩阵(无边处 $-\infty$),$D^{(2r)}=D^{(r)}\otimes_{(\max,\min)}D^{(r)}$,则 $D^{(r)}_{ij}$ 是"至多 $r$ 条边的路径"的最大瓶颈(归纳:一条至多 $2r$ 条边的路径在中点拆成两段至多 $r$ 条边的路径,瓶颈相接处取 $\min$,对中点取 $\max$)。路径至多 $n-1$ 条边,故 $\lceil\log_2(n-1)\rceil$ 次平方足够,总时间 $\widetilde O(T(n))$。于是全点瓶颈路径也得到 $\widetilde O(n^{2.473})$,优于当时最好的经典 $O(n^{2.687})$。 ## 5. 距离乘积:高位分解与 $2^{0.64L}n^{2.46}$ (distance-product-decomposition)= ### 5.1 阈值为什么失效,以及移项技巧 对距离乘积 $C_{ij}=\min_k(A_{ik}+B_{kj})$,第 4.1 节的阈值化失效:条件 $$ A_{ik}+B_{kj}\le\lambda $$ **不能**拆成"$A$ 侧一个条件 $\land$ $B$ 侧一个条件"——和式的两端可以互相补偿,这是 $(\min,+)$ 与 $(\max,\min)$ 的本质差别。但支配比较的移项性质(第 4.2 节)恰好救场:对任意平移量 $x,y$, $$ A_{ik}+B_{kj}\le x+y \quad\Longleftrightarrow\quad (A_{ik}-x)\le(-B_{kj}+y). $$ 左移 $A$、翻转 $B$,和式阈值就变成了单边支配比较,两边的平移量可以**各自**取不同粒度——这就是"高位分解"的全部秘密。 ### 5.2 区间定位 设所有权值非负有限(取值为负或 $\infty$ 的一般情形,原文用一次额外的支配乘法单独判别,此处从简),取 $W$ 为 2 的幂且 $W>\max A_{ik}+\max B_{kj}$,于是每个 $C_{ij}0.302$):常数部分 $\frac{5+2.373}{3}=2.4577$,$\mu$ 的系数 $\frac{4-0.161}{6}=0.640$。于是 $$ \widetilde O\!\left(2^{0.640L}\,n^{(5+\omega)/3}\right)\ \le\ O\!\left(2^{0.640L}n^{2.458}\right), $$ 而 Zoo 快照将其记录为 $\widetilde O(2^{0.64L}n^{2.46})$。对照经典:朴素逐桶是 $O(2^Ln^{2.69})$;同一套分块技术反过来还把**经典**算法改进到 $O(2^{0.960L}n^{2.687})$——把对 $2^L$ 的线性依赖降为亚线性,是这篇工作"量子技术反哺经典"的一面。 ### 5.5 精度依赖的保留条款 引用这一结果时有三条必须随行的限制(原文均明确指出): 1. **只输出前 $L$ 位**。它不是"精确任意大小整数距离乘积"的统一 $n^{2.46}$ 算法;$L$(以及权值编码长度 $\log W$)必须作为参数保留在复杂度里。 2. **适用区间**。平凡量子算法 $\widetilde O(n^{5/2})$ 已能算出全部位,因此该算法只在 $2^{0.64L}n^{2.46}\le n^{5/2}$(特别地 $2^L\le n^2$)的范围内有意义;$L$ 过大时应回退到平凡算法。 3. **时间模型**。与第 4 节相同,是相干随机访问计单位成本的时间界,不是纯查询界。 ## 6. Boolean:输出敏感、图碰撞与 $\widetilde O(n\sqrt\ell)$ 查询 (output-sensitive-graph-collision)= ### 6.1 输出敏感的记账 Boolean 情形引入第二个复杂度参数: $$ \ell=\big|\{(i,j):\ C_{ij}=1\}\|, $$ 即输出中 1 的个数。理想的目标是"输出多稀疏、算法多便宜"。本节采用**纯查询模型**(第 1.2 节),引用的是 Jeffery–Kothari–Magniez 的结果(Zoo 161)。 先看朴素算法,把 §3 的基线改造成输出敏感版。把搜索对象从"entry"换成"1-entry":用 Lemma 1 的 SearchAll 在 $n^2$ 个位置对 $(i,j)$ 上枚举全部 $\ell$ 个"有 witness 的位置对",每次检验"$(i,j)$ 是否有 witness"本身是一次对 $k\in[n]$ 的 Grover 搜索($\widetilde O(\sqrt n)$): $$ \widetilde O\!\left(\sqrt{n^2\cdot\ell}\times\sqrt n\right)=\widetilde O\!\left(n^{3/2}\sqrt\ell\right) $$ 次查询。这正是 Buhrman–Špalek 2006 年给出的界。$n^{3/2}$ 那个多余的平方根来自"外层搜索每检验一个 $(i,j)$ 都要重新扫一遍 $k$"——witness 的信息没有跨 entry 复用。去掉它就是接下来的任务。 ### 6.2 化为图碰撞 回忆 $C_{ij}=1$ 当且仅当**行支撑与列支撑相交**: $$ C_{ij}=1 \quad\Longleftrightarrow\quad \operatorname{supp}(A_{i,*})\cap\operatorname{supp}(B_{*,j})\neq\varnothing . $$ 把"相交"结构显式地写成图。维护一个尚未完成的部分结果矩阵 $\widetilde C$(初始为全 $0$,每当确认 $C_{ij}=1$ 就置 $\widetilde C_{ij}=1$)。对每个 $k\in[n]$ 定义二部图 $G_k$: - 顶点:左部 $\mathcal A=[n]$(行指标 $i$)、右部 $\mathcal B=[n]$(列指标 $j$); - 边集:$(i,j)\in E(G_k)$ 当且仅当 $\widetilde C_{ij}=0$——即邻接矩阵是 $\widetilde C$ 的**逐 entry 补**; - 两侧的未知标记:$f_A(i)=A_{ik}$($A$ 的第 $k$ 列)、$f_B(j)=B_{kj}$($B$ 的第 $k$ 行)。 **Lemma 8**. $(i,j)$ 是 $G_k$ 的一个图碰撞(两侧都标记且 $(i,j)$ 是边)当且仅当 $k$ 是 $C_{ij}=1$ 的一个 witness 且 $\widetilde C_{ij}=0$。此外 $G_k$ 的非边数($=\widetilde C$ 中 1 的个数)至多为 $\ell$。 **证明**。图碰撞条件是 $A_{ik}=f_A(i)=1$、$B_{kj}=f_B(j)=1$、$(i,j)\in E(G_k)$,即 $A_{ik}=B_{kj}=1$ 且 $\widetilde C_{ij}=0$。前两条等价于 $k$ witness 了 $C_{ij}=1$(Boolean 乘积定义),第三条说明这个 1 还没被记录。非边数:非边即 $\widetilde C$ 的 1-entry,而 $\widetilde C\preceq C$,故不超过 $\ell$。Q.E.D. 于是算法轮廓:寻找一个"在某个 $G_k$ 中有碰撞"的 $k$,把该图的所有碰撞记入 $\widetilde C$,把 $k$ 从候选中删除,重复直到没有这样的 $k$。**关键观察是 $G_k$ 永远近乎完全二部图**(非边至多 $\ell$)。一般图上的图碰撞最优要用 Johnson 图量子行走 $O(n^{2/3})$(见[图碰撞教程](../ch12-quantum-graphs/graph-collision.md)),但近乎完全图上便宜得多——这与 §3"不共享"的批评正相反,是**共享碰撞数据**的正面例子。 ### 6.3 稠密图上找全部图碰撞 先看完全二部图有多容易:分别用 SearchAll 找出左部全部 $t_A$ 个标记点与右部全部 $t_B$ 个标记点,输出 $f_A^{-1}(1)\times f_B^{-1}(1)$。碰撞数 $\lambda=t_At_B$,成本 $$ \widetilde O\!\left(\sqrt{nt_A}+\sqrt{nt_B}\right)=\widetilde O\!\left(\sqrt{n\lambda}\right), $$ (因为 $t_A,t_B\ge1$ 且 $t_A,t_B\le\lambda=t_At_B$,两个平方根都不超过 $\sqrt{n\lambda}$)。 一般"近完全"图的算法(记非边数为 $m$,碰撞数 $\lambda$): 1. **找最高度标记点**。顶点度数是已知的经典信息(图已知),标记未知——用第 2 节原语三的变体在 $\widetilde O(\sqrt n)$ 次查询内找到左部**度最大的标记点** $r$。 2. **情形一($r$ 的非邻居少,$c_r\le\sqrt m$)**: - (a) 在 $r$ 的邻居中 SearchAll 找全部标记点,输出碰撞对 $(r,\cdot)$:$\widetilde O(\sqrt{n\lambda})$; - (b) 直接读出 $r$ 的全部 $c_r\le\sqrt m$ 个非邻居的标记:$O(\sqrt m)$。至此右部的标记情况**完全已知**; - (c) 令 $\mathcal A'=\{i:\ \text{$i$ 有一个标记的邻居}\}$(图已知,故 $\mathcal A'$ 可经典计算),SearchAll 找 $\mathcal A'$ 中全部标记点:$\widetilde O(\sqrt{n\lambda})$。 3. **情形二($c_r\ge\sqrt m$)**:度排在 $r$ 前的顶点都未标记($r$ 是最高度的标记点),可整批丢弃;剩下的 $n-r+1$ 个左部顶点每个的非邻居数 $\ge c_r\ge\sqrt m$,故 $$ (n-r+1)\cdot\sqrt m\ \le\ \sum_i c_i=m \quad\Longrightarrow\quad n-r+1\ \le\ \sqrt m , $$ 把它们全部读出只要 $O(\sqrt m)$;随后与 (c) 同理在"有标记邻居的右部点"里 SearchAll:$\widetilde O(\sqrt{n\lambda})$。 **Theorem 9(AllGC)**. 上述算法输出非完全二部图 $G$ 上的**全部**图碰撞,查询数 $\widetilde O(\sqrt{n\lambda}+\sqrt m)$;若只需判断是否存在碰撞,把 SearchAll 换成单次搜索,得 $\widetilde O(\sqrt n+\sqrt m)$。 **证明(完备性)**。情形一中,任何碰撞 $(i,j)$:若 $i=r$ 则被 (a) 输出;若 $i\ne r$,则 $i$ 标记且有标记邻居 $j$,被 (c) 输出((b) 保证右部信息完整,使 $\mathcal A'$ 正确)。情形二中左部标记点全被读出,(c) 覆盖所有碰撞。各步成本已逐一标注。Q.E.D. ### 6.4 总账:Cauchy–Schwarz 收拢成 $n\sqrt\ell$ 主循环:设共进行 $T$ 轮"成功"(找到 $k$ 并记录新 1-entry),第 $j$ 轮新发现 $\lambda_j$ 个碰撞,第 $j$ 轮开始时剩余候选 $t_j$。三个基本事实: 1. 每轮成功至少消耗一个 $k$,且 $k$ 至多 $n$ 个,故 $T\le n$;每个 1-entry 至少被记一次,每轮至少记一个,故 $T\le\ell$。合并 $T\le\min\{n,\ell\}$。 2. $\sum_{j=1}^T\lambda_j=\ell$(最终 $\widetilde C=C$)。 3. 由 Cauchy–Schwarz:$\sum_j\sqrt{\lambda_j}\le\sqrt{T\sum_j\lambda_j}=\sqrt{T\ell}$。 还需要第四个事实:**第 $j$ 轮成功开始时,剩余的"有效 $k$"至少有 $T-j+1$ 个**——每轮成功恰好删去一个 $k$,而总共要成功 $T$ 轮,故倒数第 $T-j+1$ 轮之前不可能耗尽;于是搜索参数满足 $t_j\ge T-j+1$。 成功轮的成本:找到 $k$ 的外层搜索(按当前估计 $t_j$)加一次 AllGC。失败轮的 $t$ 每轮减半,成本是几何衰减,被常数倍的最近一次成功轮吸收。逐项累计: $$ \sum_{j=1}^{T}\sqrt{\frac{n}{t_j}}\cdot\big(\sqrt n+\sqrt m_j\big) \;\le\; \big(\sqrt n+\sqrt\ell\big)\sqrt n\sum_{j=1}^T\frac{1}{\sqrt{T-j+1}} \;\le\; 2\big(n+\sqrt{n\ell}\big)\sqrt T \;\le\;\widetilde O\!\left(n\sqrt T+\sqrt{n\ell T}\right), $$ (用 $m_j\le\ell$、$t_j\ge T-j+1$、$\sum_{s=1}^{T}s^{-1/2}\le2\sqrt T$。)AllGC 部分累计: $$ \sum_{j=1}^T\big(\sqrt{n\lambda_j}+\sqrt\ell\big) \;\le\; \sqrt n\cdot\sqrt{T\ell}+T\sqrt\ell \;=\;\widetilde O\!\left(\sqrt{n\ell T}+T\sqrt\ell\right). $$ 合并后三类项 $\ n\sqrt T,\ \sqrt{n\ell T},\ T\sqrt\ell$,代入 $T\le\min\{n,\ell\}$ 逐一验证: - $n\sqrt T\le n\sqrt\ell$($T\le\ell$); - $\sqrt{n\ell T}$:若 $\ell\le n$ 则 $T\le\ell$ 给 $\sqrt n\,\ell\le n\sqrt\ell$(两边平方即 $\ell\le n$);若 $\ell\ge n$ 则 $T\le n$ 给 $n\sqrt\ell$; - $T\sqrt\ell\le n\sqrt\ell$。 $$ \boxed{\ \text{Boolean 乘法的查询复杂度为}\ \widetilde O\!\left(n\sqrt\ell\right)\ \text{(对所有 }\ell\text{ 成立)}\ } $$ ### 6.5 下界与紧性 **Theorem 10(下界)**. Boolean 乘法的查询复杂度为 $\Omega\!\left(n\sqrt{\min\{\ell,n^2-\ell\}}\right)$。 **证明(归约)**. 从 $\ell$-Threshold 问题归约:给定 $N=n^2$ 位 oracle $f$,判断标记数是否 $\ge\ell$。构造 Boolean 乘法实例:$A=I$(单位阵,无需查询),$B$ 编码 $f$。则 $C=AB=B$,数一数 $C$ 中 1 的个数即得答案。多项式方法给出 $N$ 位 $\ell$-Threshold 需要 $\Omega(\sqrt{N\min\{\ell,N-\ell\}})=\Omega(n\sqrt{\min\{\ell,n^2-\ell\}})$ 次查询。Q.E.D. 对任意常数 $\varepsilon<1$ 与 $\ell\le\varepsilon n^2$,上界 $\widetilde O(n\sqrt\ell)$ 与下界 $\Omega(n\sqrt\ell)$ 匹配(至多对数因子):**输出敏感 Boolean 乘法在稀疏输出的全部区间上是最优的**。这是 Jeffery–Kothari–Magniez 论文的标志性结论,而且它的算法没有用任何量子行走——绕开了此前基于三角形查找的整套技术路线。 ### 6.6 查询不等于时间:稀疏输入才是真正的优势区 **Dense 输出的账。** 当 $\ell=\Theta(n^2)$ 时 $n\sqrt\ell=\Theta(n^2)$,恰好等于写输出的规模——查询优势被输出淹没。更严格地说:这一系列工作把查询 $\widetilde O(n\sqrt\ell)$ 实现为时间 $\widetilde O(n\sqrt\ell+\ell\sqrt n)$;取 $\ell=\Theta(n^2)$ 得 $\Theta(n^{5/2})$,**反而慢于**经典 $\widetilde O(n^\omega)$。原因有三层:重复的 witness 数据结构要维护、$\widetilde C$ 的更新是经典开销、显式输出 $n^2$ 位本身构成时间下界。所以"一般 dense Boolean 乘法并没有仅凭该查询界就击败最快经典 dense 算法"——查询与时间必须分开报告,这与本章导言的告诫一致。 **稀疏输入的时间优势。** 当**输入**矩阵稀疏(设各有至多 $m$ 个非零 entry)而输出未必稀疏时,把非零 entry 组织成邻接表式的访问结构,量子枚举可以加速经典组合算法中的枚举步骤。Le Gall–Nishimura 给出的时间界是分段函数($m$ 从小到大): $$ \begin{array}{c|c|c} \text{非零 entry 数 }m&\text{量子时间}&\text{当时最好经典(Yuster--Zwick)}\\\hline m\le n^{1.151}&\widetilde O(n^2)&\widetilde O(n^2)\\ n^{1.151}\le m\le n^{\omega-1/2}&\widetilde O(m^{0.517}n^{1.406})&\widetilde O(m^{0.697}n^{1.199})\\ n^{\omega-1/2}\le m\le n^2&\widetilde O(n^\omega)&\widetilde O(n^\omega) \end{array} $$ 中间一段是量子严格占优的区域。一个具体的对照点:取 $m=O(n^{(1+\omega)/2})=O(n^{1.686})$,量子时间为 $O(n^{2.277})$,而经典算法在该点已是 $\widetilde O(n^\omega)>n^{2.37}$。 ## 7. 数值小例子 ### 7.1 $(\max,\min)$ 乘积与阈值扫描 取原文的小例子 $$ A=\begin{pmatrix}5&1\\3&4\end{pmatrix},\qquad B=\begin{pmatrix}2&6\\7&0\end{pmatrix}. $$ **完整乘积。** 逐 entry 把 $n=2$ 个候选算尽: $$ C_{11}=\max\{\min(5,2),\min(1,7)\}=\max\{2,1\}=2, \qquad C_{12}=\max\{\min(5,6),\min(1,0)\}=\max\{5,0\}=5, $$ $$ C_{21}=\max\{\min(3,2),\min(4,7)\}=\max\{2,4\}=4, \qquad C_{22}=\max\{\min(3,6),\min(4,0)\}=\max\{3,0\}=3 . $$ 故 $C=\begin{pmatrix}2&5\\4&3\end{pmatrix}$,其中 $C_{12}=5$ 的 witness 是 $k=1$($5\le 6$)。 **阈值 Boolean 化(Lemma 3 的实算)**。取 $\lambda=4$: $$ A^{(4)}=\begin{pmatrix}1&0\\0&1\end{pmatrix},\qquad B^{(4)}=\begin{pmatrix}0&1\\1&0\end{pmatrix}, $$ 在 Boolean 半环里逐 entry 算乘积: $$ \big(A^{(4)}\!\cdot\! B^{(4)}\big)_{11}=(1\land0)\lor(0\land1)=0, \quad \big(A^{(4)}\!\cdot\! B^{(4)}\big)_{12}=(1\land1)\lor(0\land0)=1, $$ $$ \big(A^{(4)}\!\cdot\! B^{(4)}\big)_{21}=(0\land0)\lor(1\land1)=1, \quad \big(A^{(4)}\!\cdot\! B^{(4)}\big)_{22}=(0\land1)\lor(1\land0)=0 . $$ 读出:$C_{12},C_{21}\ge4$ 而 $C_{11},C_{22}<4$,与 $C$ 一致。取 $\lambda=6$:$A^{(6)}$ 全零,乘积全零,故所有 entry $<6$($C$ 的最大值是 $5$)。取 $\lambda=5$:$A^{(5)}=\begin{pmatrix}1&0\\0&0\end{pmatrix}$,乘积只在 $(1,2)$ 处为 $1$,故 $C_{12}\ge5$ 而 $C_{21},C_{22}<5$;结合 $\lambda=4$ 的结果即锁定 $C_{21}=4$,结合 $\lambda=6$ 的失败即锁定 $C_{12}=5$。再补两轮:$\lambda=3$ 给出"$C_{11}<3$、其余 $\ge3$"(故 $C_{22}=3$),$\lambda=2$ 给出 $C_{11}\ge2$,合并即 $C_{11}=2$。原文所说"阈值 6 时失败,逐块缩窄即可定位值 5"就是这段扫描。 **截断支配恒等式(Lemma 4 的实算)**。对 entry $(1,2)$: $$ (A\oslash B)_{12}=\max\{A_{1k}:\ A_{1k}\le B_{k2}\}=\max\{5\ (5\le6),\ -\,(1\le0\ \text{不成立})\}=5, $$ $$ \big(B^{\mathsf T}\oslash A^{\mathsf T}\big)_{21}=\max\{B_{k2}:\ B_{k2}\le A_{1k}\}=\max\{-\,(6\le5\ \text{不成立}),\ 0\ (0\le1)\}=0, $$ $$ C_{12}=\max\{5,0\}=5\ \checkmark . $$ **两步算法的演示(§4.4)**。把 $A$ 的第 1 行排序为 $\{1,5\}$,取 $g=1$ 得两块 $R_1=\{1\},R_2=\{5\}$。对 $(1,2)$:Step 1 问最大的 $r$ 使 $(A_r\ast B)_{12}=1$,即存在 $k$ 满足 $A_{1k}\in R_r$ 且 $A_{1k}\le B_{k2}$——$r=2$ 可行($k=1$:$5\in R_2$ 且 $5\le6$),故 $r_{12}=2$;Step 2 在 $R_2$ 内取被支配的最大值,仍是 $5$。两步各自只做了 $\sqrt g$ 与一次块定位的工作。 ### 7.2 距离乘积的高位定位 取 $$ A=\begin{pmatrix}6&4\\3&2\end{pmatrix},\qquad B=\begin{pmatrix}2&0\\5&9\end{pmatrix}. $$ **完整乘积。** $$ C_{11}=\min\{6+2,\,4+5\}=\min\{8,9\}=8,\qquad C_{12}=\min\{6+0,\,4+9\}=\min\{6,13\}=6, $$ $$ C_{21}=\min\{3+2,\,2+5\}=\min\{5,7\}=5,\qquad C_{22}=\min\{3+0,\,2+9\}=\min\{3,11\}=3 . $$ **设定**。$\max A+\max B=6+9=15$,取 $W=16$;取 $L=2$,则 $\Delta=W/2^L=4$,$2^{L/2}=2$。平移矩阵: $$ A'_x=A-8x:\quad A'_0=A,\quad A'_1=\begin{pmatrix}-2&-4\\-5&-6\end{pmatrix}; $$ $$ B'_y=-B+4y:\quad B'_0=\begin{pmatrix}-2&0\\-5&-9\end{pmatrix},\quad B'_1=\begin{pmatrix}2&4\\-1&-5\end{pmatrix}. $$ **entry $(1,1)$($C_{11}=8$)**。按 Lemma 7,$D_d[1,1]=1\iff\min\{8,9\}<4d$: - $d=2$($d_1=1,d_2=0$):比较 $A'_1[1,k] 提示:对 $r$ 归纳,按途径的最后一个中转点 $k$ 拆分;"至多 $r$ 步可达"版本的归纳同理。 **练习 2【计算模型与经典瓶颈】**(→ [1.2 节](#model-and-classical-barriers)) 1. 基础:区分查询复杂度与时间复杂度两种记账各数什么,并解释输出 $n^2$ 个 entry 为什么对任何算法都构成 $\Omega(n^2)$ 的下界。 2. 基础:写出 Strassen 式技巧对减法的两处硬依赖(取差与消去),并复述 Boolean 半环嵌入整数环的论证,说明为什么 $O(\log n)$ 位整数足够。 3. 进阶:比较三种输入访问方式在 Boolean 乘法中的差别:逐 entry 的翻转 oracle、非零 entry 的邻接表式 oracle、以及直接把矩阵写进电路的经典数组。对每种方式说明:(a) 一次"读 $A_{ik}$"的代价;(b) 第 6.6 节的稀疏输入优势依赖哪一种;(c) §4–5 的时间界依赖哪一种假设。 > 提示:(b) 对照第 6.6 节的邻接表式访问结构,(c) 对照第 1.2 节"相干随机访问"的保留条款。 **练习 3【量子搜索三原语】**(→ [第 2 节](#quantum-search-primitives)) 1. 基础:设 $N=10^6$、$t_f=100$,计算原语一(已知 $t_f\ge t$,取 $t=100$)与 SearchAll 枚举的查询量级,并与逐个经典检查所需的 $N$ 次查询对照。 2. 进阶:证明 $\sum_{s=1}^{t}\frac1{\sqrt s}\le2\sqrt t$。由此说明:在 $N$ 个条目中枚举全部 $t$ 个解的成本 $\widetilde O(\sqrt{N(t+1)})$ 在 $t=N$ 时退化为 $\widetilde O(N)$——与逐个经典检查同阶,量子在"几乎全部都是解"时占不到便宜。 > 提示:$\sqrt s-\sqrt{s-1}=\frac1{\sqrt s+\sqrt{s-1}}\ge\frac1{2\sqrt s}$,求和后望远镜相消。 **练习 4【逐 entry Grover 基线】**(→ [第 3 节](#grover-entrywise-baseline)) 1. 基础:复述 Proposition 2 的两个前提与结论;说明 $\oplus$ 为 $\lor$、$\min$、$\max$ 三种情形分别调用哪个原语,单个 entry 的成本为何是 $\widetilde O(\sqrt n)$、总计为何是 $\widetilde O(n^{5/2})$。 2. 进阶:对第 7.1 节的矩阵 $A,B$,用逐 entry 候选枚举的方式算出 $(\max,\min)$ 乘积的 $C_{21}$ 与它的 witness,并指出"数据不共享、判断不共享"两处浪费分别对应这次计算中的哪些重复动作。 > 提示:对 $k\in\{1,2\}$ 逐一比较 $\min(A_{2k},B_{k1})$;两处浪费见第 3 节末尾的列表。 **练习 5【阈值化与支配乘积归约】**(→ [4.1 节](#threshold-dominance-reduction)) 1. 基础:写出截断支配乘积 $(A\oslash B)_{ij}$ 的定义与还原恒等式(Lemma 4),并验证支配比较的移项等价:$A_{ik}\le B_{kj}+x-y\iff A_{ik}-x\le B_{kj}-y$。 2. 基础:对第 7.1 节的 $A,B$,分别取 $\lambda\in\{2,3,4,5,6\}$ 写出 $A^{(\lambda)},B^{(\lambda)}$ 与 Boolean 乘积,用扫描的方式确定 $C$ 的全部 entry;再对 entry $(2,1)$ 验证截断支配恒等式 $C_{21}=\max\{(A\oslash B)_{21},(B^{\mathsf T}\oslash A^{\mathsf T})_{12}\}$。 3. 进阶:补全 Lemma 3 的证明:对实数 $a,b$ 证明 $\min(a,b)\ge\lambda\iff(a\ge\lambda)\land(b\ge\lambda)$;再据此说明为什么 $(\min,+)$ 的条件 $A_{ik}+B_{kj}\le\lambda$ **不能**写成两个独立条件的合取,并各举一个使"和小于 $\lambda$ 但两个单边条件都不成立"的数值例子。 > 提示:把设想的"单边条件"写成 $a\le\lambda_A$、$b\le\lambda_B$($\lambda_A+\lambda_B=\lambda$),取一侧贴着阈值、另一侧取 $0$ 构造反例。 **练习 6【广义支配乘积与参数平衡】**(→ [4.3 节](#generalized-dominance-balance)) 1. 基础:写出广义存在支配乘积的定义,并说明 Lemma 5 的分块分解把 witness 分成"跨块"与"同块"两类后,各交给什么算法处理,以及为什么前两项成本随 $t$ 递减、第三项随 $t$ 递增。 2. 基础:解释为什么 $\lceil\log_2(n-1)\rceil$ 次 $(\max,\min)$ 反复平方就得到全点瓶颈路径(第 4.5 节):写出"一条至多 $2r$ 条边的路径在中点拆成两段至多 $r$ 条边的路径"的归纳论证。 3. 进阶:在第 4.4 节的三项成本中取 $g=n^\delta,t=n^\gamma$,验证:(a) $\frac{5-\gamma}{2}=2+\frac\delta2\iff\gamma+\delta=1$;(b) 平衡后矩阵族项恰为 $n^{3/2}$;(c) 用 $\omega<2.373,\alpha>0.302$ 复算 $\gamma\approx0.054$ 与指数 $\approx2.473$。若把 $\omega$ 的上界改进到 $2.36$,指数大约降到多少?(只需数值实验,不必解闭式。) > 提示:$\omega$ 变小只改 $\beta=\frac{\omega-2}{1-\alpha}$,把它代回 $\gamma\ge\frac{1+2\alpha\beta-2\beta}{5-2\alpha\beta}$ 重算即可。 **练习 7【距离乘积的高位分解】**(→ [5.1 节](#distance-product-decomposition)) 1. 基础:对第 7.2 节的矩阵 $A,B$($W=16$、$L=2$、$\Delta=4$),用平移矩阵 $A'_0,A'_1,B'_0,B'_1$ 与严格支配比较定出 $C_{12}$ 与 $C_{21}$ 所在的区间(即分别求使 $D_d[i,j]=1$ 的最小 $d$)。 2. 基础:说明"拆位"如何把 $2^L$ 个阈值变成 $2^{L/2}$ 个 $A$ 型矩阵与 $2^{L/2}$ 个 $B$ 型矩阵:粗粒度 $2\Delta$ 的平移放在哪一侧、细粒度 $\Delta$ 放在哪一侧,以及为什么一次广义支配乘积能同时定位所有 $(i,j)$。 3. 进阶:对任意实数 $a,b,x,y$ 证明移项等价 $a+b 提示:把 $d\Delta$ 拆成 $d_1\cdot 2\Delta+d_2\cdot\Delta$,注意 $\frac{W}{2^{L/2}}=2\Delta$、$\frac{W}{2^L}=\Delta$。 **练习 8【输出敏感 Boolean 乘法与图碰撞】**(→ [6.1 节](#output-sensitive-graph-collision)) 1. 基础:写出输出参数 $\ell$ 的定义与朴素输出敏感算法的 $\widetilde O(n^{3/2}\sqrt\ell)$ 查询界,并说明多出来的那个 $\sqrt n$ 因子来自哪里。 2. 基础:复述 Lemma 8 与 Theorem 10 的归约:说明图碰撞条件恰好等价于"$k$ 是 $C_{ij}=1$ 的 witness 且尚未记录"、为什么 $G_k$ 的非边数至多 $\ell$;以及取 $A=I$、$B$ 编码 $f$ 时为何 $C=B$,从而 $\ell$-Threshold 的多项式方法下界如何转移过来。 3. 进阶:解释为什么 dense 输出($\ell=\Theta(n^2)$)时 $\widetilde O(n\sqrt\ell)$ 的查询界不等于亚二次总时间:分别指出 (a) 输出规模、(b) $\ell\sqrt n$ 项、(c) $\widetilde C$ 的经典维护这三笔账各占多少,并与 $\widetilde O(n^\omega)$ 比较。 > 提示:把 $\ell=\Theta(n^2)$ 代入查询界的时间实现 $\widetilde O(n\sqrt\ell+\ell\sqrt n)$,与输出 $n^2$ 位的成本逐项比较。 ## 参考文献与 Zoo 覆盖 - Zoo 编号 206:François Le Gall 与 Harumichi Nishimura, [Quantum Algorithms for Matrix Products over Semirings](https://arxiv.org/abs/1310.3898). - Zoo 编号 19、155、157、161:矩阵验证、输出敏感 Boolean 乘法、路径/矩阵等价与 [graph-collision 改进](https://arxiv.org/abs/1112.5855)。 - 正文引用的其他文献:Buhrman 与 Špalek, *Quantum verification of matrix products*, SODA 2006;Le Gall, *Improved output-sensitive quantum algorithms for Boolean matrix multiplication*, SODA 2012;Vassilevska Williams 与 Williams, *Sub-cubic equivalences between path, matrix and triangle problems*, FOCS 2010;Duan 与 Pettie (SODA 2009) 的 $(\max,\min)$ 乘法与全点瓶颈路径算法;Vassilevska Williams (STOC 2006) 与 Yuster (SODA 2009) 的距离乘积高位算法;Yuster 与 Zwick 的稀疏 Boolean 乘法分析;Dürr 与 Høyer, *A quantum algorithm for finding the minimum*, [arXiv:quant-ph/9607014](https://arxiv.org/abs/quant-ph/9607014)。