よんログ

量子計算

古典ビット量子ビット
物理的実体電圧の高低量子状態 (電子のスピン, 光の偏光, ...)
数学的理想化(古典) ビット 0,10,1量子ビット α0+β1\alpha \ket{0} + \beta \ket{1}
基本操作 (ゲート)AND, OR, NOT, ...X, Y, Z, H, T, S, ...

量子ビットと確率

量子ビット

α0+β1(α,βC,α2+β2=1)\alpha \ket{0} + \beta \ket{1} \quad (\alpha, \beta \in \mathbb{C}, |\alpha|^2 + |\beta|^2 = 1)

を観測すると、確率 α2,β2|\alpha|^2, |\beta|^2 で状態 0,1\ket{0}, \ket{1} が得られる。

  1. 0=1×0+0×1\ket{0} = 1 \times \ket{0} + 0 \times \ket{1} を観測すると、確率 12|1|^20\ket{0} が得られる。 つまり、確実に 0\ket{0} が得られる。
  2. 1=0×0+1×1\ket{1} = 0 \times \ket{0} + 1 \times \ket{1} を観測すると、確率 12|1|^21\ket{1} が得られる。 つまり、確実に 1\ket{1} が得られる。
  3. 120+121\frac{1}{\sqrt{2}} \ket{0} + \frac{1}{\sqrt{2}} \ket{1} を観測すると、確率 12\frac{1}{2}0\ket{0} または 1\ket{1} が得られる。
  4. 120121\frac{1}{\sqrt{2}} \ket{0} - \frac{1}{\sqrt{2}} \ket{1} を観測すると、確率 12\frac{1}{2}0\ket{0} または 1\ket{1} が得られる。 3.,4. より、異なる量子ビットが同じ確率分布をもちうることが分かる。

量子ビットのベクトル表現

量子ビット α0+β1\alpha \ket{0} + \beta \ket{1} は、

[αβ]C2\begin{bmatrix} \alpha \\ \beta \end{bmatrix} \in \mathbb{C}^2

というベクトルで表現できる。

  1. 0=1×0+0×1\ket{0} = 1 \times \ket{0} + 0 \times \ket{1}[10]\begin{bmatrix} 1 \\ 0 \end{bmatrix}
  2. 1=0×0+1×1\ket{1} = 0 \times \ket{0} + 1 \times \ket{1}[01]\begin{bmatrix} 0 \\ 1 \end{bmatrix}
  3. 120+121\frac{1}{\sqrt{2}} \ket{0} + \frac{1}{\sqrt{2}} \ket{1}[1212]\begin{bmatrix} \frac{1}{\sqrt{2}} \\ \frac{1}{\sqrt{2}} \end{bmatrix}
  4. 120121\frac{1}{\sqrt{2}} \ket{0} - \frac{1}{\sqrt{2}} \ket{1}[1212]\begin{bmatrix} \frac{1}{\sqrt{2}} \\ -\frac{1}{\sqrt{2}} \end{bmatrix}

量子ゲートの行列表現

例えば XX ゲートは、01,10\ket{0} \mapsto \ket{1}, \ket{1} \mapsto \ket{0} という操作を表す。 (つまり、XX ゲートはビット反転を表す)

このとき XX ゲートは行列を用いて

X=[0110]X = \begin{bmatrix} 0 & 1 \\ 1 & 0 \end{bmatrix}

と表せる。

例えば XX ゲートを [αβ]\begin{bmatrix} \alpha \\ \beta \end{bmatrix} に作用させると

X([αβ])=[0110][αβ]=[βα]X\left(\begin{bmatrix} \alpha \\ \beta \end{bmatrix}\right) = \begin{bmatrix} 0 & 1 \\ 1 & 0 \end{bmatrix} \begin{bmatrix} \alpha \\ \beta \end{bmatrix} = \begin{bmatrix} \beta \\ \alpha \end{bmatrix}

となり、01,10\ket{0} \mapsto \ket{1}, \ket{1} \mapsto \ket{0} が確認できる。

他の量子ゲート

Y=[0ii0]Z=[1001]H=12[1111]S=[100i]R=[100exp(iπ4)]\begin{aligned} Y &= \begin{bmatrix} 0 & -i \\ i & 0 \end{bmatrix} \\ Z &= \begin{bmatrix} 1 & 0 \\ 0 & -1 \end{bmatrix} \\ H &= \frac{1}{\sqrt{2}} \begin{bmatrix} 1 & 1 \\ 1 & -1 \end{bmatrix} \\ S &= \begin{bmatrix} 1 & 0 \\ 0 & i \end{bmatrix} \\ R &= \begin{bmatrix} 1 & 0 \\ 0 & \exp(\frac{i\pi}{4}) \end{bmatrix} \end{aligned}

アダマールゲート HH

H=12[1111]H = \frac{1}{\sqrt{2}} \begin{bmatrix} 1 & 1 \\ 1 & -1 \end{bmatrix}

0,1\ket{0}, \ket{1}HH ゲートを作用させると

H([10])=12[1111][10]=[1212]H([01])=12[1111][01]=[1212]\begin{aligned} H\left( \begin{bmatrix} 1 \\ 0 \end{bmatrix} \right) &= \dfrac{1}{\sqrt{2}} \begin{bmatrix} 1 & 1 \\ 1 & -1 \end{bmatrix} \begin{bmatrix} 1 \\ 0 \end{bmatrix} \\ &= \begin{bmatrix} \dfrac{1}{\sqrt{2}} \\ \dfrac{1}{\sqrt{2}} \end{bmatrix} \\ H\left( \begin{bmatrix} 0 \\ 1 \end{bmatrix} \right) &= \dfrac{1}{\sqrt{2}} \begin{bmatrix} 1 & 1 \\ 1 & -1 \end{bmatrix} \begin{bmatrix} 0 \\ 1 \end{bmatrix} \\ &= \begin{bmatrix} \dfrac{1}{\sqrt{2}} \\ -\dfrac{1}{\sqrt{2}} \end{bmatrix} \end{aligned}

