테마 선택

📚 지식 노트

AI·하드웨어·주변기기·게임·컴퓨터 시스템·이론 컴퓨터 과학·수학·개발과 운영·보안·응용 분야에 대해 알아 두면 좋은 내용을 정리한 노트다. 위에서 분야를 고르고 아래에서 노트를 고른다.

양자 컴퓨팅

큐비트 몇 개짜리 상태 벡터를 직접 곱해 가며 양자 컴퓨팅을 따라간다. 진폭과 측정, 게이트와 회로, 얽힘과 간섭을 먼저 잡고, 번스타인–바지라니·그로버·쇼어가 왜 빠른지, 오류 정정이 왜 꼭 필요한지, 지금 기기가 어디쯤 와 있는지를 차례로 본다.

목차 (15)
  1. 비트와 큐비트
  2. 중첩과 측정
  3. 게이트: 상태에 곱하는 행렬
  4. 회로: H와 CNOT으로 벨 상태 만들기
  5. 얽힘
  6. 간섭: H를 두 번 걸면 제자리
  7. 작은 알고리즘: 번스타인–바지라니
  8. 그로버 탐색: √N번이면 된다
  9. 쇼어 알고리즘과 RSA
  10. 양자 오류 정정
  11. 하드웨어 방식
  12. NISQ와 '양자 우위' 논쟁
  13. 직접 해 보기: Qiskit과 Cirq 시뮬레이터
  14. 흔한 오해
  15. 핵심 자료

게이트는 행렬, 상태는 벡터라서 이 노트의 계산은 거의 다 행렬 곱이다. 행렬 곱과 고윳값이 낯설다면 수학 › 선형대수 노트를 먼저 보면 좋다. 양자 컴퓨터가 어떤 문제를 효율적으로 푸는지는 복잡도 클래스 BQP로 말하는데, P·NP와의 관계는 계산 이론 노트에서 다룬다. 그림 속 수는 모두 이 페이지가 빌드될 때 같은 함수로 계산한 값이다.

비트와 큐비트

고전 비트는 언제나 0 아니면 1이다. 큐비트의 상태는 두 기저 |0⟩과 |1⟩의 선형 결합 α|0⟩ + β|1⟩이고, α와 β는 복소수 진폭(amplitude)이며 |α|² + |β|² = 1을 지킨다. 전체에 같은 위상을 곱한 상태는 물리적으로 구별되지 않으므로, 큐비트 하나는 결국 각도 두 개 θ와 φ로 적을 수 있고 이것이 구 위의 한 점이 된다. 이 구를 블로흐 구(Bloch sphere)라 한다.

블로흐 구 그림. 북극이 |0⟩, 남극이 |1⟩이고, 각도 θ = 60°, φ = 45°인 상태 |ψ⟩가 구 위의 점으로 표시된다. 측정하면 0이 75%, 1이 25% 확률로 나온다x (|+⟩)y|0⟩|1⟩|ψ⟩θ = 60°, φ = 45°인 상태|ψ⟩ = cos(θ/2)|0⟩+ e^(iφ)·sin(θ/2)|1⟩= 0.866|0⟩+ (0.354+0.354i)|1⟩재면 0이 75%, 1이 25%θ는 북극에서 내려온 각,φ는 적도를 도는 위상이다.적도 위의 점은 모두 50 : 50이다.
블로흐 구. 북극이 |0⟩, 남극이 |1⟩이고, 적도 위의 점은 모두 0과 1이 반반인 중첩이다. 위도가 측정 확률을, 경도(위상 φ)가 간섭에 쓰일 정보를 정한다. 오른쪽 수는 그림의 점을 진폭으로 바꾼 값이다.

흔히 "큐비트는 0과 1을 동시에 가진다"고 말하지만 정확하지 않다. 큐비트 하나를 재면 비트 하나만 나오고, n큐비트에서 한 번에 꺼낼 수 있는 고전 정보도 n비트다(홀레보 한계). 다른 점은 n큐비트의 상태를 적는 데 진폭이 2n개 필요하다는 것, 그리고 그 진폭들이 서로 더해지고 지워질 수 있다는 것이다. 양자 알고리즘은 이 간섭을 설계해 원하는 답의 진폭만 키운다.

중첩과 측정

