이제 정수 인수분해 문제로 관심을 돌려, 위상 추정을 이용해 양자 컴퓨터에서 이 문제를 효율적으로 풀 수 있는 방법을 살펴보겠습니다.
여기서 얻게 될 알고리즘이 바로 정수 인수분해를 위한 쇼어 알고리즘입니다.
쇼어는 자신의 알고리즘을 위상 추정의 관점에서 구체적으로 설명하지는 않았지만, 이 방식이 알고리즘의 동작 원리를 자연스럽고 직관적으로 설명하는 방법입니다.
먼저 *위수 찾기 문제(order-finding problem)*라는 중간 단계 문제를 논의하고, 위상 추정이 이 문제에 대한 해법을 어떻게 제공하는지 살펴보겠습니다.
그런 다음 위수 찾기 문제의 효율적인 해법이 정수 인수분해 문제의 효율적인 해법을 어떻게 제공하는지 알아보겠습니다.
(한 문제의 해법이 이런 식으로 다른 문제의 해법을 제공할 때, 두 번째 문제가 첫 번째 문제로 환원된다고 말합니다 — 따라서 이 경우 정수 인수분해를 위수 찾기로 환원하는 것입니다.)
쇼어 알고리즘의 두 번째 부분은 양자 컴퓨팅을 전혀 사용하지 않으며, 완전히 고전 적입니다.
양자 컴퓨팅은 위수 찾기를 해결하는 데만 필요합니다.
위수 찾기 문제
기초 정수론
위수 찾기 문제와 위상 추정을 이용해 이를 해결하는 방법을 설명하기 위해, 몇 가지 기초적인 정수론 개념을 먼저 소개하고 유용한 표기법을 함께 알아보겠습니다.
먼저, 양의 정수 N이 주어졌을 때 집합 ZN을 다음과 같이 정의합니다.
ZN={0,1,…,N−1}
예를 들어,
Z1={0},
Z2={0,1},
Z3={0,1,2},
등과 같습니다.
이것들은 수의 집합이지만, 단순한 집합 이상으로 생각할 수 있습니다.
특히, ZN 위에서 덧셈과 곱셈 같은 산술 연산을 생각할 수 있습니다 — 항상 N으로 나눈 나머지를 결과로 취한다면
(즉, N으로 나누어 나머지를 결과로 사용한다면), 이 연산들을 수행해도 항상 이 집합 내에 머물게 됩니다.
덧셈과 곱셈 두 연산을 모두 N을 법(modulo)으로 취하면, ZN은 *환(ring)*이 됩니다. 이는 대수학에서 근본적으로 중요한 구조입니다.
예를 들어, 3과 5는 Z7의 원소이며, 이 둘을 곱하면 3⋅5=15가 되고, 7로 나누면 나머지가 1입니다.
이를 다음과 같이 표현하기도 합니다.
3⋅5≡1(mod 7)
하지만 Z7 안에서 작업 중임을 명확히 했다면, 표기를 간단하게 유지하기 위해 단순히 3⋅5=1이라고 쓸 수도 있습니다.
예시로, Z6의 덧셈표와 곱셈표를 보겠습니다.
+012345001234511234502234501334501244501235501234⋅012345000000010123452024024303030340420425054321
ZN의 N개 원소 중, gcd(a,N)=1을 만족하는 원소 a∈ZN은 특별합니다.
이러한 원소들의 집합은 흔히 별표를 붙여 다음과 같이 표기합니다.
ZN∗={a∈ZN:gcd(a,N)=1}
곱셈 연산에만 집중한다면, ZN∗는 군(group) — 특히 아벨 군(abelian group) — 을 이룹니다. 이는 대수학에서 또 다른 중요한 구조입니다.
이 집합(그리고 유한 군 일반)에 대한 기본적인 사실로, a∈ZN∗