用户: Rushcheyo/《算法分析与设计》论文阅读/PRIMES is in P
是指所有质数构成的集合. 本文旨在介绍 AKS 算法, 它是第一个多项式时间的确定性质数判定算法, 即输入 在 时间内判断是否有 .
本文中 以 为底, 以 为底.
1一个随机算法
先介绍一个由 Agrawal 和 Biswas 在 1999 年发表的比较简单的随机算法 [AB99], 这是之后确定性算法的基础. 我们使用的关键判据如下:
引理 1.1 (Fermat 小定理的推广). 令 , 是质数当且仅当:
(1)
证明. 若 是质数, 一定是 的倍数 (因为分子有素因子 , 分母没有) ;
若 不是质数, 任取质数 , 令 满足 且 , 考察 (1) 式左边的 项系数:
那么 更不能是 0.
然而该多项式恒等式的次数过高, 为降低检验复杂度, 我们取 , 并随机选取 次首一多项式 , 亦即 在 中均匀独立随机, 之后判断是否有:
(2)
引理 1.2. 当 不是质数且存在至少是 11 的质数 时, (2) 式不成立的概率至少是 .
证明. 令 . 在引理 1.1 的证明中我们已看见, 在 中 , 那么 可以唯一分解, 且各不可约因子中度数为 的不超过 个.
的随机方式使 的系数在 中随机选取. 考虑到 , 只要估计 里 次首一不可约多项式的数目. 由 Möbius 反演熟知这是:
代入概率下界:
分析一下时间复杂度: (2) 式计算需要 次 次多项式乘法和取余, 用 FFT 每次需要 次 位整数乘法 (也是 时间) , 总共是 时间, 重复 次后即可达到 的错误率, 因此该算法共消耗 时间.
2去随机化
在上面的算法中, 我们随机选取了一个多项式, 而从分析中可以看出, 我们其实只是想要一个次数比较大的不可约多项式. 另一方面还可以观察到, 我们检查 下是否成立, 间接的检查了对素元 和 是否在 下成立.
在 AKS 算法中, 我们将该多项式固定为 . 在 上, 我们知道 有一个次数是 的不可约因子: 第 个分圆多项式 . 然而在 上情况有所不同:
引理 2.1 (有限域上的分圆多项式). 设 是 阶有限域, , 在 上的每个不可约因子的次数均为 . 这里 表示 模 的阶.
证明. 取 的代数闭包 . 对 有刻画: 对 , 当且仅当 .
考虑 次本原根 (即 的 个根中不是 次单位根的这些组成的乘法群 (域的乘法群的有限子群必为循环群) 的生成元, 分圆多项式的定义也是一样的) , 我们断言其极小多项式是 , 这是由于:
1. | 是 上只固定 的自同构, 于是一个 上多项式零点包含 就要包含 ; |
2. | 该多项式的系数 次方后不变 (因为是根的初等对称多项式, 其 次方是根 次方亦即轮换后的初等对称多项式, 由对称性不变) , 因而在 中. |
因此, 取 是引理 2.1 中这样一个不可约因子, 那么我们的分析可以限制在域 上. 为了保证 的次数够大, 我们 的选取如下:
引理 2.2. 对 , 存在 且 , 使得 .
证明.
反证这些 都满足 , 则它们均整除:
因此该范围内与 互质的数的 至多是 , 从而该范围内所有数的 至多是 .
下面只需要证明 就导出了矛盾.
首先证明 . 由 Kummer 定理, 对任意质数 , 中 的次数是 和 在 进制下相加的进位次数, 显然不超过 的位数减一, 即 , 这就是 在 中的次数.
引理 2.2 中, 我们只保证了 , 但是 的次数是 . 在 Agrawal, Kayal 和 Saxena 的第一版预印本里, 他们确实用了解析数论的工具做到了这一点, 然而 Hendrik Lenstra 简化了证明使得我们只需保证 够大.
下面给出详细的算法:
1. | 如果 , 拒绝; |
2. | 找最小的 满足 且 ; |
3. | 如果存在 使得 , 拒绝; |
4. | 如果 , 接受; |
5. | 对 检查: (3) 不成立则拒绝; 全部成立则接受. |
3算法的分析
如同上一节所说, 我们现在固定质因子 和 的次数为 的不可约因子 , 以及由他们诱导的域 . 由于算法第 3、4 步的检查, 必有 且 .
我们有 对 成立. 另一方面, 我们自然有 . 在该式两边取 次方, 得到 .
展开上面式子, 有 , , 由于 , 这相当于 , 因而结合 , . 我们抽象出如下性质:
定义 3.1. 如果 和多项式 满足 , 称 对 是内省的 (英文: introspective) .
引理 3.2 (数乘封闭性). 如果 和 都对 内省, 对 内省.
引理 3.3 (多项式乘封闭性). 如果 对 和 均内省, 则 对 内省.
定义 , , 立刻有:
推论 3.4.
, 对 内省.
现在我们回到域 上. 自然对应由 生成的群 (因为每个元素都有阶) , 由有限域性质这是个循环群. 下面会分别给出 的上界和下界导出矛盾.
我们注意到集合 的结构高度取决于 是否是 的幂次. 下面将 和 联系在一起.
引理 3.5. 若 且 , 则 .
上面的引理提示我们定义群 由 和 在 上生成 (记得 ) , 于是我们可以估计 :
引理 3.6. 若 不是 的幂次, 则 .
为了导出矛盾, 我们只需要给出 的下界. 如果两个多项式度数小于 的度数, 它们对 取模后自然不同, 因此 (这是不定方程 的解数) 是显然的 (注意易证 去保证 ) . 然而我们在第二节末尾讨论过, 我们能方便控制的是 , 因此我们需要下面更强的下界:
引理 3.7 (Hendrik Lenstra).
定理 3.8. AKS 算法是正确的.
证明. 现在只需要证 , 因为算法第一步就拒绝了次幂数, 最后只能 是质数.
显然 , 故 .
显然 , 于是 .
最后分析 AKS 算法的时间复杂度. 由于 , 第 5 步要执行 步, 每步进行 次乘法, 每次乘法进行 次 位数乘, 因此总的时间复杂度是 .
参考文献
[AB99] | M. Agrawal and S. Biswas (1999). Primality and identity testing via Chinese remaindering. Proceedings of IEEE FOCS 1999, pp. 202–209. |
[AKS02] | M. Agrawal, N. Kayal and N. Saxena (2004). PRIMES is in P. Annals of Mathematics 160, pp. 781–793. |