Skip to content

Split View: 개발자를 위한 양자 컴퓨팅 완전 가이드 2025: Qiskit, Cirq, 양자 알고리즘, 양자 우월성

✨ Learn with Quiz
|

개발자를 위한 양자 컴퓨팅 완전 가이드 2025: Qiskit, Cirq, 양자 알고리즘, 양자 우월성

서론: 왜 양자 컴퓨팅인가?

양자 컴퓨팅은 고전 컴퓨팅의 패러다임을 근본적으로 바꾸는 기술입니다. 2019년 구글 Sycamore가 최초로 양자 우월성(Quantum Supremacy)을 실증했고, 2024년 IBM Condor가 1121 큐비트를 돌파했으며, 2025년 현재 IBM, Google, Quantinuum, IonQ, PsiQuantum이 치열하게 경쟁 중입니다. 양자 컴퓨팅은 만능 해결사가 아니지만, 특정 문제(소인수분해, 특정 최적화, 양자 시뮬레이션)에서 고전 컴퓨터로 수천 년 걸리는 계산을 수 시간에 해결할 잠재력을 가집니다.

이 가이드는 물리학자가 아닌 소프트웨어 개발자를 대상으로 합니다. 선형대수 기초만 있으면 따라갈 수 있도록 직관적 설명과 실제 Qiskit/Cirq 코드를 함께 제공합니다. 양자 역학 기초부터 양자 알고리즘, NISQ 시대 실무, 양자 머신러닝, Post-Quantum 암호학까지 개발자 관점에서 필요한 내용을 모두 다룹니다.

1. 양자 컴퓨팅이 왜 중요한가

1.1 고전 vs 양자 시간 복잡도

문제고전 최선양자 알고리즘속도 향상
정수 소인수분해O(exp(n^(1/3)))O(n^3) Shor지수적
비구조 검색O(N)O(sqrt(N)) Grover이차적
양자 시뮬레이션O(exp(n))O(poly(n))지수적
선형방정식O(n^3)O(log n) HHL지수적 (조건부)
최적화문제별잠재적 향상미확정

1.2 양자 컴퓨팅이 해결할 수 있는 문제

  • 암호학: RSA, ECC 같은 공개키 암호 해독 (Shor 알고리즘)
  • 화학: 분자 에너지 계산, 신약 개발, 비료 합성(질소 고정)
  • 재료과학: 초전도체, 배터리 설계
  • 최적화: 물류, 포트폴리오, 스케줄링
  • 머신러닝: 특정 커널 방법, 양자 신경망
  • 금융: 옵션 가격, Monte Carlo 시뮬레이션

1.3 양자 컴퓨팅이 해결할 수 없는 문제

  • 일반 병렬화: 양자 병렬은 측정 시 하나만 얻음
  • 대부분의 고전 알고리즘: 정렬, 해시 테이블 등은 이점 없음
  • NP-complete 전체: 일부만 이차 향상(Grover)
  • 일상 앱: 웹 서버, 게임 등은 양자 이점 거의 없음

2. 고전 비트 vs 양자 비트

2.1 비트와 큐비트

고전 비트는 0 또는 1 중 하나의 값을 가집니다. 큐비트는 ψ=α0+β1|\psi\rangle = \alpha|0\rangle + \beta|1\rangle 형태의 중첩 상태를 가질 수 있으며, α2+β2=1|\alpha|^2 + |\beta|^2 = 1을 만족합니다.

측정 시 확률 α2|\alpha|^2로 0, β2|\beta|^2로 1을 얻습니다. 측정 후 상태는 붕괴되어 해당 고전 비트 값이 됩니다.

2.2 n개 큐비트의 상태 공간

  • 고전 n비트: 2n2^n 상태 중 하나
  • 양자 n큐비트: 2n2^n 복소수 진폭의 벡터 (동시에)

300개 큐비트의 상태 벡터는 23002^{300}개의 복소수를 가지며, 이는 우주의 원자 수보다 많습니다. 이것이 양자 컴퓨팅의 잠재력입니다.

3. 양자 역학 기초

3.1 중첩 (Superposition)

큐비트는 측정되기 전까지 0과 1의 선형 결합 상태에 있을 수 있습니다.

+=12(0+1)|+\rangle = \frac{1}{\sqrt{2}}(|0\rangle + |1\rangle)

=12(01)|-\rangle = \frac{1}{\sqrt{2}}(|0\rangle - |1\rangle)

이 상태를 측정하면 50% 확률로 0 또는 1이 나옵니다.

3.2 얽힘 (Entanglement)

두 큐비트가 얽힌 상태는 분리해서 기술할 수 없습니다.

Φ+=12(00+11)|\Phi^+\rangle = \frac{1}{\sqrt{2}}(|00\rangle + |11\rangle)

이 Bell state에서 첫 번째 큐비트를 측정해 0이 나오면, 두 번째 큐비트도 0이 됩니다. 항상 100% 상관관계입니다. 심지어 두 큐비트가 물리적으로 멀리 떨어져 있어도.

3.3 측정 (Measurement)

측정은 양자 상태를 파괴합니다. 측정 후 상태는 관측된 기저 상태로 붕괴합니다. 이 때문에 양자 알고리즘 설계는 측정 결과가 유의미한 정보를 담도록 간섭 패턴을 정교하게 설계해야 합니다.

3.4 복제 불가 정리 (No-Cloning Theorem)

임의의 미지의 양자 상태를 완벽하게 복사하는 것은 불가능합니다. 이는 양자 통신과 양자 암호의 기반이 되는 중요한 정리입니다.

4. Bloch Sphere 시각화

단일 큐비트의 순수 상태는 3차원 구 표면의 점으로 표현할 수 있습니다.

  • 북극: 0|0\rangle
  • 남극: 1|1\rangle
  • 적도: 중첩 상태 (+|+\rangle, |-\rangle, +i|+i\rangle, i|-i\rangle)

