Grover 알고리즘 — 비정렬 데이터베이스의 √N 양자 검색
Grover 알고리즘은 N개의 비정렬 항목에서 특정 목표를 찾는 데 O(√N)번의 쿼리만으로 충분한 양자 탐색 기법이다. 오라클과 확산 연산자를 약 π/4·√N회 반복 적용하여 목표 상태의 진폭을 집중적으로 증폭한다. 이 이차적(quadratic) 속도 향상은 비정렬 검색 문제에서의 양자 하한(lower bound)임이 증명되어 있다.
Photo: Markus Spiske / Unsplash개념 소개
비정렬 데이터베이스에서 특정 항목을 찾는 고전적 방법은 최악의 경우 N번 전체를 확인해야 하므로 O(N) 시간이 소요된다. 1996년 Lov Grover가 제안한 양자 알고리즘은 이를 O(√N)으로 단축한다. 예를 들어 100만 개 항목 중 하나를 찾는다면, 고전 컴퓨터는 평균 50만 번을 조회하지만 Grover 알고리즘은 약 1,000번(≈ √10⁶) 만으로 목표를 식별한다.
핵심 아이디어는 **진폭 증폭(amplitude amplification)**이다. 모든 항목에 균등하게 분포된 확률 진폭을, 목표 상태에만 집중되도록 반복적으로 재형성하는 것이다.
핵심 원리
1. 초기 상태 준비
개 항목을 개 큐비트로 표현한 뒤, Hadamard 변환을 전체 적용해 균등 중첩 상태를 만든다.
각 항목의 초기 진폭은 으로 동일하다.
2. 오라클
목표 상태 의 위상만 반전시키는 유니터리 연산자다.
행렬 표현으로는 이다. 오라클은 "이 항목이 정답인가?"를 판별하는 블랙박스로, 단 한 번의 쿼리로 동작한다.
3. 확산 연산자
오라클이 목표 위상을 뒤집은 후, 확산 연산자가 모든 진폭을 **평균에 대해 반전(inversion about the mean)**시킨다.
기하학적으로 해석하면, 오라클은 와 가 만드는 2차원 평면에서 에 대한 반사를, 확산 연산자는 에 대한 반사를 수행한다. 두 반사를 합치면 방향으로의 회전이 된다.
4. 반복 횟수와 복잡도
와 사이의 각도를 라 하면 이다. Grover 반복 한 번은 이 각도를 만큼 회전시키므로, 목표 상태 확률이 최대가 되려면
번 반복이 필요하다. 이때 측정하면 를 높은 확률로 얻는다. 최적 횟수를 초과하면 확률이 다시 감소하므로 반복 횟수 선택이 중요하다.
예시·응용
2큐비트 예시 (N = 4, 목표: |11⟩)
최적 반복 횟수는 회다.
from qiskit import QuantumCircuit
qc = QuantumCircuit(2)
# 균등 중첩
qc.h([0, 1])
# 오라클: |11⟩ 위상 반전 (CZ 게이트)
qc.cz(0, 1)
# 확산 연산자
qc.h([0, 1])
qc.x([0, 1])
qc.cz(0, 1)
qc.x([0, 1])
qc.h([0, 1])
qc.measure_all()
print(qc.draw('text'))
1회 반복 후 의 측정 확률이 1(100%)에 수렴한다.
실제 활용 분야
| 분야 | 내용 |
|---|---|
| 조합 최적화 | SAT, 그래프 채색 등의 해 탐색 |
| 암호해독 | 대칭키 암호의 유효 보안 강도를 절반으로 단축 (AES-128 → 64비트 수준) |
| 패턴 검색 | 비정형 데이터 내 특정 패턴 탐색 |
정리
Grover 알고리즘은 오라클과 확산 연산자를 회 반복하여 목표 상태의 진폭을 집중적으로 증폭한다. Shor 알고리즘처럼 지수 속도 향상은 아니지만, 비정렬 검색 문제에서의 이차 속도 향상은 이론적 최적임이 증명된 근본적 결과다. 이 원리는 진폭 증폭이라는 범용 기법으로 발전해 양자 머신러닝, 양자 최적화 등 다양한 알고리즘의 서브루틴으로 활용된다.
연습문제
Q1.항목 수가 N = 256일 때, Grover 알고리즘의 최적 반복 횟수를 구하시오.
힌트 보기
sin θ ≈ 1/√N 관계와 $k \approx \frac{\pi}{4}\sqrt{N}$ 공식을 사용한다.
해설 보기
$k \approx \frac{\pi}{4}\sqrt{256} = \frac{\pi}{4} \times 16 \approx 12.6$이므로 약 **12~13회** 반복이 최적이다. 고전 탐색의 평균 128회와 비교하면 약 10배 빠르다.
Q2.Grover 알고리즘에서 오라클을 최적 횟수의 두 배만큼 반복 적용하면 어떤 현상이 발생하는가?
해설 보기
$k = \frac{\pi}{4}\sqrt{N}$ 반복에서 목표 상태 진폭이 최대(≈1)에 도달한 뒤, 계속 반복하면 진폭이 다시 감소하기 시작한다. 2k 반복 시점에서는 진폭이 초기값(≈0) 부근으로 되돌아와 탐색이 실패한다. 이는 기하학적으로 목표 방향으로의 회전이 과도하게 진행되어 다시 목표 반대편으로 넘어가는 현상이다.
Q3.목표 항목이 단 1개가 아닌 M개(1 ≤ M ≤ N)인 경우, Grover 알고리즘의 최적 반복 횟수는 어떻게 변하는가?
힌트 보기
초기 각도 θ는 $\sin\theta = \sqrt{M/N}$으로 일반화된다.
해설 보기
목표 항목이 M개일 때 초기 각도가 $\sin\theta = \sqrt{M/N}$으로 커지므로, 최적 반복 횟수는 $k \approx \frac{\pi}{4}\sqrt{N/M}$으로 줄어든다. M = N/4이면 단 1회 반복만으로 충분하며, M이 클수록 알고리즘이 더 빠르게 수렴한다.