QPU 命令その 2
CNOT ゲート
条件付き X ゲート
CNOT ゲートは 2 量子ビットに作用する QPU 命令で、条件付きで X ゲートを適用します。 CNOT ゲートは以下のように、条件となる量子ビットに置かれるコントロールゲートと、X ゲートの 2 つから構成されます。 コントロールゲートを置いたビットを コントロールビット、X ゲートを置いたビットをターゲットビットと呼びます。 コントロールビットが 0 でないとき、ターゲットビットに置いた X ゲートが発動します。
以下の回路は CNOT の基本的な動きを見るものです。 最初の CNOT はビット 1 をコントロールビット、ビット 2 をターゲットビットとして X ゲートを適用します。 コントロールビットは \(|1\rangle\) なので X ゲートが発動し、ターゲットビットが反転して \(|0\rangle\) から \(|1\rangle\) になっていることが分かります。 2 つめの CNOT では、コントロールビットは \(|0\rangle\) です。このため X ゲートは発動せず、ターゲットビットはそのままです。
CNOT が量子ゲートたるゆえんは、コントロールビットが重ね合わせ状態を取れることです。 たとえば、次のようにコントロールビットを H ゲートで重ね合わせにした状態で CNOT を適用することができます。この結果は \(|0\rangle\) と \(|3\rangle\) の等しい重ね合わせとなります。
この動作を順を追って見ていきましょう。 ビット 1 に H ゲートを適用すると、演算ペアのルール演算ペアを参照。により \(|0\rangle\) \(|1\rangle\) のペアに H ゲートが作用し、重ね合わせ状態ができます。
次にビット 1 をコントロールビット、ビット 2 をターゲットビットとする CNOT を適用します。 ターゲットはビット 2 なので、X ゲートの適用先は次の演算ペアとなります。
ここで、コントロールビットであるビット 1 によって X ゲートを適用する演算ペアを選びます。 ビットで見るために \(|0\rangle\), \(|1\rangle\), \(|2\rangle\), \(|3\rangle\) をそれぞれ 2 進数で表すと \(|00\rangle\), \(|01\rangle\), \(|10\rangle\), \(|11\rangle\) となります。 このうちビット 1 が立っているのは \(|01\rangle\) と \(|11\rangle\) (青色の円) だけなので、\(|1\rangle\) と \(|3\rangle\) のペアのみに X ゲートを適用します。
以上より、確かに \(|0\rangle\) と \(|3\rangle\) の等しい重ね合わせが得られました。
CNOT の逆演算
CNOT の逆演算は CNOT それ自身です。 以下のように CNOT を並べて見ると、2 つの X ゲートは発動する条件 (コントロールビット) が同じであること、また X ゲートはそれ自体が X ゲートの逆演算であることから、CNOT を並べると何もしないことが分かります。