앞 글에서 bra 와 ket 이 만나는 두 가지 방식이 있다고 짚었습니다. 순서가 bra-ket 이면 1×1 scalar, 순서가 ket-bra 이면 n×n 행렬이 됩니다. 같은 네 글자가 순서만 바뀌어도 결과의 차원이 완전히 달라진다는 점을 떠올려 두면 좋습니다.
⟨ a ∣ b ⟩ → \langle a | b \rangle \to ⟨ a ∣ b ⟩ → scalar (inner product)
∣ a ⟩ ⟨ b ∣ → |a\rangle \langle b | \to ∣ a ⟩ ⟨ b ∣ → matrix (outer product)
이번 노트에서는 두 번째 형태인 outer product 를 정리합니다. 그리고 이 단순한 building block 이 어떻게 모든 행렬을 표현하고, 앞 글의 deterministic operation 행렬을 한 줄 식으로 적을 수 있게 해주는지를 봅니다.
Column × Row = Matrix
먼저 차원 셈만 다시 짚어봅시다. column vector (n × 1 n \times 1 n × 1 ) 와 row vector (1 × n 1 \times n 1 × n ) 를 곱하면 n × n n \times n n × n 행렬이 나오고, ( i , j ) (i, j) ( i , j ) entry 는 두 vector 의 entry 곱입니다.
( a 1 a 2 ⋮ a n ) ( b 1 b 2 ⋯ b n ) = ( a 1 b 1 a 1 b 2 ⋯ a 1 b n a 2 b 1 a 2 b 2 ⋯ a 2 b n ⋮ ⋮ ⋮ a n b 1 a n b 2 ⋯ a n b n ) \begin{pmatrix} a_1 \\\\ a_2 \\\\ \vdots \\\\ a_n \end{pmatrix} \begin{pmatrix} b_1 & b_2 & \cdots & b_n \end{pmatrix} = \begin{pmatrix} a_1 b_1 & a_1 b_2 & \cdots & a_1 b_n \\\\ a_2 b_1 & a_2 b_2 & \cdots & a_2 b_n \\\\ \vdots & \vdots & & \vdots \\\\ a_n b_1 & a_n b_2 & \cdots & a_n b_n \end{pmatrix} a 1 a 2 ⋮ a n ( b 1 b 2 ⋯ b n ) = a 1 b 1 a 2 b 1 ⋮ a n b 1 a 1 b 2 a 2 b 2 ⋮ a n b 2 ⋯ ⋯ ⋯ a 1 b n a 2 b n ⋮ a n b n
inner product 에서는 같은 자리의 entry 만 곱해서 더했지만, outer product 는 모든 자리 조합의 곱을 행렬로 펼쳐 놓습니다.
|a⟩⟨b| 는 (a, b) 자리에 1 표시기
이 일반 공식을 standard basis 에 적용하면 결과가 매우 단순해집니다. ∣ a ⟩ |a\rangle ∣ a ⟩ 는 a a a 자리만 1 1 1 , ⟨ b ∣ \langle b | ⟨ b ∣ 는 b b b 자리만 1 1 1 이라서 두 항이 모두 1 1 1 인 자리는 ( i , j ) = ( a , b ) (i, j) = (a, b) ( i , j ) = ( a , b ) 한 곳뿐. 나머지는 0 0 0 이 됩니다.
( ∣ a ⟩ ⟨ b ∣ ) i , j = { 1 if ( i , j ) = ( a , b ) 0 otherwise \bigl(|a\rangle \langle b |\bigr)_{i, j} = \begin{cases} 1 & \text{if } (i, j) = (a, b) \\\\ 0 & \text{otherwise} \end{cases} ( ∣ a ⟩ ⟨ b ∣ ) i , j = ⎩ ⎨ ⎧ 1 0 if ( i , j ) = ( a , b ) otherwise
∣ a ⟩ ⟨ b ∣ |a\rangle \langle b | ∣ a ⟩ ⟨ b ∣ 는 ( a , b ) (a, b) ( a , b ) 자리에만 1 1 1 이 있는 행렬.
이게 글 전체의 핵심 슬로건이고, 외워둘 만한 한 줄입니다.
Σ = {0, 1} 의 4가지 outer product
Σ = { 0 , 1 } \Sigma = \{0, 1\} Σ = { 0 , 1 } 위에서는 a a a 와 b b b 가 각각 0 , 1 0, 1 0 , 1 이라 outer product 가 4가지 나옵니다. 4개의 행렬은 각각 한 자리에만 1 1 1 이 있는 모양이 됩니다.
∣ 0 ⟩ ⟨ 0 ∣ = ( 1 0 ) ( 1 0 ) = ( 1 0 0 0 ) , ∣ 0 ⟩ ⟨ 1 ∣ = ( 1 0 ) ( 0 1 ) = ( 0 1 0 0 ) |0\rangle \langle 0 | = \begin{pmatrix} 1 \\\\ 0 \end{pmatrix} \begin{pmatrix} 1 & 0 \end{pmatrix} = \begin{pmatrix} 1 & 0 \\\\ 0 & 0 \end{pmatrix}, \qquad
|0\rangle \langle 1 | = \begin{pmatrix} 1 \\\\ 0 \end{pmatrix} \begin{pmatrix} 0 & 1 \end{pmatrix} = \begin{pmatrix} 0 & 1 \\\\ 0 & 0 \end{pmatrix} ∣0 ⟩ ⟨ 0∣ = 1 0 ( 1 0 ) = 1 0 0 0 , ∣0 ⟩ ⟨ 1∣ = 1 0 ( 0 1 ) = 0 0 1 0
∣ 1 ⟩ ⟨ 0 ∣ = ( 0 1 ) ( 1 0 ) = ( 0 0 1 0 ) , ∣ 1 ⟩ ⟨ 1 ∣ = ( 0 1 ) ( 0 1 ) = ( 0 0 0 1 ) |1\rangle \langle 0 | = \begin{pmatrix} 0 \\\\ 1 \end{pmatrix} \begin{pmatrix} 1 & 0 \end{pmatrix} = \begin{pmatrix} 0 & 0 \\\\ 1 & 0 \end{pmatrix}, \qquad
|1\rangle \langle 1 | = \begin{pmatrix} 0 \\\\ 1 \end{pmatrix} \begin{pmatrix} 0 & 1 \end{pmatrix} = \begin{pmatrix} 0 & 0 \\\\ 0 & 1 \end{pmatrix} ∣1 ⟩ ⟨ 0∣ = 0 1 ( 1 0 ) = 0 1 0 0 , ∣1 ⟩ ⟨ 1∣ = 0 1 ( 0 1 ) = 0 0 0 1
outer product 1이 있는 자리 ∣ 0 ⟩ ⟨ 0 ∣ \lvert 0 \rangle \langle 0 \rvert ∣ 0 ⟩ ⟨ 0 ∣ ( 0 , 0 ) (0, 0) ( 0 , 0 ) ∣ 0 ⟩ ⟨ 1 ∣ \lvert 0 \rangle \langle 1 \rvert ∣ 0 ⟩ ⟨ 1 ∣ ( 0 , 1 ) (0, 1) ( 0 , 1 ) ∣ 1 ⟩ ⟨ 0 ∣ \lvert 1 \rangle \langle 0 \rvert ∣ 1 ⟩ ⟨ 0 ∣ ( 1 , 0 ) (1, 0) ( 1 , 0 ) ∣ 1 ⟩ ⟨ 1 ∣ \lvert 1 \rangle \langle 1 \rvert ∣ 1 ⟩ ⟨ 1 ∣ ( 1 , 1 ) (1, 1) ( 1 , 1 )
이 네 개의 행렬이 2 × 2 2 \times 2 2 × 2 행렬 공간 전체를 펼치는 기저 역할을 합니다. standard basis vector ∣ 0 ⟩ , ∣ 1 ⟩ |0\rangle, |1\rangle ∣0 ⟩ , ∣1 ⟩ 가 vector 공간을 펼쳤듯이, { ∣ a ⟩ ⟨ b ∣ } a , b \{|a\rangle \langle b |\}_{a, b} { ∣ a ⟩ ⟨ b ∣ } a , b 가 행렬 공간을 펼치는 행렬용 standard basis 입니다.
모든 행렬은 outer product 의 합
행렬용 standard basis 가 있다는 말은, 임의 행렬을 이 building block 들의 linear combination 으로 적을 수 있다는 뜻입니다. 예시로 다음 행렬을 분해해 봅시다.
A = ( 3 5 7 9 ) A = \begin{pmatrix} 3 & 5 \\\\ 7 & 9 \end{pmatrix} A = 3 7 5 9
각 entry 의 위치를 그대로 outer product 자리에 매핑하면:
A = 3 ∣ 0 ⟩ ⟨ 0 ∣ + 5 ∣ 0 ⟩ ⟨ 1 ∣ + 7 ∣ 1 ⟩ ⟨ 0 ∣ + 9 ∣ 1 ⟩ ⟨ 1 ∣ A = 3 \, |0\rangle \langle 0 | + 5 \, |0\rangle \langle 1 | + 7 \, |1\rangle \langle 0 | + 9 \, |1\rangle \langle 1 | A = 3 ∣0 ⟩ ⟨ 0∣ + 5 ∣0 ⟩ ⟨ 1∣ + 7 ∣1 ⟩ ⟨ 0∣ + 9 ∣1 ⟩ ⟨ 1∣
일반화하면 임의 행렬은 다음과 같이 적힙니다.
A = ∑ i , j A i , j ∣ i ⟩ ⟨ j ∣ A = \sum_{i, j} A_{i, j} \, |i\rangle \langle j | A = i , j ∑ A i , j ∣ i ⟩ ⟨ j ∣
Deterministic operation 을 한 줄 식으로
앞 글의 deterministic operation 행렬도 outer product 의 합으로 정확히 한 줄에 떨어집니다.
M = ∑ b ∈ Σ ∣ f ( b ) ⟩ ⟨ b ∣ M = \sum_{b \in \Sigma} |f(b)\rangle \langle b | M = b ∈ Σ ∑ ∣ f ( b )⟩ ⟨ b ∣
이 식의 의미는 단순합니다. 각 입력 b b b 에 대해, ∣ b ⟩ |b\rangle ∣ b ⟩ 자리 (즉 b b b 번째 column) 에 ∣ f ( b ) ⟩ |f(b)\rangle ∣ f ( b )⟩ 를 넣어라. 4가지 bit 함수의 행렬을 한 줄씩 적어 보면 다음과 같습니다.
함수 f ( b ) f(b) f ( b ) outer product 합 결과 행렬 f 1 f_1 f 1 (constant 0)0 , 0 0, 0 0 , 0 ∣ 0 ⟩ ⟨ 0 ∣ + ∣ 0 ⟩ ⟨ 1 ∣ \lvert 0 \rangle \langle 0 \rvert + \lvert 0 \rangle \langle 1 \rvert ∣ 0 ⟩ ⟨ 0 ∣ + ∣ 0 ⟩ ⟨ 1 ∣ ( 1 1 0 0 ) \begin{pmatrix} 1 & 1 \\\\ 0 & 0 \end{pmatrix} 1 0 1 0 f 2 f_2 f 2 (identity)0 , 1 0, 1 0 , 1 ∣ 0 ⟩ ⟨ 0 ∣ + ∣ 1 ⟩ ⟨ 1 ∣ \lvert 0 \rangle \langle 0 \rvert + \lvert 1 \rangle \langle 1 \rvert ∣ 0 ⟩ ⟨ 0 ∣ + ∣ 1 ⟩ ⟨ 1 ∣ ( 1 0 0 1 ) \begin{pmatrix} 1 & 0 \\\\ 0 & 1 \end{pmatrix} 1 0 0 1 f 3 f_3 f 3 (NOT)1 , 0 1, 0 1 , 0 ∣ 1 ⟩ ⟨ 0 ∣ + ∣ 0 ⟩ ⟨ 1 ∣ \lvert 1 \rangle \langle 0 \rvert + \lvert 0 \rangle \langle 1 \rvert ∣ 1 ⟩ ⟨ 0 ∣ + ∣ 0 ⟩ ⟨ 1 ∣ ( 0 1 1 0 ) \begin{pmatrix} 0 & 1 \\\\ 1 & 0 \end{pmatrix} 0 1 1 0 f 4 f_4 f 4 (constant 1)1 , 1 1, 1 1 , 1 ∣ 1 ⟩ ⟨ 0 ∣ + ∣ 1 ⟩ ⟨ 1 ∣ \lvert 1 \rangle \langle 0 \rvert + \lvert 1 \rangle \langle 1 \rvert ∣ 1 ⟩ ⟨ 0 ∣ + ∣ 1 ⟩ ⟨ 1 ∣ ( 0 0 1 1 ) \begin{pmatrix} 0 & 0 \\\\ 1 & 1 \end{pmatrix} 0 1 0 1
흥미로운 한 가지. identity 행렬은 모든 a a a 에 대한 ∣ a ⟩ ⟨ a ∣ |a\rangle \langle a | ∣ a ⟩ ⟨ a ∣ 의 합입니다.
I = ∑ a ∈ Σ ∣ a ⟩ ⟨ a ∣ I = \sum_{a \in \Sigma} |a\rangle \langle a | I = a ∈ Σ ∑ ∣ a ⟩ ⟨ a ∣
뒤에서 resolution of identity 라는 이름으로 또 등장할 식이고, 측정 확률을 분해할 때 핵심 도구입니다.
(|a⟩⟨b|)-|c⟩ - 한 줄로 줄이기
outer product 가 ket 에 작용하면 어떻게 되는지 봅시다. 행렬 곱의 결합 법칙을 쓰면 한 줄에 정리됩니다.
( ∣ a ⟩ ⟨ b ∣ ) ∣ c ⟩ = ∣ a ⟩ ( ⟨ b ∣ c ⟩ ) = ∣ a ⟩ ⋅ δ b , c = { ∣ a ⟩ if b = c 0 otherwise \bigl(|a\rangle \langle b |\bigr) |c\rangle = |a\rangle \bigl(\langle b | c \rangle\bigr) = |a\rangle \cdot \delta_{b, c} = \begin{cases} |a\rangle & \text{if } b = c \\\\ 0 & \text{otherwise} \end{cases} ( ∣ a ⟩ ⟨ b ∣ ) ∣ c ⟩ = ∣ a ⟩ ( ⟨ b ∣ c ⟩ ) = ∣ a ⟩ ⋅ δ b , c = ⎩ ⎨ ⎧ ∣ a ⟩ 0 if b = c otherwise
해석하자면 ∣ a ⟩ ⟨ b ∣ |a\rangle \langle b | ∣ a ⟩ ⟨ b ∣ 는 입력이 ∣ b ⟩ |b\rangle ∣ b ⟩ 일 때만 ∣ a ⟩ |a\rangle ∣ a ⟩ 를 내놓고 다른 입력은 죽여 버리는 projection-like 연산입니다. NOT 의 첫 항 ∣ 1 ⟩ ⟨ 0 ∣ |1\rangle \langle 0 | ∣1 ⟩ ⟨ 0∣ 가 "0 입력이면 1 내놓기" 인 이유가 정확히 이거죠.
행렬 그리지 말고 bra 와 ket 이 만나면 그 자리에서 scalar (Kronecker delta) 로 줄여 버리는 게 Dirac 표기의 진짜 강점입니다. 계산이 순식간에 짧아집니다.
짚어둘 것
세 가지만 따로 정리합니다.
순서 한 번 더. ⟨ a ∣ b ⟩ \langle a | b \rangle ⟨ a ∣ b ⟩ 는 scalar, ∣ a ⟩ ⟨ b ∣ |a\rangle \langle b | ∣ a ⟩ ⟨ b ∣ 는 행렬. 같은 글자라도 어느 쪽이 앞에 오느냐가 결과 차원을 결정합니다.
∣ a ⟩ ⟨ a ∣ |a\rangle \langle a | ∣ a ⟩ ⟨ a ∣ 는 vector 가 아니라 대각선의 한 자리에만 1 1 1 이 있는 projector 행렬입니다. ∣ a ⟩ |a\rangle ∣ a ⟩ 자체와 모양이 다릅니다.
∣ a ⟩ ⟨ b ∣ |a\rangle \langle b | ∣ a ⟩ ⟨ b ∣ 와 ∣ b ⟩ ⟨ a ∣ |b\rangle \langle a | ∣ b ⟩ ⟨ a ∣ 는 서로 다른 자리에 1 1 1 이 있는 행렬입니다. 둘은 transpose 관계.
다음으로
지금까지 벡터에 작용하는 행렬이라는 framework 안에서 deterministic operation 까지 다 적었습니다. 다음 글에서는 이 행렬의 entry 가 0 / 1 0/1 0/1 만이 아니라 임의의 확률을 가지는 일반화로 넘어갑니다 (probabilistic operation, 즉 stochastic matrix).
또 한 가지 흥미로운 갈래. 위에서 슬쩍 등장한 ∣ a ⟩ ⟨ a ∣ |a\rangle \langle a | ∣ a ⟩ ⟨ a ∣ 는 사실 projector 라 불리고, 더 나아가 quantum state 의 또 다른 표기인 density matrix ∣ ψ ⟩ ⟨ ψ ∣ |\psi\rangle \langle \psi | ∣ ψ ⟩ ⟨ ψ ∣ 의 기본 단위가 됩니다. 이 부분은 단원이 단단해지면 별도 노트로 따로 다룰 예정입니다.