首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Pollard-Rho分解并行化

Pollard-Rho分解并行化
EN

Stack Overflow用户
提问于 2011-09-25 01:08:56
回答 2查看 1.7K关注 0票数 7

我最近在Pollard's Rho algorithm的并行化上偶然发现了a paper,考虑到我的特定应用程序,除了我没有达到所需的数学水平之外,我想知道这种特殊的并行化方法是否对我的特定情况有帮助。

我试着找出两个因子--半质数--一个非常大的数。我的假设是,基于我对这篇论文所能理解的很少的东西,这种并行化在具有许多较小因子的数字上工作得很好,而不是基于两个非常大的因子。

这是真的吗?我是应该使用这个并行化,还是应该使用其他东西?我是否应该使用Pollard的Rho,或者是否有不同的因式分解算法的更好的并行化?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2011-09-26 21:10:59

分解大整数的基本思想是使用各种方法,每种方法都有自己的优缺点。通常的计划是先用质数除以1,000或10000,然后是几百万步Pollard rho步;这应该会让你的因数达到大约12位数。在这一点上,有几个测试是按顺序进行的:数字是质数幂还是完美幂(对这些属性有一些简单的测试)。如果您还没有将数字分解,那么您知道这将是困难的,因此您将需要重型工具。下一步有用的是Pollard的p-1方法,然后是它的近亲椭圆曲线方法。一段时间后,如果这不起作用,剩下的方法就是二次筛选或数字字段筛选,它们本质上是并行的。

您所询问的并行rho方法目前并未得到广泛使用。正如您所建议的,Pollard rho更适合发现小因素而不是大因素。对于半质数,最好在其中一个筛子上花费并行周期,而不是在Pollard rho上。

我推荐在mersenneforum.org上的保理论坛了解更多信息。

票数 5
EN

Stack Overflow用户

发布于 2011-09-26 18:00:49

维基百科的文章列举了两个具体的例子:

代码语言:javascript
复制
Number                Original code      Brent's modification
18446744073709551617  26 ms              5 ms
10023859281455311421  109 ms             31 ms

首先,在你的程序中运行这两个程序,看看你的时间。如果它们类似于这样(“硬”数字计算的时间长4-6倍),问问你自己是否能接受。或者更好的是,使用其他算法,如简单的经典“蛮力”分解,并查看它们给出的时间。我猜他们可能有一个接近于1的硬-容易因子,但绝对时间更差,所以这是一个简单的权衡。

附注:当然,并行化在这里是可行的,我猜你知道这一点,但我认为强调这一点很重要。此外,对于Pollard-rho计时之间存在另一种方法(例如Pollard-Rho 5-31 ms,不同的方法15-17 ms)的情况也会有所帮助-在这种情况下,考虑在单独的线程中运行两种算法来进行“因式分解竞赛”。

如果您还没有该算法的实际实现,这里有Python implementations

票数 6
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7540529

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档