0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

[WIP] 量子計算チートシート

Last updated at Posted at 2020-02-22

$$
\def\bra#1{\mathinner{\left\langle{#1}\right|}}
\def\ket#1{\mathinner{\left|{#1}\right\rangle}}
\def\braket#1#2{\mathinner{\left\langle{#1}\middle|#2\right\rangle}}
$$

ブロッホ球

三角関数の単位円みたいなもの。量子ビットの状態を表す球体。量子ビットに演算子を適用すると、量子ビットの状態を表すベクトルが、この球体の表面上を動き回る。


出典:wikipedia

\begin{align}
\psi &= \cos (\theta / 2) \ket{0} + e^{i \phi} \sin (\theta / 2) \ket{1} \\
     &= \cos (\theta / 2) \ket{0} + ( \cos \phi + i \sin \phi) \sin (\theta / 2)\ket{1}
\end{align}

ブラケット記法

ケット

\ket 0 = 
\begin{pmatrix}
1 \\
0
\end{pmatrix} \\
\ket 1 = 
\begin{pmatrix}
0 \\
1
\end{pmatrix}

ブラ

\bra 0 = 
\begin{pmatrix}
1 & 0
\end{pmatrix} = \ket 0 ^{\dagger} \\

\bra 1 = 
\begin{pmatrix}
0 & 1
\end{pmatrix} = \ket 1 ^{\dagger} \\

ブラケット

\braket 0 0 = 1 \\
\braket 0 1 = 0 \\
\braket 1 0 = 0 \\
\braket 1 1 = 1

量子ビット

1量子ビット

\ket{0} =
\begin{pmatrix}
1 \\
0
\end{pmatrix} \\

\ket{1} =
\begin{pmatrix}
0 \\
1
\end{pmatrix}

2量子ビット

\ket{00} =
\begin{pmatrix}
1 \\
0 \\
0 \\
0
\end{pmatrix} \\

\ket{01} =
\begin{pmatrix}
0 \\
1 \\
0 \\
0
\end{pmatrix} \\

\ket{10} =
\begin{pmatrix}
0 \\
0 \\
1 \\
0
\end{pmatrix} \\

\ket{11} =
\begin{pmatrix}
0 \\
0 \\
0 \\
1
\end{pmatrix}

n量子ビット

\ket{0...0}, \ket{0...1}, ...

演算子

パウリ演算子

恒等演算子

ブロッホ球に対して、量子を回転させない演算子。

I=\ket{0}\bra{0}+\ket{1}\bra{1}=
\begin{pmatrix}
1 & 0 \\
0 & 1
\end{pmatrix}

ビット反転演算子

ブロッホ球に対して、量子を+X軸に$\pi$回転させる演算子。

X=\ket{0}\bra{1}+\ket{1}\bra{0}=
\begin{pmatrix}
0 & 1 \\
1 & 0
\end{pmatrix}
        ┌───┐
q_0: |0>┤ X ├
        └───┘

ビット・位相反転演算子

ブロッホ球に対して、量子を+Y軸方向に$\pi$回転させる演算子。

Y=i(\ket{0}\bra{1}-\ket{1}\bra{0})=
\begin{pmatrix}
0 & -i \\
i & 0
\end{pmatrix}
        ┌───┐
q_0: |0>┤ Y ├
        └───┘

位相反転演算子

ブロッホ球に対して、量子を+Z軸方向に$\pi$回転させる演算子。

Z=\ket{0}\bra{0}-\ket{1}\bra{1}=
\begin{pmatrix}
1 & 0 \\
0 & -1
\end{pmatrix}
        ┌───┐
q_0: |0>┤ Z ├
        └───┘

アダマール演算子

ブロッホ球に対して、量子を+Y軸方向に$\pi/2$回転させる演算子。

H=\frac{1}{\sqrt{2}}(\ket{0}\bra{0}+\ket{0}\bra{1}+\ket{1}\bra{0}-\ket{1}\bra{1})=
\frac{1}{\sqrt{2}}
\begin{pmatrix}
1 & 1 \\
1 & -1
\end{pmatrix}
        ┌───┐
q_0: |0>┤ H ├
        └───┘

位相演算

ブロッホ球に対して、量子を+Z軸方向に$\pi/2$度回転させる位相演算。

S=\ket{0}\bra{0}+i\ket{1}\bra{1}=
\begin{pmatrix}
1 & 0 \\
0 & i
\end{pmatrix}
        ┌───┐