측정 결과의 확률은 진폭 크기의 제곱이다(본 규칙, Born rule). 진폭이 0.6과 0.8i라면 0이 나올 확률은 0.6² = 0.36, 1이 나올 확률은 |0.8i|² = 0.64다. 허수 단위 i는 확률에는 드러나지 않지만, 다른 경로와 만날 때 더해지는 방향을 바꿔 결과를 달리 만든다.

진폭에서 확률로. 상태 0.6|0⟩ + 0.8i|1⟩을 측정하면 0이 36%, 1이 64% 확률로 나오고, 1000번 재면 평균 360번과 640번이다상태 0.6|0⟩ + 0.8i|1⟩ (진폭은 복소수)측정 확률 = 진폭 크기의 제곱|0⟩0.6|0.6|² = 0.3636%1000번 재면 평균 360번|1⟩0.8i|0.8i|² = 0.6464%1000번 재면 평균 640번한 번 재면 0이나 1 하나만 나오고, 상태는 그 결과로 바뀐다. 진폭 자체는 여러 번 재어 통계로만 짐작한다.
진폭에서 확률로. 복소 진폭의 크기를 제곱해 확률을 얻는다. 한 번 재면 결과 하나만 나오고 상태는 그 결과로 바뀌므로, 진폭은 같은 회로를 여러 번 돌린 통계로만 짐작한다.

측정은 되돌릴 수 없다. 재는 순간 상태는 나온 결과의 기저 상태가 되고, 원래 진폭은 사라진다. 그래서 양자 회로는 계산 내내 재지 않고 진폭을 다듬다가 마지막에 한 번 잰다. 회로 밖 환경이 큐비트를 "재 버리는" 것이 결어긋남(decoherence)이고, 이것이 양자 하드웨어가 싸우는 노이즈의 정체다.

게이트: 상태에 곱하는 행렬

양자 게이트는 상태 벡터에 곱하는 유니터리 행렬이다. 유니터리라서 확률의 합 1을 지키고, 거꾸로 되돌릴 수 있다. X는 0과 1을 바꾸는 NOT, Z는 |1⟩의 부호만 뒤집고, H(아다마르)는 |0⟩을 (|0⟩ + |1⟩)/√2인 |+⟩로 보낸다. 두 큐비트 게이트 CNOT은 제어 큐비트가 1일 때만 표적 큐비트를 뒤집는다.

기본 양자 게이트의 행렬. X는 0과 1을 바꾸고, H는 1/√2 곱하기 1, 1, 1, −1 행렬로 고른 중첩을 만들고, Z는 |1⟩의 부호를 뒤집는다. CNOT은 제어 큐비트가 1일 때 표적 큐비트를 뒤집는 4×4 행렬이다X0110|0⟩ ↔ |1⟩뒤집기(NOT)H1/√2111−1|0⟩ → |+⟩고른 중첩Z100−1|1⟩ → −|1⟩위상 뒤집기CNOT1000010000010010제어가 1이면 표적을 뒤집는다게이트는 모두 유니터리 행렬이라 길이(확률의 합 1)를 지키고, 거꾸로 되돌릴 수 있다.
기본 게이트의 행렬. 2×2 행렬은 큐비트 하나에, 4×4 행렬은 두 큐비트에 작용한다. CNOT의 아래 두 줄(강조)이 제어가 1인 칸에서 표적을 바꾸는 부분이다.

n큐비트 중 하나에 게이트를 거는 것은 2×2 행렬과 나머지 큐비트의 항등 행렬의 텐서곱, 곧 2n×2n 행렬을 곱하는 것과 같다. 시뮬레이터는 이 큰 행렬을 만들지 않고, 해당 큐비트 비트만 다른 칸 두 개씩 짝지어 2×2를 곱한다. 한 큐비트 게이트 몇 개와 CNOT만 있으면 어떤 유니터리든 원하는 정밀도로 근사할 수 있다(보편 게이트 집합).

유니터리라는 조건에서 곧바로 나오는 제약이 복제 불가 정리(no-cloning theorem)다. 1982년 Wootters·Zurek과 Dieks가 각각 증명했다. 모르는 상태 |φ⟩를 받아 |φ⟩|φ⟩로 복사하는 게이트 U가 있다고 하자. 두 상태 φ, ψ를 모두 복사할 수 있다면 유니터리는 내적을 지키므로 |⟨φ|ψ⟩|² = |⟨φ|ψ⟩|이어야 하고, 이는 두 상태가 같거나(내적의 크기 1) 직교할 때(0)만 성립한다. 그러니 아무 상태나 복사하는 장치는 없다. 고전 비트처럼 백업을 떠 둘 수 없어 오류 정정이 어려워지고(아래 오류 정정 절), 얽힘으로 빛보다 빠른 신호를 보낼 수 없다는 결론과도 맞물린다.

