量子コンピュータにおけるデータの表現と操作をまとめます。
量子ビット
現在のコンピュータのデータは0か1で表現しますが、量子コンピュータは0と1を持つ三次元の球(ブロッホ球)で表現されます。
初期状態では、量子ビットの値は0にセットされ、ブロッホ球の三次元平面上のデータを操作するために量子ゲートが使われます。
量子ゲート
0からスタートするデータは、量子ゲートを利用することで操作できます。量子ゲートはXYZの3軸での回転で行います。H(アダマール)ゲートだけは、XZの間45度の軸での回転を行います。
基本となる量子ゲートはパウリゲートと呼ばれ、XYZ軸周りの180度の回転を行います。
HゲートはXZ軸周りの180度回転で、こちらは便利で、0状態を+状態に、+状態を0状態に変換することができ、重ね合わせ状態を作ったり、解除したりできます。
Z軸上にデータがあるときにZ軸回転をしても何も起きません。軸をうまく使って回転の効果を出します。
SゲートはZゲートと同じ回転軸ですが、回転角度が90度です。
TゲートはZゲートと同じ回転軸ですが、回転角度が45度です。
SとTに関しては十字マークのダガーがつく場合がありますが、逆回転を意味し、それぞれ、-90度、-45度回転を表します。
任意回転ゲート
上記は回転角度が180度や90度、45度で決まっていましたが、任意の回転角度を行うゲートもあります。
RX,RY,RZゲートは自由に角度を指定します。位相(フェーズ)ゲートはRZと同じです。
角度を複数指定するものもあります。U1,U2,U3は、U1は位相ゲートと同じですが、U2は角度を二つ指定、U3は三つ指定できます。
回転と行列
回転を数学的に操作する際には行列を使います。量子ゲートにはそれぞれ行列表現が割り当てられており、確かめをする際には行列を使います。
2量子ビットゲート
単体の量子ビットには回転が割り当てられているのがわかりました。2量子ビットゲートも回転を利用しますが、条件付きの回転ゲートが基本となっています。
条件付きの回転ゲートには、「コントロールビット」と「ターゲットビット」があります。コントロールビットが0の時には何もしませんが、1の時にはターゲットビットに指定の量子ゲートを適用します。
CX,CY,CZゲートは、「コントロールビット」が1のときに「ターゲットビット」にそれぞれ、X,Y,Zゲートを適用します。CXはCNOTとも呼ばれます。
CRX,CRY,CRZ,CU1,CU2,CU3ゲートも同様です。「コントロールビット」が1のときに「ターゲットビット」にそれぞれ、RX,RY,RZ,U1,U2,U3ゲートを適用します。
その他、2つのゲートを交換するSWAPゲート(中身はCXゲート3つ)があります。
RXX,RYY,RZZ
条件付きでないゲートもあります。RXX,RYY,RZZは任意回転の2量子ビットゲートでこれから使われることになると思います。
まとめ
量子ゲートはXYZ軸周りの回転が基本となっていて、それから派生した便利なツールがあります。極論言うとRX,RY,RZとCXゲートだけあればいいのですが、アプリケーションの使い勝手によってよく利用するゲートなどは覚えておくと便利です。