큐비트란 무엇인가
고전 컴퓨터의 비트는 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에서 다룬다.