양자 컴퓨팅 수학

큐비트를 기술하는 데 사용하는 수학적 모델 — John von Neumann이 적어 두고, 끊임없이 테스트되며, 여전히 옳습니다.

Sohum Thakkar
Sohum Thakkar · CEO, Qolour
May 17, 2026

이 가이드에서는 큐비트를 표현하는 데 사용하는 수학적 모델을 배웁니다. 이 모델은 John von Neumann이라는 뛰어난 수학자가 발명했으며, 매우 성공적인 것으로 입증되었습니다. 거듭 테스트되었고 계속해서 세상을 정확히 예측합니다. 그것이 좋은 모델의 조건입니다!

추신. 많은 사람이 모델을 큐비트와 혼동합니다. 큐비트가 아래에서 볼 수학 그 자체라고 생각합니다. 이는 단순한 오해입니다. 물리학은 자연에서 보는 것을 정확히 나타내는 수학적 모델을 구축하는 데 전념하는 분야입니다. 큐비트는 우리가 이해하기 시작할 수도 없는 자연의 물리적 객체입니다. 아래 수학은 그저 그 행동을 예측하기 위해 우리가 만든 모델 — 도구 — 입니다.

단일 큐비트

큐비트의 상태를 적는 두 가지 일반적인 방법이 있습니다: 하나는 직관적이고, 다른 하나는 매우 유용합니다. 직관적인 것은 3D 공간의 벡터인 블로흐 벡터를 적는 것입니다 — 큐비트란 무엇인가? 가이드에서 모두 배울 수 있습니다. 그리기 쉽지만, 양자 얽힘 상태의 큐비트를 표현하려고 하면 심각한 한계에 부딪힙니다. 그래서 진지한 작업에는 상태 벡터 표기법이라 알려진 것을 사용합니다.

상태 벡터 표기법은 큐비트를 측정할 때 가능한 측정 결과에 근거하고 있어 좋습니다.

1단계: 측정 결과 선택

첫 번째 단계는 양자 측정 결과가 무엇이 될 수 있는지 선택하는 것입니다. 예를 들어 유명한 슈테른-게를라흐 실험에서 슈테른과 게를라흐는 전자의 스핀이 위인지 아래인지 측정했습니다. 그들의 측정 결과는 또는 아래였습니다.

그 두 결과에 이름을 붙입니다. 관례적으로 켓 표기법으로 적습니다:

  • |0⟩

    “켓 영”으로 읽습니다. 첫 번째 결과에 대한 우리의 관례 — 예: 슈테른-게를라흐의 .

  • |1⟩

    “켓 일”로 읽습니다. 다른 결과 — 예: 슈테른-게를라흐의 아래.

State: |+⟩

2단계: 상태를 벡터로 적기

상태 벡터는 단지 각 측정 결과에 얼마나 많은 가중치(또는 진폭)가 있는지에 항목이 대응되는 벡터입니다. 첫 번째 항목은 |0⟩의 진폭에, 두 번째 항목은 |1⟩의 진폭에 대응됩니다.

두 결과를 두 개의 수직 축(|0⟩|1⟩)으로, 상태 |ψ⟩를 그 평면의 벡터로 그립니다.

|0⟩|1⟩|ψ⟩αβθ
큐비트의 상태가 각 측정 결과 축에 하나의 성분을 가진 벡터로 그려진 모습.

켓 형태로 같은 것을 |ψ⟩ = α|0⟩ + β|1⟩로 적습니다. 열 벡터로는 단지 [α, β]입니다.

|ψ⟩ = α|0⟩ + β|1⟩  ⇔  [α, β]

진폭은 확률이 아니다

진폭은 익숙해질 개념입니다. 진폭은 확률이 아닙니다 — 확률의 “제곱근”입니다. 예를 들어 상태가 |0⟩에 대해 1/√2의 진폭을 가지면 |0⟩을 측정할 확률은 (1/√2)² = 1/2 = 50%입니다. 이를 보른 규칙이라고 합니다.

P(measure |0⟩) = |α|2

P(measure |1⟩) = |β|2

예시 상태 벡터

  • |0⟩에 모든 가중치

    [1, 0]

    |0⟩을 측정할 확률 = 1² = 100%.

  • |1⟩에 모든 가중치

    [0, 1]

    |1⟩을 측정할 확률 = 1² = 100%.

  • 동일한 중첩

    [1/√2, 1/√2]

    각 결과의 확률 (1/√2)² = 1/2. 50/50.

  • 복소수 중첩

    [1/√2, i/√2]

    여전히 50/50 — 크기 제곱 |i/√2|² = 1/2 — 그러나 두 번째 항목의 위상이 다릅니다.

  • 비대칭 중첩

    [√0.3, √0.7]

    |0⟩에 대해 (√0.3)² = 30%, |1⟩에 대해 (√0.7)² = 70%.

중요한 점을 주목하세요: 위의 모든 예에서 진폭 제곱의 합은 1입니다. 우연이 아닙니다 — 엄격한 규칙입니다. 모든 가능한 결과의 확률이 100%가 되어야 하므로:

|α|2 + |β|2 = 1

그리고 진폭은 복소수일 수 있습니다. 복소수 진폭을 사용한 보른 규칙은 α²가 아닌 크기 제곱 |α|² = α·α*를 사용합니다.