회로: H와 CNOT으로 벨 상태 만들기

양자 회로는 가로줄 하나가 큐비트 하나이고, 왼쪽에서 오른쪽으로 시간이 흐른다. 가장 작은 흥미로운 회로는 |00⟩에서 첫 큐비트에 H, 이어 CNOT을 거는 것이다. 단계마다 상태 벡터가 어떻게 바뀌는지 넘겨 보면 된다.

벨 상태 회로 단계 그림. 시작 |00⟩에서 H를 걸면 |00⟩과 |10⟩이 반씩, CNOT을 걸면 |00⟩과 |11⟩이 반씩이 된다q0 |0⟩q1 |0⟩H지금 상태|00⟩큐비트별로 적을 수 있다0.707|00⟩ + 0.707|10⟩큐비트별로 적을 수 있다0.707|00⟩ + 0.707|11⟩따로 적을 수 없다(얽힘)측정 확률100%0%0%0%50%0%50%0%50%0%0%50%|00⟩|01⟩|10⟩|11⟩
1 / 3

두 큐비트가 모두 0이다: |00⟩

벨 상태를 만드는 회로. 첫 큐비트에 H를 걸어 중첩을 만들고, 그 큐비트를 제어로 CNOT을 걸면 두 큐비트가 (|00⟩ + |11⟩)/√2로 얽힌다. 아래 막대는 단계마다 계산한 측정 확률이다.

H 뒤의 상태 (|00⟩ + |10⟩)/√2는 (|0⟩ + |1⟩)/√2 ⊗ |0⟩으로 큐비트별로 나뉜다. CNOT 뒤의 (|00⟩ + |11⟩)/√2는 어떤 두 한 큐비트 상태의 곱으로도 적을 수 없다. 이렇게 나뉘지 않는 상태를 얽힌(entangled) 상태라 하고, 이 특정한 상태를 벨 상태라 한다.

얽힘

벨 상태의 두 큐비트를 재면 결과는 00 아니면 11이다. 각자만 보면 50 : 50의 무작위지만, 둘을 맞춰 보면 늘 같다. 같은 50 : 50이라도 |+⟩|+⟩ 같은 곱 상태는 네 결과가 고르게 나와 서로 상관이 없다. 두 큐비트 진폭 a, b, c, d를 2×2로 늘어놓았을 때 행렬식 ad − bc가 0이면 곱 상태로 나뉘고, 0이 아니면 얽혀 있다.

결합 측정 확률표 두 개. 벨 상태는 00과 11이 각각 50%이고 01과 10은 0%이다. 곱 상태 |+⟩|+⟩은 네 결과가 모두 25%다벨 상태 (|00⟩ + |11⟩)/√2q0\q101050%0%10%50%두 큐비트로 나뉘지 않는다한쪽 결과를 알면 다른 쪽이 정해진다곱 상태 |+⟩|+⟩q0\q101025%25%125%25%두 큐비트로 나뉜다(곱 상태)한쪽 결과가 다른 쪽에 아무 정보도 없다상관만 생길 뿐 한쪽을 재서 다른 쪽에 신호를 보낼 수는 없다. 각자 보면 둘 다 50 : 50이다.
결합 측정 확률표. 벨 상태는 대각선(00, 11)에만 확률이 있고, 곱 상태는 네 칸이 고르다. 행렬식 판정도 그림과 같은 함수로 계산했다.

얽힘은 신호를 빛보다 빨리 보내는 수단이 아니다. 한쪽에서 무엇을 하든 다른 쪽의 결과 분포는 50 : 50 그대로이고, 상관은 두 결과를 고전 통신으로 맞춰 볼 때에만 드러난다. 그래도 얽힘은 순간 이동(teleportation) 프로토콜, 오류 정정의 신드롬 측정, 그리고 거의 모든 양자 속도 향상의 재료다.

간섭: H를 두 번 걸면 제자리

H를 한 번 걸면 |0⟩이 반반의 중첩이 된다. 한 번 더 걸면 다시 반반으로 섞일 것 같지만, 실제로는 확률 100%로 |0⟩에 돌아온다. 진폭이 경로마다 곱해져 더해지기 때문이다. |1⟩로 가는 두 경로 중 하나는 H 행렬의 −1/√2 칸을 지나 부호가 뒤집히고, 그래서 +½과 −½이 정확히 지워진다.

