什么时候AKS素数测试实际上比其他测试快?


24

我试图了解我如何了解AKS素数测试,例如证明PRIMES⊆P的推论,或用于计算机素数测试的实际实用算法。

该测试具有多项式运行时,但具有高度和可能的高常数。那么,实际上,在哪一个n方面超过其他素性检验?在这里,n是质数的位数,“超越”是指典型计算机体系结构上测试的大概运行时间。

我对功能上可比的算法感兴趣,这是确定性的算法,不需要为正确性而猜测。

另外,考虑到测试的内存需求,在其他测试中使用这种测试是否可行?

Answers:


23

快速解答:切勿,出于实际目的。当前它没有任何实际用途。

测量的素数时间

首先,让我们从原始性证明中分离出“实用”的综合性测试。前者对于几乎所有目的都足够好,尽管人们认为适当的测试水平不同。对于2 ^ 64以下的数字,确定性答案最多需要7个Miller-Rabin检验或一个BPSW检验。这将比AKS快得多,并且在所有情况下都一样。对于2 ^ 64以上的数字,BPSW是一个不错的选择,另外一些随机基准的Miller-Rabin测试增加了一些额外的信心,而费用却很少。几乎所有的证明方法都将以这样的测试开始(或应该采用),因为它很便宜,这意味着我们只对几乎可以确定的质数进行艰苦的工作。

继续证明。在每种情况下,得到的证明都不需要推测,因此可以在功能上进行比较。APR-CL的“陷阱”不是很多项式,而ECPP / fastECPP的“陷阱”是可能存在比预期更长的数字。

在该图中,我们看到了两个开源的AKS实现-第一个来自v6论文,第二个包括Bernstein和Voloch的改进以及Bornemann的不错的r / s启发式方法。它们使用GMP中的二进制分段进行多项式乘法,因此效率很高,对于此处考虑的大小,内存使用不是问题。它们在对数-对数图上产生的斜率约为6.4的直线很不错。但是外推到1000位数字估计需要数十万到数百万年的时间,而APR-CL和ECPP只需几分钟。2002年的伯恩斯坦(Bernstein)论文可以做进一步的优化,但是我认为这不会从根本上改变现状(尽管直到实现之前,还没有得到证明)。

最终,AKS击败了审判部门。BLS75定理5(例如n-1证明)方法需要n-1的部分分解。这在小尺寸情况下效果很好,当我们很幸运并且n-1易于分解时,也很奏效,但最终我们将不得不分解一些较大的半素数。有更有效的实现,但是无论如何它实际上都不会扩展到100位以上。我们可以看到AKS将通过此方法。因此,如果您在1975年问这个问题(当时又有AKS算法),我们可以计算出AKS是最实用算法的分频点。但是到了1980年代后期,APR-CL和其他环行方法才是正确的比较,到1990年代中期,我们将必须包括ECPP。

APR-CL和ECPP方法都是开源实现。Primo(免费但不是开源ECPP)对于较大的数字会更快,而且我敢肯定曲线会更好(我尚未进行新的基准测试)。APR-CL是非多项式,但指数具有因数logloglogn,有人打趣说“去无穷大,但从未观察到这样做”。这使我们相信,从理论上讲,对于我们的太阳熄灭之前,AKS将完成的n值,线不会交叉。ECPP是一种拉斯维加斯算法,因为当我们得到一个答案时,它是100%正确的,所以我们期望结果为推测O(log5+ϵ(n))(ECPP)或O(log4+ϵ(n))(“ fastECPP”)时间,但是数字可能需要更长的时间。因此,我们的期望是,对于几乎所有数字,标准AKS总是比ECPP慢(它肯定已经显示出来,因此对于25,000位以下的数字)。

