2026년 8월 12일 수요일
튜토리얼 목록
중급양자컴퓨팅

Deutsch-Jozsa 알고리즘 — 단 한 번의 오라클 호출로 판별하기

Deutsch-Jozsa 알고리즘은 함수가 상수인지 균형인지를 고전적으로는 지수적 질의 횟수가 필요하지만 양자 방식으로는 단 한 번의 오라클 호출만으로 확정적으로 판별한다. 중첩·위상 반발·간섭이라는 세 가지 원리를 결합해 양자 컴퓨터의 지수적 이점을 최초로 이론적으로 증명한 교과서적 알고리즘이다.

개념 소개

문제 설정: 함수 이 주어진다. 이 함수는 다음 둘 중 하나임이 보장된다.

  • 상수 함수(constant): 모든 입력에 대해 출력이 동일하게 0 또는 1
  • 균형 함수(balanced): 정확히 절반의 입력에서 0, 나머지 절반에서 1을 반환

고전 알고리즘이 최악의 경우 판별하려면 번의 질의가 필요하다. 반면 Deutsch-Jozsa 알고리즘은 단 한 번의 오라클 호출로 확정적 답을 낸다.

핵심 아이디어는 두 가지다. 첫째, 모든 입력을 동시에 중첩 상태로 오라클에 넘긴다. 둘째, 위상 반발(phase kickback)로 함수 정보를 위상에 인코딩하고, Hadamard 변환을 통한 간섭으로 이를 읽어낸다.

핵심 원리

회로 구성

알고리즘은 개 큐비트를 사용한다. 처음 개는 입력 레지스터(), 마지막 1개는 보조 큐비트()로 초기화한다.

단계 1 — 초기 상태:

단계 2 — Hadamard 전체 적용:

단계 3 — 오라클 적용과 위상 반발:

오라클 로 정의된다. 보조 큐비트가 일 때 이를 적용하면,

함수값이 전역 위상이 아닌 항의 상대 위상으로 인코딩된다:

단계 4 — 입력 레지스터에 Hadamard 재적용:

여기서 은 비트 내적이다.

단계 5 — 측정:

에서의 진폭은,

  • 상수 함수이면 → 측정 결과는 반드시
  • 균형 함수이면 양수·음수 항이 정확히 상쇄되어 은 절대 나오지 않음

즉, 측정값이 전부 0이면 상수 함수, 하나라도 1이 있으면 균형 함수다.

예시·응용

Qiskit 구현 예시 (n=2)

from qiskit import QuantumCircuit, transpile
from qiskit_aer import AerSimulator

def deutsch_jozsa(n, balanced=True):
    qc = QuantumCircuit(n + 1, n)
    qc.x(n)                    # 보조 큐비트 |1⟩
    qc.h(range(n + 1))         # 전체 Hadamard
    qc.barrier()

    if balanced:
        for i in range(n):     # 균형 오라클 예시
            qc.cx(i, n)

    qc.barrier()
    qc.h(range(n))             # 입력 레지스터 Hadamard
    qc.measure(range(n), range(n))
    return qc

sim = AerSimulator()
for label, bal in [('상수', False), ('균형', True)]:
    qc = deutsch_jozsa(2, balanced=bal)
    counts = sim.run(transpile(qc, sim), shots=1).result().get_counts()
    print(f"{label} 함수 → {counts}")
# 상수 함수 → {'00': 1}
# 균형 함수 → {'11': 1}  (또는 '01', '10' 등 0 아닌 값)

이론적 의의

이 알고리즘은 실용적 문제를 직접 해결하기보다 양자 컴퓨터가 고전 컴퓨터보다 지수적으로 빠를 수 있음을 처음으로 명확히 증명한 이정표다. 이후 Simon 알고리즘, Shor 알고리즘, Grover 알고리즘 등 더 강력한 양자 알고리즘의 설계 원리로 이어진다.

정리

구분 고전 알고리즘 Deutsch-Jozsa
최악 질의 수 1
결과 유형 확정적 확정적
오류율 없음 없음

오라클 한 번으로 지수적 이점이 가능한 이유는 양자 병렬성(중첩으로 모든 입력을 동시 처리)과 간섭(Hadamard 변환이 상수·균형 정보를 측정 결과로 분리)이 결합하기 때문이다.

연습문제

  1. Q1.n=1인 Deutsch 알고리즘에서 상수 오라클($f(x)=0$)을 적용할 때, 각 단계별 양자 상태를 직접 계산하고 최종 측정 결과를 구하시오.

    힌트 보기

    초기 상태 $|0\rangle|1\rangle$부터 시작해 $H^{\otimes 2}$ → 오라클 → $H \otimes I$ 순서로 계산한다. 보조 큐비트는 측정하지 않아도 된다.

    해설 보기

    초기: $|0\rangle|1\rangle$. Hadamard 후: $|{+}\rangle|{-}\rangle = \frac{1}{2}(|0\rangle+|1\rangle)(|0\rangle-|1\rangle)$. 상수 오라클($f=0$)은 아무것도 바꾸지 않으므로 상태 불변. 입력 레지스터에 $H$를 적용하면 $|{+}\rangle \xrightarrow{H} |0\rangle$. 따라서 측정값은 **0** → 상수 함수로 판별.

  2. Q2.균형 함수에서 $|z\rangle = |0\rangle^{\otimes n}$의 측정 확률이 정확히 0임을 수식으로 증명하시오.

    힌트 보기

    균형 함수의 정의: $f(x)=0$인 $x$가 정확히 $2^{n-1}$개, $f(x)=1$인 $x$도 정확히 $2^{n-1}$개.

    해설 보기

    진폭 $\alpha_0 = \frac{1}{2^n}\sum_{x}(-1)^{f(x)}$에서, 균형 함수는 $(-1)^0 = +1$인 항이 $2^{n-1}$개, $(-1)^1 = -1$인 항이 $2^{n-1}$개이므로 합산하면 $\alpha_0 = \frac{2^{n-1} - 2^{n-1}}{2^n} = 0$. 측정 확률은 $|\alpha_0|^2 = 0$.

  3. Q3.고전적으로 확률적 알고리즘을 허용하면 오류율 $\epsilon$ 이하로 판별하는 데 몇 번의 질의가 필요한지 설명하고, Deutsch-Jozsa의 결정론적 이점과 비교하시오.

    해설 보기

    균형 함수에서 무작위로 $k$개 입력을 선택하면 전부 같은 값을 얻을 확률(오판 확률)은 $2^{-(k-1)}$이다. 오류율 $\epsilon$ 이하를 원하면 $k = O(\log(1/\epsilon))$번의 질의로 충분하다. 즉 확률적으로는 다항 질의로도 실용적 정확도를 얻을 수 있다. Deutsch-Jozsa의 진정한 이점은 **오류 없는 결정론적** 해결을 단 1회로 달성하는 데 있으며, 이는 확률적 고전 알고리즘조차 상수 번 이상의 질의가 필요하다는 점과 대비된다.

관련 용어

이 챕터는 Claude (claude-sonnet-4-6)가 작성했습니다. · 발행 2026. 8. 12.