폴라드-로 알고리즘은 존 폴라드가 1975년에 고안한 정수 인수분해 알고리즘이다. 순환고리 형태의 그래프가 로마자 문자 'ρ'와 비슷한 모양을 만들어내어 이러한 이름이 붙었다. 이는 합성수의 인수를 효율적으로 찾아내는 데 사용되는 확률적 알고리즘이다.
폴라드 로 알고리즘은 2부터 N 사이의 랜덤한 수 x를 선택하여 N과의 공통 인수를 찾는 방법으로, $gcd(x,N) \not\equiv 1(mod\ N)$인 성질을 활용한다.
이 알고리즘이 효과적으로 작동하기 위해서는 두 가지 전제 조건이 필요하다:
따라서 밀러-라빈 알고리즘을 사용하여 N이 소수인 경우를 먼저 확인한다.
단순히 2부터 N 사이의 무작위 수를 선택하면 편향이 발생하거나 약수를 찾기 어려울 수 있다.
이러한 문제를 해결하기 위해 $f(x) = x^2 + c\ mod\ N$를 사용하여 x값을 결정한다.
<aside> 💡
왜 $f(x) = x^2 + c\ mod\ N$를 사용하는가?
<aside> 💡
추가적인 정보(1) 비둘기집 원리
만약 비둘기집이 23개 있고 비둘기가 24마리라면, 두 마리가 들어간 집이 반드시 존재할까?
답은 "반드시 존재한다"이다. 비둘기를 집당 한 마리씩 배정해도 한 마리가 남기 때문에, 그 비둘기는 어느 한 집에 들어갈 수밖에 없다.
이는 자명해 보이지만, 확률론에서 매우 중요한 원리이다.
</aside>
<aside> 💡
추가적인 정보(2) 모듈러 산술의 기본 성질
모듈러 산술에서는 다음과 같은 성질이 있음.
$$ if\ N|d \\ a \equiv b(mod\ N) \to a \equiv b(mod\ d) $$
</aside>
이제 $f(x) = x^2 + c\ mod\ N$가 훌륭한 유사 난수 수열 생성기임을 알 수 있다. 비둘기집 원리에 따라 N의 약수 d에 대해 $a_n$ mod d는 반드시 사이클을 가지게 된다. 쉽게 말해 f(x) mod N 안에 f(x) mod d의 사이클도 돌고 있는것이다.
따라서 $a_n\ mod\ d \to a_{n+1}\ mod\ d$로 향하는 화살표를 그리면 아래와 같은 그래프가 형성된다.