양자 컴퓨팅과 IBM Qiskit 소개

최근 컴퓨팅의 한계를 넘기 위한 기술로 양자 컴퓨팅(Quantum Computing)이 각광받고 있습니다. 기존 컴퓨터가 0과 1의 비트(Bit) 체계로 동작한다면, 양자 컴퓨터는 얽힘(Entanglement)과 중첩(Superposition)이라는 양자 역학적 특성을 띠는 큐비트(Qubit)를 통해 복잡한 연산을 병렬로 처리할 수 있습니다.

IBM에서 제공하는 Qiskit은 파이썬(Python) 기반의 오픈소스 양자 컴퓨팅 프레임워크로, 누구나 손쉽게 양자 회로를 설계하고 실제 IBM의 양자 컴퓨터(IBM Quantum Hardware)나 로컬 시뮬레이터에서 이를 실행해 볼 수 있도록 지원합니다. 본 글에서는 Qiskit을 로컬 환경에 설치하고 기초적인 얽힘 상태(Bell State) 회로를 만드는 과정까지 다룹니다.

Qiskit 설치 및 환경 구성

Qiskit은 파이썬 3.8 이상의 환경에서 동작합니다. 터미널 혹은 커맨드 프롬프트를 열고 의존성 충돌을 피하기 위해 가상 환경을 생성한 후 설치하는 것을 권장합니다.

# 가상환경 생성 (선택 사항이나 권장됨)
python -m venv qiskit_venv
source qiskit_venv/bin/activate  # Mac/Linux
qiskit_venv\Scripts\activate     # Windows

# qiskit 피키지 설치
pip install qiskit
pip install qiskit-ibm-runtime
pip install matplotlib # 회로 시각화를 위한 라이브러리

첫 번째 양자 회로 만들기: 벨 상태 (Bell State)

가장 유명한 양자 회로 중 하나인 벨 상태(Bell State)를 만들어 보겠습니다. 이 얽힘 상태에서는 두 큐비트 중 어느 한 큐비트를 측정하면 다른 한 큐비트의 상태도 즉각적으로 결정됩니다. 파이썬 스크립트 파일을 하나 생성하고 아래 코드를 작성해보세요.

from qiskit import QuantumCircuit
from qiskit.primitives import Sampler

# 2개의 양자 비트, 2개의 고전 비트(측정용)를 갖는 양자 회로 생성
circuit = QuantumCircuit(2, 2)

# 0번 큐비트에 Hadamard (H) 게이트 적용 (중첩 상태 생성)
circuit.h(0)

# CNOT 게이트 추가 (0번을 제어, 1번을 타겟 큐비트로 얽힘 생성)
circuit.cx(0, 1)

# 측정 (양자 0->고전 0, 양자 1->고전 1)
circuit.measure([0, 1], [0, 1])

# 회로 시각화 출력
print(circuit.draw('text'))

# 로컬 시뮬레이터를 통한 결과 측정
sampler = Sampler()
job = sampler.run(circuit)
result = job.result()

print(f"Quasi-probabilities: {result.quasi_dists[0]}")

위 코드를 실행하면 터미널에 텍스트 형태로 양자 회로의 구조가 나타납니다. H 게이트가 중첩을 만들고, cx (CNOT) 게이트가 두 큐비트를 하나로 강하게 얽히게 만듭니다.

결과 분석

결과 값인 `Quasi-probabilities`를 보면 이상적인 경우 `00` 상태일 확률이 약 50%, `11` 상태일 확률이 약 50%로 나타나야 합니다. 로컬 시뮬레이터(Sampler)는 노이즈 없는 이상적인 환경을 가정하기 때문에 대략 `0.5`, `0.5` 결과를 얻으실 수 있습니다.

다음 단계로는 실제 IBM Quantum Platform에 API 토큰을 등록하여 클라우드 상의 진짜 양자 하드웨어(Quantum Hardware)에서 해당 회로를 돌려보고, 노이즈가 포함된 환경에서의 실측 결과를 비교해 볼 수 있습니다. 양자 컴퓨팅의 세계는 다소 생소할 수 있지만 Qiskit과 함께라면 파이썬 지식만으로도 쉽게 첫걸음을 뗄 수 있습니다.