ψ=cos(θ/2)0+eiϕsin(θ/2)1|\psi\rangle = \cos(\theta/2)|0\rangle + e^{i\phi}\sin(\theta/2)|1\rangle

여기서 θ는 북극으로부터의 극각, φ는 방위각입니다.

5. 양자 게이트

5.1 단일 큐비트 게이트

Pauli 게이트

  • X (NOT): 비트 플립. 01|0\rangle \leftrightarrow |1\rangle
  • Y: 비트 + 위상 플립
  • Z: 위상 플립. 11|1\rangle \to -|1\rangle

Hadamard (H): 중첩 생성

H0=+,H1=H|0\rangle = |+\rangle, \quad H|1\rangle = |-\rangle

HH 게이트 행렬:

1/sqrt(2) * [[1,  1],
             [1, -1]]

Phase 게이트

  • S: 1i1|1\rangle \to i|1\rangle (90도 위상)
  • T: 1eiπ/41|1\rangle \to e^{i\pi/4}|1\rangle (45도 위상)

회전 게이트

  • Rx(θ), Ry(θ), Rz(θ): 각 축에 대한 θ 라디안 회전

5.2 다중 큐비트 게이트

CNOT (Controlled-NOT): 2큐비트 게이트. 컨트롤 큐비트가 1이면 타겟 큐비트를 플립.

CNOT 진리표:
|00> -> |00>
|01> -> |01>
|10> -> |11>
|11> -> |10>

Toffoli (CCNOT): 3큐비트 게이트. 두 컨트롤이 모두 1이면 타겟 플립. 범용 고전 계산 가능.

SWAP: 두 큐비트 교환.

Controlled-Z, Controlled-Phase: 위상 기반 제어 게이트.

5.3 범용 게이트 셋

{H, T, CNOT}은 범용 양자 계산을 위한 게이트 셋입니다. 임의의 양자 연산을 이 세 개만으로 (오차 이내로) 근사할 수 있습니다.

6. 양자 회로와 측정

6.1 회로 다이어그램 읽기

양자 회로는 왼쪽에서 오른쪽으로 시간이 흐릅니다. 각 가로선은 큐비트, 각 상자는 게이트, 마지막에 측정 아이콘이 위치합니다.

6.2 가역성

측정을 제외한 모든 양자 게이트는 유니터리(unitary) 연산으로 가역적입니다. 이는 고전 게이트와의 큰 차이점입니다(AND 게이트는 비가역).

7. Qiskit 심화

7.1 설치와 시작

pip install qiskit qiskit-aer qiskit-ibm-runtime

7.2 기본 회로 작성

from qiskit import QuantumCircuit, transpile
from qiskit_aer import AerSimulator

qc = QuantumCircuit(2, 2)
qc.h(0)         # 큐비트 0에 Hadamard
qc.cx(0, 1)     # CNOT: 컨트롤=0, 타겟=1
qc.measure([0, 1], [0, 1])

print(qc)

simulator = AerSimulator()
compiled = transpile(qc, simulator)
result = simulator.run(compiled, shots=1024).result()
counts = result.get_counts()
print(counts)  # 예: {'00': 512, '11': 512}

이 코드는 Bell state를 생성합니다. 측정 결과는 항상 00 또는 11만 나옵니다.

7.3 트랜스파일러 (Transpiler)

실제 양자 하드웨어는 특정 게이트 셋과 연결 토폴로지를 가집니다. 트랜스파일러는 추상 회로를 하드웨어 실행 가능한 형태로 변환합니다.

from qiskit import transpile

# 최적화 레벨 0-3 (높을수록 더 공격적 최적화)
compiled = transpile(qc, backend, optimization_level=3)
print(f"Depth: {compiled.depth()}")
print(f"Gate count: {compiled.count_ops()}")

7.4 IBM Quantum 하드웨어

from qiskit_ibm_runtime import QiskitRuntimeService, SamplerV2 as Sampler

service = QiskitRuntimeService(channel="ibm_quantum", token="YOUR_TOKEN")
backend = service.least_busy(operational=True, simulator=False)
print(f"Using backend: {backend.name}")

sampler = Sampler(backend)
job = sampler.run([compiled])
result = job.result()
print(result[0].data.meas.get_counts())

7.5 시뮬레이터 종류

  • AerSimulator: 상태 벡터 (완벽, 작은 회로)
  • qasm_simulator: 측정 샘플링
  • statevector_simulator: 상태 벡터 직접 추출
  • unitary_simulator: 유니터리 행렬 계산
  • noise model: 하드웨어 노이즈 모델링
from qiskit_aer.noise import NoiseModel, depolarizing_error

noise_model = NoiseModel()
error = depolarizing_error(0.01, 1)
noise_model.add_all_qubit_quantum_error(error, ['h', 'x'])

sim = AerSimulator(noise_model=noise_model)
result = sim.run(compiled).result()

8. Cirq 심화

8.1 설치

pip install cirq

8.2 기본 예

import cirq

q0, q1 = cirq.LineQubit.range(2)

circuit = cirq.Circuit()
circuit.append([
    cirq.H(q0),
    cirq.CNOT(q0, q1),
    cirq.measure(q0, q1, key='result'),
])

print(circuit)

simulator = cirq.Simulator()
result = simulator.run(circuit, repetitions=1024)
print(result.histogram(key='result'))

8.3 Cirq vs Qiskit 차이

  • Qiskit: IBM 생태계, 풍부한 문서, 학계/산업 표준
  • Cirq: Google/Sycamore, NISQ 친화적, 실험적 기능
  • Qubit 모델: Cirq는 GridQubit, LineQubit, NamedQubit 구분
  • 게이트 셋: Google 하드웨어에 맞춘 gate set

9. 유명 양자 알고리즘

9.1 Deutsch-Jozsa 알고리즘