q_0: |0>┤ S ├
        └───┘

ブロッホ球に対して、量子を+Z軸方向に$\pi/4$回転させる位相演算。

T=\ket{0}\bra{0}+e^{\frac{i \pi}{4} }\ket{1}\bra{1}=
\begin{pmatrix}
1 & 0 \\
0 & e^{\frac{i \pi}{4} }
\end{pmatrix}
        ┌───┐
q_0: |0>┤ T ├
        └───┘

回転演算

Rx

ブロッホ球に対して、量子をX軸方向に$\theta$回転させる位相演算。

\begin{align}
R_x(\theta) =& \cos\frac{\theta}{2}(\ket{0}\bra{0}+\ket{1}\bra{1})-i\sin\frac{\theta}{2}(\ket{1}\bra{0}+\ket{0}\bra{1}) \\
            =& \begin{pmatrix}
\cos\frac{\theta}{2} & -i\sin\frac{\theta}{2} \\
-i\sin\frac{\theta}{2} & \cos\frac{\theta}{2}
\end{pmatrix}
\end{align}

ここで、X軸方向に$\theta$回転させることは、行列指数関数の級数展開の定義を使うことで示すことができる。

\begin{align}
R_x(\theta ) &= e^{-i\frac{\theta}{2} X} \\
&= \sum _{k=0} ^{\infty} \frac{(-i\frac{\theta}{2} ) ^{k}}{k!} X^{k} \\
&= \sum _{l=0} ^{\infty} \frac{(-i\frac{\theta}{2} ) ^{2l}}{(2l)!} X^{2l} + 
\sum _{l=0} ^{\infty} \frac{(-i\frac{\theta}{2} ) ^{2l+1}}{(2l+1)!} X^{2l+1} \\
&= \sum _{l=0} ^{\infty} \frac{(-1) ^{l}\frac{\theta}{2} ^{2l}}{(2l)!} I 
- i\sum _{l=0} ^{\infty} \frac{(-1) ^{l} \frac{\theta}{2} ^{2l+1}}{(2l+1)!} X\\
&= \cos \frac{\theta}{2} I - i \sin \frac{\theta}{2} X \\
&= \cos \frac{\theta}{2} \begin{pmatrix}
1 & 0 \\
0 & 1
\end{pmatrix} - i \sin \frac{\theta}{2} \begin{pmatrix}
0 & 1 \\
1 & 0
\end{pmatrix} \\
&= \begin{pmatrix}
\cos\frac{\theta}{2} & -i\sin\frac{\theta}{2} \\
-i\sin\frac{\theta}{2} & \cos\frac{\theta}{2}
\end{pmatrix}
\end{align}

Ry

ブロッホ球に対して、量子をY軸方向に$\theta$回転させる位相演算。

\begin{align}
R_y(\theta) &= \cos\frac{\theta}{2}(\ket{0}\bra{0}+\ket{1}\bra{1})+
\sin\frac{\theta}{2}(\ket{1}\bra{0}-\ket{0}\bra{1}) \\
            &= \begin{pmatrix}
\cos\frac{\theta}{2} & -\sin\frac{\theta}{2} \\
\sin\frac{\theta}{2} & \cos\frac{\theta}{2}
\end{pmatrix}
\end{align}

ここで、Y軸方向に$\theta$回転させることは、行列指数関数の級数展開の定義を使うことで示すことができる。

\begin{align}
R_y(\theta ) &= e^{-i\frac{\theta}{2} Y} \\
&= \sum _{k=0} ^{\infty} \frac{(-i\frac{\theta}{2} ) ^{k}}{k!} Y^{k} \\
&= \sum _{l=0} ^{\infty} \frac{(-i\frac{\theta}{2} ) ^{2l}}{(2l)!} Y^{2l} + 
\sum _{l=0} ^{\infty} \frac{(-i\frac{\theta}{2} ) ^{2l+1}}{(2l+1)!} Y^{2l+1} \\
&= \sum _{l=0} ^{\infty} \frac{(-1) ^{l}\frac{\theta}{2} ^{2l}}{(2l)!} I 
- i\sum _{l=0} ^{\infty} \frac{(-1) ^{l} \frac{\theta}{2} ^{2l+1}}{(2l+1)!} Y\\
&= \cos \frac{\theta}{2} I - i \sin \frac{\theta}{2} Y \\
&= \cos \frac{\theta}{2} \begin{pmatrix}
1 & 0 \\
0 & 1
\end{pmatrix} - i \sin \frac{\theta}{2} \begin{pmatrix}
0 & -i \\
i & 0
\end{pmatrix} \\
&= \begin{pmatrix}
\cos\frac{\theta}{2} & -\sin\frac{\theta}{2} \\
\sin\frac{\theta}{2} & \cos\frac{\theta}{2}
\end{pmatrix}
\end{align}

