Deutsch-Jozsa 알고리즘 — 단 한 번의 평가로 결론짓기
Deutsch-Jozsa 알고리즘은 주어진 함수가 상수 함수인지 균형 함수인지를 단 한 번의 오라클 호출로 확정적으로 판별한다. 고전 컴퓨터가 최악의 경우 지수번의 평가를 요구하는 것과 대비되어, 양자컴퓨팅의 지수적 우위를 처음으로 엄밀히 증명한 알고리즘이다.
Photo: Markus Spiske / Unsplash개념 소개
문제 정의: 비트 입력을 받는 함수 이 블랙박스(오라클)로 주어진다. 이 함수는 다음 두 경우 중 하나임이 보장된다.
- 상수 함수(constant): 모든 입력에 대해 출력이 동일 (전부 0 또는 전부 1)
- 균형 함수(balanced): 출력의 정확히 절반이 0, 나머지 절반이 1
어느 쪽인지 판별하는 것이 목표다. 고전 컴퓨터는 확실한 답을 얻으려면 최악의 경우 번 질의해야 한다. Deutsch-Jozsa 알고리즘은 단 한 번의 오라클 호출로 확정적 답을 낸다.
핵심 원리
알고리즘은 개의 입력 큐비트와 1개의 보조(ancilla) 큐비트, 총 개를 사용한다.
1단계 — 초기 상태 준비
입력 레지스터는 , 보조 큐비트는 로 설정한다.
2단계 — Hadamard 변환
전체 큐비트에 Hadamard 게이트를 적용하면 입력 레지스터는 모든 개 상태의 균일 중첩이 되고, 보조 큐비트는 가 된다.
3단계 — 오라클(위상 킥백) 적용
오라클 는 로 정의된다. 보조 큐비트가 일 때 위상 킥백(phase kickback) 현상으로 의 정보가 전역 위상 대신 상대 위상으로 인코딩된다.
4단계 — 두 번째 Hadamard 및 측정
입력 레지스터에 Hadamard를 재적용하면:
전부 0인 상태 를 측정할 확률은 다음과 같다.
- 상수 함수: 모든 의 부호가 같으므로 합은 →
- 균형 함수: 양수와 음수 항이 정확히 상쇄 →
측정 결과가 이면 상수 함수, 그 외이면 균형 함수로 오류 없이 결론짓는다.
예시·응용
n=1: Deutsch 알고리즘
가장 단순한 특수 경우로, 2큐비트 회로로 인지 아닌지를 한 번에 판별한다.
from qiskit import QuantumCircuit
def build_dj_circuit(oracle_circuit, n):
qc = QuantumCircuit(n + 1, n)
qc.x(n) # 보조 큐비트 |1⟩ 초기화
qc.h(range(n+1)) # 전체 Hadamard
qc.compose(oracle_circuit, inplace=True) # 오라클
qc.h(range(n)) # 입력 레지스터에 Hadamard 재적용
qc.measure(range(n), range(n))
return qc
고급 알고리즘과의 연결
이 알고리즘의 구조—Hadamard → 오라클 → Hadamard → 측정—는 이후 Simon 알고리즘, Grover 알고리즘, Shor 알고리즘 설계의 원형이 된다. 위상 킥백과 간섭을 결합해 전역 함수 특성을 단번에 추출하는 방식은 양자 알고리즘 설계의 핵심 패턴이다.
단, Deutsch-Jozsa 문제 자체는 문제가 인위적으로 제한되어(상수/균형 보장) 실용적 쓸모는 크지 않다. 이 알고리즘의 의의는 양자 지수적 우위의 가능성을 최초로 엄밀하게 증명한 데 있다.
정리
Deutsch-Jozsa 알고리즘은 양자 중첩으로 개 입력을 동시에 평가하고, 위상 킥백으로 함수 정보를 위상에 인코딩한 뒤, 간섭으로 원하는 답만 보강·상쇄하는 세 단계 구조를 갖는다. 이 흐름은 양자 알고리즘을 이해하는 핵심 골격이다.
연습문제
Q1.입력 비트 수가 n=3일 때, 고전 컴퓨터가 함수의 종류를 확실히 판별하기 위해 최악의 경우 몇 번 질의해야 하는가? 그 이유를 설명하라.
힌트 보기
상수 함수를 반증하려면 얼마나 많은 서로 다른 출력값이 필요한지 생각해보라.
해설 보기
최악 $2^{n-1}+1 = 5$번이다. 처음 $2^{n-1}=4$번 질의까지는 모두 같은 값이 나와도 상수 함수일 가능성이 남아 있다. 5번째 질의에서 비로소 상수 함수(모두 동일)인지 균형 함수(다른 값 등장)인지 확정된다.
Q2.오라클 적용 직후 입력 레지스터의 상태에서 $(-1)^{f(x)}$ 위상이 나타나는 이유(위상 킥백)를 수식으로 설명하라.
힌트 보기
보조 큐비트가 $|{-}\rangle$ 상태일 때 $|y \oplus f(x)\rangle$를 전개해보라.
해설 보기
$U_f|x\rangle|{-}\rangle = |x\rangle \cdot \frac{|f(x)\rangle - |1 \oplus f(x)\rangle}{\sqrt{2}}$. $f(x)=0$이면 $\frac{|0\rangle-|1\rangle}{\sqrt{2}} = |{-}\rangle$, $f(x)=1$이면 $\frac{|1\rangle-|0\rangle}{\sqrt{2}} = -|{-}\rangle$이 된다. 따라서 전체는 $(-1)^{f(x)}|x\rangle|{-}\rangle$이 되어, $f(x)$의 값이 보조 큐비트가 아닌 입력 레지스터의 전역 위상으로 이전(킥백)된다.
Q3.Deutsch-Jozsa 알고리즘이 확률적이 아닌 확정적(deterministic)으로 답을 내는 이유는 무엇인가?
해설 보기
측정 확률 $P(0^n)$이 상수 함수에서 정확히 1, 균형 함수에서 정확히 0이 되기 때문이다. 이는 간섭 현상이 완전한 보강(상수) 또는 완전한 상쇄(균형)를 만들어 중간값이 존재하지 않기 때문이다. 따라서 단 한 번의 측정으로 오류 가능성 없이 판별이 가능하다.