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

Deutsch-Jozsa 알고리즘 — 단 한 번의 오라클 평가로 함수 판별

Deutsch-Jozsa 알고리즘은 주어진 함수가 상수 함수인지 균형 함수인지를 단 한 번의 오라클 질의로 확정적으로 판별한다. 고전 결정론적 알고리즘이 최악의 경우 지수 번의 평가를 필요로 하는 반면, 양자 중첩과 간섭을 이용해 지수적 질의 복잡도 감소를 달성한 최초의 엄밀한 사례다.

개념 소개

함수 가 다음 두 종류 중 하나임이 보장될 때, 어느 쪽인지 판별하는 문제를 생각한다.

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

고전 결정론적 알고리즘은 최악의 경우 번의 함수 평가가 필요하다. 입력이 100비트라면 번을 평가해야 확실한 답을 얻는다. Deutsch-Jozsa 알고리즘은 이를 단 1번으로 해결한다.


핵심 원리

오라클과 위상 반전(Phase Kickback)

함수 는 유니터리 오라클 로 구현된다.

보조 큐비트(ancilla)를 로 준비하면 위상 반전이 일어난다.

이면 위상 변화 없음, 이면 전역 위상에 이 붙는다. 오라클의 정보가 보조 큐비트가 아닌 질의 큐비트의 위상으로 옮겨지는 것이 핵심이다.

알고리즘 단계

1단계 – 초기화

개 질의 큐비트를 , 보조 큐비트를 로 설정한다.

2단계 – Hadamard 변환

모든 큐비트에 Hadamard 게이트를 적용한다.

3단계 – 오라클 적용

위상 반전에 의해 각 기저 상태에 가 붙는다.

4단계 – 두 번째 Hadamard 변환 및 측정

질의 큐비트에 을 다시 적용하면, 상태의 진폭은 다음과 같다.

  • 상수 함수이면 모든 항의 부호가 동일하므로 → 측정 시 반드시
  • 균형 함수이면 양의 항과 음의 항이 정확히 상쇄되어 이 측정될 확률 0

따라서 질의 큐비트를 측정하여 모두 0이면 상수 함수, 하나라도 1이면 균형 함수로 단 한 번에 확정 판별한다.


예시·응용

n=2 균형 함수 직접 계산

(균형 함수)

오라클 적용 후 질의 큐비트 상태:

두 번째 Hadamard 후 진폭:

측정 결과는 절대 이 아니므로 균형 함수로 판별된다.

Qiskit 구현

from qiskit import QuantumCircuit
from qiskit.primitives import StatevectorSampler

def deutsch_jozsa(n: int, oracle: str = 'balanced') -> QuantumCircuit:
    qc = QuantumCircuit(n + 1, n)

    # 보조 큐비트를 |1⟩로 초기화
    qc.x(n)

    # 전체 Hadamard
    qc.h(range(n + 1))

    # 오라클 구현
    if oracle == 'balanced':
        for i in range(n):
            qc.cx(i, n)          # 각 질의 큐비트 → 보조 큐비트 CNOT
    elif oracle == 'constant_1':
        qc.x(n)                  # 상수 1: 보조 큐비트에 X 게이트
    # constant_0: 아무것도 하지 않음

    # 질의 큐비트에 다시 Hadamard
    qc.h(range(n))

    # 측정
    qc.measure(range(n), range(n))
    return qc

qc = deutsch_jozsa(n=3, oracle='balanced')
print(qc.draw('text'))
# 측정 결과가 000 이외이면 → 균형 함수

실용적 의의

Deutsch-Jozsa 알고리즘이 해결하는 문제 자체는 실용성이 높지 않다. 그러나 중첩을 통한 병렬 평가 → 위상에 정보 인코딩 → 간섭으로 정보 추출이라는 구조는 Bernstein-Vazirani 알고리즘, Simon 알고리즘, Grover 탐색 알고리즘 등 이후 양자 알고리즘들의 공통 설계 원형이다.


정리

Deutsch-Jozsa 알고리즘은 중첩(superposition)과 양자 간섭(interference), 그리고 위상 반전(phase kickback)이라는 세 가지 원리를 결합해 고전 대비 지수적 질의 복잡도 이점을 달성한다. 결과가 확률적이 아니라 **확정적(deterministic)**이라는 점에서 단순한 통계적 우위와 구분되며, 오라클 기반 양자 알고리즘 이론의 출발점으로서 역사적·교육적 가치가 크다.

연습문제

  1. Q1.상수 함수 $f(x)=1$ ($n=2$)일 때, 알고리즘의 각 단계를 거친 뒤 질의 큐비트의 상태를 직접 계산하고, 최종 측정 결과를 예측하라.

    힌트 보기

    오라클 적용 시 $(-1)^{f(x)} = (-1)^1 = -1$이 모든 항에 공통으로 붙는다. 전역 위상은 측정 확률에 영향을 주지 않는다는 점에 주의한다.

    해설 보기

    2단계 후 $\frac{1}{2}(|00\rangle+|01\rangle+|10\rangle+|11\rangle)$. 오라클 적용 후 $-\frac{1}{2}(|00\rangle+|01\rangle+|10\rangle+|11\rangle)$ (전역 위상만 바뀜). 두 번째 Hadamard 후 $|00\rangle$ 진폭 $= -\frac{1}{4}(1+1+1+1)=-1$, 측정 확률 $=|-1|^2=1$. 반드시 $|00\rangle$이 측정되므로 상수 함수로 올바르게 판별된다.

  2. Q2.고전 결정론적 알고리즘이 $n$비트 입력 함수를 판별하는 데 최악의 경우 왜 $2^{n-1}+1$번의 질의가 필요한지 설명하라.

    해설 보기

    $2^{n-1}$번의 질의까지 모두 같은 출력값(예: 모두 0)이 나왔다면, 아직 상수 함수인지 균형 함수인지 확정할 수 없다. 상수 0 함수이거나, 나머지 $2^{n-1}$개 입력 전부에서 1을 출력하는 균형 함수일 수 있기 때문이다. 따라서 반드시 $2^{n-1}+1$번째 질의가 있어야 판별 가능하다. 이 최악의 경우 질의 횟수가 $n$에 대해 지수적으로 증가한다.

  3. Q3.Deutsch-Jozsa 알고리즘에서 보조 큐비트를 $|0\rangle$ 대신 $|1\rangle$로 초기화하는 이유는 무엇인가?

    힌트 보기

    $H|0\rangle$과 $H|1\rangle$이 각각 어떤 상태가 되는지 계산해 보고, 위상 반전 조건과 비교한다.

    해설 보기

    $H|1\rangle = |{-}\rangle = \frac{|0\rangle-|1\rangle}{\sqrt{2}}$이다. 오라클 $U_f$를 이 상태에 적용하면 $U_f|x\rangle|{-}\rangle = (-1)^{f(x)}|x\rangle|{-}\rangle$로 위상 반전이 일어나 함수값이 위상에 인코딩된다. 반면 $H|0\rangle = |{+}\rangle$을 사용하면 위상 반전이 발생하지 않고 $f(x)$의 정보가 보조 큐비트의 진폭으로 섞여 들어가 간섭 기반 판별이 불가능해진다.

관련 용어

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