Pollard’s rho 算法解大数质因子问题
1. Pollard’s rho 算法
在大数质因子问题中, 一般被分解的数十分大,使用试除法的时间代价不可接受, Pollard’s rho算法有效的缓解了试除法的时间代价.
生日悖论: 在不少于 23 个人中至少有两人生日相同的概率大于 50%(百度百科).
那么要是人数再多一些是不是存在可能在一定人数中一定有人生日相同? 那么将这么理论应用在数学问题中,假如有 n n n个数字的集合,我们不断地随机在集合中选取一个,在多次之后能找到一个数字和之前选出的相同而不需要选遍整个集合. 对于大数质因子问题,我们可以随机的的抽取 [ 1 , n − 1 ] [1, n-1] [1,n−1]集合中的数字, 记做 l l l,随后再随机不停地抽取数字 k k k,直到 g c d ( l − k , n ) ≠ 1 gcd(l-k, n) \ne 1 gcd(l−k,n)=1.
但是我们需要在内存中保存每一个选取出来的数,要是 n n n十分大,我们需要的计算资源会不可接受的大.
这时候可以使用Pollard’s rho算法
{ v k = f ( v k − 1 ) v k + 1 = f ( f ( v k − 1 ) ) \left\{ \begin{aligned} v_k &= f(v_{k-1})\\ v_{k+1} &= f(f(v_{k-1}))\\ \end{aligned} \right. {
vkvk+1=f(vk−1)=f(f(vk−1))我们选取的数并不是完全随机,而是根据上一个选择根据一个伪随机函数生成下一