간섭 경로 그림. |0⟩에 H를 걸면 |0⟩과 |1⟩로 갈라지고, 다시 H를 걸면 |0⟩로 가는 두 경로는 +½ + ½ = 1로 더해지고 |1⟩로 가는 두 경로는 +½ − ½ = 0으로 지워진다시작첫 H둘째 H|0⟩|0⟩진폭 +1/√2|1⟩진폭 +1/√2|0⟩|1⟩+½ +½ = 1+½ −½ = 0빨간 선은 H의 −1/√2 칸(|1⟩ → |1⟩)이다. 부호가 다른 경로끼리는 지워진다.
간섭 경로. 시작 |0⟩에서 끝 |0⟩·|1⟩까지 가는 경로는 각각 두 개다. 경로마다 진폭을 곱해 더하면 |0⟩은 보강되고 |1⟩은 상쇄된다. 확률(제곱)이 아니라 진폭을 더한다는 점이 고전 확률과 다르다.

고전적인 동전 던지기를 두 번 하면 여전히 반반이다. 확률은 음수가 없어 더할수록 섞이기만 한다. 양자 알고리즘의 요령은 틀린 답으로 가는 경로들이 서로 지워지고 맞는 답으로 가는 경로들이 서로 보강되도록 게이트를 배치하는 것이다. 다음 절들의 알고리즘은 모두 이 한 가지 생각의 변주다.

작은 알고리즘: 번스타인–바지라니

비밀 비트열 s가 있고, x를 넣으면 s·x (mod 2), 곧 s와 x가 함께 1인 자리 수의 홀짝을 알려 주는 함수(오라클)가 있다. 고전적으로는 x = 100, 010, 001처럼 한 자리씩 물어 n번 불러야 s를 안다. 양자 회로는 모든 x의 중첩을 한꺼번에 넣고, 오라클이 그 결과를 진폭의 부호로 새기게 한 뒤, H로 간섭시켜 한 번에 s를 읽는다.

번스타인–바지라니 회로 단계 그림. 세 큐비트에 H를 걸어 8칸에 고르게 퍼뜨리고, 오라클이 일부 칸의 부호를 뒤집고, 다시 H를 걸면 |101⟩ 한 칸만 진폭 1이 된다q0 |0⟩HHq1 |0⟩HHq2 |0⟩HH오라클(−1)^(s·x)측정비밀 s = 1011. 시작2. H를 모두에3. 오라클 한 번4. 다시 H, 측정결과 |101⟩, 확률 100%8칸의 진폭(아래쪽이 음수)|000⟩|001⟩|010⟩|011⟩|100⟩|101⟩|110⟩|111⟩
1 / 4

모든 큐비트가 0: |000⟩

번스타인–바지라니 회로(n = 3). 함수 f(x) = s·x (mod 2)의 비밀 비트열 s를, 고전적으로는 3번 물어야 하지만 양자 회로는 오라클을 한 번만 불러 알아낸다. 막대는 단계마다 계산한 8칸 진폭이고, 아래로 뻗은 막대가 음수다.

오라클 직후에는 8칸 모두 크기가 같아서 재도 아무것도 모른다. 정보는 부호 무늬에만 있다. 마지막 H가 그 무늬를 한 칸으로 모으는 것이 간섭이다. 같은 구조로 함수가 상수인지 균형인지를 한 번에 가리는 도이치–조사 알고리즘도 있다. 둘 다 실용 문제는 아니지만, 쇼어 알고리즘의 "중첩 → 오라클 → 푸리에 변환 → 측정" 뼈대를 가장 작은 크기로 보여 준다.

그로버 탐색: √N번이면 된다

정렬되지 않은 N개 중 조건을 만족하는 하나를 찾는다. 고전적으로는 평균 (N+1)/2번 확인해야 한다. 그로버 알고리즘은 고른 중첩에서 시작해 "표시된 칸의 부호 뒤집기(오라클) → 평균에 대해 뒤집기(확산)"를 약 π/4·√N번 되풀이한다. 한 번 돌 때마다 표시된 칸의 진폭이 조금씩 커지는데, 이것을 진폭 증폭(amplitude amplification)이라 한다.

