Grover 알고리즘 — √N 비정렬 데이터베이스 검색
Grover 알고리즘은 $N$개 원소의 비정렬 데이터베이스에서 목표 항목을 $O(\sqrt{N})$번의 연산으로 찾아내는 양자 알고리즘이다. 위상 오라클로 목표 상태를 표시하고 Grover 확산 연산자로 진폭을 반복 증폭시키는 두 단계가 핵심이며, 이 유형의 비구조화 탐색에서 이론적으로 최적임이 증명되어 있다.
개념 소개
비정렬 데이터베이스에서 특정 항목을 찾으려면 고전 컴퓨터는 최악의 경우 번, 평균적으로도 번 항목을 확인해야 한다. 1996년 Lov Grover가 제안한 알고리즘은 동일한 문제를 번의 오라클 호출로 해결한다. 이를 2차 가속(quadratic speedup) 이라 부른다.
예를 들어 인 데이터베이스를 탐색한다면, 고전 방법은 평균 50만 번이 필요하지만 Grover 알고리즘은 약 785번의 연산으로 충분하다. 지수적 가속은 아니지만, 암호 해독·최적화·양자화학 등 다양한 분야에서 실질적 이점을 제공한다.
핵심 원리
초기 균등 중첩 상태
큐비트 전체에 아다마르 변환을 적용해 개의 상태를 균등하게 중첩시킨다.
이 시점에서 각 항목이 측정될 확률은 으로 동일하다.
위상 오라클 (Phase Oracle)
목표 항목 만 위상을 로 뒤집는 연산자 를 정의한다.
진폭의 절댓값은 변하지 않고 부호만 바뀌기 때문에, 이 단계만으로는 측정 결과가 달라지지 않는다.
Grover 확산 연산자 (Diffusion Operator)
오라클 적용 후 평균에 대한 반전(inversion about the mean) 을 수행한다.
현재 진폭 평균을 라 하면, 각 항목의 진폭 는 로 갱신된다. 목표 항목이 위상 오라클에 의해 음수 진폭을 갖게 되었으므로, 반전 후 해당 항목의 진폭은 두드러지게 증가하고 나머지는 소폭 감소한다.
반복 횟수와 성공 확률
오라클 + 확산 연산자를 한 Grover 반복으로 보면, 최적 반복 횟수는 다음과 같다.
이때 목표 상태를 측정할 확률이 에 근접한다. 반복을 과도하게 수행하면 진폭이 다시 감소하는 과회전(over-rotation) 이 발생하므로, 적정 횟수를 정확히 계산해야 한다.
예시·응용
2큐비트 예시 (N = 4)
4개의 기저 상태 중 을 찾는 경우, 최적 반복 횟수는 이다. 아래는 Qiskit을 이용한 구현 예시다.
from qiskit import QuantumCircuit
# 2큐비트 Grover 회로 (목표: |11⟩)
qc = QuantumCircuit(2, 2)
# 1. 균등 중첩 초기화
qc.h([0, 1])
# 2. 위상 오라클: |11⟩의 위상 반전 (CZ 게이트)
qc.cz(0, 1)
# 3. Grover 확산 연산자
qc.h([0, 1])
qc.x([0, 1])
qc.cz(0, 1)
qc.x([0, 1])
qc.h([0, 1])
# 4. 측정
qc.measure([0, 1], [0, 1])
print(qc.draw('text'))
이 회로를 시뮬레이션하면 이 확률 1로 측정된다.
실용적 응용
| 분야 | 내용 |
|---|---|
| 대칭키 암호 | AES-비트 키를 탐색으로 공격 — 유효 보안 강도가 절반으로 감소 |
| NP 문제 탐색 | 해 공간을 √N 배 빠르게 브루트포스 |
| 양자화학 | 분자 에너지 최솟값 탐색 보조 루틴 |
정리
Grover 알고리즘은 위상 오라클로 목표 상태를 표시하고, 확산 연산자로 진폭을 증폭시키는 두 단계를 회 반복해 탐색을 달성한다. BBBV 정리에 의해 이 복잡도는 비구조화 탐색의 양자 하한과 일치하므로, 이 유형의 문제에서 점근적으로 최적인 양자 알고리즘이다.
연습문제
Q1.$N = 1024$인 비정렬 데이터베이스에서 Grover 알고리즘의 최적 반복 횟수를 구하라. 고전 탐색과 비교해 몇 배 빠른가?
힌트 보기
$k \approx \frac{\pi}{4}\sqrt{N}$을 계산하고, 고전 평균 탐색 횟수 $N/2$와 비율을 구하라.
해설 보기
$k \approx \frac{\pi}{4}\sqrt{1024} = \frac{\pi}{4} \times 32 \approx 25$회. 고전 평균은 $512$회이므로, 약 $512/25 \approx 20$배 빠르다. 이론적 가속비 $\sqrt{N}/(\pi/4) \approx \frac{4}{\pi}\sqrt{N}$과 일치한다.
Q2.Grover 반복을 최적 횟수보다 훨씬 많이 수행하면 어떤 현상이 발생하는가? 기하학적으로 설명하라.
해설 보기
Grover 반복은 2차원 부분공간(목표 상태 $|w\rangle$와 목표 외 균등 중첩 $|w^\perp\rangle$)에서 상태 벡터를 회전시키는 연산이다. 최적 횟수에서 상태 벡터가 $|w\rangle$ 방향에 가장 가까워지고, 이후 계속 회전하면 $|w^\perp\rangle$ 쪽으로 다시 멀어지는 **과회전**이 발생한다. 성공 확률은 반복에 따라 사인 제곱 함수 형태로 진동한다.
Q3.AES-128 대칭키 암호에 대해 Grover 알고리즘을 적용할 경우, 키 탐색에 필요한 양자 연산 횟수는 고전 브루트포스 대비 어떻게 달라지는가? 이를 방어하기 위해 권고되는 키 길이는?
해설 보기
AES-128의 키 공간은 $N = 2^{128}$이다. 고전 브루트포스는 $O(2^{128})$, Grover 알고리즘은 $O(\sqrt{2^{128}}) = O(2^{64})$번의 연산으로 충분하다. 양자 공격을 방어하려면 유효 보안 강도 128비트를 유지하기 위해 키 길이를 256비트로 늘릴 것이 권고된다(AES-256 사용).