Rz

ブロッホ球に対して、量子をZ軸方向に$\theta$回転させる位相演算。

\begin{align}
R_z(\theta) &= e^{-i\frac{\theta}{2}}\ket{0}\bra{0}+e^{i\frac{\theta}{2}}\ket{1}\bra{1} \\
            &= \begin{pmatrix}
e^{-i\frac{\theta}{2}} & 0 \\
0 & e^{i\frac{\theta}{2}}
\end{pmatrix}
\end{align}

ここで、Z軸方向に$\theta$回転させることは、行列指数関数の級数展開の定義を使うことで示すことができる。

\begin{align}
R_z(\theta ) &= e^{-i\frac{\theta}{2} Z} \\
&= \sum _{k=0} ^{\infty} \frac{(-i\frac{\theta}{2} ) ^{k}}{k!} Z^{k} \\
&= \sum _{l=0} ^{\infty} \frac{(-i\frac{\theta}{2} ) ^{2l}}{(2l)!} Z^{2l} + 
\sum _{l=0} ^{\infty} \frac{(-i\frac{\theta}{2} ) ^{2l+1}}{(2l+1)!} Z^{2l+1} \\
&= \sum _{l=0} ^{\infty} \frac{(-1) ^{l}\frac{\theta}{2} ^{2l}}{(2l)!} I 
- i\sum _{l=0} ^{\infty} \frac{(-1) ^{l} \frac{\theta}{2} ^{2l+1}}{(2l+1)!} Z\\
&= \cos \frac{\theta}{2} I - i \sin \frac{\theta}{2} Z \\
&= \cos \frac{\theta}{2} \begin{pmatrix}
1 & 0 \\
0 & 1
\end{pmatrix} - i \sin \frac{\theta}{2} \begin{pmatrix}
1 & 0 \\
0 & -1
\end{pmatrix} \\
&= \begin{pmatrix}
\cos\frac{\theta}{2} - i\sin\frac{\theta}{2} & 0 \\
0 & \cos\frac{\theta}{2} + i\sin\frac{\theta}{2}
\end{pmatrix} \\
&= \begin{pmatrix}
e^{-i\frac{\theta}{2}} & 0 \\
0 & e^{i\frac{\theta}{2}}
\end{pmatrix}
\end{align}

2量子ビット演算子

制御NOT演算子(CNOT)

第1ビットが$\ket 1$場合に第2ビットをビット反転する演算。
より一般的に第nビットが$\ket 1$場合に第mビットをビット反転する演算を$\Lambda(X)_{n,m}$とよぶ。

\Lambda(X)_{1,2}=\ket{00}\bra{00}+\ket{01}\bra{01}+\ket{10}\bra{11}+\ket{11}\bra{10}=
\begin{pmatrix}
1 & 0 & 0 & 0 \\
0 & 1 & 0 & 0 \\
0 & 0 & 0 & 1 \\
0 & 0 & 1 & 0
\end{pmatrix}
q_0: |0>──■──
        ┌─┴─┐
q_1: |0>┤ X ├
        └───┘

SWAPゲート

\Lambda(X)=\ket{00}\bra{00}+\ket{01}\bra{10}+\ket{10}\bra{01}+\ket{11}\bra{11}=
\begin{pmatrix}
1 & 0 & 0 & 0 \\
0 & 0 & 1 & 0 \\
0 & 1 & 0 & 0 \\
0 & 0 & 0 & 1
\end{pmatrix}

ユニタリ演算

第1ビットが$\ket 1$場合にユニタリ行列$U$を作用させる演算。

\Lambda(U)=\ket 0 \bra 0 I \otimes \ket 1 \bra 1 U

3量子ビット演算

トフォリゲート(CCNOT)

第1,2ビットが$\ket 1$の場合に第3ビットをビット反転する演算。

q_0: |0>──■──
          │  
q_1: |0>──■──
        ┌─┴─┐
q_2: |0>┤ X ├
        └───┘

アルゴリズム

アダマールテスト

( H \otimes I ) \Lambda(U) ( H \otimes I )( \ket 0 \otimes \ket \psi )
0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?