# Pell 方程与主理想问题:从实数周期到量子傅里叶采样 Pell 方程看起来只含平方与整数,却揭示了 Shor 周期查找之后一个更深的主题:周期不一定是整数,也不一定能由一个严格的一一函数隐藏。本课从二次域的"基础单位"出发,推导 Hallgren 如何在实数轴上寻找周期,并说明同一机制为什么能解决主理想问题。 阅读本课前,我们假设你已经掌握[量子傅里叶变换](../ch03-algo-basics/quantum-fourier-transform.md)、[相位估计](../ch03-algo-basics/phase-estimation.md)和 [Shor 因数分解](../ch04-classic-algorithms/shors-algorithm-tutorial.md)。我们不会再推导 QFT 本身,但会反复用到 Shor 算法的整体框架:"制备叠加—可逆计算函数值—测量—QFT—经典后处理恢复周期"。本课的核心是看清:当周期变成实数、函数变成多对一且带跳变时,这个框架的哪几步会出问题,以及如何补救。 :::{admonition} 本课知识点 :class: tip 1. **[Pell 方程与基础单位](#pell-fundamental-unit)**——能写出 Pell 方程并说明它的解就是二次域中范数为 $1$ 的单位,进而证明所有正解恰为基础单位 $\varepsilon$ 的幂并完成 $d=2$ 的演算。 2. **[调节子与输出长度](#regulator-output-length)**——能论证直接输出最小解 $(x_1,y_1)$ 受指数级输出长度下界的限制,并解释为什么 $R=\log\varepsilon$ 的高精度值是多项式长度的无损压缩。 3. **[经典算法的边界](#classical-barriers)**——能比较连分数法与次指数算法的耗时来源,并说明因数分解到 Pell 型问题的约化方向及反向约化未知意味着什么。 4. **[主理想与生成元的非唯一性](#principal-ideal-generators)**——能写出分式理想与主理想的定义,证明 $(\alpha)=(\beta)$ 当且仅当 $\beta=\alpha\varepsilon^k$,并解释生成元在对数轴上构成间隔为 $R$ 的等差点列。 5. **[约化理想与实数周期函数](#infrastructure-periodic-function)**——能说明约化理想与 infrastructure 如何把 $R$ 编码为可计算的周期函数 $f$,验证 $f(t+R)=f(t)$,并指出多对一与边界跳变两处缺陷。 6. **[量子实数周期查找](#quantum-period-finding)**——能按网格化、制备叠加、测量、QFT 四步写出各阶段寄存器状态,推导谱峰条件 $k/q\approx\ell/(NR)$,并复算 $d=2$ 的玩具数值示例。 7. **[正确性的三个误差源](#error-sources)**——能列出网格化、函数缺陷、窗口截断三个误差源,并说明为什么三者可控时谱峰保留逆多项式概率、重复多项式次采样即可恢复 $R$。 8. **[隐藏平移求解主理想问题](#hidden-shift-pip)**——能推导谱峰相位因子 $e^{2\pi i\ell\log|\alpha|/R}$ 的来源,并解释为什么生成元只能恢复到模 $R$、而这源于问题本身的非唯一性。 ::: (pell-fundamental-unit)= ## 1. Pell 方程:问题从哪里来 设 $d$ 是一个正的、非完全平方的整数(例如 $d=2,3,5,6,7,8,\dots$;$d=4$ 被排除,因为那时方程退化)。**Pell 方程**是 $$ x^2-dy^2=1,\qquad x,y\in\mathbb Z. $$ 这是一个丢番图方程:我们只在整数里找解。它有两个平凡解 $(x,y)=(\pm1,0)$,除此以外的解称为非平凡解。Lagrange 证明了一个经典事实:只要 $d$ 是非平方正整数,非平凡解一定存在。所以问题从来不是"有没有解",而是"最小的那个解有多大、能不能算出来"。 这个方程为什么重要?至少有三层原因。 - **代数原因**:$x^2-dy^2$ 恰好是数 $x+y\sqrt d$ 在二次域 $\mathbb Q(\sqrt d)$ 中的范数。Pell 方程的解就是这个域里范数为 $1$ 的代数整数——即所谓**单位 (unit)**。求 Pell 方程的解,等价于求二次域的单位群,这是代数数论最基本的计算任务之一。 - **算法原因**:最小解可以大到难以置信。著名的例子是 $d=61$(这是 Fermat 在 1657 年向同行提出的挑战):最小正解是 $$ (x_1,y_1)=(1766319049,\;226153980), $$ 而 $d=62$ 的最小解只有 $(63,8)$。$d$ 只增加 $1$,答案的位数却相差近十位数。这种"输入稍微变一点、输出大小就剧烈跳动"的现象预示着:问题的难度不在 $d$ 的数值,而在某个隐藏的、起伏剧烈的数论对象上。 - **复杂性原因**:Hallgren 证明了 Pell 方程(的适当版本)与**主理想问题 (principal ideal problem, PIP)** 存在多项式时间的量子算法;而已知的经典算法一般都是次指数的。因此它是"量子计算在整数分解之外真正扩大优势版图"的标志性问题之一,也是通往类群计算、进而通往更多数论问题的入口(见[单位群与类群](unit-class-groups.md))。 ## 2. 基础单位与解的全部结构 ### 2.1 范数与共轭 把方程因式分解到 $\mathbb Q(\sqrt d)$ 中看。对 $\alpha=x+y\sqrt d$($x,y\in\mathbb Z$),定义它的**共轭**与**范数**为 $$ \bar\alpha=x-y\sqrt d,\qquad N(\alpha)=\alpha\bar\alpha=x^2-dy^2. $$ 范数的关键性质是**乘性**:对任意 $\alpha,\beta\in\mathbb Q(\sqrt d)$, $$ N(\alpha\beta)=N(\alpha)N(\beta). $$ 验证只需一行:记 $\beta=u+v\sqrt d$,则 $$ N(\alpha\beta)=(\alpha\beta)(\overline{\alpha\beta})=(\alpha\bar\alpha)(\beta\bar\beta)=N(\alpha)N(\beta), $$ 其中用到 $\overline{\alpha\beta}=\bar\alpha\bar\beta$(共轭是域自同构:它保持加减乘,把 $\sqrt d$ 送到 $-\sqrt d$)。 Pell 方程的解恰好是 $N(\alpha)=1$ 的元素。乘性立刻解释了两件事: - 若 $\alpha$ 是解,则 $N(\alpha^2)=N(\alpha)^2=1$,所以 $\alpha$ 的任意幂仍是解——解在乘法下封闭; - 若 $N(\alpha)=1$,则 $\alpha^{-1}=\bar\alpha$ 也是解——解在取逆下封闭。 于是 Pell 方程的解集构成一个乘法群,它就是 $\mathbb Q(\sqrt d)$ 中代数整数环的**单位群**。这就是为什么解 Pell 方程等于计算二次域的单位群。 ### 2.2 最小解生成一切 在所有满足 $x+y\sqrt d>1$ 的解中,取使 $x+y\sqrt d$ 最小的那个(由 Lagrange 的存在性定理,这样的最小者存在)。记它的系数为 $(x_1,y_1)$,并定义**基础单位 (fundamental unit)** $$ \varepsilon=x_1+y_1\sqrt d>1. $$ 注意 $\varepsilon$ 的共轭满足 $$ \bar\varepsilon=x_1-y_1\sqrt d=\frac{N(\varepsilon)}{\varepsilon}=\frac1\varepsilon=\varepsilon^{-1}, $$ 第一步用定义,第二步用 $N(\varepsilon)=1$(因为 $(x_1,y_1)$ 是 Pell 方程的解),第三步就是 $1/\varepsilon$ 的记号。这个恒等式后面会反复用到:乘 $\varepsilon^{-1}$ 就是乘 $\bar\varepsilon$,而后者的系数仍是整数。 **Lemma 1**. Pell 方程的所有满足 $x+y\sqrt d>0$ 的解恰好是 $\{\varepsilon^k:k\in\mathbb Z\}$。也就是说,若把解从小到大排成 $(x_k,y_k)$,则 $$ x_k+y_k\sqrt d=\varepsilon^k. $$ **证明**。分两步。 第一步,每个 $\varepsilon^k$ 都是解:由范数乘性,$N(\varepsilon^k)=N(\varepsilon)^k=1$,且 $\varepsilon^k>0$。 第二步,没有别的解。设 $\alpha=x+y\sqrt d>1$ 是任一解($0<\alpha<1$ 的情形用 $\alpha^{-1}$ 代替即可)。由于 $\varepsilon>1$,数列 $\varepsilon^k$ 严格递增且趋于无穷,故存在唯一的整数 $k\ge0$ 使 $$ \varepsilon^k\le\alpha<\varepsilon^{k+1}. $$ 令 $\beta=\alpha\varepsilon^{-k}=\alpha\bar\varepsilon^{\,k}$。因为 $\bar\varepsilon$ 的系数是整数,$\beta$ 形如 $u+v\sqrt d$,$u,v\in\mathbb Z$;又由乘性 $N(\beta)=N(\alpha)N(\varepsilon)^{-k}=1$,所以 $\beta$ 也对应 Pell 方程的解。而上面的不等式两边同乘 $\varepsilon^{-k}>0$ 给出 $$ 1\le\beta<\varepsilon. $$ 若 $\beta>1$,则 $(u,v)$ 是比 $(x_1,y_1)$ 更小的正解,与 $\varepsilon$ 的最小性矛盾。因此 $\beta=1$,即 $\alpha=\varepsilon^k$。Q.E.D. 这个引理把"无穷多个解"压缩成一个对象 $\varepsilon$:**求 Pell 方程的全部解 = 求基础单位**。一切计算目标都应围绕 $\varepsilon$ 展开。 ### 2.3 小例子:$d=2$ 把上面的结构完整算一遍。先试小的 $y$: - $y=1$:$x^2=1+2\cdot1=3$,不是平方数; - $y=2$:$x^2=1+2\cdot4=9$,$x=3$。 所以最小正解是 $(x_1,y_1)=(3,2)$,基础单位与共轭为 $$ \varepsilon=3+2\sqrt2\approx5.82842712,\qquad \varepsilon^{-1}=\bar\varepsilon=3-2\sqrt2\approx0.17157288. $$ 两者的乘积是 $(3+2\sqrt2)(3-2\sqrt2)=9-8=1$,确实是范数 $1$。调节子(下面正式定义)为 $$ R=\log(3+2\sqrt2)\approx1.76275. $$ 按 Lemma 1,下一个解应当是 $\varepsilon^2$: $$ \varepsilon^2=(3+2\sqrt2)^2=9+12\sqrt2+8=17+12\sqrt2, $$ 检验:$17^2-2\cdot12^2=289-288=1$。再来一个: $$ \varepsilon^3=\varepsilon\cdot\varepsilon^2=(3+2\sqrt2)(17+12\sqrt2)=51+36\sqrt2+34\sqrt2+48=99+70\sqrt2, $$ 检验:$99^2-2\cdot70^2=9801-9800=1$。三个解 $(3,2),(17,12),(99,70)$ 确实排成 $\varepsilon$ 的幂,系数增长约 $\varepsilon\approx5.83$ 倍——这就是"幂次增长"的直观含义。 (regulator-output-length)= ## 3. 为什么输出必须重新定义:调节子 现在进行复杂性分析的第一步:明确输入和输出的长度。 输入是 $d$,它的比特长度是 $$ n=\lceil\log_2 d\rceil. $$ 输出如果是 $(x_1,y_1)$ 本身,那么麻烦来了:$x_1,y_1$ 可能需要**指数多个比特**才能写下。原因可以从 Lemma 1 看出:$\varepsilon=x_1+y_1\sqrt d$ 完全可能大到 $d$ 的指数量级($d=61$ 的例子已经给出预告:$d$ 只有 $6$ 个比特,$x_1$ 却有 $10$ 位十进制数,而且这个比值随 $d$ 增大没有多项式上界)。一旦 $x_1\sim e^{c\cdot\operatorname{poly}(n)}$,仅仅"把答案打印出来"就需要指数时间。 这是一个**输出长度下界**:任何声称在 $\operatorname{poly}(n)$ 时间内直接打印完整 $(x_1,y_1)$ 的算法都违反它,无论量子还是经典。所以,要谈论多项式时间算法,必须先修改计算目标。正确的目标是**调节子 (regulator)** $$ R=\log\varepsilon, $$ 或基础解的紧凑乘积表示(例如把 $\varepsilon$ 表示成若干短元素的幂积)。$R$ 是一个普通的正实数,它的前 $n$ 位有效数字只需 $O(n)$ 个比特——输出长度回到了多项式。 为什么给出足够精度的 $R$ 就"等于"解决了问题?因为 $\varepsilon=e^R$,给定 $R$ 的足够多位小数后,可以按需要逐步恢复 $x_1,y_1$ 的任意前缀:$\varepsilon$ 是代数整数,$x_1=(\varepsilon+\varepsilon^{-1})/2$,用高精度实数运算即可逐位提取。换句话说,$R$ 是基础单位的**多项式长度无损压缩**:信息没有丢,只是换了一种表示。本课中"求解 Pell 方程"一律指"计算 $R$ 到多项式位精度"。 (classical-barriers)= ## 4. 经典算法能走多远 在引入量子算法之前,先搞清楚经典计算的边界,这样才知道量子加速到底加速了什么。 - **连分数法**:经典理论给出 $\sqrt d$ 的连分数展开是周期的,而 Pell 方程的最小解可以从一个周期内的渐近分数读出。这个方法优雅且对小 $d$ 极快,但它的运行时间正比于连分数周期的长度——而周期长度与 $\log\varepsilon=R$ 同阶增长,最坏情况关于 $n$ 是指数的。$d=61$ 的巨大解正对应很长的周期。 - **次指数算法**:借助数域筛与类群计算的技术,已知的经典算法对调节子与主理想问题一般为**次指数**而非多项式(典型形式是关于 $\log d$ 的 $L$ 记号,即 $\exp\big((\log d)^c(\log\log d)^{1-c}\big)$ 型的时间,$0 提示(第 3 题):从 $y=1$ 试起;$\varepsilon^2$ 的系数可用 $(a+b\sqrt3)^2=a^2+3b^2+2ab\sqrt3$ 直接展开。 **练习 2【调节子与输出长度】**(→ [第 3 节](#regulator-output-length)) 1. 基础:对 $d=2$,由 $\varepsilon=3+2\sqrt2$ 计算调节子 $R$(保留三位小数),并用 $x_1=(\varepsilon+\varepsilon^{-1})/2$ 恢复 $x_1$。 2. 进阶:解释"多项式时间求紧凑表示"与"多项式时间打印完整整数"为什么不矛盾:用第 3 节的输出长度论证,说明后者存在指数级的输出下界,而前者绕开它的原因是什么。 **练习 3【经典算法的边界】**(→ [第 4 节](#classical-barriers)) 1. 基础:列出经典求解 Pell 方程的两类主要方法,并各用一句话说明它们为什么达不到多项式时间。 2. 进阶:说明"因数分解可以约化到 Pell 型问题"与"Pell/PIP 不比因数分解难"为什么不是一回事:解释约化方向的确切含义,以及反向约化未知时能得出什么结论、不能得出什么结论。 > 提示:$A$ 约化到 $B$ 只说明"若有解 $B$ 的预言机就能解 $A$",它不保证反方向。 **练习 4【主理想与生成元的非唯一性】**(→ [6.2 节](#principal-ideal-generators)) 1. 基础:写出分式理想与主理想的定义,并从格结构出发说明为什么理想可以用多项式个比特描述。 2. 进阶:假设理想生成元从 $\alpha$ 改为 $\alpha\varepsilon^k$,证明对数位移只改变 $kR$,即 $\log|\alpha\varepsilon^k|=\log|\alpha|+kR$;由此说明 PIP 算法第 3 步为什么只求出 $\log|\alpha|\bmod R$ 也足够。 > 提示:$\varepsilon^{-1}=\bar\varepsilon$ 的系数仍是整数,故 $(\alpha\varepsilon^k)=(\alpha)$;生成元本来只确定到单位倍数。 **练习 5【约化理想与实数周期函数】**(→ [6.3 节](#infrastructure-periodic-function)) 1. 基础:复述约化理想的三条关键性质(唯一的约化代表、只有有限多个、沿环移动的距离运算多项式时间可算),并写出周期关系 $f(t+R)=f(t)$。 2. 进阶:与 Shor 算法的 $a^j\bmod N$ 对比,解释 $f$ 的多对一性与边界跳变为什么会使"周期内一一对应"式的谱峰论证失效,以及正文的补救思路是什么。 > 提示:回顾第 5 节末尾指出的两处"缺陷",再对照第 8 节误差源 2 的处理。 **练习 6【量子实数周期查找】**(→ [第 7 节](#quantum-period-finding)) 1. 基础:按顺序写出第 7.1–7.4 节的四个步骤,并写出测量第二寄存器后第一寄存器的"梳子"结构与谱峰条件 $k/q\approx\ell/(NR)$。 2. 进阶:第 7.4 节中,设梳子的齿数为 $M\approx q/T$。用等比数列求和公式证明:在谱峰 $kT/q=\ell$ 处,$|k\rangle$ 的概率约为 $1/T$;并解释这意味着测量结果近似均匀分布在 $T$ 个谱峰上,因此每个非零 $\ell$ 都有机会被采到(这是后处理能工作的前提)。 3. 进阶:若 QFT 样本满足 $|k/q-\ell/(NR)|\le1/(2q)$,说明为什么一个样本通常不足以同时确定未知的 $\ell$ 与 $R$;进一步说明为什么两个独立样本通常也不够、需要连分数与格规约做联合处理。 > 提示(第 3 题):把 $k/q\approx\ell/(NR)$ 看成关于两个未知量 $\ell,R$ 的一条约束。 **练习 7【正确性的三个误差源】**(→ [第 8 节](#error-sources)) 1. 基础:列出真实状态偏离理想梳子的三个误差源,并各用一句话说明其成因。 2. 进阶:解释"谱峰保留逆多项式概率"为什么足以保证整体多项式时间:从单次成功概率 $1/\operatorname{poly}(n)$ 出发估计期望重复次数,并说明寄存器为何从不需要存储大小为 $e^R$ 的整数。 > 提示:期望重复次数是成功概率的倒数;算法自始至终只保存 $R$ 的比特。 **练习 8【隐藏平移求解主理想问题】**(→ [第 9 节](#hidden-shift-pip)) 1. 基础:写出关系式 $f_I(t)=f_{\mathcal O_K}(t+\log|\alpha|)$,并解释求生成元为什么等价于求这个平移量。 2. 进阶:推导 $I$ 侧梳子在谱峰 $k/q\approx\ell/(NR)$ 处多出的相位因子 $e^{2\pi i\ell\log|\alpha|/R}$,并解释为什么由它只能把 $\log|\alpha|$ 确定到模 $R$、而这并非算法缺陷。 > 提示:把第 7.4 节等比求和中的梳齿位置整体平移 $\delta=N\log|\alpha|$(网格单位);相位以 $2\pi$ 为周期。 ## 参考文献 - Quantum Algorithm Zoo 编号 49:Sean Hallgren, [Polynomial-Time Quantum Algorithms for Pell's Equation and the Principal Ideal Problem](https://www.cse.psu.edu/~sjh26/pell.pdf). - Quantum Algorithm Zoo 编号 131:Arthur Schmidt, [Quantum Algorithms for many-to-one Functions to Solve the Regulator and the Principal Ideal Problem](https://arxiv.org/abs/0912.4807). - Quantum Algorithm Zoo 编号 329:Jean-François Biasse 与 Fang Song, [Efficient Quantum Algorithms for Computing Class Groups and Solving the Principal Ideal Problem in Arbitrary Degree Number Fields](https://fangsong.info/files/pubs/BS_SODA16.pdf).