제1장. 양자 회로와 유니버설 게이트
“양자시간” 1, 2장에서 배운 힐베르트 공간, 큐빗, 얽힘은 양자 정보의 ’재료’입니다. “양자역학”에서 배운 유니터리 진화(\(e^{-iHt/\hbar}\))는 이 재료의 ’물리 법칙’입니다.
이 장에서는 이 물리 법칙을 ’계산’이라는 목적에 맞게 추상화하는 언어, 즉 양자 회로(Quantum Circuit)를 배웁니다. 고전 컴퓨터가 AND, OR, NOT 게이트로 모든 계산을 수행하듯, 양자 컴퓨터는 양자 게이트(Quantum Gate)라는 기본 연산자(유니터리 행렬)의 조합으로 모든 양자 알고리즘을 수행합니다.
1. 기본 개념 (Fundamental Concepts)
큐빗 (Qubit) 복습 ⚛️: “양자역사” 1장에서 배운 대로, 큐빗은 2차원 힐베르트 공간(\(\mathbb{C}^2\))의 상태 벡터입니다. 표준 기저(Z-기저) \(|0\rangle, |1\rangle\)의 중첩으로 표현됩니다. \[|\psi\rangle = \alpha|0\rangle + \beta|1\rangle \quad (|\alpha|^2 + |\beta|^2 = 1)\]
블로흐 구 (Bloch Sphere) 🌐: 큐빗의 상태는 3차원 구의 표면에 있는 한 점으로 시각화할 수 있습니다. (전역 위상은 무시) \[|\psi\rangle = \cos(\theta/2)|0\rangle + e^{i\phi}\sin(\theta/2)|1\rangle\]
준교과서레벨 상세 설명: 블로흐 구의 기하학적 의미 > 블로흐 구는 순수한 큐빗 상태를 시각화하는 강력한 도구입니다. 구의 표면에 있는 모든 점이 가능한 큐빗 상태 \(|\psi\rangle\)에 해당합니다.
- 극점(Pole): 북극은 \(|0\rangle\) 상태(\(\theta=0\)), 남극은 \(|1\rangle\) 상태(\(\theta=\pi\))를 나타냅니다. 이들은 고전적 비트에 대응합니다.
- 경도(\(\phi\)): \(xy\)-평면상의 회전 각도로, \(\phi\)는 상대 위상(Relative Phase) \(e^{i\phi}\)를 인코딩합니다. 이 상대 위상은 \(X, Y\) 기저 측정 결과에 영향을 미치며, 특히 양자 간섭 현상을 이해하는 데 필수적입니다.
- 위도(\(\theta\)): \(z\)-축으로부터의 각도 \(\theta\)는 확률 진폭(\(|\alpha|^2, |\beta|^2\))을 결정합니다. \(\theta=0\)일 때 \(|0\rangle\)일 확률은 1, \(\theta=\pi/2\) (적도)일 때는 \(|0\rangle\) 또는 \(|1\rangle\)일 확률이 각각 \(1/2\)로 중첩이 극대화됩니다.
게이트와의 관계: 1장에서 배울 모든 단일 큐빗 게이트(\(X, Y, Z, H\) 등)는 블로흐 구 상에서 상태 벡터를 회전(Rotation)시키는 연산으로 기하학적으로 해석할 수 있습니다. (예: \(X\) 게이트는 \(x\)축에 대한 \(180^\circ\) 회전)
동영상 소개: 블로흐 구 위에서 양자 상태의 변화와 회전을 시각적으로 보여주는 다음 동영상을 참고하여 \(H\) 게이트나 \(R_z(\phi)\) 게이트의 역할을 직관적으로 이해할 수 있습니다.
양자 게이트 (Quantum Gate): 큐빗의 상태를 다른 상태로 변환하는 연산입니다. 양자역학의 공리에 따라(확률 보존), 모든 양자 게이트는 반드시 유니터리(Unitary) 연산자(\(U^\dagger U = \mathbf{1}\))여야 합니다.
단일 큐빗 게이트 (Single-Qubit Gates): 단 하나의 큐빗에 작용하는 \(2 \times 2\) 유니터리 행렬입니다. 이는 블로흐 구 상에서 큐빗 상태 벡터를 회전(rotation)시키는 것과 같습니다.
- X, Y, Z 게이트 (파울리 연산자): 180° 회전.
- H 게이트 (하다마드): 기저를 변환(\(|0\rangle \to |+\rangle, |1\rangle \to |-\rangle\))하여 중첩을 만듭니다.
- S, T 게이트: Z축에 대한 특정 각도(\(90^\circ, 45^\circ\)) 회전 (위상 게이트).
다중 큐빗 게이트 (Multi-Qubit Gates): 여러 큐빗(예: 2큐빗 \(\mathbb{C}^4\))에 동시에 작용하는 \(4 \times 4\) 유니터리 행렬입니다. 큐빗들 사이에 얽힘(Entanglement)을 생성하는 데 필수적입니다.
- CNOT (Controlled-NOT): 가장 핵심적인 2-큐빗 게이트. 제어(Control) 큐빗이 \(|1\rangle\)일 때만, 대상(Target) 큐빗에 X 게이트(NOT)를 적용합니다.
유니버설 게이트 세트 (Universal Gate Set): 이 게이트들만 있으면 모든 가능한 양자 연산을 임의의 정밀도로 근사할 수 있는 최소한의 게이트 조합입니다. (고전의 {AND, NOT}과 유사)
- 표준 세트: {CNOT, H, T} (단일 큐빗 회전 + 2-큐빗 게이트)
양자 회로 (Quantum Circuit): 양자 게이트들을 시간 순서대로(왼쪽에서 오른쪽으로) 배열하여 양자 알고리즘의 수행 과정을 시각적으로 나타낸 도표입니다.
2. 기호 및 핵심 관계식 (게이트 행렬)
표준 기저 \(|0\rangle = \begin{pmatrix} 1 \\ 0 \end{pmatrix}, |1\rangle = \begin{pmatrix} 0 \\ 1 \end{pmatrix}\)에 대해,
파울리 X (Bit-Flip): \(\quad X = \begin{pmatrix} 0 & 1 \\ 1 & 0 \end{pmatrix} \quad\) (고전적 NOT)
파울리 Y: \(\quad Y = \begin{pmatrix} 0 & -i \\ i & 0 \end{pmatrix}\)
파울리 Z (Phase-Flip): \(\quad Z = \begin{pmatrix} 1 & 0 \\ 0 & -1 \end{pmatrix} \quad\) (\(|1\rangle\)에만 \(-1\) 위상)
하다마드 (Hadamard): \(\quad H = \frac{1}{\sqrt{2}}\begin{pmatrix} 1 & 1 \\ 1 & -1 \end{pmatrix} \quad\) (중첩 생성)
S 게이트 (Phase): \(\quad S = \begin{pmatrix} 1 & 0 \\ 0 & i \end{pmatrix} \quad\) (Z축 90° 회전)
T 게이트: \(\quad T = \begin{pmatrix} 1 & 0 \\ 0 & e^{i\pi/4} \end{pmatrix} \quad\) (Z축 45° 회전)
CNOT (제어-NOT): (첫 번째 큐빗이 제어, 두 번째 큐빗이 대상)
- 기저 \(|00\rangle, |01\rangle, |10\rangle, |11\rangle\) 에 대해,
- \(\text{CNOT} = \begin{pmatrix} 1 & 0 & 0 & 0 \\ 0 & 1 & 0 & 0 \\ 0 & 0 & 0 & 1 \\ 0 & 0 & 1 & 0 \end{pmatrix}\)
- 작용:
- \(\text{CNOT}|00\rangle = |00\rangle\) (제어가 0, 변화 없음)
- \(\text{CNOT}|01\rangle = |01\rangle\) (제어가 0, 변화 없음)
- \(\text{CNOT}|10\rangle = |11\rangle\) (제어가 1, 대상이 0 \(\to\) 1)
- \(\text{CNOT}|11\rangle = |10\rangle\) (제어가 1, 대상이 1 \(\to\) 0)
3. 손쉬운 예제 (Examples with Deeper Insight)
예제 1: X, Z 게이트 (비트 및 위상 플립)
상황: 가장 기본적인 단일 큐빗 게이트인 X(NOT)와 Z(Phase Flip) 게이트를 \(|+\rangle\) 상태에 적용합니다.
계산: \(|+\rangle = \frac{1}{\sqrt{2}}(|0\rangle + |1\rangle)\)
- X 게이트 적용: \[X|+\rangle = X \left( \frac{1}{\sqrt{2}}(|0\rangle + |1\rangle) \right) = \frac{1}{\sqrt{2}}(X|0\rangle + X|1\rangle) = \frac{1}{\sqrt{2}}(|1\rangle + |0\rangle) = |+\rangle\]
- Z 게이트 적용: \[Z|+\rangle = Z \left( \frac{1}{\sqrt{2}}(|0\rangle + |1\rangle) \right) = \frac{1}{\sqrt{2}}(Z|0\rangle + Z|1\rangle) = \frac{1}{\sqrt{2}}(|0\rangle - |1\rangle) = |-\rangle\]
💡 상세 설명 (기저의 선택과 오류 모델): > > 1. X 게이트와 기저: \(|+\rangle\) 상태는 \(X\) 게이트(\(\sigma_x\))의 고유 상태이므로, \(X\) 게이트를 적용해도 상태가 변하지 않습니다. 즉, \(X\) 게이트는 Z-기저(\(|0\rangle, |1\rangle\))에서는 비트 플립을 유발하지만, X-기저(\(|+\rangle, |-\rangle\))에서는 아무 영향도 주지 않습니다. > 2. Z 게이트와 위상 플립: \(|+\rangle\) 상태는 \(|0\rangle\)과 \(|1\rangle\)의 상대 위상이 \(0\)인 중첩 상태입니다. \(Z\) 게이트는 \(|1\rangle\)에만 \(-1\) 위상(즉, \(180^\circ\) 회전)을 주어 \(|\psi\rangle\)의 전체 위상을 바꾸는 대신, \(|0\rangle\)과 \(|1\rangle\) 사이의 상대 위상을 반전시킵니다. > > \(\implies\) Z 게이트는 X-기저에서 NOT 게이트처럼 작용합니다 (\(\frac{1}{\sqrt{2}}(|0\rangle + |1\rangle) \to \frac{1}{\sqrt{2}}(|0\rangle - |1\rangle)\)). > > 이 예제는 양자 오류 정정(3부)에서 다룰 비트 플립 오류(\(X\))와 위상 플립 오류(\(Z\) 또는 \(Y\))를 이해하는 기초가 됩니다.
예제 2: H 게이트 (중첩 생성기)
상황: \(|0\rangle\) 상태의 큐빗에 하다마드(H) 게이트를 적용합니다.
계산: \(H|0\rangle = \frac{1}{\sqrt{2}}\begin{pmatrix} 1 & 1 \\ 1 & -1 \end{pmatrix} \begin{pmatrix} 1 \\ 0 \end{pmatrix} = \frac{1}{\sqrt{2}}\begin{pmatrix} 1 \\ 1 \end{pmatrix}\) \[= \frac{1}{\sqrt{2}}(|0\rangle + |1\rangle) \equiv |+\rangle\]
💡 상세 설명 (기저 변환과 중첩의 준비): > > 하다마드 게이트는 Z-기저(\(|0\rangle, |1\rangle\))를 X-기저(\(|+\rangle, |-\rangle\))로 변환하는 ‘기저 변환기’입니다. > > 1. \(Z\)-기저: \(\sigma_z\)의 고유 상태 (스핀 z-방향, 북/남극) > 2. \(X\)-기저: \(\sigma_x\)의 고유 상태 (스핀 x-방향, 적도) > > \(|0\rangle\) 상태(북극)에 \(H\)를 적용하면, 큐빗이 \(X\)축을 향하게(\(|+\rangle\), 적도) 됩니다. 이 상태는 \(Z\)축 관점에서 보면 \(|0\rangle\)과 \(|1\rangle\)이 50:50으로 중첩된 상태입니다. > > \(H\) 게이트는 2장에서 배울 양자 병렬성을 준비하는 데 필수적이며, 고전 알고리즘에서 입력 레지스터를 초기화하는 작업에 해당합니다. \(H^2 = \mathbf{1}\) (두 번 적용하면 원상 복구) 성질도 중요합니다.
예제 3: CNOT 게이트 (얽힘 생성기)
상황: 두 큐빗이 \(|00\rangle\) 상태일 때, 첫 번째 큐빗에 H 게이트를, 그 다음 두 큐빗에 CNOT 게이트를 적용합니다. (가장 유명한 ‘벨 상태 생성’ 회로)
회로: \[|0\rangle_1 \longrightarrow [H] \longrightarrow \bullet \longrightarrow\] \[|0\rangle_2 \longrightarrow [ ] \longrightarrow \oplus \longrightarrow\] (\(\bullet\)는 제어, \(\oplus\)는 대상)
계산 (단계별):
- 초기 상태: \(|\psi_0\rangle = |0\rangle_1 \otimes |0\rangle_2 = |00\rangle\)
- H 게이트 적용 (H \(\otimes\) I): \[|\psi_1\rangle = (H|0\rangle_1) \otimes (I|0\rangle_2) = \left(\frac{|0\rangle+|1\rangle}{\sqrt{2}}\right) \otimes |0\rangle = \frac{1}{\sqrt{2}}(|00\rangle + |10\rangle)\]
- CNOT 게이트 적용: \[|\psi_2\rangle = \text{CNOT} |\psi_1\rangle = \text{CNOT} \left( \frac{1}{\sqrt{2}}(|00\rangle + |10\rangle) \right)\] \[= \frac{1}{\sqrt{2}} (\text{CNOT}|00\rangle + \text{CNOT}|10\rangle)\]
- CNOT 규칙 적용: \(\text{CNOT}|00\rangle = |00\rangle\), \(\text{CNOT}|10\rangle = |11\rangle\) \[= \frac{1}{\sqrt{2}}(|00\rangle + |11\rangle) \equiv |\Phi^+\rangle \quad (\text{벨 상태})\]
💡 상세 설명 (얽힘의 탄생과 상관관계): > > \(|\psi_1\rangle = \frac{1}{\sqrt{2}}(|0\rangle + |1\rangle) \otimes |0\rangle\) 상태는 아직 분리 가능(Separable)합니다. 1번 큐빗을 측정해도 2번 큐빗은 항상 \(|0\rangle\)으로, 서로 독립적입니다. > > 하지만 CNOT을 통과한 \(|\psi_2\rangle = \frac{1}{\sqrt{2}}(|00\rangle + |11\rangle)\) 상태는 얽혀 있습니다(Entangled). > > 1. 1번 큐빗을 측정해서 \(|0\rangle\)이 나오면, 2번 큐빗은 즉시 \(|0\rangle\)으로 확정됩니다. > 2. 1번 큐빗을 측정해서 \(|1\rangle\)이 나오면, 2번 큐빗은 즉시 \(|1\rangle\)으로 확정됩니다. > > CNOT 게이트는 이처럼 ’중첩’과 ’제어’를 결합하여 큐빗들 사이에 고전적으로는 불가능한 완벽한 상관관계, 즉 얽힘을 만들어냅니다. 이 얽힘 상태는 정보를 분할하여 인코딩하며, 2장에서 배울 양자 알고리즘의 비고전적 자원이자 핵심 동력입니다.
예제 4: SWAP 게이트 구현 (게이트 조합)
- 상황: 두 큐빗의 상태를 바꾸는(\(|\psi\rangle|\phi\rangle \to |\phi\rangle|\psi\rangle\)) SWAP 게이트가 필요합니다. 이는 CNOT 게이트만 가지고 만들 수 있습니다.
- 회로: 3개의 CNOT 게이트를 순서대로 적용하여 SWAP을 합성합니다. \[\text{SWAP} = \text{CNOT}_{1\to 2} \cdot \text{CNOT}_{2\to 1} \cdot \text{CNOT}_{1\to 2}\]
- 검증: \(|10\rangle\) 상태를 넣어봅시다.
- \(\text{CNOT}_{1\to 2} |10\rangle = |11\rangle\)
- \(\text{CNOT}_{2\to 1} |11\rangle = |01\rangle\) (2번 큐빗이 제어, 1번 큐빗이 \(1 \to 0\))
- \(\text{CNOT}_{1\to 2} |01\rangle = |01\rangle\) (1번 큐빗이 제어, 0이므로 변화 없음)
- 최종 결과: \(|01\rangle\). (초기 \(|10\rangle\)이 \(|01\rangle\)로 SWAP 되었습니다.)
- 💡 상세 설명 (유니버설 세트의 힘과 회로 합성): > > 이 예시는 양자 회로 합성(Circuit Synthesis)의 기본을 보여줍니다. 즉, 우리가 {CNOT, H, T} 같은 유니버설 게이트 세트만 있으면, SWAP이든 Toffoli(CCNOT)든 어떤 복잡한 유니터리 연산이라도 이들의 조합으로 ‘조립’해낼 수 있습니다. > > SWAP 연산이 3개의 CNOT만으로 구현될 수 있다는 사실은, 복잡한 알고리즘을 설계할 때 가장 기본적인 2-큐빗 게이트만으로도 충분하다는 근본적인 통찰을 제공하며, 이는 하드웨어 구현의 난이도를 결정하는 핵심 요소입니다. (2-큐빗 게이트의 수가 양자 컴퓨터의 ’깊이’와 ’비용’을 결정함) —–
4. 연습문제
- 게이트 항등식: 하다마드 게이트 \(H\)를 파울리 \(X, Z\) 게이트로 표현한 항등식 \(HXH = Z\) 를 행렬 곱셈으로 증명하십시오. (이는 \(H\)가 \(X\)기저와 \(Z\)기저를 바꿈을 의미합니다)
- 단일 게이트 작용: 큐빗이 X-기저의 \(|+\rangle\) 상태에 있습니다. 여기에 (a) \(Z\) 게이트, (b) \(S\) 게이트를 적용하면 각각 어떤 상태가 되는지 계산하십시오.
- 벨 상태 생성 2: 예제 2의 회로에서 초기 상태를 \(|01\rangle\)로 바꾸면(\(H\)는 1번 큐빗, CNOT은 1$$2) 최종 상태는 무엇이 될지 계산하십시오.
- CNOT 방향: CNOT 게이트의 제어 큐빗과 대상 큐빗을 바꾼 \(\text{CNOT}_{2\to 1}\) 게이트의 \(4 \times 4\) 행렬을 \(|00\rangle, |01\rangle, |10\rangle, |11\rangle\) 기저로 표현하십시오. (힌트: \(\text{CNOT}_{2\to 1}|10\rangle = |10\rangle, \text{CNOT}_{2\to 1}|01\rangle = |11\rangle\))
- 유니터리 확인: T 게이트(\(T\))가 유니터리 연산자임을 (\(T^\dagger T = \mathbf{1}\)) 보이십시오.
5. 해설
- \(H X H = \left(\frac{1}{\sqrt{2}}\begin{pmatrix} 1 & 1 \\ 1 & -1 \end{pmatrix}\right) \begin{pmatrix} 0 & 1 \\ 1 & 0 \end{pmatrix} \left(\frac{1}{\sqrt{2}}\begin{pmatrix} 1 & 1 \\ 1 & -1 \end{pmatrix}\right)\) \(= \frac{1}{2} \left(\begin{pmatrix} 1 & 1 \\ 1 & -1 \end{pmatrix}\begin{pmatrix} 1 & -1 \\ 1 & 1 \end{pmatrix}\right) = \frac{1}{2} \begin{pmatrix} 2 & 0 \\ 0 & -2 \end{pmatrix} = \begin{pmatrix} 1 & 0 \\ 0 & -1 \end{pmatrix} = Z\).
- \(|+\rangle = \frac{1}{\sqrt{2}}(|0\rangle + |1\rangle)\)
- \(Z|+\rangle = Z \frac{1}{\sqrt{2}}(|0\rangle + |1\rangle) = \frac{1}{\sqrt{2}} (Z|0\rangle + Z|1\rangle) = \frac{1}{\sqrt{2}} (|0\rangle - |1\rangle) = |-\rangle\).
- \(S|+\rangle = S \frac{1}{\sqrt{2}}(|0\rangle + |1\rangle) = \frac{1}{\sqrt{2}} (S|0\rangle + S|1\rangle) = \frac{1}{\sqrt{2}} (|0\rangle + i|1\rangle) \equiv |+Y\rangle\).
- \(|\psi_0\rangle = |01\rangle\). \(|\psi_1\rangle = (H \otimes I) |01\rangle = (H|0\rangle) \otimes |1\rangle = \frac{1}{\sqrt{2}}(|0\rangle+|1\rangle) \otimes |1\rangle = \frac{1}{\sqrt{2}}(|01\rangle + |11\rangle)\). \(|\psi_2\rangle = \text{CNOT}|\psi_1\rangle = \frac{1}{\sqrt{2}}(\text{CNOT}|01\rangle + \text{CNOT}|11\rangle) = \frac{1}{\sqrt{2}}(|01\rangle + |10\rangle) \equiv |\Psi^+\rangle\). (또 다른 벨 상태)
- \(|00\rangle \to |00\rangle, |01\rangle \to |11\rangle\) (제어 1, 대상 0$$1), \(|10\rangle \to |10\rangle\) (제어 0), \(|11\rangle \to |01\rangle\) (제어 1, 대상 1$\(0).\)_{2} = \[\begin{pmatrix} 1 & 0 & 0 & 0 \\ 0 & 0 & 0 & 1 \\ 0 & 0 & 1 & 0 \\ 0 & 1 & 0 & 0 \end{pmatrix}\] $.
- \(T = \begin{pmatrix} 1 & 0 \\ 0 & e^{i\pi/4} \end{pmatrix}\). \(T^\dagger = \begin{pmatrix} 1 & 0 \\ 0 & (e^{i\pi/4})^* \end{pmatrix} = \begin{pmatrix} 1 & 0 \\ 0 & e^{-i\pi/4} \end{pmatrix}\). \(T^\dagger T = \begin{pmatrix} 1 & 0 \\ 0 & e^{-i\pi/4} \end{pmatrix} \begin{pmatrix} 1 & 0 \\ 0 & e^{i\pi/4} \end{pmatrix} = \begin{pmatrix} 1\cdot 1 & 0 \\ 0 & e^{-i\pi/4}e^{i\pi/4} \end{pmatrix} = \begin{pmatrix} 1 & 0 \\ 0 & e^0 \end{pmatrix} = \mathbf{1}\).