개념 소개
다음 상황을 상상해 보자. 블랙박스 함수 가 있고, 이 함수는 반드시 두 가지 중 하나임이 보장된다.
- 상수 함수(constant): 모든 입력에 대해 출력이 0 또는 1로 동일
- 균형 함수(balanced): 정확히 절반의 입력에서 0, 나머지 절반에서 1을 출력
고전적으로 이를 확실하게 판별하려면 최악의 경우 번 함수를 호출해야 한다. 이면 이미 천문학적인 수다. Deutsch-Jozsa 알고리즘은 단 1번의 오라클 호출로 이를 결정한다.
핵심 원리
오라클과 위상 반동
함수 는 유니타리 오라클 로 구현된다.
보조 큐비트(ancilla)를 상태로 준비하면, 오라클 적용 후 전체 상태는
가 된다. 함수의 출력값이 보조 큐비트 대신 위상으로 전이되는 이 현상이 위상 반동이다.
알고리즘 회로
초기 상태 에서 출발한다.
① 하다마르 변환 적용
② 오라클 적용
③ 첫 번째 레지스터에 다시 적용
④ 측정
이 관측될 확률은
- 상수 함수: 모든 가 동일 → 합이 →
- 균형 함수: 절반은 , 절반은 → 합이 →
따라서 이 관측되면 상수, 그 외 결과면 균형 함수로 판별한다.
예시·응용
n=2, 균형 함수 예시
이면 균형 함수다.
오라클 적용 후 첫 번째 레지스터 상태:
이 상태에 를 적용하면 만 남아, 측정 결과는 이 된다 — 이 아니므로 균형 함수 판별 성공.
Qiskit 구현 예시
from qiskit import QuantumCircuit
def deutsch_jozsa_balanced(n=2):
qc = QuantumCircuit(n + 1, n)
# 초기화: 보조 큐비트를 |1⟩로
qc.x(n)
qc.h(range(n + 1))
# 균형 오라클 예시: CNOT으로 f(x) = x_0 XOR x_1 구현
qc.cx(0, n)
qc.cx(1, n)
qc.h(range(n))
qc.measure(range(n), range(n))
return qc
qc = deutsch_jozsa_balanced()
print(qc.draw())
측정 결과가 00이 아닌 값이 나오면 균형 함수, 00이면 상수 함수임을 알 수 있다.
의의
Deutsch-Jozsa 알고리즘은 실용적 문제 해결보다 원리적 중요성이 크다. 양자 중첩이 지수적 병렬성을 제공함을 최초로 엄밀하게 증명했으며, 이후 Shor 알고리즘, Grover 알고리즘의 토대가 되는 오라클 기반 설계 패러다임을 확립했다.
정리
Deutsch-Jozsa 알고리즘의 핵심은 중첩으로 모든 입력을 동시에 탐색하고, 위상 반동으로 함수 정보를 위상에 인코딩한 뒤, 하다마르 변환으로 전역적 성질을 단일 측정 결과에 집결시키는 데 있다. 고전 최악의 경우 지수 쿼리 대 양자 1 쿼리라는 이 지수적 분리(exponential separation)는 양자 우위의 가장 깔끔한 이론적 시연이다.
Exercises
연습문제
Q1$n=1$인 Deutsch 문제에서 상수 함수 $f(x)=1$을 오라클로 구현했을 때, 알고리즘 각 단계 후의 양자 상태를 직접 계산하라.
힌트 보기
초기 상태 $|0\rangle|1\rangle$에서 출발해 $H\otimes H$, 오라클, $H$ 순서로 상태 벡터를 전개해 보라.
해설 보기
초기: $|0\rangle|1\rangle$ → $H\otimes H$ 후: $|-\rangle^{(x)}|-\rangle^{(anc)} = \frac{1}{2}(|0\rangle+|1\rangle)(|0\rangle-|1\rangle)$. $f(x)=1$이므로 오라클 후 모든 항에 $(-1)^1=-1$이 곱혀 $\frac{-1}{2}(|0\rangle+|1\rangle)(|0\rangle-|1\rangle)$. 첫 번째 큐비트에 $H$ 적용: $H\frac{1}{\sqrt{2}}(|0\rangle+|1\rangle) = |0\rangle$. 따라서 측정 결과는 $0$ → 상수 함수 판별 성공.
Q2균형 함수와 상수 함수 각각에서 $P(0^n)$이 왜 1과 0이 되는지, 합 $\sum_x (-1)^{f(x)}$의 값을 이용해 설명하라.
해설 보기
상수 함수의 경우 모든 $(-1)^{f(x)}$가 같은 부호를 가지므로 합이 $\pm 2^n$이 되어 $P(0^n)=|{\pm 2^n}/{2^n}|^2=1$이다. 균형 함수의 경우 $2^{n-1}$개는 $+1$, $2^{n-1}$개는 $-1$로 합이 정확히 $0$이 되어 $P(0^n)=0$이다. 이 이진 분리 덕분에 단일 측정으로 두 경우를 완벽하게 구분할 수 있다.
Q3Deutsch-Jozsa 알고리즘이 오라클을 2번 이상 호출하도록 변형하면 어떤 이점이 있는가? 또한 이 알고리즘의 현실적 한계는 무엇인가?
해설 보기
이미 1번으로 결정적(deterministic)으로 판별되므로 추가 호출은 정확도 향상에 기여하지 않는다. 현실적 한계로는, 이 문제 설정 자체(함수가 반드시 상수 혹은 균형임이 보장됨)가 매우 제한적이라 실제 응용 문제에 직접 적용하기 어렵다는 점이 있다. 또한 오라클 구현 자체에 이미 회로 복잡도가 포함될 수 있어, 전체 계산 복잡도는 오라클 쿼리 수만으로 평가해야 한다.
관련 용어


