首页 > 杂谈生活->pollard rho(Pollard Rho算法:随机搜寻因数大法)

pollard rho(Pollard Rho算法:随机搜寻因数大法)

kanglang+ 论文 3417 次浏览 评论已关闭

Pollard Rho算法:随机搜寻因数大法

对于一个自然数n,对其进行因式分解是数论中一件非常基础和重要的问题。然而,为什么我们对于大素数依然无能为力呢?由于如今计算机的加入,这个问题被重新解决了。Pollard Rho算法,一种基于随机化的搜寻因数算法,对于大素数有着优秀的表现。

什么是Pollard Rho算法?

Pollard Rho算法是一种著名的分解大素数的算法,最早由加拿大数学家John Pollard于1975年提出,与1990年代末出现的Quadratic sieve算法、Number Field Sieve算法并称为分解整数问题的\"三大杀手\"。与其他算法相比,它的特殊之处在于使用“概率的好坏性”来几乎不停歇地搜索因数。确切地说,当出现初始状态的状况相同时,不计算机算力,它的搜寻因子的速度是最快的。

Pollard Rho算法的实现原理

Pollard Rho算法的实现基于f(x)=(x^2 + c)mod n函数展开。其中,n为需要分解的正整数,c为随机整数,x为根据f函数得到的迭代序列。不断用这个函数迭代得到的序列形成一条环曲线,这时若产生一个小的\"环\",也就是说,函数的值在某一点上卡住了,则说明x和一个先前产生的状态有了重复,根据鸽笼原理,这个迭代位置就是相对较小的唯一的公因数,这就是Pollard Rho算法的基本原理。

pollard rho(Pollard Rho算法:随机搜寻因数大法)

Pollard Rho算法的复杂度

Pollard Rho算法的复杂度与搜寻的环曲线的长度紧密关联,随着长度的增加,算法的时间复杂度将会大幅上升。不难发现,函数的迭代序列应该是随机的,我们可以加上c来保证这点。但由于数据可变性的限制,所以它不一定是最较优的随机数选择。同时,它的运行速度完全取决于环曲线的长度。

总而言之,Pollard Rho算法是一种基于随机化的搜寻因数算法,与其他算法相比,它的特殊之处在于使用锁链分解的方法,具有时间复杂度低、实现简单等特点。同时,对于像RSA引用的几个大素数问题而言,它有着优良的表现,成为了分解整数问题中备受尊崇的算法之一。

pollard rho(Pollard Rho算法:随机搜寻因数大法)