制御NOT演算は2ビットの入力に対して行われる操作である。

この制御NOTでは、1番目のビットを制御ビット、
2番目のビットを標的ビットと呼ぶ。

制御ビットは入力されたものがそのまま出力される。
標的ビットは、制御ビットが$|0\rangle$のときは変化せず、
制御ビットが$|1\rangle$のときは反転する。

すなわち、第1ビットの制御ビットが$|1\rangle$のときのみ、第2ビットの標的ビットに、
\begin{align}
X=
\begin{pmatrix}
0 & 1 \\ 1 & 0
\end{pmatrix}
\end{align}

のNOT演算が掛かることを意味する。すなわち、
\begin{align}
|0\rangle |0\rangle \longrightarrow |0\rangle|0\rangle \\
|0\rangle |1\rangle \longrightarrow |0\rangle|1\rangle \\
|1\rangle |0\rangle \longrightarrow |1\rangle|1\rangle \\
|1\rangle |1\rangle \longrightarrow |1\rangle|0\rangle
\end{align}
という演算をする回路が制御NOT演算である。(図1.6)

clip004.jpg

図1.6:制御NOT変換

このような2ビットの演算も行列であらわすことを考える。
1ビットのときと同様にして、
2ビットの状態を縦ベクトルであらわすと、
\begin{align}
|0\rangle |0\rangle =\begin{pmatrix} 1 \\ 0 \\ 0 \\ 0 \end{pmatrix},
|0\rangle |1\rangle =\begin{pmatrix} 0 \\ 1 \\ 0 \\ 0 \end{pmatrix},
|1\rangle |0\rangle =\begin{pmatrix} 0 \\ 0 \\ 1 \\ 0 \end{pmatrix},
|1\rangle |1\rangle =\begin{pmatrix} 0 \\ 0 \\ 0 \\ 1 \end{pmatrix} \label{eq:Base1}
\end{align}
となる。これらを基底とすれば、制御NOTは
\begin{align}
\begin{pmatrix}
1 & 0 & 0 & 0 \\
0 & 1 & 0 & 0 \\
0 & 0 & 0 & 1 \\
0 & 0 & 1 & 0
\end{pmatrix}
\end{align}
と表すことができる。

次に1ビットのユニタリー変換と制御NOTの応用である、
制御U、制御Vについて述べる。