Deutsch-Jozsa 알고리즘: 단 한 번의 양자 질의로 답을 구하다
Deutsch-Jozsa 알고리즘은 고전 컴퓨터가 최악의 경우 지수적으로 많은 평가를 요구하는 문제를 단 한 번의 오라클 질의로 해결한다. 양자 중첩과 위상 간섭을 결합해 지수적 이점을 달성하는 최초의 명확한 예시로, 양자 알고리즘 설계의 핵심 원리를 이해하는 데 중요한 토대가 된다.
개념 소개
어떤 함수 가 주어졌을 때, 이 함수가 상수 함수(constant, 모든 입력에 대해 출력이 0 혹은 1로 동일)인지 균형 함수(balanced, 출력 0과 1이 정확히 절반씩)인지 판별하는 문제를 생각해 보자.
고전 결정론적 알고리즘으로는 최악의 경우 번 함수를 평가해야 한다. 입력 개수가 이면, 우주의 나이로도 처리하기 어려운 횟수다. 반면 Deutsch-Jozsa 알고리즘은 단 한 번의 오라클 질의로 확실한 답을 낸다. 이것이 알고리즘의 핵심 선언이다.
함수를 직접 계산할 수 없고 오라클(oracle)을 통해서만 질의할 수 있다는 블랙박스 모형이 전제된다. 오라클은 다음과 같은 유니타리 변환으로 표현된다.
핵심 원리
위상 반전(Phase Kickback)
보조 큐비트(ancilla)를 상태로 준비하면, 오라클이 입력 레지스터에 위상 형태로 를 기록한다.
이를 위상 반전이라 한다. 보조 큐비트는 변하지 않으므로 이후 무시할 수 있다.
회로 구성과 상태 변화
1단계 — 초기 상태를 준비한다.
2단계 — 모든 큐비트에 Hadamard를 적용한다.
3단계 — 오라클을 적용(위상 반전 이용)한다.
4단계 — 입력 레지스터에 다시 Hadamard를 적용한다.
5단계 — 에 대한 진폭을 분석한다.
- 가 상수 함수이면: 모든 항의 부호가 같아 합산값은 → 측정 시 반드시
- 가 균형 함수이면: 양의 항과 음의 항이 정확히 상쇄되어 합산값은 → 측정 시 절대 이 나오지 않음
결론적으로, 첫 번째 레지스터를 측정해 이 나오면 상수 함수, 그렇지 않으면 균형 함수다.
예시·응용
경우(Deutsch 알고리즘)
이면 함수는 이며, 상수는 , 균형은 이다.
회로 출력이 이면 상수, 이면 균형으로 판별된다. 고전적으로는 반드시 두 번 평가가 필요하다.
Qiskit 구현 예시 (, 균형 함수)
from qiskit import QuantumCircuit, transpile
from qiskit_aer import AerSimulator
def deutsch_jozsa_balanced(n=2):
qc = QuantumCircuit(n + 1, n)
# 초기 준비
qc.x(n) # 보조 큐비트 |1⟩
qc.h(range(n+1)) # 모든 큐비트에 Hadamard
# 균형 오라클: CNOT(x_0 → ancilla), CNOT(x_1 → ancilla)
for i in range(n):
qc.cx(i, n)
# 최종 Hadamard
qc.h(range(n))
qc.measure(range(n), range(n))
return qc
qc = deutsch_jozsa_balanced()
sim = AerSimulator()
result = sim.run(transpile(qc, sim), shots=1024).result()
print(result.get_counts()) # {'11': 1024} 또는 비제로 — 균형 함수 확인
알고리즘의 의의와 한계
이 알고리즘은 오라클 복잡도에서 지수적 양자 이점을 증명한 첫 사례로, Shor 알고리즘과 Grover 알고리즘의 개념적 선구자 역할을 했다. 다만 실용적 활용보다는 양자 알고리즘 설계 원리 교육에 주된 가치가 있다. 실제 문제에서 함수가 상수 또는 균형 중 하나임이 보장되는 상황은 드물기 때문이다.
정리
Deutsch-Jozsa 알고리즘은 세 가지 양자역학적 원리를 정교하게 조합한다. Hadamard를 통한 중첩으로 모든 입력을 동시에 탐색하고, 위상 반전으로 의 정보를 위상 형태로 인코딩하며, 두 번째 Hadamard의 간섭을 통해 원하는 답에 진폭을 집중시킨다. 이 세 단계의 흐름은 이후 등장하는 양자 알고리즘 대부분이 따르는 설계 철학을 명확히 보여준다.
연습문제
Q1.$n=1$인 Deutsch 알고리즘에서 상수 함수 $f(x)=1$에 대해 회로의 각 단계별 양자 상태를 직접 계산하고, 최종 측정 결과를 구하시오.
힌트 보기
초기 상태 $|0\rangle|1\rangle$부터 시작해 각 Hadamard와 오라클의 위상 반전 효과를 순서대로 적용하면 된다.
해설 보기
$|\psi_0\rangle = |0\rangle|1\rangle$ → Hadamard 적용: $|+\rangle|-\rangle = \frac{1}{\sqrt{2}}(|0\rangle+|1\rangle)|-\rangle$ → 오라클($f\equiv1$): $(-1)^1 \cdot \frac{1}{\sqrt{2}}(|0\rangle+|1\rangle)|-\rangle = -\frac{1}{\sqrt{2}}(|0\rangle+|1\rangle)|-\rangle$ → 최종 Hadamard: $-|0\rangle|-\rangle$. 전역 위상 $-1$은 측정에 영향이 없으므로, 결과는 $|0\rangle$ → **상수 함수**로 올바르게 판별된다.
Q2.균형 함수에 대한 Deutsch-Jozsa 알고리즘의 최종 상태에서 $|0\rangle^{\otimes n}$의 측정 확률이 정확히 0임을 수학적으로 보이시오.
해설 보기
균형 함수의 정의에 의해 $f(x)=0$인 $x$와 $f(x)=1$인 $x$가 각각 $2^{n-1}$개 존재한다. $|0\rangle^{\otimes n}$의 진폭은 $\frac{1}{2^n}\sum_{x}(-1)^{f(x)}$이고, $f(x)=0$인 항의 합은 $+2^{n-1}$, $f(x)=1$인 항의 합은 $-2^{n-1}$이므로 전체 합은 $0$이다. 따라서 측정 확률 $\left|\frac{0}{2^n}\right|^2 = 0$이다.
Q3.Deutsch-Jozsa 알고리즘이 오라클 복잡도 측면에서는 지수적 이점을 가지지만, 실용적 응용이 제한적인 이유를 설명하시오.
해설 보기
이 알고리즘은 함수가 반드시 '상수 또는 균형' 중 하나임이 사전에 보장되는 경우에만 의미가 있다. 실제 응용에서는 이런 보장이 없는 일반적인 함수를 다뤄야 하므로, 알고리즘을 직접 적용하기 어렵다. 또한 확률적 고전 알고리즘은 소수의 무작위 평가만으로도 높은 확률로 판별 가능해 실용적 격차가 줄어든다. 따라서 이 알고리즘의 가치는 양자 이점의 원리 증명과 알고리즘 설계 교육에 있다.