となり、HH ゲートは

0120+1211120121\begin{aligned} \ket{0} &\mapsto \dfrac{1}{\sqrt{2}} \ket{0} + \dfrac{1}{\sqrt{2}} \ket{1} \\ \ket{1} &\mapsto \dfrac{1}{\sqrt{2}} \ket{0} - \dfrac{1}{\sqrt{2}} \ket{1} \end{aligned}

という操作を表すことが分かる。

また、H2=IH^2 = I (II は単位行列) であることから、HH ゲートを2回作用させると元の状態に戻ることが分かる。

Hゲートを2回作用させた例
H2([10])=H([1212])=12[1111][1212]=[10]H2([01])=H([1212])=12[1111][1212]=[01]\begin{aligned} H^2\left( \begin{bmatrix} 1 \\ 0 \end{bmatrix} \right) &= H\left( \begin{bmatrix} \dfrac{1}{\sqrt{2}} \\ \dfrac{1}{\sqrt{2}} \end{bmatrix} \right) \\ &= \dfrac{1}{\sqrt{2}} \begin{bmatrix} 1 & 1 \\ 1 & -1 \end{bmatrix} \begin{bmatrix} \dfrac{1}{\sqrt{2}} \\ \dfrac{1}{\sqrt{2}} \end{bmatrix} \\ &= \begin{bmatrix} 1 \\ 0 \end{bmatrix} \\ H^2\left( \begin{bmatrix} 0 \\ 1 \end{bmatrix} \right) &= H\left( \begin{bmatrix} \dfrac{1}{\sqrt{2}} \\ -\dfrac{1}{\sqrt{2}} \end{bmatrix} \right) \\ &= \dfrac{1}{\sqrt{2}} \begin{bmatrix} 1 & 1 \\ 1 & -1 \end{bmatrix} \begin{bmatrix} \dfrac{1}{\sqrt{2}} \\ -\dfrac{1}{\sqrt{2}} \end{bmatrix} \\ &= \begin{bmatrix} 0 \\ 1 \end{bmatrix} \end{aligned}

テンソル積

2つの量子ビット ψ=α0+β1,ϕ=γ0+δ1\psi = \alpha \ket{0} + \beta \ket{1}, \phi = \gamma \ket{0} + \delta \ket{1} があるとき、これらのテンソル積は

ψϕ\psi \otimes \phi

で表される。

これを計算すると

ψϕ=(α0+β1)(γ0+δ1)=α0γ0+α0δ1+β1γ0+β1δ1=αγ00+αδ01+βγ10+βδ11\begin{aligned} \psi \otimes \phi &= (\alpha \ket{0} + \beta \ket{1}) \otimes (\gamma \ket{0} + \delta \ket {1}) \\ &= \alpha \ket{0} \otimes \gamma \ket{0} + \alpha \ket{0} \otimes \delta \ket{1} + \beta \ket{1} \otimes \gamma \ket{0} + \beta \ket{1} \otimes \delta \ket{1} \\ &= \alpha \gamma \ket{0} \otimes \ket{0} + \alpha \delta \ket{0} \otimes \ket{1} + \beta \gamma \ket{1} \otimes \ket{0} + \beta \delta \ket{1} \otimes \ket{1} \end{aligned}

となる。

また、あるテンソル積 ab\ket{a} \otimes \ket{b}ab\ket{ab} と表すことができる。 (ababaabb の連結) これを用いると

ψϕ=αγ00+αδ01+βγ10+βδ11\psi \otimes \phi = \alpha \gamma \ket{00} + \alpha \delta \ket{01} + \beta \gamma \ket{10} + \beta \delta \ket{11} \\

と表せる。

量子ビット ψϕ\psi \otimes \phi を観測すると、確率 αγ2,αδ2,βγ2,βδ2|\alpha \gamma|^2, |\alpha \delta|^2, |\beta \gamma|^2, |\beta \delta|^2 で状態 00,01,10,11\ket{00}, \ket{01}, \ket{10}, \ket{11} が得られる。

2量子ビットと関数

xx に対する関数 y=f(x)y = f(x) を量子ビットで表現すると

Uf(ab)=abf(a)U_f (\ket{a} \otimes \ket{b}) = \ket{a} \otimes \ket{b \oplus f(a)}

と表せる。

なぜ Vf(a)=f(a)V_f(\ket{a}) = \ket{f(a)} と表現できないのか

詳細は省く (というか私が分かってない) が、このような VfV_f はハードウェアで実装できない。 (ユニタリでない)

f(0)=0,f(1)=1f(0) = 0, f(1) = 1 の場合を考える。

aabbUf(ab)U_f(\ket{a} \otimes \ket{b})
000000\ket{00}
001101\ket{01}
110011\ket{11}
111110\ket{10}

上2行を見ると、f(a)=0f(a) = 0 なので、2ビット目がそのまま bb になっている。 下2行を見ると、f(a)=1f(a) = 1 なので、2ビット目が b1b \oplus 1 (bb の反転) になっている。

f(0)=1,f(1)=1f(0) = 1, f(1) = 1 の場合を考える。

aabbUf(ab)U_f(\ket{a} \otimes \ket{b})
000001\ket{01}
001100\ket{00}
110011\ket{11}
111110\ket{10}