量子計算理論(森前 著) の演習問題を解く part1

こんにちは。Kumaです。

最近、量子コンピュータについて勉強しています。
今回は有名な以下の本の演習問題について、解答が載っていないので一部書いてみたいとおもいます。
f:id:phymath1991:20181224165540p:plain
量子計算理論 量子コンピュータの原理 | 森北出版株式会社

二章はチューリングマシンから始まりますが、あまり詳しくないのでpp.15- (古典的確率状態)から書いていきます。

pp.15.1 Xゲートの確認


X =
\begin{pmatrix}
0 & 1 \\
1 & 0
\end{pmatrix}
としたときに、 X | 0 \rangle = | 1 \rangle および  X | 1 \rangle = | 0 \rangle を示せ。

  • 解答

行列演算で示す。

 | 0 \rangle
 =
\begin{pmatrix}
1 \\
0
\end{pmatrix}
および

 | 1 \rangle
 =
\begin{pmatrix}
0 \\
1
\end{pmatrix}

なので

 X | 0 \rangle

=

 \begin{pmatrix}
0 & 1 \\
1 & 0
 \end{pmatrix}

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

=

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

=

 | 1 \rangle

と示される。同様に


 X | 1 \rangle

=

 \begin{pmatrix}
0 & 1 \\
1 & 0
 \end{pmatrix}

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

=

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

=

 | 0 \rangle

pp.16.1 トフォリゲートの確認

トフォリゲートを「三量子ビットに作用する演算であって、第一および第二量子ビットが1のときに限り第三量子ビットを反転させるもの」とする。即ち
 T = ( I \otimes I - |11\rangle \langle 11| ) \otimes I + |11 \rangle \langle 11| \otimes X
ただし Iは恒等演算子であって  I = | 0 \rangle  \langle 0 | +  | 1 \rangle  \langle 1 | である。
また加算記号 \oplusはmod 2 の加算である。
このとき、任意の a,b,c \in {0,1}に対して T |a,b,c \rangle = |a,b,c \oplus ab \rangle を示せ。

  • 解答

確認しながらやっていく。まずは
 Iは恒等演算子であって  I = | 0 \rangle  \langle 0 | +  | 1 \rangle  \langle 1 | である。”
を理解しよう。
 I | 0 \rangle = | 0 \rangle かつ  I | 1 \rangle = | 1 \rangle であれば納得できそうである。これを示そう。
 I | 0 \rangle =(| 0 \rangle  \langle 0 | +  | 1 \rangle  \langle 1 | ) | 0 \rangle = | 0 \rangle  \langle 0 |  0 \rangle + | 1 \rangle  \langle 1 |  0 \rangle
ここで、 \langle 0 |  0 \rangle = 1 , \langle 1 |  1 \rangle = 1, \langle 0 |  1 \rangle = \langle 1 |  0 \rangle = 0 を思い出そう。(直交性)
すると
 I | 0 \rangle = 1 *  | 0 \rangle + 0* | 1 \rangle =  | 0 \rangle となり示された。
同様にして  I | 1 \rangle = 0 *  | 0 \rangle + 1* | 1 \rangle =  | 1 \rangle も示せるので、 Iがたしかに恒等写像になっていることがわかった。
*1

次にトフォリゲートを理解しよう。
" T = ( I \otimes I - |11\rangle \langle 11| ) \otimes I + |11 \rangle \langle 11| \otimes X
というゲートが「三量子ビットに作用する演算であって、第一も第二量子ビットも1のときに限り第三量子ビットを反転させるもの」といえることを確認する。"

具体的にみて納得しよう。例えば T|0 0 0 \rangle = |0 0 0 \rangle,  T|0 1 0 \rangle = |0 1 1 \rangle などを確認したい。*2
初めに T|0 0 0 \rangle = |0 0 0 \rangle を確認する。
 T|0 0 0 \rangle \\

