콘텐츠로 이동

큐비트란 무엇인가

고전 컴퓨터의 비트는 0 또는 1 중 하나의 값만 가진다. 양자 컴퓨터의 큐비트는 측정 전까지 0과 1을 동시에 품을 수 있다. 이 글에서는 큐비트의 상태 표현, 측정, 그리고 Qiskit으로 직접 확인하는 방법을 정리한다.

비트와 큐비트

구분 비트 큐비트
측정 전 상태 0 또는 1 0과 1의 중첩
측정 결과 항상 같은 값 확률적으로 0 또는 1
표현 방법 하나의 값 복소수 진폭을 가진 상태 벡터

상태 벡터 표현

큐비트의 상태는 두 기저 상태 \(|0\rangle\), \(|1\rangle\)의 선형 결합으로 쓴다.

\[ |\psi\rangle = \alpha|0\rangle + \beta|1\rangle, \qquad |\alpha|^2 + |\beta|^2 = 1 \]

측정하면 \(|\alpha|^2\)의 확률로 0, \(|\beta|^2\)의 확률로 1이 나온다.

중첩의 의미

중첩은 "0인지 1인지 모르는 상태"가 아니다. 측정 전까지 두 상태가 진폭 \(\alpha\), \(\beta\)로 함께 존재하는 상태이며, 이 진폭이 서로 간섭하는 것이 양자 알고리즘의 핵심이다.

블로흐 구 표현

전역 위상을 제외하면 모든 단일 큐비트 상태는 두 각도 \(\theta\), \(\phi\)로 나타낼 수 있다.

\[ |\psi\rangle = \cos\frac{\theta}{2}|0\rangle + e^{i\phi}\sin\frac{\theta}{2}|1\rangle \]

이 상태는 반지름 1인 구(블로흐 구) 표면의 한 점에 대응한다. 북극은 \(|0\rangle\), 남극은 \(|1\rangle\), 적도 위의 점들은 0과 1이 같은 확률로 나오는 균등 중첩 상태이다.

블로흐 구

Qiskit으로 확인하기

Hadamard 게이트로 \(|0\rangle\)을 균등 중첩 상태로 만들고, 1000번 측정한다.

from qiskit import QuantumCircuit
from qiskit.quantum_info import Statevector
from qiskit.primitives import StatevectorSampler

qc = QuantumCircuit(1)
qc.h(0)

print(Statevector.from_instruction(qc))   # 진폭 [0.707, 0.707]

qc.measure_all()
result = StatevectorSampler().run([qc], shots=1000).result()
print(result[0].data.meas.get_counts())   # 예: {'0': 503, '1': 497}

결과는 매번 조금씩 다르지만, 0과 1이 각각 약 50%씩 나온다. 한 번의 측정으로는 상태를 알 수 없고, 여러 번 반복한 통계로만 확률을 추정할 수 있다.

정리

  • 큐비트는 측정 전까지 0과 1의 중첩 상태로 존재한다.
  • 측정 확률은 진폭의 절댓값 제곱으로 결정된다.
  • 측정하면 중첩이 깨지고 하나의 값으로 확정된다.

더 자세한 실습은 양자컴퓨팅 입문 Lab 1에서 다룬다.