그로버 탐색의 진폭 증폭. 8개 중 하나를 찾을 때 표시된 칸을 잴 확률이 반복 0번 12.5%, 1번 78.1%, 2번 94.5%, 3번 33.0%로 바뀐다반복 0번찾을 확률12.5%반복 1번찾을 확률78.1%반복 2번찾을 확률94.5%반복 3번찾을 확률33.0%
N = 8에서의 진폭 증폭. 표시된 칸(진한 막대)의 진폭이 반복마다 커져 2번 뒤 찾을 확률이 94.5%가 된다. 한 번 더 돌리면 지나쳐 33.0%로 떨어지므로, 반복 횟수를 미리 계산해 멈춰야 한다.

N = 100만이면 고전 탐색은 평균 500,001번, 그로버는 785번이다. 극적으로 보이지만 제곱근 속도 향상일 뿐이라 지수적이지 않고, 오라클 한 번이 고전 확인 한 번보다 훨씬 비싼 실제 기기에서는 이득이 크게 줄어든다. 구조 없는 탐색에서는 √N보다 빠를 수 없다는 것도 증명되어 있어서, 양자 컴퓨터가 NP-완전 문제를 효율적으로 푼다고 기대할 근거는 없다. 대칭키 암호에 미치는 영향(키 길이를 두 배로)은 아래 쇼어 절의 링크에 정리되어 있다.

쇼어 알고리즘과 RSA

쇼어 알고리즘은 소인수분해를 주기 찾기로 바꾼다. N과 서로소인 a를 골라 ax mod N이 되풀이되는 주기 r을 찾으면, r이 짝수일 때 gcd(ar/2 ± 1, N)이 N의 약수를 준다. 주기를 찾는 부분만 양자 회로(양자 푸리에 변환)가 맡고, 나머지는 고전 계산이다.

7의 x제곱을 15로 나눈 나머지 그래프. 1, 7, 4, 13이 주기 4로 되풀이되고, 7²을 15로 나눈 나머지 4에서 gcd(3, 15) = 3과 gcd(5, 15) = 5를 얻어 15 = 3 × 5가 된다14713x=0x=4x=87^x mod 15지수 x →주기 r = 47^2 mod 15 = 4gcd(3, 15) = 3gcd(5, 15) = 515 = 3 × 5주기 찾기만 양자,나머지는 고전 계산이다.
쇼어 알고리즘이 찾는 것. 7^x mod 15는 주기 4로 되풀이되고, 7^2 mod 15 = 4에서 15 = 3 × 5이 나온다. 이 작은 예는 손으로도 되지만, 2048비트 수의 주기는 고전적으로 찾을 방법이 알려져 있지 않다.

주기 찾기는 함수값이 r마다 되풀이된다는 "부호 무늬"를 양자 푸리에 변환으로 간섭시켜 r의 배수 근처에 진폭을 모으는 일이다. 번스타인–바지라니의 마지막 H가 하던 일을 더 큰 규모로 하는 셈이다. RSA·타원 곡선 암호가 이 때문에 어떻게 깨지는지, 그 대비로 무엇이 표준이 되었는지는 암호학 노트의 양자내성 절에서 다룬다. 다만 필요한 기계의 크기는 짚어 둔다. Gidney(2025)는 게이트 오류율 0.1%를 가정할 때 RSA-2048을 일주일 안에 인수분해하는 데 노이즈 있는 큐비트 100만 개 미만이면 된다고 추정했다. 오늘의 기기는 그보다 몇 자릿수 작다.

양자 오류 정정

고전 컴퓨터는 비트를 복사해 다수결로 오류를 고친다. 큐비트는 복제 불가 정리 때문에 복사할 수 없고, 재면 상태가 무너진다. 해법은 정보를 여러 큐비트의 얽힘에 나눠 담고 데이터는 재지 않고 큐비트 사이의 패리티만 재는 것이다. 가장 작은 예가 3큐비트 비트 뒤집기 부호다. α|0⟩ + β|1⟩을 α|000⟩ + β|111⟩으로 늘려 두고, 이웃끼리의 패리티 두 개(신드롬)를 재면 α와 β는 그대로 둔 채 어느 큐비트가 뒤집혔는지만 알 수 있다.

