らんだむな記憶

blogというものを体験してみようか!的なー

Qiskit (15)

$\mathrm{CNOT}_{1,2} \mathrm{CNOT}_{2,1} \mathrm{CNOT}_{1,2}$ を計算したい。$\mathrm{CNOT}_{1,2} = \ket{0}\bra{0} \otimes I + \ket{1}\bra{1} \otimes X$, $\mathrm{CNOT}_{2,1} = I \otimes \ket{0}\bra{0} + X \otimes \ket{1}\bra{1}$ を使って計算してみよう。

\begin{align*}
&\, (\mathrm{CNOT}_{1,2} \mathrm{CNOT}_{2,1} \mathrm{CNOT}_{1,2})(\ket{\psi} \otimes \ket{\phi}) \\
=&\, (\mathrm{CNOT}_{1,2} \mathrm{CNOT}_{2,1})(\ket{0}\braket{0 | \psi} \otimes \ket{\phi} + \ket{1}\braket{1 | \psi} \otimes X \ket{\phi}) \\
=&\, \mathrm{CNOT}_{1,2} (\ket{0}\braket{0 | \psi} \otimes \ket{0}\braket{0 | \phi} + \ket{1}\braket{1 | \psi} \otimes \ket{0}\bra{0} X \ket{\phi} \\
&+ X \ket{0}\braket{0 | \psi} \otimes \ket{1}\braket{1 | \phi} + X \ket{1}\braket{1 | \psi} \otimes \ket{1}\bra{1} X \ket{\phi}) \\
=&\, \mathrm{CNOT}_{1,2} (\ket{0}\braket{0 | \psi} \otimes \ket{0}\braket{0 | \phi} + \ket{1}\braket{1 | \psi} \otimes \ket{0}\braket{1 | \phi} \\
&+ \ket{1}\braket{0 | \psi} \otimes \ket{1}\braket{1 | \phi} + \ket{0}\braket{1 | \psi} \otimes \ket{1}\braket{0 | \phi}) \\
=&\, \ket{0}\braket{0 | \psi} \otimes \ket{0}\braket{0 | \phi} + \ket{0}\braket{1 | \psi} \otimes \ket{1}\braket{0 | \phi} \\
&+ \ket{1}\braket{1 | \psi} \otimes X \ket{0}\braket{1 | \phi} + \ket{1}\braket{0 | \psi} \otimes X \ket{1}\braket{1 | \phi} \\
=&\, \ket{0}\braket{0 | \psi} \otimes \ket{0}\braket{0 | \phi} + \ket{0}\braket{1 | \psi} \otimes \ket{1}\braket{0 | \phi} \\
&+ \ket{1}\braket{1 | \psi} \otimes \ket{1}\braket{1 | \phi} + \ket{1}\braket{0 | \psi} \otimes \ket{0}\braket{1 | \phi} \\
=&\, \braket{0 | \psi} \braket{0 | \phi} \ket{00} + \braket{1 | \psi} \braket{0 | \phi} \ket{01} + \braket{0 | \psi} \braket{1 | \phi} \ket{10} + \braket{1 | \psi} \braket{1 | \phi} \ket{11}
\end{align*}

となる。よって、第 1 量子ビットと第 2 量子ビットが交換されることが分かる。これが書籍 p.90 の SWAP ゲートの分解である。

流石に p.91 の $CCX$ ゲートはこんな手計算で分解していられないので内容を信じることにする。$CCX$ ゲートを実行すると CNOT ゲートが 6 回分に分解されるのでエラー率が上がるというのは心に留めておきたい。