=

 ( I \otimes I - |11\rangle \langle 11| ) \otimes I + |11 \rangle \langle 11| \otimes X|0 0 0 \rangle \\

=

 ( I \otimes I  \otimes I |)0 0 0 \rangle - (|11\rangle \langle 11| \otimes I |)0 0 0 \rangle +  (|11 \rangle \langle 11| \otimes X|)0 0 0 \rangle \\

ここで、出てきた  |11\rangle \langle 11| \otimes I という演算子がちょっと難しいので解説する。
まず、テンソル \otimes の左右で独立と思って良い。つまりこの場合はテンソル積の左 |11\rangle \langle 11| と右 I でわけて考える。
テンソル積の左は第一量子ビットと第二量子ビットで作られる空間 例えば |0_{q_{1}} 0_{q_{2}} \rangle に対して作用する二量子ビット演算子である。
テンソル積の右は、第三量子ビットだけで作られる空間  例えば |0_{q_{3}} \rangle に対して作用する一量子ビット演算子である。
つまり  |11\rangle \langle 11| \otimes I |0 0 0 \rangle は、 |11\rangle \langle 11| 0_{q_{1}} 0_{q_{2}} \rangle = 0*| 11 \rangle = 0 *3かつ  I |0_{q_{3}} \rangle  = | 0 \rangle より
 |11\rangle \langle 11| \otimes I |0 0 0 \rangle = 0 となる。
*4
よって
 T|0 0 0 \rangle \\

=


 ( I \otimes I  \otimes I |)0 0 0 \rangle - (|11\rangle \langle 11| \otimes I |)0 0 0 \rangle +  (|11 \rangle \langle 11| \otimes X|)0 0 0 \rangle \\

=

 |000 \rangle - 0 + 0 \\

=

 |0 0 0 \rangle



全く同様にして他の入力に対する演算も確かめられる。
例えば、
 T|1 1 0 \rangle \\

=


 ( I \otimes I  \otimes I |)1 1 0 \rangle - (|11\rangle \langle 11| \otimes I |)1 1 0 \rangle +  (|11 \rangle \langle 11| \otimes X|)1 1 0 \rangle \\

=

 |110 \rangle - |110 \rangle + |111 \rangle \\

=

 |1 1 1 \rangle

 T|1 0 0 \rangle \\

=


 ( I \otimes I  \otimes I |)1 0 0 \rangle - (|11\rangle \langle 11| \otimes I |)1 0 0 \rangle +  (|11 \rangle \langle 11| \otimes X|)1 0 0 \rangle \\

=

 |100 \rangle - 0 + 0 \\

=

 |100 \rangle

確かに入力の第一量子ビットも第二量子ビットも1,つまり |1 1 * \rangle のときだけ第三量子ビットが反転しそうである。
これを納得できれば*5、題意は簡単に示せる。
まず a=b=1のとき、ab = 1 であり、 aかbのいずれかが0のときは ab = 0 である]
そしてあるbit  cに対して1とmod 2加算( c \oplus 1)を行うと、bitは反転する( \bar{c})。0であればbitは変化しない。
そのため、明らかに
"任意の a,b,c \in {0,1}に対して T |a,b,c \rangle = |a,b,c \oplus ab \rangle " を満たす事(トフォリゲートの別表現)がわかる。

今回はここまで。

*1:これは |0\rangle 方向成分と |1\rangle 方向成分に分解してから足し合わせる という(つまり何もしない)演算をしていることになる。

*2:ここで、トフォリゲートは第一量子ビットと第二量子ビットに対しては何も操作しない。これらのビットは第三ビットへの演算を決めるだけの役割なので、トフォリゲートにおける制御ビットあるいはコントロールビットと呼ばれる。

*3:直交性を使った

*4:テンソル積の左側の演算は直交性より0となるので、右側の演算に関係なく状態が0(消滅)となる。 0 と |0 \rangle の違いに注意しよう

*5:8通り全部試せばよいが、ここでは紙面の都合上やらない