AKS可能有更多的改进,有待发现,使其实用。Bernstein的Quartic论文讨论了基于AKS的随机O(log4+ϵ(n))算法,Morain的fastECPP论文引用了其他基于AKS的非确定性方法。这是一个根本性的变化,但显示了AKS如何开拓一些新的研究领域。但是,将近10年后,我还没有看到任何人使用此方法(甚至没有任何实现)。他在导言中写道:“ 新算法的(lgn)4+o(1)时间是否小于(lgn)4+o(1时间查找椭圆曲线证书?我目前的印象是答案是否定的,但是进一步的结果可能会改变答案。”

这些算法中的某些可以很容易地并行化或分布。AKS非常容易(每个“ s”测试都是独立的)。ECPP并不难。我不确定APR-CL。

ECPP和BLS75方法生成的证书可以独立快速地进行验证。与AKS和APR-CL相比,这是一个巨大的优势,在AKS和APR-CL中,我们仅需信任实现它的实现和产生它的计算机。


18

的(渐近)最有效的确定性素性测试算法是由于伦斯特拉和Pomerance,在一次运行。如果您相信扩展黎曼假设,那么米勒算法的运行时间〜Olog 4 n 。还有许多其他的确定性素性测试算法,例如米勒的纸具有一个øÑ 1 / 7算法,而另一个公知的算法是Adleman的-Pomerance-Rumley,在一次运行Ö O~(log6n)O~(log4n)O~(n1/7)O(lognO(logloglogn))

实际上,没有人使用这些算法,因为它们太慢了。取而代之的是,使用概率素数测试算法,主要是Miller–Rabin,它是上述Miller算法的另一种改进(另一个重要的算法是Solovay–Strassen)。米勒罗宾的每次迭代在时间用完,因此对于恒定误差概率(说2 - 80)在时间上的整个算法运行Ô登录2 Ñ ,这比伦斯特拉快得多–Pomerance。O~(log2n)280O~(log2n)

在所有这些测试中,内存不是问题。


在他们的评论中,jbapple提出了决定在实践中使用哪个素数测试的问题。这是实现和基准测试的问题:实现和优化一些算法,并实验确定哪个算法在哪个范围内最快。出于好奇,PARI的编码人员只是这样做了,他们提出了确定性函数isprime和概率函数ispseudoprime,这两种函数都可以在此处找到。使用的概率测试是Miller–Rabin。确定性的是BPSW。


这是Dana Jacobsen的更多信息:

自2.3版以来的Pari使用APR-CL素数证明isprime(x),以及BPSW可能素数测试(带有“几乎额外强”的Lucas测试)ispseudoprime(x)

他们确实采用了会改变行为的参数:

  • isprime(x,0) (默认值。)使用组合(BPSW,快速Pocklington或BLS75定理5,APR-CL)。
  • isprime(x,1)n1
  • isprime(x,2) 使用APR-CL。

  • ispseudoprime(x,0) (默认值。)使用BPSW(MR为2,“几乎超强”的卢卡斯)。

  • ispseudoprime(x,k)k1kmpz_is_probab_prime_p(x,k)

Pari 2.1.7使用了更差的设置。 isprime(x)只是MR测试(默认值为10),这会带来很多有趣的事情,例如isprime(9)经常返回true。使用isprime(x,1)将进行Pocklington证明,该证明适用于大约80位数字,然后变得太慢而无法普遍使用。

您还写了实际上,没有人使用这些算法,因为它们太慢了。 我相信我知道您的意思,但是我认为这取决于您的听众。当然,AKS非常慢,但是APR-CL和ECPP足够快,以至于有人使用它们。它们对于偏执的加密很有用,对做类似事情primegapsfactordb有足够时间想要证明素数的人有用。

[我对此的评论:当寻找特定范围内的质数时,我们使用一些筛分方法,然后进行一些相对较快的概率检验。只有到那时,我们才进行确定性检验。]

在所有这些测试中,内存都不是问题。 这是AKS的问题。例如,请参阅此eprint。其中一些取决于实现。如果实施数字爱好者的视频所称的AKS(实际上是费马小定理的一种概括),则内存使用将非常高。使用v1或v6算法的NTL实现(如参考论文)将导致愚蠢的大量内存。良好的v6 GMP实施对于1024位素数仍将使用〜2GB,这很多这么小的内存。使用Bernstein的某些改进和GMP二进制分段可以带来更好的增长(例如,对于1024位,约为120MB)。这仍然比其他方法所需的要大得多,不足为奇的是,它将比APR-CL或ECPP慢几百万倍。


2
我不认为这可以回答所提出的问题,该问题需要计算这些测试的常数。
jbapple 2014年

1
每当遇到过分草率,不费力气的帖子,或者答案明显(甚至可能是危险的)时,请使用下注。 —我看不出对此答案投反对票的人如何证明投票的正当性。
2014年

2
ñ

ñ日志ñ
Yuval Filmus 2014年

好的帖子,但是您对“没人”的定义总是有些偏离。出于好奇,我测试了openssl pkeyparam -text使用PARI isprime(如上所述的APR-CL)验证OpenSSL生成的2048位DSA可能素数(用于提取十六进制字符串)所需的时间:在快速笔记本上大约80秒钟。作为参考,Chromium对于我的Frobenius测试的 JavaScript演示实现的每次迭代都需要略微超过0.25s (比MR强得多),因此APR-CL当然是偏执狂但可行的。
Arne Vogel

2

这是一个复杂的问题,因为与不同算法效率之间的变化相关的所谓“大/银河常数”。换句话说ØFñ 与每种不同算法关联的代码可以隐藏非常大的常量,从而提高效率 ØFñ 在另一个 ØGñ 基于渐近/功能复杂性,只有在很大的情况下才能“介入” ñ。我的理解是,AKS仅在“更大”时才“比其他算法更高效”ñ”超出了当前的实际使用范围(而且 ñ 实际上很难准确地计算出),但是对算法实现的理论改进(某些人积极寻求)可能会在将来改变这种情况。

看过最近一篇有关arxiv的论文,该论文深入/详细地分析了这个主题,不确定人们对此的看法,到目前为止还没有听到任何反应,这似乎是由学生创建的论文,但可能是其中最详细/最全面的分析之一该算法的实际用法可用。


AKS比什么更有效率?什么比赛?
Yuval Filmus 2014年

所有其他算法。主要是概率论?该文件中的详细信息
vzn 2014年
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.