퀴즈 곧 공개 — 몇 가지 연습 상태 벡터로 보른 규칙에 대한 이해를 확인합니다.

전역 위상은 중요하지 않다

상태 벡터를 이렇게 적는 것에는 약간의 중복이 있습니다. 모든 진폭에 크기 1의 같은 복소수(-1, i, 또는 e^(iπ/3) 같은 “위상 인수”)를 곱하면 같은 물리 상태를 기술하는 것입니다. 보른 규칙은 |진폭|²에 의존하므로 모든 진폭에 단위 크기 인수를 곱해도 측정 확률은 변하지 않습니다.

이 공유 인수를 전역 위상이라고 합니다. 전역 위상만 다른 두 상태 벡터는 물리적으로 구별할 수 없습니다 — 가능한 모든 측정에 대해 정확히 같은 결과를 예측합니다.

여러 큐비트

이제 여러 큐비트의 상태를 표현하는 방법을 배웁니다. 우리가 하는 일은 가능한 측정 결과의 각 조합에 대해 새로운 차원을 만드는 것입니다.

그래서 특정 상태를 나타내는 벡터는 n개의 큐비트에 대해 2ⁿ개의 항목을 가집니다. 이 벡터도 상태 벡터라고 합니다. 단일 큐비트 경우와 마찬가지로 항목은 복소수일 수 있으며, 그 크기 제곱의 합은 1이어야 합니다.

statevector dimension = 2n

두 큐비트의 경우 네 결과는 |00⟩, |01⟩, |10⟩, |11⟩이므로 상태 벡터는 4개의 항목을 가집니다. 세 큐비트의 경우: 8개. 열 큐비트의 경우: 1024개. 차원은 큐비트 수에 따라 기하급수적으로 성장합니다 — 이것이 바로 고전 컴퓨터에서 큰 양자계를 시뮬레이션하는 것이 그렇게 어려운 이유입니다.

추신. 흔한 혼동: 단위 구에 있지 않은 상태 벡터가 있으면 어떻게 되나요? 답은 불가능하다는 것입니다 — 그것은 모든 가능한 결과의 확률을 합하면 100%가 아니라는 뜻이 됩니다. 이 형식에서 우리는 벡터를 양자 상태가 무엇인지에 대한 정보의 운반체로 사용합니다. 모든 벡터가 작동한다는 뜻은 아닙니다. 양자역학은 단위 벡터만 다룹니다.

연산

양자계에 수행되는 모든 연산은 상태 벡터를 받아 상태 벡터를 출력해야 합니다. 그리고 새 상태 벡터는 단위 구에 있는 것을 포함해 상태 벡터의 모든 규칙을 만족해야 합니다.

연산이 선형이라면 행렬로 표현할 수 있습니다. 제약은 입력과 출력 모두 노름 1이어야 한다는 것입니다. 단위 구를 보존하는 행렬을 유니터리라고 합니다.

상태 벡터에 연산을 적용하는 것은 행렬 곱셈입니다: 유니터리 행렬 U를 가져와 상태 벡터 |ψ⟩에 곱하면 결과 U|ψ⟩가 새 상태 벡터입니다.

|ψ’⟩ = U|ψ⟩

추신. 흔한 혼동: 큐비트에 비-유니터리 연산을 수행하면 어떻게 되나요? 답은 영구 운동 기관을 만들 수 없는 것과 같은 방식으로 불가능하다는 것입니다. 우리는 행렬을 양자 연산이 무엇을 하는지에 대한 정보의 운반체로 사용합니다. 모든 행렬이 작동한다는 뜻은 아닙니다. 양자역학은 유니터리 행렬만 다룹니다.

측정

양자 컴퓨터에 하는 마지막 종류의 연산은 측정입니다 — 양자계에서 정보를 추출하는 방법.

측정을 수행하려면 세 단계:

  1. 보른 규칙(|진폭|²)을 사용해 각 가능한 결과의 확률을 계산합니다.
  2. 그 확률을 사용해 무작위로 하나의 결과를 샘플링합니다.
  3. 상태 벡터를 샘플링된 결과에 해당하는 단위 벡터로 대체합니다.

예를 들어 상태 |ψ⟩ = (1/√2)|0⟩ + (1/√2)|1⟩을 측정하면: 50% 확률로 |0⟩, 50% 확률로 |1⟩을 얻습니다. |0⟩을 샘플링했다면 측정 후의 상태 벡터는 단지 |0⟩ = [1, 0]입니다. 중첩은 사라졌습니다 — 그것이 사람들이 측정이 상태를 “붕괴”한다고 말할 때 의미하는 것입니다.

여기서 어디로

세 가지 좋은 다음 단계:

  • 블로흐 구란 무엇인가?는 단일 큐비트에 대한 3D 기하학적 그림을 진지하게 다룹니다.
  • 아다마르 게이트는 가장 중요한 유니터리 연산 중 하나입니다 — |0⟩을 동일한 중첩인 (1/√2)|0⟩ + (1/√2)|1⟩로 변환합니다.
  • 양자 얽힘이란 무엇인가?는 두 큐비트가 상관관계가 될 때 다중 큐비트 상태 벡터에 어떤 일이 일어나는지 보여줍니다.