쇼어 알고리즘
IT위키
더 많은 작업
쇼어 알고리즘(Shor's algorithm)은 양자 컴퓨터에서 큰 정수의 소인수분해와 이산대수 문제를 다항 시간에 푸는 양자 알고리즘으로, 1994년 피터 쇼어가 발표했다.
쇼어 알고리즘은 소인수분해를 차수 찾기(order finding, 주기 찾기) 문제로 바꾸어 푼다. IBM 의 양자 알고리즘 강의도 위상 추정으로 차수 찾기를 풀고, 차수 찾기의 효율적인 풀이가 곧 정수 인수분해의 풀이가 된다고, 즉 인수분해를 차수 찾기로 환원한다고 설명한다.[2]
- 인수분해할 수 N 과 서로소인 수 a 를 고른다
- a 를 거듭제곱해 N 으로 나눈 나머지가 처음으로 1 이 되는 지수 r(a 의 차수)을 찾는다. 이 단계만 양자 컴퓨터가 맡는다. 중첩 상태의 여러 입력에 대해 함수 값을 한꺼번에 계산한 뒤 양자 푸리에 변환으로 주기를 뽑아낸다
- r 이 짝수이면 a 의 r/2 제곱에서 1 을 빼거나 더한 값과 N 의 최대공약수를 구한다. 이 값이 N 의 인수가 된다
- 실패하면 다른 a 로 다시 한다. 나머지 단계는 고전 컴퓨터로 한다
| 진술 | 판단 |
|---|---|
| 쇼어 알고리즘은 소인수분해를 차수 찾기 문제로 바꾼다 | 맞다 |
| 양자 컴퓨터는 중첩을 이용해 여러 입력에 대한 함수 값을 한 번에 계산한다 | 맞다(양자 병렬성). 다만 측정하면 결과 하나만 얻으므로 간섭으로 원하는 답의 확률을 높이는 알고리즘이 필요하다 |
| 중첩 상태의 큐비트를 측정하면 상태가 바뀐다 | 맞다. 측정하면 중첩이 무너지고 0 또는 1 중 하나로 정해진다 |
| 큐비트는 저장·전송 중 오류가 생기지 않는다 | 틀렸다. 큐비트는 주변 환경과의 상호작용(결어긋남)에 매우 약해 오류가 잦다 |
- ↑ Peter W. Shor, 「Polynomial-Time Algorithms for Prime Factorization and Discrete Logarithms on a Quantum Computer」, arXiv:quant-ph/9508027, https://arxiv.org/abs/quant-ph/9508027, 확인일: 2026-11-04.
- ↑ 「Shor's algorithm」, IBM Quantum Learning - Fundamentals of quantum algorithms, https://quantum.cloud.ibm.com/learning/en/courses/fundamentals-of-quantum-algorithms/phase-estimation-and-factoring/shor-algorithm, 확인일: 2026-11-04.