문제: 함수 f:{0,1}n{0,1}f: \{0,1\}^n \to \{0,1\}이 상수(constant)인지 균형(balanced)인지 판별.

  • 고전: 최악 2n1+12^{n-1}+1번 호출
  • 양자: 1번 호출

역사적으로 양자 속도 향상을 처음으로 보인 알고리즘입니다.

def deutsch_jozsa(n, oracle):
    qc = QuantumCircuit(n+1, n)
    qc.x(n)
    qc.h(range(n+1))
    qc.compose(oracle, inplace=True)
    qc.h(range(n))
    qc.measure(range(n), range(n))
    return qc

9.2 Grover의 검색 알고리즘

비구조 검색에서 O(N)O(\sqrt{N}) 속도. NN개 아이템에서 타겟을 찾는 문제에서 고전 O(N)O(N) 대비 이차 속도 향상.

from qiskit.circuit.library import GroverOperator
from qiskit.algorithms import AmplificationProblem, Grover

oracle = QuantumCircuit(3)
oracle.cz(0, 2)
oracle.cz(1, 2)

problem = AmplificationProblem(oracle, is_good_state=['101', '111'])
grover = Grover(quantum_instance=simulator)
result = grover.amplify(problem)
print(f"Top measurement: {result.top_measurement}")

9.3 Shor의 소인수분해 알고리즘

RSA 암호의 기반인 소인수분해를 다항식 시간에 해결. 충분히 큰 양자 컴퓨터가 구축되면 현재 공개키 암호 대부분을 깨뜨릴 수 있습니다.

Shor 알고리즘 개요:
1. 난수 a 선택 (1 < a < N)
2. gcd(a, N) 계산. 1이 아니면 인수 발견
3. 양자 단계: a^x mod N의 주기 r 찾기 (Quantum Period Finding)
4. r이 짝수면 gcd(a^(r/2) +/- 1, N) 계산으로 인수 획득

21 = 3 x 7과 같은 소수 인수분해는 Qiskit에 구현 예제가 있습니다.

9.4 Quantum Fourier Transform (QFT)

고전 DFT의 양자 버전. 많은 알고리즘(Shor, 위상 추정)의 핵심.