비트 뒤집기 부호의 신드롬 표. 오류가 없으면 신드롬 00, q0이 뒤집히면 10, q1이면 11, q2면 01이 나와 뒤집힌 큐비트를 찾는다. 물리 오류 1%면 논리 오류는 약 0.03%다상황세 큐비트신드롬고치기(q0⊕q1, q1⊕q2)오류 없음00000그대로 둔다q0이 뒤집힘10010q0을 다시 뒤집는다q1이 뒤집힘01011q1을 다시 뒤집는다q2가 뒤집힘00101q2를 다시 뒤집는다물리 오류 1% → 둘 이상 뒤집혀야 실패 → 논리 오류 약 0.03%표면 부호(거리 d)의 큐비트 수d=3: 9+8=17d=5: 25+24=49d=7: 49+48=97
3큐비트 비트 뒤집기 부호의 신드롬 표와 표면 부호의 크기. 신드롬은 '어디가 틀렸는지'만 알려 주고 '무엇이 저장됐는지'는 알려 주지 않는다. 이 부호는 비트 뒤집기만 막으므로 실제로는 위상 뒤집기까지 함께 잡는 부호가 필요하다.

물리 오류율이 1%라면 둘 이상이 동시에 뒤집힐 때만 실패하므로 논리 오류율은 약 0.03%로 준다. 이처럼 물리 오류가 어떤 문턱(threshold) 아래에 있어야 부호를 키울수록 이득이 난다. 실용 후보인 표면 부호(surface code)는 2차원 격자에 데이터 큐비트와 측정 큐비트를 번갈아 놓고 이웃 넷의 패리티만 반복해 잰다. 회전 표면 부호의 거리 d에는 데이터 d²개와 측정 d² − 1개가 들어, 거리 7이면 97개로 논리 큐비트 하나를 만든다.

2024년 구글은 문턱 아래 표면 부호 실험에서 거리 7 부호(큐비트 101개)의 논리 오류를 사이클당 약 0.143%로 보였고, 거리를 2 늘릴 때마다 오류가 Λ ≈ 2.14배 준다고 보고했다. 같은 비율이 이어진다고 가정하면 거리 13에서 약 0.015%, 큐비트 337개쯤이다. 쇼어 알고리즘에 필요한 오류율은 이보다 훨씬 낮아서, 실용 규모에서는 논리 큐비트 하나에 지금 실험보다 훨씬 많은 물리 큐비트가 들 것으로 본다. "큐비트 몇 개짜리 기기"라는 말을 들으면 물리 큐비트인지 논리 큐비트인지부터 확인해야 하는 이유다.

하드웨어 방식

큐비트는 두 준위를 가진 양자계라면 무엇으로든 만들 수 있다. 지금 경쟁하는 대표 방식은 넷이다. 초전도 회로는 극저온의 조셉슨 접합 회로를 인공 원자로 쓰고, 이온 트랩은 전자기장에 가둔 이온의 에너지 준위를, 중성 원자는 레이저 광학 집게로 늘어놓은 원자를, 광자 방식은 빛의 편광·경로·모드를 쓴다.

큐비트 하드웨어 네 방식 비교표. 초전도 회로, 이온 트랩, 중성 원자, 광자가 각각 무엇을 큐비트로 쓰는지와 강점, 약점을 적었다방식큐비트로 쓰는 것강점약점초전도 회로조셉슨 접합 회로게이트가 빠르다극저온, 짧은 결맞음이온 트랩가둔 이온의 준위충실도, 전체 연결게이트가 느리다중성 원자광학 집게 속 원자많은 수, 재배치원자 손실, 속도광자빛의 편광·경로상온 전송, 통신광자끼리 상호작용강점·약점은 흔히 꼽히는 경향이다. 같은 방식 안에서도 기기마다 크게 다르다.
큐비트를 만드는 네 방식. 강점과 약점은 흔히 꼽히는 경향이며, 오류율·결맞음 시간 같은 수치는 기기와 세대마다 크게 달라 싣지 않았다.

직접 확인한 이정표만 적는다. 2019년 10월 구글은 초전도 기기 Sycamore로 무작위 회로 샘플링을 시연했다(발표). 2020년 12월 Zhong 등의 연구진은 광자 기기로 가우스 보손 샘플링을 보고했다(arXiv:2012.01625). 2023년 12월 Bluvstein 등의 연구진은 중성 원자 최대 280개로 논리 큐비트 최대 48개의 회로를 돌렸다(arXiv:2312.03982). 2024년 12월 구글은 105큐비트 Willow와 문턱 아래 오류 정정 결과를 발표했다(발표). 이온 트랩은 충실도 높은 게이트로 꾸준히 앞선 결과를 내 왔지만, 여기서는 날짜를 확인한 자료가 없어 경향만 적는다.

