2026년 7월 4일 토요일
튜토리얼 목록
입문양자컴퓨팅

Hadamard 게이트: 양자 중첩을 만드는 핵심 연산

Hadamard 게이트(H 게이트)는 확정적인 |0⟩ 또는 |1⟩ 상태를 0과 1의 균등한 중첩 상태로 변환하는 단일 큐비트 연산이다. 사실상 모든 양자 알고리즘이 이 게이트를 시작점으로 삼으며, 양자 병렬성의 물리적 기반을 제공한다. 행렬 표현은 단순하지만, 얽힘 생성부터 양자 푸리에 변환까지 폭넓게 활용되는 양자컴퓨팅의 핵심 도구다.

개념 소개

테이블 위에 놓인 동전을 생각해 보자. 앞면이면 0, 뒷면이면 1이다. 고전 비트는 항상 이 두 값 중 하나만 가진다. 그런데 동전을 손가락으로 튕겨 공중에서 빠르게 회전시키는 순간, 그 동전은 어느 쪽도 아닌 어떤 중간 상태에 놓인다.

Hadamard 게이트(H 게이트)는 바로 이 "동전 튕기기"에 해당하는 양자 연산이다. |0⟩ 상태의 큐비트에 H를 적용하면, 측정 시 0과 1이 각각 50%의 확률로 나오는 완벽한 중첩 상태가 만들어진다. 이 단순한 동작이 양자컴퓨팅 전반을 관통하는 핵심 역할을 맡는다.


핵심 원리

Hadamard 게이트의 행렬 표현은 다음과 같다.

이 게이트를 계산 기저 상태에 각각 적용하면:

Hadamard 기저를 이루며, 블로흐 구(Bloch sphere)에서 Z축 극점에 있던 상태가 X축 방향으로 이동한 것과 같다. 즉, H는 두 기저 사이의 회전 변환이다.

Hadamard 게이트의 가장 우아한 성질은 자기 자신이 역행렬이라는 것이다.

같은 큐비트에 H를 두 번 적용하면 원래 상태로 완전히 되돌아온다. 이는 H가 유니터리(unitary)이자 에르미트(Hermitian)임을 동시에 만족한다는 뜻이며, 알고리즘 설계에서 기저 변환을 자유롭게 오가는 근거가 된다.

n개의 큐비트에 H를 동시에 적용하면 개의 기저 상태가 균등한 중첩으로 한꺼번에 생성된다.

30개의 큐비트만으로 약 10억 개의 상태를 동시에 표현할 수 있는 것이 이 수식의 의미다. 이것이 **양자 병렬성(quantum parallelism)**의 출발점이다.


예시·응용

얽힘 생성: 벨 상태

H 게이트와 CNOT 게이트를 조합하면 두 큐비트가 최대로 얽힌 **벨 상태(Bell state)**를 만들 수 있다.

  1. 첫 번째 큐비트에 H 적용 →
  2. 이를 제어 큐비트로 삼아 CNOT 적용 →

이 두 게이트로 이루어진 소형 회로는 양자 텔레포테이션, 양자 암호, 벨 부등식 검증 실험의 핵심 구성 요소다.

Qiskit으로 확인하기

from qiskit import QuantumCircuit
from qiskit_aer import AerSimulator

# 1큐비트 회로에 H 게이트 적용
qc = QuantumCircuit(1, 1)
qc.h(0)       # Hadamard 게이트
qc.measure(0, 0)

sim = AerSimulator()
result = sim.run(qc, shots=1000).result()
print(result.get_counts())  # {'0': ~500, '1': ~500}

실행 결과로 0과 1이 거의 동일한 빈도로 관측된다. H가 완벽한 중첩을 만들었다는 직접적인 증거다.

주요 양자 알고리즘에서의 역할

알고리즘 H 게이트의 역할
Deutsch-Jozsa 모든 큐비트를 균등 중첩으로 초기화
Grover 탐색 초기 중첩 생성 + 확산 연산자 구성
양자 푸리에 변환 기본 회전 연산의 빌딩 블록

정리

Hadamard 게이트는 양자컴퓨팅 학습에서 가장 먼저 마주치는 게이트지만, 그 영향력은 초심자용 예제에 그치지 않는다. H는 계산 기저와 Hadamard 기저 사이를 자유롭게 전환하고, 다른 게이트와 결합해 얽힘을 만들며, 사실상 모든 주요 양자 알고리즘의 첫 단계를 구성한다. 라는 단순한 성질이 설계와 오류 분석 모두를 우아하게 만들어 준다.

연습문제

  1. Q1.$H|{+}\rangle$를 계산하라. 결과가 무엇을 의미하는지 설명하라.

    힌트 보기

    |+⟩ = (|0⟩ + |1⟩)/√2 이므로, H를 선형성에 따라 각 항에 적용해 보자.

    해설 보기

    $H|{+}\rangle = H\cdot\frac{|0\rangle+|1\rangle}{\sqrt{2}} = \frac{H|0\rangle + H|1\rangle}{\sqrt{2}} = \frac{|{+}\rangle + |{-}\rangle}{\sqrt{2}} = \frac{(|0\rangle+|1\rangle)/\sqrt{2}+(|0\rangle-|1\rangle)/\sqrt{2}}{\sqrt{2}} = |0\rangle$. 즉, 중첩 상태 |+⟩에 H를 다시 적용하면 원래의 |0⟩으로 돌아온다. 이는 $H^2=I$ 성질의 직접적인 예시다.

  2. Q2.2큐비트 모두 |0⟩으로 초기화된 상태 |00⟩에 $H \otimes H$를 적용한 결과를 구하라.

    해설 보기

    $H|0\rangle \otimes H|0\rangle = |{+}\rangle \otimes |{+}\rangle = \frac{1}{2}(|00\rangle + |01\rangle + |10\rangle + |11\rangle)$. 네 가지 계산 기저 상태가 각각 $\frac{1}{2}$의 진폭, 즉 25%의 확률로 균등하게 중첩된다. 일반화하면 $H^{\otimes n}|0\rangle^{\otimes n} = \frac{1}{\sqrt{2^n}}\sum_{x=0}^{2^n-1}|x\rangle$이다.

  3. Q3.Qiskit을 이용해 2큐비트 벨 상태 $|\Phi^+\rangle = \frac{|00\rangle+|11\rangle}{\sqrt{2}}$를 만드는 회로를 작성하고, 시뮬레이터로 측정 결과를 확인하라.

    해설 보기

    `qc = QuantumCircuit(2, 2); qc.h(0); qc.cx(0, 1); qc.measure([0,1],[0,1])`. 시뮬레이터 실행 결과는 '00'과 '11'만 각각 약 50%씩 나타나야 한다. '01'이나 '10'이 전혀 관측되지 않는 것이 두 큐비트가 최대로 얽혀 있다는 증거다.

관련 용어

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