본문으로 이동

폴리그-헬먼 알고리즘

위키백과, 우리 모두의 백과사전.

폴리그-헬먼 알고리즘(영어: Pohlig–Hellman algorithm)은 이산 로그를 밑의 차수가 소수인 경우로 귀결시켜 계산하는 알고리즘이다. 군의 크기(즉, 밑의 차수)가 충분히 매끄러운 정수인 경우 특히 효율적이다.

정의

[편집]

폴리그-헬먼 알고리즘 는 다음과 같다.

  • 입력: 크기가 인 유한 순환군의 생성 원소 와 임의의 원소
  • 출력: 이산 로그
  1. 소인수 분해 를 구한다.
  2. 만약 이라면 0을 반환한다. 만약 , 이라면, (또는 )를 반환한다. 여기서 아기걸음 거인걸음(폴라드 로 이산 로그 알고리즘)이다.
  3. 만약 이라면,
    1. 로 놓는다.
    2. 로 놓는다.
    3. 을 반환한다.
  4. , 로 놓는다.
  5. 에서의 곱셈 역원인 정수의 곱으로 놓는다. 마찬가지로, 에서의 곱셈 역원인 정수의 곱으로 놓는다.
  6. 로 놓는다.
  7. 로 놓는다.
  8. 를 반환한다.

복잡도

[편집]

폴리그-헬먼 알고리즘의 복잡도는 순환군의 크기(즉, 이산 로그의 밑의 차수)가 소수인 경우에 사용하는 알고리즘의 복잡도와 이 매끄러운 정도에 의존한다.

아기걸음 거인걸음을 사용하는 경우, 폴리그-헬먼 알고리즘의 시간 복잡도는

(특히 )이며, 공간 복잡도는 이다. 여기서 은 순환군의 크기, 소인수 분해, 의 가장 큰 소인수이다.

플로이드 순환 탐지 알고리즘을 갖춘 폴라드 로 이산 로그 알고리즘을 사용하는 경우, 폴리그-헬먼 알고리즘의 기대 시간 복잡도는

(특히 )이며, 공간 복잡도는 이다.

특히, 만약 이 충분히 매끄러운 정수인 경우 폴리그-헬먼 알고리즘은 의 자릿수에 대하여 준선형 시간을 갖는다.

역사

[편집]

스티븐 폴리그(영어: Steven C. Pohlig)와 마틴 헬먼이 1978년 논문에서 처음 출판하였다.[1] 폴리그와 헬먼은 이 논문에서 다음과 같이 주해하였다.

출판된 적은 없지만, 이 새로운 알고리즘은 몇 년 전에 롤런드 실버가, 더 최근에는 리처드 슈로펄과 H. 블록이 독립적으로 발견했다.

Although not previously published, the new algorithm was discovered independently by Roland Silver some years ago, and more recently by Richard Schroeppel and H. Block.

 
[1]

참고 문헌

[편집]
  1. Pohlig, Stephen C.; Hellman, Martin E. (1978). “An improved algorithm for computing logarithms over and its cryptographic significance” (영어). 《IEEE Transactions on Information Theory》 24 (1): 106–110. doi:10.1109/TIT.1978.1055817. ISSN 0018-9448. MR 0484737. Zbl 0375.68023. 

외부 링크

[편집]