NISQ와 '양자 우위' 논쟁

Preskill(2018)은 오류 정정 없이 큐비트 50~100개쯤을 쓰는 지금의 기기를 NISQ(Noisy Intermediate-Scale Quantum)라 불렀다. 노이즈 때문에 회로를 깊게 돌릴 수 없어서, 유용한 문제보다는 "고전 컴퓨터로 흉내 내기 어려운 무언가"를 보이는 시연이 먼저 나왔다. 이것이 양자 우위(quantum supremacy, quantum advantage) 주장이다.

양자 우위 주장의 시간 비교를 로그 눈금 막대로 그렸다. 2019년 Sycamore는 200초, 구글은 고전 계산이 약 1만 년이라 추정했고 IBM은 약 2.5일이면 된다고 반론했다. 2024년 Willow는 5분 미만, 구글 추정은 약 10의 25제곱 년이다2019년 무작위 회로 샘플링(53큐비트)2024년 Willow(105큐비트)1년Sycamore 실측: 200초IBM 반론 추정: 약 2.5일구글의 고전 추정: 약 1만 년Willow 실측: 5분 미만구글의 고전 추정: 약 10²⁵년1초10^10초10^20초10^30초눈금 한 칸이 10배다. 진한 막대는 실측, 옅은 막대는 고전 계산 추정이다.
'양자 우위' 주장의 시간 비교(로그 눈금). 2019년 구글은 200초 걸린 일을 고전 슈퍼컴퓨터가 하려면 약 1만 년이 걸린다고 추정했고, IBM은 디스크 저장 공간을 쓰면 약 2.5일이면 된다고 반론했다. 2024년 Willow 발표의 추정은 10²⁵년이다.

논쟁의 핵심은 "고전 쪽의 최선"이 움직이는 표적이라는 점이다. 2019년 IBM의 반론과 시뮬레이션 논문처럼, 더 나은 고전 알고리즘이 나오면 격차가 크게 줄곤 한다. 또 무작위 회로 샘플링은 그 자체로 쓸모 있는 계산이 아니다. 그래서 오늘의 질문은 "고전보다 빠른가"보다 "쓸모 있는 문제에서, 오류 정정된 논리 큐비트로, 고전 최선보다 나은가"로 옮겨 가고 있다. 양자 화학·재료 시뮬레이션이 그 첫 후보로 자주 꼽히지만, 아직 그런 결과가 합의된 단계는 아니다.

직접 해 보기: Qiskit과 Cirq 시뮬레이터

실제 기기 없이도 노트북에서 회로를 시뮬레이션할 수 있다. IBM의 Qiskit은 pip install qiskit, 노이즈 모델까지 갖춘 시뮬레이터 Qiskit Aer는 pip install qiskit-aer로 설치한다. 구글의 Cirq는 python -m pip install cirq로 설치하고(설치 안내), 파동 함수와 밀도 행렬 시뮬레이터가 들어 있다. 이 노트의 벨 상태 회로를 그대로 옮겨 적고 1,000번쯤 돌려 00과 11만 반씩 나오는지 확인하는 것이 좋은 첫 연습이다.

상태 벡터를 담는 메모리. 진폭 하나에 16바이트로 10큐비트 16 KiB, 20큐비트 16 MiB, 30큐비트 16 GiB, 40큐비트 16 TiB, 50큐비트 16 PiB가 든다진폭 2^n개 × 16바이트(복소수 배정밀도), 막대는 로그 눈금10큐비트16 KiB20큐비트16 MiB30큐비트16 GiB40큐비트16 TiB50큐비트16 PiB메모리가 16 GiB면 30큐비트 언저리가 한계다. 큐비트 하나마다 두 배씩 는다.
상태 벡터 시뮬레이터에 드는 메모리. 진폭 하나를 16바이트로 담으면 큐비트가 하나 늘 때마다 두 배가 된다. 막대 길이는 큐비트 수에 비례하지만 실제 크기는 지수적으로 커진다.

