# 指数同余方程:离散对数子程序与 Grover 搜索的三次方加速 [Shor 离散对数算法](../ch04-classic-algorithms/shors-discrete-log-tutorial.md)告诉我们:有限域乘法群中的单个离散对数问题——给定 $f$ 与 $f^x$,求 $x$——可以在 $\operatorname{poly}(\log q)$ 时间内解决。但是,一旦两个指数通过**加法**耦合在一起,问题会重新变难。本课研究有限域 $\mathbb F_q$ 上的**指数同余方程 (exponential congruence)** $$ af^x+bg^y=c,\qquad a,b,c,f,g\in\mathbb F_q^\times, $$ 其中 $a,b,c,f,g$ 已知,要求的是指数对 $(x,y)$。本课将完整推导 van Dam 与 Shparlinski 的量子算法:先用乘法特征和证明"解一定出现在一个较窄的矩形条带中",再把 Shor 离散对数包装成一个可相干调用的判定器,交给 [Grover 搜索](../ch03-algo-basics/grover.md) 与[振幅放大](../ch03-algo-basics/amplitude-amplification.md)去找到解。最终的最坏情形运行时间为 $\widetilde O(q^{3/8})$,相对论文中给出的经典 $\widetilde O(q^{9/8})$ 算法,在 $q$ 的指数幂上获得**三次方**改进($9/8 \to 3/8$);但请注意,它仍然不是输入长度 $\log q$ 的多项式时间算法。 阅读本课需要:有限域与循环群的基本概念,[量子傅里叶变换](../ch03-algo-basics/quantum-fourier-transform.md)与[相位估计](../ch03-algo-basics/phase-estimation.md)(作为 Shor 算法的内部,不需要重新推导),以及 Grover 搜索与振幅放大的结论。全课约定 $\widetilde O(\cdot)$ 隐藏 $\log q$ 的多项式因子,$\lesssim$、$\gtrsim$ 在比较时忽略 $\operatorname{polylog} q$ 因子。 :::{admonition} 本课知识点 :class: tip 1. **[从离散对数到指数同余](#dlog-to-exp-congruence)**——能写出指数同余方程 $af^x+bg^y=c$ 并指明已知量与待求量,解释固定任一指数后问题退化为一次离散对数(量子上容易)、真正的困难来自两个指数的加法耦合。 2. **[基本周期矩形与判定器 $S(y)$](#period-rectangle-decision)**——能由阶 $s=\operatorname{ord}(f)$、$t=\operatorname{ord}(g)$ 把搜索域限定为 $s\times t$ 的基本周期矩形,写出判定函数 $S(y)$ 的定义并证明每个 $y$ 至多贡献一个解。 3. **[乘法特征与子群成员指标](#character-membership-indicator)**——能用乘法特征的正交关系推导子群成员指标函数 $\mathbf 1_{\langle f\rangle}(z)=\frac{1}{n}\sum_\chi\chi(z)$,并验证它在子群内取 $1$、子群外取 $0$。 4. **[解数渐近公式](#solution-count-asymptotics)**——能把 $N(r,s)$ 按"平凡特征主项 + 非平凡特征误差项"拆分,推导 $N(r,s)=\frac{rs}{q-1}+O(q^{1/2}\log q)$,并解释主项的随机模型含义与误差项为何只依赖单个特征和的最大值。 5. **[短边引理与完备性](#short-side-lemma)**——能从"主项压过误差"的条件解出条带宽度 $r=\lceil Cq^{3/2}s^{-1}\log q\rceil$,并解释 $r\le t$ 与 $r>t$ 两种情形下"无漏解"保证如何分工。 6. **[相干判定器与振幅放大](#coherent-oracle-bbht)**——能按"计算—标志—相位翻转—反计算"五步描述预言机 $S(y)$ 的相干实现,解释标志比特为何恰好实现 $S(y)$,并说明为什么必须用未知解数(BBHT)版本的振幅放大。 7. **[复杂度分析与三次方改进](#complexity-cubic-improvement)**——能推导两种情形的 $\widetilde O(q^{3/8})$ 界,与同一骨架下经典的 $\widetilde O(q^{9/8})$ 对照,比较"搜索平方根加速"与"判定器 $\sqrt s\to\operatorname{polylog}$"两个改进因子,并指出该结果仍是 $\log q$ 的指数时间。 8. **[$\mathbb F_7$ 小例子演算](#f7-worked-example)**——能在 $\mathbb F_7$ 上完整执行"阶查找—逐 $y$ 判定—解数对照"的演算,并解释 $f$ 为生成元时成员检验退化、成本由 $\widetilde O(\sqrt t\,)$ 决定的极端情形。 ::: ## 1. 问题背景:为什么两个指数会变难 (dlog-to-exp-congruence)= ### 1.1 从离散对数到指数同余 先回忆离散对数问题。设 $\mathbb F_q^\times$ 是 $q$ 元有限域的乘法群(它是 $q-1$ 阶循环群,这是有限域的标准事实),$f\in\mathbb F_q^\times$ 给定。离散对数问题是:给定 $z\in\langle f\rangle$,求 $x$ 使得 $f^x=z$。Shor 算法把它化为周期查找,配合量子傅里叶采样在 $\operatorname{poly}(\log q)$ 时间内求解——这是量子计算最著名的指数级加速之一。 现在看指数同余方程 $af^x+bg^y=c$。如果两个未知数中有一个被固定,问题立刻退化: - 固定 $y$,移项得 $f^x=a^{-1}(c-bg^y)$,这是一个以 $f$ 为底的离散对数; - 固定 $x$,移项得 $g^y=b^{-1}(c-af^x)$,这是一个以 $g$ 为底的离散对数。 也就是说,"单指数"的版本在量子计算机上是容易的。困难来自两个指数的真正耦合:加法 $af^x+bg^y$ 把两个循环群的乘法结构混在一起。量子傅里叶采样擅长处理的是"周期函数""阿贝尔群结构",而映射 $(x,y)\mapsto af^x+bg^y$ 的等值集合 $\{(x,y):af^x+bg^y=c\}$ 一般不构成群,也不具有可以直接傅里叶采样的周期结构。因此,既有的 HSP 机器无法直接吞下这个问题。 这个问题为什么值得研究?至少有三层动机。第一,它是检验"量子加速边界"的天然试金石:单离散对数有多项式时间量子算法,而稍加耦合之后,最好的量子算法仍然要花费关于 $q$ 的指数时间——指数幂从经典的 $9/8$ 降到 $3/8$,是一个实质但不彻底的改进,画出了当前技术的边界。第二,指数同余与某些**半直积群上的隐子群问题 (hidden subgroup problem, HSP)** 密切相关:如果能以 $\operatorname{poly}(\log q)$ 时间求解此类同余,就能为相应的 HSP 提供新的多项式时间量子算法;van Dam–Shparlinski 的论文明确讨论了这层联系,同时也明确指出他们的结果**没有**解决那个 HSP 所需的多项式时间子程序——这是本课第 7 节要再次强调的保留条款。第三,指数同余的解数估计本身是解析数论中的经典问题,乘法特征和(Gauss 和、Weil 界一路的技术)在其中扮演核心角色;本课可以看到这套经典工具如何与 Grover 搜索拼接成量子算法。 ### 1.2 经典算法的瓶颈 经典计算机如何处理这个问题?朴素的办法是穷举:遍历所有候选的 $y$,对每个 $y$ 计算 $z=a^{-1}(c-bg^y)$,然后判断 $z$ 是否落在子群 $\langle f\rangle$ 中、若落在其中则求出离散对数 $x$。瓶颈在第二步:**经典模型下没有多项式时间的离散对数算法**。用通用群算法(如 Shanks 的大步小步法)在以 $f$ 为底、阶为 $s$ 的群中做一次成员判定兼离散对数,需要 $\widetilde O(\sqrt{s}\,)$ 次群运算,最坏情形 $s\approx q$ 时单次检查的代价就是 $\widetilde O(q^{1/2})$。这个 $\sqrt{s}$ 不是偶然的:在只使用群运算黑箱的**通用群模型**中,离散对数有 $\Omega(\sqrt{s}\,)$ 的下界,因此大步小步在通用意义下已是最优——除非利用 $\mathbb F_q^\times$ 的具体表示(如指数演减法),否则经典每次候选检查都甩不掉这个平方根因子。 把"候选数 $\times$ 单次离散对数代价"与下文将要推导的数论引理结合起来,van Dam–Shparlinski 给出的经典算法最坏时间为 $\widetilde O(q^{9/8})$。这个 $9/8$ 本身就是一个参数平衡的结果:候选集合的宽度随 $s$ 增大而变窄,而单次判定的 $\sqrt s$ 随 $s$ 增大而变贵,最坏情形出现在两者顶住的临界点上。我们先把这个数当作经典基准记住,第 5.3 节会逐项重现它的推导,并看清量子算法的 $q^{3/8}$ 究竟改进了哪几个因子。 ### 1.3 算法概览 量子算法由三个部件拼接而成,每个部件各司其职: 1. **阶查找**:用 Shor 算法求出 $s=\operatorname{ord}(f)$、$t=\operatorname{ord}(g)$,把搜索范围限定为 $s\times t$ 的基本周期矩形; 2. **特征和引理**(纯数论,经典证明):证明当 $s$ 不太小时,解必定出现在 $y$ 轴方向宽度约为 $q^{3/2}s^{-1}$ 的窄条带内,从而把搜索空间从 $t$ 压缩到 $r\ll t$; 3. **Grover 搜索**:把"固定 $y$、求离散对数、验证等式"做成相干预言机,在压缩后的候选集上做平方根加速搜索。 三个部件中,只有第 3 步是"搜索加速",第 1 步是"参数确定",而第 2 步负责**完备性**——保证搜索范围之外确实没有遗漏的解。这个分工在第 3 节和第 5 节会反复出现。 (period-rectangle-decision)= ## 2. 搜索空间由元素阶决定 记 $$ s=\operatorname{ord}(f),\qquad t=\operatorname{ord}(g), $$ 即 $f$、$g$ 在乘法群 $\mathbb F_q^\times$ 中的阶:$s$ 是使 $f^s=1$ 成立的最小正整数,$t$ 同理。由循环群的基本事实,$s\mid(q-1)$ 且 $t\mid(q-1)$。 指数函数以阶为周期:对任意整数 $x$,$f^{x+s}=f^x f^s=f^x$。因此,如果 $(x,y)$ 是解,那么 $x\bmod s$ 与 $y\bmod t$ 的代表元也给出一个解;反过来,每个解的指数在模 $s$、模 $t$ 意义下唯一。于是我们**只需考虑** $$ 0\le x3/8$)。要再进一步,必须利用数论结构把候选集压缩到 $t$ 的真子集——这正是下一节的特征和引理。 ## 3. 特征和与"短边必有解"引理 本节的目标:证明当 $s$ 不太小时,解必然出现在 $y$ 轴方向一个宽度远小于 $t$ 的条带内。整条推理链是经典的解析数论,不涉及任何量子计算;它的产出是一个**存在性保证**,供量子搜索使用。 (character-membership-indicator)= ### 3.1 乘法特征与子群成员关系的代数表达 我们需要一个代数工具来"数"满足条件的 $y$:对每个 $y$,要判断 $z_y=a^{-1}(c-bg^y)$ 是否属于子群 $\langle f\rangle$。解析数论处理这类"子群成员关系"的标准工具是**乘法特征 (multiplicative character)**。 乘法特征 $\chi$ 是从 $\mathbb F_q^\times$ 到单位圆周 $\{w\in\mathbb C:|w|=1\}$ 的群同态,即 $\chi(uv)=\chi(u)\chi(v)$。由于 $\mathbb F_q^\times$ 是 $q-1$ 阶循环群,它的全部乘法特征也构成一个 $q-1$ 阶循环群(对偶群):取定生成元后,特征就是 $\xi^k\mapsto\omega^{jk}$($j=0,1,\ldots,q-2$),其中 $\omega$ 是 $q-1$ 次单位根。特征满足**正交关系**:对 $z\in\mathbb F_q^\times$, $$ \frac{1}{q-1}\sum_{\chi}\chi(z)= \begin{cases} 1,&z=1,\\ 0,&z\neq1, \end{cases} $$ 其中求和取遍全部 $q-1$ 个乘法特征。(当 $z=1$ 时每一项都是 $1$;当 $z\neq1$ 时,存在某个特征 $\chi_1$ 使 $\chi_1(z)\neq1$,两边同乘 $\chi_1(z)$ 后求和集不变,于是和只能为 $0$。)我们约定 $\chi(0)=0$。 现在把正交关系"升级"为子群成员关系的指标函数。设 $s=\operatorname{ord}(f)$,并记 $$ n:=\frac{q-1}{s}, $$ 即子群 $\langle f\rangle$ 在 $\mathbb F_q^\times$ 中的指数(由于 $s\mid(q-1)$,$n$ 是整数)。商群 $\mathbb F_q^\times/\langle f\rangle$ 是 $n$ 阶循环群。在所有乘法特征中,恰有 $n$ 个在 $\langle f\rangle$ 上恒取 $1$——它们正是商群的全部特征(每个这样的特征只依赖于陪集 $z\langle f\rangle$,而 $n$ 阶循环群恰有 $n$ 个特征)。把这 $n$ 个特征取出来,对任意 $z\in\mathbb F_q^\times$ 定义 $$ \mathbf 1_{\langle f\rangle}(z):=\frac{1}{n}\sum_{\substack{\chi\ \text{在}\ \langle f\rangle\text{ 上平凡}}}\chi(z). $$ **这个和式就是子群成员关系的精确指标函数**:若 $z\in\langle f\rangle$,则每一项 $\chi(z)=1$,和为 $n$,除以 $n$ 得 $1$;若 $z\notin\langle f\rangle$,则 $z$ 在商群中的像 $\bar z\neq 1$,和式等于商群上的正交关系 $\sum_{\hat\chi}\hat\chi(\bar z)=0$,除以 $n$ 得 $0$。于是我们得到了一个完全代数的判据: $$ z\in\langle f\rangle\iff\mathbf 1_{\langle f\rangle}(z)=1. $$ (solution-count-asymptotics)= ### 3.2 解数估计:主项与误差项 令 $N(r,s)$ 表示满足 $$ 0\le x\ 0, $$ 条带中至少有一个解(事实上至少有主项一半那么多的解)。把上面的不等式解出 $r$:两边乘以 $\frac{q-1}{s}$,并用 $q-1t$:引理不适用(它不排除"前 $t$ 个 $y$ 中无解"的可能),但此时 $tt$)。特征和界负责"无漏解",量子搜索负责"找到见证",两者缺一不可。 ## 4. 量子算法 (coherent-oracle-bbht)= ### 4.1 判定器 $S(y)$ 的相干实现 Grover 搜索要求预言机以相干方式工作:对叠加态 $\sum_y\alpha_y|y\rangle$,一次调用就要同时算出所有 $S(y)$,而不能逐个测量。我们按标准的"计算—标志—相位翻转—反计算"模式实现 $S(y)$,分五步: 1. **计算 $g^y$**:用平方-乘算法实现可逆模幂 $|y\rangle|0\rangle\mapsto|y\rangle|g^y\rangle$,需要 $O(\log t)=O(\log q)$ 次域乘法,总代价 $\operatorname{poly}(\log q)$; 2. **计算 $z_y=a^{-1}(c-bg^y)$**:域上的乘法、减法都是可逆运算,代价 $\operatorname{poly}(\log q)$; 3. **相干离散对数**:在 $z_y$ 上运行 Shor 离散对数线路(以 $f$ 为底),把所有测量推迟。线路输出一个候选对数 $\hat x$ 及工作区。关键点在于:Shor 算法的输出是**可验证**的——追加一个可逆比较器,计算标志比特 $b=[f^{\hat x}=z_y\ \land\ z_y\neq0]$。若 $z_y\in\langle f\rangle$,Shor 算法以高概率给出正确的 $\hat x$,验证通过,$b=1$;若 $z_y\notin\langle f\rangle$,任何 $\hat x$ 都无法通过验证,$b=0$。因此 $b$ 正是 $S(y)$(误差概率见下); 4. **相位翻转**:对标志比特施加受控相位(或先制备 $|{-}\rangle$ 做相位反冲),实现 $|y\rangle\mapsto(-1)^{S(y)}|y\rangle$; 5. **反计算**:把第 1–3 步的线路逆向运行,清除工作区,只留下 $y$ 寄存器和已注入的相位。 两点技术说明。第一,Shor 离散对数是有界误差算法,单次成功概率为常数;把它独立重复 $O(\log\log q)$ 次并取验证通过的结果,可以把每次预言机调用的错误率压到 $1/\operatorname{poly}(q)$ 以下,对 Grover 迭代的总影响可以忽略,代价只是 $\operatorname{polylog} q$ 因子,被 $\widetilde O(\cdot)$ 吸收。第二,搜索区间内标记项的数目 $m$ 事先未知(这正是问题的难点),因此不能用固定迭代次数的 Grover,而要用振幅放大一章中处理未知解数的版本(BBHT 式的指数增长尝试):其成本为 $\widetilde O(\sqrt{|Y|/m}\,)$,其中 $Y$ 是搜索区间;最坏情形 $m\ge1$ 时即 $\widetilde O(\sqrt{|Y|}\,)$。 ### 4.2 整体流程 综合前面的所有部件,算法如下: 1. **阶查找**:用 Shor 算法求 $s=\operatorname{ord}(f)$、$t=\operatorname{ord}(g)$。若 $st$ 时,$Y$ 覆盖整个基本周期矩形,搜索穷尽所有候选,找到即解、找不到即无解(至多受子程序有界误差影响,可忽略)。 ## 5. 复杂度分析 现在逐项推导两种情形下的运行时间。搜索区间大小为 $|Y|$,每次预言机调用代价 $\operatorname{poly}(\log q)$,BBHT 搜索调用 $O(\sqrt{|Y|}\,)$ 次(最坏情形),故总时间为 $\widetilde O(\sqrt{|Y|}\,)$,问题归结为估计 $\sqrt{|Y|}$。 ### 5.1 情形 A:$r\le t$ 搜索区间是条带,$|Y|=r$,成本为 $$ \widetilde O(\sqrt r\,) =\widetilde O\!\left(\sqrt{C\,q^{3/2}s^{-1}\log q}\,\right) =\widetilde O\!\left(q^{3/4}s^{-1/2}\right), $$ 其中第二步把常数 $C$ 和 $\sqrt{\log q}$ 吸收进 $\widetilde O$。这个表达式里 $s$ 越小成本越高,所以我们需要 $s$ 的**下界**。由两条信息: - $s\ge t\ge r$(第一条是约定,第二条是情形 A 的前提); - $r\ge Cq^{3/2}s^{-1}\log q$($r$ 的定义,上取整只会让它更大),即 $sr\gtrsim q^{3/2}$, 把第一条的 $r\le s$ 与第二条相乘的方向对齐: $$ s^2\ \ge\ sr\ \gtrsim\ q^{3/2}, $$ 两边开方得 $s\gtrsim q^{3/4}$。代回成本表达式——注意 $s^{-1/2}$ 关于 $s$ 递减,下界代入后得到上界: $$ q^{3/4}s^{-1/2}\ \lesssim\ q^{3/4}\cdot\left(q^{3/4}\right)^{-1/2}\ =\ q^{3/4}\cdot q^{-3/8}\ =\ q^{3/8}. $$ 故情形 A 的成本为 $\widetilde O(q^{3/8})$。直观地说:条带宽度 $r\approx q^{3/2}/s$ 随 $s$ 增大而变窄,而最坏情形出现在 $s$ 尽量小、但又被约束 $sr\gtrsim q^{3/2}$ 与 $r\le s$ 顶住的位置,解 $s\approx r\approx q^{3/4}$,此时 $\sqrt r\approx q^{3/8}$。 ### 5.2 情形 B:$r>t$ 搜索区间是整个周期边,$|Y|=t$,成本为 $\widetilde O(\sqrt t\,)$。由情形前提 $tt\ge1$ 意味着上取整不起主导作用,$r$ 与 $Cq^{3/2}s^{-1}\log q$ 同阶): $$ st\ <\ sr\ \lesssim\ q^{3/2}\operatorname{polylog} q. $$ 再由约定 $t\le s$,有 $t^2\le st$。于是 $$ \sqrt t\ =\ \left(t^2\right)^{1/4}\ \le\ (st)^{1/4}\ \lesssim\ \left(q^{3/2}\right)^{1/4}\ =\ q^{3/8}, $$ polylog 因子照例被吸收。故情形 B 的成本同样是 $\widetilde O(q^{3/8})$。 两种分支合起来:**算法在 $\widetilde O(q^{3/8})$ 时间内找到一组解 $(x,y)$,或确定整个基本周期矩形中无解。** 这就是 van Dam–Shparlinski 的最坏情形量子界。 (complexity-cubic-improvement)= ### 5.3 与经典算法的对比:三次方改进的来源 为了看清量子改进究竟来自哪里,我们用**同一副骨架**重建论文中的经典 $\widetilde O(q^{9/8})$ 算法。骨架完全相同:阶已知(经典可用因数分解 $q-1$ 后逐个检验,代价被吸收)、短边引理相同、情形划分相同。唯一的差别在判定器 $S(y)$ 的代价:经典模型下,用 Shanks 大步小步法做子群成员判定兼离散对数需要 $\widetilde O(\sqrt s\,)$ 次群运算;而且经典没有振幅放大,搜索是逐项扫描。于是: - 情形 A:扫描 $r$ 个候选,每个代价 $\sqrt s$,总成本 $$ \widetilde O\!\left(r\sqrt s\,\right) =\widetilde O\!\left(q^{3/2}s^{-1}\cdot s^{1/2}\right) =\widetilde O\!\left(q^{3/2}s^{-1/2}\right) \le\widetilde O\!\left(q^{3/2}\cdot q^{-3/8}\right) =\widetilde O\!\left(q^{9/8}\right), $$ 其中最后一步同样用了情形 A 导出的 $s\gtrsim q^{3/4}$; - 情形 B:扫描 $t$ 个候选,总成本 $\widetilde O(t\sqrt s\,)$。利用 $t\le s$ 给出的 $t\le(st)^{1/2}$(即 $t^{1/2}\le(st)^{1/4}$): $$ t\sqrt s\ =\ (st)^{1/2}\cdot t^{1/2}\ \le\ (st)^{1/2}(st)^{1/4}\ =\ (st)^{3/4}\ \lesssim\ \left(q^{3/2}\right)^{3/4}\ =\ q^{9/8}. $$ 对照量子版本,改进来自两个因子的叠加:搜索从逐项扫描 $O(|Y|)$ 变为振幅放大 $O(\sqrt{|Y|})$(平方根),单次判定从经典大步小步的 $\widetilde O(\sqrt s\,)$ 变为 Shor 算法的 $\operatorname{poly}(\log q)$(指数级)。两种情形中成本表达式的"主结构"——情形 A 的 $|Y|\cdot\sqrt s$ 与情形 B 的 $t\cdot\sqrt s$——被替换为 $\sqrt{|Y|}\cdot\operatorname{polylog}$ 与 $\sqrt t\cdot\operatorname{polylog}$,最终在 $q$ 的指数上体现为 $$ \frac{9}{8}\ \longrightarrow\ \frac{3}{8},\qquad \frac{9/8}{3/8}=3, $$ 即**指数幂的三次方改进**。必须强调的是这个改进的限度:输入 $a,b,c,f,g$ 用 $O(\log q)$ 个比特表示,而 $q^{3/8}=2^{(3/8)\log_2 q}$ 关于输入长度仍是**指数时间**。这与 Shor 算法对单个离散对数的多项式时间形成鲜明对比——加法耦合把问题从"多项式可解"推回了"指数可解但指数更小"的区间。 (f7-worked-example)= ## 6. 一个小例子:$\mathbb F_7$ 上的完整演算 渐近界的常数在 $q=7$ 这种玩具尺度上没有任何意义(短边引理里的 $C$ 是未指定的大常数),但算法的每个部件都可以完整地手工跑一遍。取 $$ a=b=1,\qquad f=3,\qquad g=2,\qquad c=5, $$ 即求解 $3^x+2^y=5\pmod 7$。 **第一步:阶查找。** $\mathbb F_7^\times=\{1,2,3,4,5,6\}$ 是 $6$ 阶循环群。逐次计算 $3$ 的幂: $$ 3^0=1,\quad 3^1=3,\quad 3^2=2,\quad 3^3=6,\quad 3^4=4,\quad 3^5=5,\quad 3^6=1\pmod 7, $$ 所以 $s=\operatorname{ord}(3)=6$,$3$ 是生成元,$\langle 3\rangle=\mathbb F_7^\times$。再算 $2$ 的幂: $$ 2^0=1,\quad 2^1=2,\quad 2^2=4,\quad 2^3=1\pmod 7, $$ 所以 $t=\operatorname{ord}(2)=3$。基本周期矩形是 $0\le x<6$、$0\le y<3$,共 $18$ 个候选指数对。 **第二步:逐 $y$ 运行判定器。** 计算 $z_y=c-g^y=5-2^y\bmod 7$,并判断 $z_y\in\langle 3\rangle$、求离散对数 $3^x=z_y$: - $y=0$:$z_0=5-1=4$。查上面的幂表,$4=3^4$,故 $x=4$,$S(0)=1$; - $y=1$:$z_1=5-2=3$。$3=3^1$,故 $x=1$,$S(1)=1$; - $y=2$:$z_2=5-4=1$。$1=3^0$,故 $x=0$,$S(2)=1$。 三个候选全部命中,解为 $(x,y)\in\{(4,0),(1,1),(0,2)\}$。逐一验证: $$ 3^4+2^0=4+1=5,\qquad 3^1+2^1=3+2=5,\qquad 3^0+2^2=1+4=5\pmod 7.\ \checkmark $$ **第三步:对照解数公式。** 条带取满整个周期 $r=t=3$ 时,公式的主项给出 $$ N(3,6)\approx\frac{rs}{q-1}=\frac{3\times6}{6}=3, $$ 与实际解数 $3$ 完全吻合(当然在 $q=7$ 时误差项的渐近界无意义,这只是巧合级别的吻合,用来说明主项的含义)。 **第四步:量子算法在这个例子上会做什么。** 真实的算法不会顺序尝试 $y$:它先由相位估计求出 $s=6$、$t=3$;然后注意到 $s=q-1$($f$ 是生成元),于是任意非零的 $z_y$ 必在 $\langle f\rangle$ 中,判定器几乎总是回答 $1$;Grover/BBHT 在 $|Y|=3$ 个候选、$m=3$ 个标记项上以约 $\sqrt{3/3}=1$ 次查询级别的代价直接选中某个解,最后再跑一次离散对数输出 $(x,y)$。整个流程中"计算 $g^y$、检查子群成员关系、求离散对数、验证等式"都被做成相干子程序,由振幅放大选择成功分支——小例子里看不出加速,但线路结构与 $q$ 巨大时完全相同。 这个例子还演示了判定器退化的极端情形:当 $f$ 是生成元($s=q-1$)时,子群成员检验形同虚设,问题实质上变成"$t$ 个候选中做搜索",量子成本 $\widetilde O(\sqrt t\,)$ 直接就是好的。真正困难的情形是 $s,t$ 都远小于 $q$——那也正是特征和引理发挥压缩作用的舞台。 为了看清成员检验真正起筛选作用的样子,把同一个域上的底换成非生成元:取 $f=2$(阶 $s=3$,$\langle 2\rangle=\{1,2,4\}$)、$g=3$(阶 $t=6$),解 $2^x+3^y=6\pmod 7$。这里 $s 提示:对照"周期函数/阿贝尔群同态的核",检查等值集合 $\{(x,y):af^x+bg^y=c\}$ 是否构成群或具有周期性。 **练习 2【基本周期矩形与判定器 $S(y)$】**(→ [第 2 节](#period-rectangle-decision)) 1. 设 $s=\operatorname{ord}(f)$、$t=\operatorname{ord}(g)$:写出基本周期矩形的定义,解释为什么每个解在模 $s$、模 $t$ 意义下唯一;再写出判定函数 $S(y)$ 的取值规则,并说明 $z_y\notin\langle f\rangle$(含 $z_y=0$)的 $y$ 为什么无解。 2. 证明:固定 $y$ 时,方程 $af^x+bg^y=c$ 在 $0\le x 提示:$x\mapsto f^x$ 在阶为 $s$ 的区间上是什么样的映射? **练习 3【乘法特征与子群成员指标】**(→ [3.1 节](#character-membership-indicator)) 1. 对 $\mathbb F_7$ 写出二次乘法特征(Legendre 符号)在 $1,2,\ldots,6$ 上的取值,并验证 $\sum_{z\in\mathbb F_7^\times}\chi(z)=0$;再写出一般正交关系 $\frac{1}{q-1}\sum_\chi\chi(z)$ 在 $z=1$ 与 $z\ne1$ 时的取值。 2. 验证 3.1 节的指标公式:设 $\chi$ 取遍在 $\langle f\rangle$ 上平凡的全部 $n=(q-1)/s$ 个乘法特征,证明 $\frac{1}{n}\sum_\chi\chi(z)$ 当 $z\in\langle f\rangle$ 时等于 $1$,当 $z\in\mathbb F_q^\times\setminus\langle f\rangle$ 时等于 $0$。 > 提示:把这些特征与商群 $\mathbb F_q^\times/\langle f\rangle$ 的特征一一对应,再用正交关系。 **练习 4【解数渐近公式】**(→ [3.2 节](#solution-count-asymptotics)) 1. 写出解数渐近公式并用随机模型解释主项:单次尝试命中的概率是多少?$r$ 次尝试的期望命中数是多少?对照第 6 节:$q=7$、$s=6$、$r=t=3$ 时主项预言多少个解? 2. 解释为什么误差项只取决于单个特征和的最大值 $\max_{\chi\ne\chi_0}|T_\chi|=O(q^{1/2}\log q)$、而不是 $n$ 个非平凡特征的总和:指出推导中的哪个因子保证了这一点,并说明平凡特征的内层和为什么会差一个 $O(1)$。 > 提示:非平凡特征各自的权重是 $\frac1n$;$z_y=0$ 等价于 $c=bg^y$,在一个周期内至多发生一次。 **练习 5【短边引理与完备性】**(→ [3.3 节](#short-side-lemma)) 1. 由下界 $N(r,s)\ge\frac{rs}{q-1}-C'q^{1/2}\log q$ 出发,推导"主项压过误差"的条件并解出条带宽度 $r=\lceil Cq^{3/2}s^{-1}\log q\rceil$,写明常数关系 $C=2C'$ 与每一步用到的放缩。 2. 解释为什么特征和引理负责算法的"无漏解"(完备性),而 Grover 搜索本身不负责。具体地:如果跳过短边引理、直接在 $\{0,\ldots,\lfloor q^{3/8}\rfloor\}$ 上跑 Grover,算法的输出语义会出什么问题? > 提示:分别考虑 $r\le t$ 与 $r>t$ 两种情形下"搜索失败"各能推出什么结论;跳过引理后"没找到"还能不能断言无解? **练习 6【相干判定器与振幅放大】**(→ [4.1 节](#coherent-oracle-bbht)) 1. 按顺序列出预言机实现 $S(y)$ 的五个步骤,并说明"反计算"一步的作用:若省略它,寄存器里会残留什么、对 Grover 迭代中的干涉有什么影响? 2. 解释标志比特 $b=[f^{\hat x}=z_y\ \land\ z_y\neq0]$ 为什么恰好实现 $S(y)$:分别讨论 $z_y\in\langle f\rangle$ 与 $z_y\notin\langle f\rangle$ 两种情形;再解释为什么不能用固定迭代次数的 Grover,而要用 BBHT 式的未知解数版本。 > 提示:Shor 离散对数的输出是可验证的;搜索区间内标记项个数 $m$ 事先未知。 **练习 7【复杂度分析与三次方改进】**(→ [5.3 节](#complexity-cubic-improvement)) 1. 在最坏点 $s\approx r\approx q^{3/4}$ 处,把经典情形 A 的成本分解为"扫描 $r$ 个候选 $\times$ 单次判定 $\sqrt s\,$"两个因子的幂,指出振幅放大与 Shor 判定器分别把这两个因子改成了什么,再用 $\frac{9/8}{3/8}=3$ 核验"三次方改进"的说法。 2. 完整写出情形 A($r\le t$)从 $\widetilde O(\sqrt r\,)$ 到 $\widetilde O(q^{3/8})$ 的不等式链,并指出每一步用到了哪条前提($s\ge t$、$r\le t$、$r$ 的定义);模仿 5.1 节,但要求自己补全所有代数变形。 3. 在第 7 节的多解承诺 $M\approx\frac{st}{q-1}\gg1$ 下,自行推导参数化界 $\widetilde O\bigl(q^{1/2}(st)^{-1/4}\bigr)$。 > 提示:情形 A 用 $r\le s$ 与 $sr\gtrsim q^{3/2}$ 相乘;多解承诺下在 $x$、$y$ 两个方向分别写出成本 $\sqrt{t/M}$ 与 $\sqrt{s/M}$,取较好的一侧并用 $s\ge t$ 消元。 **练习 8【$\mathbb F_7$ 小例子演算】**(→ [第 6 节](#f7-worked-example)) 1. 在 $\mathbb F_7$ 上解 $4^x+3^y=3\pmod 7$:先求 $\operatorname{ord}(4)$、$\operatorname{ord}(3)$ 与基本周期矩形,再逐 $y$ 计算 $z_y=3-3^y$ 并判断是否属于 $\langle 4\rangle$,写出全部解并逐一验证。 2. 设 $f$ 是 $\mathbb F_q^\times$ 的生成元。说明:除 $z_y=0$(即 $c=bg^y$)外,任意固定的 $y$ 都能用一次离散对数求出唯一的 $x$,并解释此时整个算法的成本由什么决定。 > 提示:对照第 6 节第一个例子里 $s=q-1$ 的讨论——成员检验形同虚设时,问题变成"在 $t$ 个候选中搜索"。 ## 参考文献 - Zoo 编号 111:Wim van Dam 与 Igor E. Shparlinski, [Classical and Quantum Algorithms for Exponential Congruences](https://arxiv.org/abs/0804.1109). - Peter Shor, [Polynomial-Time Algorithms for Prime Factorization and Discrete Logarithms on a Quantum Computer](https://doi.org/10.1137/S0097539795293172).