def qft(n):
    qc = QuantumCircuit(n)
    for j in range(n):
        qc.h(j)
        for k in range(j+1, n):
            qc.cp(np.pi / (2 ** (k-j)), k, j)
    for i in range(n//2):
        qc.swap(i, n-1-i)
    return qc

9.5 Bernstein-Vazirani 알고리즘

숨겨진 비트 문자열 ss를 1번의 쿼리로 찾기. Deutsch-Jozsa의 일반화.

10. 변분 양자 알고리즘

10.1 VQE (Variational Quantum Eigensolver)

분자 바닥 상태 에너지 계산. 양자 회로(ansatz)의 파라미터를 고전 옵티마이저로 조정.

from qiskit.algorithms.minimum_eigensolvers import VQE
from qiskit.algorithms.optimizers import COBYLA
from qiskit.circuit.library import EfficientSU2

ansatz = EfficientSU2(num_qubits=2, reps=2)
optimizer = COBYLA(maxiter=100)

vqe = VQE(estimator, ansatz, optimizer)
result = vqe.compute_minimum_eigenvalue(hamiltonian)
print(f"Ground state energy: {result.eigenvalue}")

10.2 QAOA (Quantum Approximate Optimization Algorithm)

조합 최적화 문제(Max-Cut, TSP 등)의 근사 해를 찾는 하이브리드 양자-고전 알고리즘.

from qiskit.algorithms.minimum_eigensolvers import QAOA

qaoa = QAOA(sampler, optimizer, reps=2)
result = qaoa.compute_minimum_eigenvalue(operator=cost_operator)

11. 양자 머신러닝 (QML)

11.1 양자 신경망 (QNN)

from qiskit_machine_learning.neural_networks import EstimatorQNN
from qiskit.circuit.library import RealAmplitudes

feature_map = ZZFeatureMap(feature_dimension=2, reps=1)
ansatz = RealAmplitudes(num_qubits=2, reps=1)

qc = QuantumCircuit(2)
qc.compose(feature_map, inplace=True)
qc.compose(ansatz, inplace=True)

qnn = EstimatorQNN(
    circuit=qc,
    input_params=feature_map.parameters,
    weight_params=ansatz.parameters,
)

11.2 Quantum Kernel Methods

양자 상태 공간에서 내적을 계산해 고전 SVM의 커널로 사용.

from qiskit_machine_learning.kernels import FidelityQuantumKernel

kernel = FidelityQuantumKernel(feature_map=feature_map)
from sklearn.svm import SVC
svc = SVC(kernel=kernel.evaluate)
svc.fit(X_train, y_train)

12. 양자 우월성(Quantum Supremacy)

12.1 Google Sycamore (2019)

53큐비트 Sycamore 칩이 랜덤 회로 샘플링을 200초에 수행. 당시 IBM Summit 슈퍼컴퓨터로는 10,000년 추정. 후에 IBM이 효율적인 고전 시뮬레이션으로 반박(수 일 내). 그럼에도 양자 우월성의 첫 실증 사례로 기록.

12.2 USTC Jiuzhang (2020)

광학 기반 보존 샘플링(Gaussian Boson Sampling)으로 200초에 결과, 고전으로는 25억 년 추정.

12.3 IBM 로드맵 (2025)

  • 2019 Falcon: 27 qubits
  • 2021 Eagle: 127 qubits
  • 2022 Osprey: 433 qubits
  • 2023 Condor: 1121 qubits
  • 2024 Flamingo: 1386 qubits (multi-chip)
  • 2025 Kookaburra: 4158 qubits (target)

12.4 유용한 양자 이점(Quantum Advantage)

양자 우월성은 "쓸모없는 문제"에 대한 증명입니다. 실제 유용한 문제에서 양자 이점은 아직 미달성 상태이며, 이것이 NISQ 시대의 핵심 목표입니다.

13. 양자 하드웨어 플랫폼

13.1 플랫폼 비교

플랫폼대표 회사큐비트 수게이트 속도연결성온도
초전도 (Superconducting)IBM, Google, Rigetti1000+ns제한적10-20 mK
Trapped IonIonQ, Quantinuum30-100usAll-to-all상온(이온트랩)
PhotonicXanadu, PsiQuantum수십~수백ps중간상온
Neutral AtomsQuEra, Pasqal수백us재구성mK
TopologicalMicrosoft미확정---

13.2 에러율과 큐비트 품질

지표의미
T1 (Relaxation)에너지 완화 시간
T2 (Dephasing)위상 일관성 시간
Single-qubit gate error~0.1% (state of the art)
Two-qubit gate error~1% (state of the art)
Readout error~1-5%
Quantum Volume (IBM)품질 종합 지표

14. NISQ 시대와 오류 수정

14.1 NISQ (Noisy Intermediate-Scale Quantum)

John Preskill이 제안한 용어로 50-1000 큐비트 규모의 노이즈가 있는 양자 컴퓨터를 말합니다. 이 시대에는:

  • 완전한 오류 수정 없음
  • 회로 깊이 제한적
  • 특정 문제에 대한 유용한 이점 탐구 중
  • 하이브리드 알고리즘(VQE, QAOA) 유행

14.2 양자 오류 수정 (QEC)

고전 오류 수정과 달리, 양자는 연속적 오류(X, Z, 그 조합)를 모두 보정해야 하고 복제 불가 정리 때문에 백업이 불가합니다. Shor 9큐비트 코드, Surface code 등이 있으며 논리 큐비트 1개에 수천 물리 큐비트 필요.

  • Surface Code: 2D 격자, 높은 임계값(1%), 현재 가장 유망
  • Color Code: Surface Code 확장
  • LDPC 기반: 최근 연구 활발

14.3 Fault-Tolerant Quantum Computing

완전한 오류 수정과 결함 허용 연산이 가능한 단계. 유용한 Shor 알고리즘(RSA-2048 해독)에는 수백만 물리 큐비트 필요로 추정.

15. 양자 이점 응용 분야

15.1 화학과 신약

  • 분자 에너지 정확 계산
  • 반응 메커니즘 시뮬레이션
  • 신약 스크리닝
  • 생물학적 효소 모델링 (FeMoco 등)

15.2 최적화

  • 물류 경로 최적화
  • 포트폴리오 최적화
  • 그래프 문제 (Max-Cut)
  • 제조 스케줄링

15.3 금융

  • Monte Carlo 가속
  • 옵션 가격 계산
  • 리스크 분석
  • 사기 탐지 (QML)

15.4 재료과학

  • 초전도체 설계
  • 배터리 화학
  • 촉매 발견

16. Post-Quantum 암호학 (PQC)

16.1 왜 필요한가

Shor 알고리즘이 RSA, ECC, DH를 다항식 시간에 해독할 수 있기 때문에, 충분한 큐비트의 양자 컴퓨터가 나오면 현재 TLS, VPN, 서명의 기반이 무너집니다. "Harvest Now, Decrypt Later" 공격: 공격자가 지금 암호화 트래픽을 저장하고 미래에 해독.

16.2 NIST PQC 표준화

2024년 NIST가 첫 PQC 표준을 발표했습니다.

  • FIPS 203 (ML-KEM): CRYSTALS-Kyber 기반 키 캡슐화
  • FIPS 204 (ML-DSA): CRYSTALS-Dilithium 기반 서명
  • FIPS 205 (SLH-DSA): SPHINCS+ 해시 기반 서명

16.3 알고리즘 분류

  • 격자 기반 (Lattice): Kyber, Dilithium, Falcon - 주력
  • 해시 기반: SPHINCS+ - 상태 비저장 서명
  • 코드 기반: Classic McEliece - 고신뢰
  • 다변수: Rainbow (깨짐)
  • 동형 격자: BIKE, HQC

16.4 마이그레이션 전략

  • Crypto Agility: 알고리즘 교체 용이한 설계
  • 하이브리드 모드: 기존 + PQC 조합 (TLS 1.3 확장)
  • 인벤토리: 현재 암호 사용처 파악
  • 타임라인: 2030-2035 PQC 전환 목표 (NIST 권고)

17. 실습: Bell State와 Quantum Teleportation

17.1 Bell State 생성

from qiskit import QuantumCircuit

bell = QuantumCircuit(2, 2)
bell.h(0)
bell.cx(0, 1)
bell.measure([0, 1], [0, 1])

17.2 양자 순간이동 (Teleportation)

Alice의 미지의 상태 ψ|\psi\rangle를 Bob에게 전송. 얽힘 + 2비트 고전 통신 필요.

def teleportation():
    qc = QuantumCircuit(3, 3)

    # Alice 큐비트 0을 임의의 상태로 (예)
    qc.h(0)
    qc.rz(0.7, 0)
    qc.barrier()

    # Bell pair 생성 (qubits 1, 2)
    qc.h(1)
    qc.cx(1, 2)
    qc.barrier()

    # Alice 측정 준비
    qc.cx(0, 1)
    qc.h(0)
    qc.measure([0, 1], [0, 1])
    qc.barrier()

    # Bob 조건부 게이트
    qc.cx(1, 2)
    qc.cz(0, 2)
    qc.measure(2, 2)
    return qc

18. 퀴즈

Q1. 복제 불가 정리(No-Cloning Theorem)가 양자 오류 수정에 미치는 영향은?

A: 고전 컴퓨터처럼 "비트를 3번 복사해 다수결" 같은 단순 백업이 불가능합니다. 그래서 양자 오류 수정은 정보를 얽힘으로 분산시키는 복잡한 코드(Shor, Surface, LDPC)를 사용합니다. 이것이 논리 큐비트 1개에 수천 물리 큐비트가 필요한 이유입니다.

Q2. Shor 알고리즘이 RSA를 위협하는 원리는?

A: Shor 알고리즘은 정수 NN의 소인수분해를 다항식 시간에 해결합니다. RSA 보안은 큰 수의 소인수분해가 어렵다는 가정에 기반하므로, 충분한 논리 큐비트의 양자 컴퓨터가 나오면 RSA-2048을 깨뜨릴 수 있습니다. 그래서 Post-Quantum 암호로의 전환이 시급합니다.

Q3. Grover 알고리즘의 속도 향상은 지수적인가 이차적인가?

A: 이차적(quadratic)입니다. NN개 아이템에서 타겟 검색을 고전은 O(N)O(N), Grover는 O(N)O(\sqrt{N})에 해결합니다. 지수적이지 않기 때문에 NP-complete 문제 전체를 다항식 시간으로 해결하진 못합니다.

Q4. VQE와 QAOA는 왜 NISQ 시대에 유용한가?

A: 둘 다 하이브리드 양자-고전 알고리즘으로, 얕은 회로만 사용하므로 노이즈 영향이 제한적입니다. 양자 부분은 기대값 계산만 하고 파라미터 최적화는 고전 옵티마이저가 수행합니다. 완전한 오류 수정 없이도 실용적 결과를 얻을 수 있는 유력한 접근입니다.

Q5. Post-Quantum Cryptography에서 "Harvest Now, Decrypt Later" 공격이란?

A: 공격자가 현재 암호화된 네트워크 트래픽을 저장해두고, 미래에 충분히 큰 양자 컴퓨터가 나오면 해독하는 공격입니다. 이 때문에 장기 기밀성(예: 국가 기밀, 의료 기록)이 필요한 데이터는 PQC로 이미 마이그레이션해야 합니다.

19. 참고 자료

  1. Qiskit Documentation - qiskit.org
  2. Cirq Documentation - quantumai.google/cirq
  3. IBM Quantum Learning - learning.quantum.ibm.com
  4. Nielsen and Chuang, Quantum Computation and Quantum Information (Cambridge)
  5. Preskill, Quantum Computing in the NISQ era and beyond (2018)
  6. Arute et al., Quantum Supremacy using a Programmable Superconducting Processor (Nature 2019)
  7. NIST PQC Project - csrc.nist.gov/projects/post-quantum-cryptography
  8. Google Quantum AI - quantumai.google
  9. Shor, Algorithms for quantum computation (1994)
  10. Grover, A fast quantum mechanical algorithm for database search (1996)
  11. Microsoft Quantum Development Kit - learn.microsoft.com/quantum
  12. QuTiP Library - qutip.org
  13. Quantum Algorithm Zoo - quantumalgorithmzoo.org

결론

양자 컴퓨팅은 더 이상 물리학자만의 영역이 아닙니다. Qiskit, Cirq 같은 오픈소스 SDK 덕분에 소프트웨어 개발자도 Jupyter 노트북에서 양자 회로를 실행하고 IBM Quantum 클라우드로 실제 양자 하드웨어에 접속할 수 있습니다. NISQ 시대는 완벽하지 않지만 VQE, QAOA, 양자 머신러닝 같은 하이브리드 접근으로 첫 유용한 양자 이점을 찾아가고 있습니다. 동시에 PQC로의 마이그레이션은 모든 보안 인프라의 필수 과제입니다. 양자 시대는 이미 시작되었고, 준비하는 개발자에게 기회가 열려 있습니다.

Quantum Computing for Developers Complete Guide 2025: Qiskit, Cirq, Algorithms, Supremacy

Introduction: Why Quantum Computing?

Quantum computing fundamentally changes the computing paradigm. In 2019, Google's Sycamore first demonstrated quantum supremacy; in 2024, IBM's Condor surpassed 1121 qubits; and as of 2025, IBM, Google, Quantinuum, IonQ, and PsiQuantum are in fierce competition. Quantum computing is not a magic bullet, but for specific problems (integer factoring, certain optimizations, quantum simulation) it has the potential to solve in hours what classical computers would take thousands of years.

This guide targets software developers, not physicists. With only basic linear algebra, you can follow along with intuitive explanations and practical Qiskit/Cirq code. We cover quantum mechanics fundamentals, algorithms, NISQ-era practice, quantum ML, and Post-Quantum cryptography - everything developers need.

1. Why Quantum Computing Matters

1.1 Classical vs Quantum Complexity

ProblemClassical BestQuantumSpeedup
Integer factoringO(exp(n^(1/3)))O(n^3) ShorExponential
Unstructured searchO(N)O(sqrt(N)) GroverQuadratic
Quantum simulationO(exp(n))O(poly(n))Exponential
Linear equationsO(n^3)O(log n) HHLExponential (conditional)
OptimizationProblem-specificPotentiallyUndetermined

1.2 What Quantum Can Help With

  • Cryptography: Breaking public-key crypto like RSA, ECC (Shor)
  • Chemistry: Molecular energy, drug discovery, fertilizer synthesis
  • Materials: Superconductors, battery design
  • Optimization: Logistics, portfolios, scheduling
  • Machine Learning: Certain kernel methods, quantum neural networks
  • Finance: Option pricing, Monte Carlo

1.3 What Quantum Can't Help With

  • General parallelism: Measurement collapses to a single outcome
  • Most classical algorithms: Sorting, hash tables get no advantage
  • All of NP-complete: Only quadratic via Grover
  • Everyday apps: Web servers, games see little benefit

2. Classical Bits vs Qubits

2.1 Bit vs Qubit

A classical bit is 0 or 1. A qubit can be in a superposition ψ=α0+β1|\psi\rangle = \alpha|0\rangle + \beta|1\rangle with α2+β2=1|\alpha|^2 + |\beta|^2 = 1.

When measured, it yields 0 with probability α2|\alpha|^2 and 1 with probability β2|\beta|^2. After measurement, the state collapses.

2.2 State Space of n Qubits

  • Classical n bits: one of 2n2^n states
  • Quantum n qubits: vector of 2n2^n complex amplitudes (all simultaneously)

The state vector of 300 qubits has 23002^{300} complex numbers, more than the atoms in the universe. This is the potential of quantum computing.

3. Quantum Mechanics Fundamentals

3.1 Superposition

Qubits can exist in linear combinations of basis states before measurement.

+=12(0+1)|+\rangle = \frac{1}{\sqrt{2}}(|0\rangle + |1\rangle)

Measuring this state yields 0 or 1 with 50% each.

3.2 Entanglement

Entangled qubits cannot be described separately.

Φ+=12(00+11)|\Phi^+\rangle = \frac{1}{\sqrt{2}}(|00\rangle + |11\rangle)

Measuring the first qubit forces the second to the same value with 100% correlation, even across distance.

3.3 Measurement

Measurement destroys superposition. It collapses the state into the observed basis state. Quantum algorithms must carefully engineer interference so the measurement outcome carries meaningful information.

3.4 No-Cloning Theorem

It is impossible to perfectly copy an arbitrary unknown quantum state. This underpins quantum communication and quantum cryptography.

4. Bloch Sphere Visualization

The pure state of a single qubit maps to a point on the surface of a 3D sphere.

  • North pole: 0|0\rangle
  • South pole: 1|1\rangle
  • Equator: superposition states

ψ=cos(θ/2)0+eiϕsin(θ/2)1|\psi\rangle = \cos(\theta/2)|0\rangle + e^{i\phi}\sin(\theta/2)|1\rangle

5. Quantum Gates

5.1 Single-Qubit Gates

Pauli gates

  • X (NOT): Bit flip, 01|0\rangle \leftrightarrow |1\rangle
  • Y: Bit + phase flip
  • Z: Phase flip, 11|1\rangle \to -|1\rangle

Hadamard gate: Creates superposition. Applying the Hadamard maps the basis states to balanced superpositions.

Hadamard action:
  Hadamard |0>  ->  (|0> + |1>) / sqrt(2)
  Hadamard |1>  ->  (|0> - |1>) / sqrt(2)

Matrix form:
  (1/sqrt(2)) * [[1,  1],
                 [1, -1]]

Phase gates

  • S: 90 degrees phase
  • T: 45 degrees phase

Rotation gates

  • Rx(theta), Ry(theta), Rz(theta): rotations around each axis

5.2 Multi-Qubit Gates

CNOT: Flips target if control is 1.

CNOT truth table:
|00> -> |00>
|01> -> |01>
|10> -> |11>
|11> -> |10>

Toffoli (CCNOT): 3-qubit gate, universal for classical computation.

SWAP: Swaps two qubits.

Controlled-Z, Controlled-Phase: Phase-based controls.

5.3 Universal Gate Sets

The set {H, T, CNOT} is a universal gate set: any quantum operation can be approximated to arbitrary accuracy.

6. Quantum Circuits and Measurement

6.1 Reading Circuit Diagrams

Quantum circuits flow left to right in time. Each horizontal line is a qubit, each box a gate, and measurement icons mark the end.

6.2 Reversibility

All quantum gates except measurement are unitary and reversible, unlike classical gates such as AND.

7. Qiskit Deep Dive

7.1 Installation

pip install qiskit qiskit-aer qiskit-ibm-runtime

7.2 Basic Circuit

from qiskit import QuantumCircuit, transpile
from qiskit_aer import AerSimulator

qc = QuantumCircuit(2, 2)
qc.h(0)
qc.cx(0, 1)
qc.measure([0, 1], [0, 1])

print(qc)

simulator = AerSimulator()
compiled = transpile(qc, simulator)
result = simulator.run(compiled, shots=1024).result()
counts = result.get_counts()
print(counts)  # e.g. {'00': 512, '11': 512}

This creates a Bell state. Measurements yield only 00 or 11.

7.3 Transpiler

Real hardware has specific gate sets and coupling topologies. The transpiler converts abstract circuits to hardware-executable form.

from qiskit import transpile

compiled = transpile(qc, backend, optimization_level=3)
print(f"Depth: {compiled.depth()}")
print(f"Gate count: {compiled.count_ops()}")

7.4 IBM Quantum Hardware

from qiskit_ibm_runtime import QiskitRuntimeService, SamplerV2 as Sampler

service = QiskitRuntimeService(channel="ibm_quantum", token="YOUR_TOKEN")
backend = service.least_busy(operational=True, simulator=False)
print(f"Using backend: {backend.name}")

sampler = Sampler(backend)
job = sampler.run([compiled])
result = job.result()
print(result[0].data.meas.get_counts())

7.5 Simulator Types

  • AerSimulator: State vector (exact, small circuits)
  • qasm_simulator: Measurement sampling
  • statevector_simulator: Direct state vector
  • unitary_simulator: Unitary matrix
  • Noise models: Hardware noise modeling
from qiskit_aer.noise import NoiseModel, depolarizing_error

noise_model = NoiseModel()
error = depolarizing_error(0.01, 1)
noise_model.add_all_qubit_quantum_error(error, ['h', 'x'])

sim = AerSimulator(noise_model=noise_model)
result = sim.run(compiled).result()

8. Cirq Deep Dive

8.1 Installation

pip install cirq

8.2 Basic Example

import cirq

q0, q1 = cirq.LineQubit.range(2)

circuit = cirq.Circuit()
circuit.append([
    cirq.H(q0),
    cirq.CNOT(q0, q1),
    cirq.measure(q0, q1, key='result'),
])

print(circuit)

simulator = cirq.Simulator()
result = simulator.run(circuit, repetitions=1024)
print(result.histogram(key='result'))

8.3 Cirq vs Qiskit

  • Qiskit: IBM ecosystem, rich docs, industry standard
  • Cirq: Google/Sycamore, NISQ-friendly, experimental features
  • Qubit models: Cirq has GridQubit, LineQubit, NamedQubit
  • Gate sets: Cirq gate sets match Google hardware

9. Famous Quantum Algorithms

9.1 Deutsch-Jozsa

Problem: Is f:{0,1}n{0,1}f: \{0,1\}^n \to \{0,1\} constant or balanced?

  • Classical worst case: 2n1+12^{n-1}+1 calls
  • Quantum: 1 call

Historically the first to show quantum speedup.

def deutsch_jozsa(n, oracle):
    qc = QuantumCircuit(n+1, n)
    qc.x(n)
    qc.h(range(n+1))
    qc.compose(oracle, inplace=True)
    qc.h(range(n))
    qc.measure(range(n), range(n))
    return qc

O(N)O(\sqrt{N}) unstructured search. Quadratic speedup over classical O(N)O(N).

from qiskit.circuit.library import GroverOperator
from qiskit.algorithms import AmplificationProblem, Grover

oracle = QuantumCircuit(3)
oracle.cz(0, 2)
oracle.cz(1, 2)

problem = AmplificationProblem(oracle, is_good_state=['101', '111'])
grover = Grover(quantum_instance=simulator)
result = grover.amplify(problem)
print(f"Top measurement: {result.top_measurement}")

9.3 Shor's Factoring

Solves integer factoring in polynomial time. Threatens RSA if enough qubits exist.

Shor algorithm overview:
1. Pick random a where 1 < a < N
2. Compute gcd(a, N); if not 1, factor found
3. Quantum step: find period r of a^x mod N
4. If r even, compute gcd(a^(r/2) +/- 1, N) for factors

9.4 Quantum Fourier Transform (QFT)

Quantum version of DFT. Core to Shor, phase estimation.

def qft(n):
    qc = QuantumCircuit(n)
    for j in range(n):
        qc.h(j)
        for k in range(j+1, n):
            qc.cp(np.pi / (2 ** (k-j)), k, j)
    for i in range(n//2):
        qc.swap(i, n-1-i)
    return qc

9.5 Bernstein-Vazirani

Find a hidden bit string with a single oracle query. Generalization of Deutsch-Jozsa.

10. Variational Quantum Algorithms

10.1 VQE

Computes molecular ground-state energy. A parameterized quantum circuit (ansatz) is trained by a classical optimizer.

from qiskit.algorithms.minimum_eigensolvers import VQE
from qiskit.algorithms.optimizers import COBYLA
from qiskit.circuit.library import EfficientSU2

ansatz = EfficientSU2(num_qubits=2, reps=2)
optimizer = COBYLA(maxiter=100)

vqe = VQE(estimator, ansatz, optimizer)
result = vqe.compute_minimum_eigenvalue(hamiltonian)
print(f"Ground state energy: {result.eigenvalue}")

10.2 QAOA

Hybrid quantum-classical algorithm for combinatorial optimization (Max-Cut, TSP).

from qiskit.algorithms.minimum_eigensolvers import QAOA

qaoa = QAOA(sampler, optimizer, reps=2)
result = qaoa.compute_minimum_eigenvalue(operator=cost_operator)

11. Quantum Machine Learning (QML)

11.1 Quantum Neural Networks

from qiskit_machine_learning.neural_networks import EstimatorQNN
from qiskit.circuit.library import RealAmplitudes, ZZFeatureMap

feature_map = ZZFeatureMap(feature_dimension=2, reps=1)
ansatz = RealAmplitudes(num_qubits=2, reps=1)

qc = QuantumCircuit(2)
qc.compose(feature_map, inplace=True)
qc.compose(ansatz, inplace=True)

qnn = EstimatorQNN(
    circuit=qc,
    input_params=feature_map.parameters,
    weight_params=ansatz.parameters,
)

11.2 Quantum Kernel Methods

from qiskit_machine_learning.kernels import FidelityQuantumKernel

kernel = FidelityQuantumKernel(feature_map=feature_map)
from sklearn.svm import SVC
svc = SVC(kernel=kernel.evaluate)
svc.fit(X_train, y_train)

12. Quantum Supremacy

12.1 Google Sycamore (2019)

53-qubit Sycamore performed random circuit sampling in 200 seconds, estimated 10,000 years on IBM Summit. IBM later rebutted with efficient simulation (days), but this was the first supremacy demonstration.

12.2 USTC Jiuzhang (2020)

Gaussian Boson Sampling on photonic hardware, 200 seconds vs 2.5 billion years classical estimate.

12.3 IBM Roadmap (2025)

  • 2019 Falcon: 27 qubits
  • 2021 Eagle: 127 qubits
  • 2022 Osprey: 433 qubits
  • 2023 Condor: 1121 qubits
  • 2024 Flamingo: 1386 qubits (multi-chip)
  • 2025 Kookaburra: 4158 qubits (target)

12.4 Useful Quantum Advantage

Supremacy proves "useless" problems. Real-world useful quantum advantage is still unclaimed - the main goal of the NISQ era.

13. Quantum Hardware Platforms

13.1 Platform Comparison

PlatformCompaniesQubitsGate speedConnectivityTemperature
SuperconductingIBM, Google, Rigetti1000+nsLimited10-20 mK
Trapped IonIonQ, Quantinuum30-100usAll-to-allIon trap
PhotonicXanadu, PsiQuantumHundredspsMediumRoom
Neutral AtomsQuEra, PasqalHundredsusReconfigurablemK
TopologicalMicrosoftTBD---

13.2 Error Rates

MetricMeaning
T1Relaxation time
T2Dephasing time
Single-qubit error~0.1%
Two-qubit error~1%
Readout error1-5%
Quantum Volume (IBM)Holistic quality

14. NISQ Era and Error Correction

14.1 NISQ

John Preskill coined NISQ for 50-1000 qubit noisy machines. Characteristics:

  • No full error correction
  • Limited circuit depth
  • Hybrid algorithms (VQE, QAOA) popular
  • Exploring useful advantage

14.2 Quantum Error Correction

Unlike classical, quantum must correct continuous errors (X, Z, and combinations) without cloning. Shor 9-qubit code, Surface code, LDPC-based.

  • Surface Code: 2D lattice, ~1% threshold, most promising
  • Color Code: Surface Code extension
  • LDPC: Active research area

14.3 Fault-Tolerant Quantum Computing

Full error correction with fault-tolerant operations. Useful Shor (RSA-2048) estimated to need millions of physical qubits.

15. Quantum Advantage Applications

15.1 Chemistry and Drugs

  • Molecular energy calculation
  • Reaction mechanism simulation
  • Drug screening
  • Enzyme modeling (FeMoco)

15.2 Optimization

  • Logistics route optimization
  • Portfolio optimization
  • Graph problems (Max-Cut)
  • Manufacturing scheduling

15.3 Finance

  • Monte Carlo acceleration
  • Option pricing
  • Risk analysis
  • Fraud detection (QML)

15.4 Materials

  • Superconductor design
  • Battery chemistry
  • Catalyst discovery

16. Post-Quantum Cryptography (PQC)

16.1 Why

Shor's algorithm can break RSA, ECC, DH in polynomial time. Once large enough quantum computers exist, TLS, VPN, and signatures collapse. "Harvest Now, Decrypt Later" attacks are happening today.

16.2 NIST PQC Standards

In 2024 NIST published the first PQC standards:

  • FIPS 203 (ML-KEM): CRYSTALS-Kyber based key encapsulation
  • FIPS 204 (ML-DSA): CRYSTALS-Dilithium based signatures
  • FIPS 205 (SLH-DSA): SPHINCS+ hash-based signatures

16.3 Algorithm Families

  • Lattice: Kyber, Dilithium, Falcon - main
  • Hash: SPHINCS+ - stateless
  • Code: Classic McEliece - conservative
  • Multivariate: Rainbow (broken)
  • Isogeny: SIDH (broken 2022)

16.4 Migration Strategy

  • Crypto Agility: Design for algorithm swap
  • Hybrid modes: Combine classical + PQC (TLS 1.3 extension)
  • Inventory: Map current crypto usage
  • Timeline: 2030-2035 PQC migration goal

17. Hands-on: Bell State and Teleportation

17.1 Bell State

from qiskit import QuantumCircuit

bell = QuantumCircuit(2, 2)
bell.h(0)
bell.cx(0, 1)
bell.measure([0, 1], [0, 1])

17.2 Quantum Teleportation

Transfer Alice's unknown state ψ|\psi\rangle to Bob using entanglement + 2 classical bits.

def teleportation():
    qc = QuantumCircuit(3, 3)

    # Alice qubit 0 to some arbitrary state
    qc.h(0)
    qc.rz(0.7, 0)
    qc.barrier()

    # Bell pair (qubits 1, 2)
    qc.h(1)
    qc.cx(1, 2)
    qc.barrier()

    # Alice measurement prep
    qc.cx(0, 1)
    qc.h(0)
    qc.measure([0, 1], [0, 1])
    qc.barrier()

    # Bob conditional gates
    qc.cx(1, 2)
    qc.cz(0, 2)
    qc.measure(2, 2)
    return qc

18. Quiz

Q1. How does the No-Cloning Theorem affect quantum error correction?

A: Unlike classical computing where you can copy a bit three times and majority vote, quantum information cannot be cloned. So quantum error correction uses complex codes (Shor, Surface, LDPC) that spread information through entanglement. This is why one logical qubit requires thousands of physical qubits.

Q2. How does Shor's algorithm threaten RSA?

A: Shor's algorithm factors integers in polynomial time. RSA security relies on the hardness of integer factoring, so a sufficiently large fault-tolerant quantum computer could break RSA-2048. That is why migration to Post-Quantum cryptography is urgent.

Q3. Is Grover's speedup exponential or quadratic?

A: Quadratic. Searching NN items takes O(N)O(N) classically and O(N)O(\sqrt{N}) with Grover. Because it is not exponential, Grover does not solve all NP-complete problems in polynomial time.

Q4. Why are VQE and QAOA useful in the NISQ era?

A: Both are hybrid quantum-classical algorithms using shallow circuits, so they are resilient to noise. The quantum part computes expectation values, and a classical optimizer tunes parameters. They can produce practical results without full fault tolerance.

Q5. What is the "Harvest Now, Decrypt Later" attack in PQC?

A: Attackers record encrypted traffic today and decrypt it later when large quantum computers exist. Data needing long-term confidentiality (state secrets, medical records) must migrate to PQC now.

19. References

  1. Qiskit Documentation - qiskit.org
  2. Cirq Documentation - quantumai.google/cirq
  3. IBM Quantum Learning - learning.quantum.ibm.com
  4. Nielsen and Chuang, Quantum Computation and Quantum Information
  5. Preskill, Quantum Computing in the NISQ era and beyond (2018)
  6. Arute et al., Quantum Supremacy, Nature 2019
  7. NIST PQC Project - csrc.nist.gov/projects/post-quantum-cryptography
  8. Google Quantum AI - quantumai.google
  9. Shor, Algorithms for quantum computation (1994)
  10. Grover, A fast quantum mechanical algorithm (1996)
  11. Microsoft Quantum Development Kit
  12. QuTiP Library - qutip.org
  13. Quantum Algorithm Zoo - quantumalgorithmzoo.org

Conclusion

Quantum computing is no longer the exclusive domain of physicists. Open-source SDKs like Qiskit and Cirq let software developers run quantum circuits in Jupyter notebooks and access real quantum hardware via IBM Quantum cloud. The NISQ era is imperfect, but hybrid approaches like VQE, QAOA, and quantum ML are edging toward the first useful advantages. Simultaneously, migrating to Post-Quantum cryptography is mandatory for all security infrastructure. The quantum age has begun, and opportunities await developers who prepare.