상태 벡터를 통째로 들고 다니는 시뮬레이터는 30큐비트에 16 GiB, 50큐비트에 16 PiB가 든다. 이 벽이 곧 "양자 컴퓨터가 고전 컴퓨터로 흉내 내기 어려운 이유"를 손으로 느끼게 해 준다. 얽힘이 적은 회로는 텐서 네트워크처럼 더 영리한 방법으로 훨씬 많은 큐비트를 흉내 낼 수 있는데, 양자 우위 논쟁의 고전 쪽 반론이 대개 이런 기법에서 나온다. 노이즈 모델을 켜고 같은 회로를 돌려 보면 결과가 00·11 말고도 조금씩 새는 것을 볼 수 있다. NISQ 기기가 겪는 일이 바로 그것이다.

흔한 오해

이 노트 곳곳에서 바로잡은 오해를 모으면 이렇다. 큐비트가 0과 1을 "동시에 가진다"는 설명(비트와 큐비트 절), 얽힘으로 신호를 빛보다 빨리 보낸다는 생각(얽힘 절), 양자 컴퓨터가 NP-완전 문제를 효율적으로 푼다는 기대(그로버 절), 큐비트 수만 보면 된다는 생각(오류 정정 절의 물리·논리 큐비트)이다. 여기에 두 가지를 더한다.

  • "양자 컴퓨터가 고전 컴퓨터를 대체한다": 지수적인 속도 향상이 알려진 것은 소인수분해의 주기 찾기처럼 특별한 구조가 있는 문제다. 구조 없는 탐색은 제곱근만큼만 빨라지고, 결과도 측정 한 번에 큐비트 수만큼의 비트만 꺼낼 수 있다. 양자 기기는 고전 컴퓨터가 붙어 제어하는 가속기로 보는 편이 맞다.
  • "양자 암호와 양자내성 암호는 같은 말이다": 양자 키 분배(QKD)는 양자 상태를 실은 빛으로 열쇠를 나누는 물리 장치다. 전용 광섬유나 가시선 경로와 인증된 고전 통신 채널이 필요하고, 거리가 늘면 열쇠를 만드는 속도가 지수로 준다(Wikipedia의 Quantum key distribution). 양자내성 암호(PQC)는 지금의 컴퓨터에서 도는 새 수학 알고리즘으로, NIST가 2024년 8월 ML-KEM(FIPS 203), ML-DSA(FIPS 204), SLH-DSA(FIPS 205)를 표준으로 냈다(NIST PQC 프로젝트). 쇼어 알고리즘에 대비하는 소프트웨어 이야기는 암호학 노트에 있다.

핵심 자료

요지는 직접 정리한 한 줄이다. 양자 컴퓨터가 암호에 주는 영향은 암호학 노트, 복잡도 클래스 BQP는 계산 이론 노트에 있다.

자료연도한 줄 요지
Polynomial-Time Algorithms for Prime Factorization and Discrete Logarithms on a Quantum Computer (Shor)1994주기 찾기를 양자 푸리에 변환으로 풀어 소인수분해와 이산 로그를 다항 시간에 끝낸다.
A Fast Quantum Mechanical Algorithm for Database Search (Grover)1996표시된 하나를 O(√N)번의 조회로 찾는다. 구조 없는 탐색에서는 이 이상 빠를 수 없다는 것도 알려져 있다.
Quantum Amplitude Amplification and Estimation (Brassard, Høyer, Mosca, Tapp)2000그로버를 일반화했다. 성공 확률 a인 알고리즘을 약 1/√a번 되풀이해 성공을 끌어올린다.
Surface codes: Towards practical large-scale quantum computation (Fowler 외)2012표면 부호로 논리 큐비트를 만들고 연산하는 방법을 실험자 눈높이로 정리한 안내서다.
Quantum Computing in the NISQ era and beyond (Preskill)2018노이즈 많은 중간 규모 기기(NISQ)라는 말을 만들고, 오류 정정 전의 기기로 할 수 있는 일과 한계를 짚었다.
Quantum computational advantage using photons (Zhong 외)2020광자 가우스 보손 샘플링 기기로 고전 시뮬레이션보다 훨씬 빠른 샘플링을 주장했다.
Logical quantum processor based on reconfigurable atom arrays (Bluvstein 외)2023중성 원자를 옮겨 가며 논리 큐비트 수십 개로 회로를 돌렸다.
Quantum error correction below the surface code threshold (Google Quantum AI)2024부호 거리를 늘릴수록 논리 오류가 줄어드는 문턱 아래 동작을 초전도 기기에서 보였다.
How to factor 2048 bit RSA integers with less than a million noisy qubits (Gidney)2025RSA-2048을 깨는 데 드는 물리 큐비트 추정을 100만 개 아래로 낮췄다.