量子ゲート

量子ゲートとは

量子ゲートは基本構成ブロックで量子回路を形成し、量子アルゴリズムの実行を可能にする基本の論理要素として機能します。これらのアルゴリズムは、化学、最適化、AI、その他さまざまな分野で使用されています。

こうした特殊な量子ゲートは、量子ビットの状態を操作することで、量子アルゴリズムにより複雑な演算を処理したり、並列処理、干渉、量子もつれ、重ね合わせなどさまざまな量子計算能力を利用したりすることを可能にします。

古典ゲートと量子ゲートの違い

量子ゲートは、古典ゲートとは異なり、古典ビットではなく量子ビットを利用して計算を行います。古典ビットはいかなる時でも 0 または 1 のいずれかの状態しか取ることができません。量子ビットは 0 と 1 の状態を同時に取ることができます。これを重ね合わせといい、この性質により量子ゲートは複数の計算を同時に実行することができます。また、量子ゲートにより、量子ビットのもつれを生成することができ、それにより一方の量子ビットに変更を加えると即座にもう一方の量子ビットに影響が及ぶというユニークな関係性が生じます。量子アルゴリズムは量子ゲートのこうした特徴を使用して計算を行い、特定のタスクにおいて、古典的アルゴリズムよりも効率的に計算を行うことができます。

量子ゲートの一般的なタイプ

量子ゲートには一般に、パウリ、クリフォード、非クリフォード、回転、制御、マルチ量子ビットゲートなどのタイプがあります。

パウリゲート

パウリゲートとは、パウリ行列によって表現される 1 量子ビット量子ゲートの集合のことです。パウリゲートは 3 つのパウリ X、Y、Z ゲートから成り、それぞれがブロッホ球の各軸の周りを π ラジアン (180 度) 回転する操作に対応します。パウリゲートには次の特性があります。

  • エルミート行列である: (\( U^{†} = U\))。\( U^{†} \) は \( U\) の共役転置です。
  • ユニタリ行列である: (\( U^{†} U = U U^{†} = I \))。\( I\) は単位行列です。
  • 固有値は ±1 である。
ブロッホ球の MATLAB 3 次元プロット。赤色の線は状態 |0⟩ の 1 量子ビットを示しています。

MATLAB の補助関数 plotBlochSphere を使用して作成した、量子状態 |0⟩ を示すブロッホ球。

クリフォードゲート

パウリ演算子の前後にクリフォードゲートを加えると、別のパウリ演算子が生成されます。クリフォードゲートの集合はクリフォード群と呼ばれる群を形成します。クリフォード群は量子誤り訂正や量子計算における重要な概念です。クリフォードゲートの代表的な例には、パウリ X、Y、Z ゲート、アダマールゲート (H)、位相ゲート、制御 X、Y、Z ゲートなどがあります。

クリフォードゲートには次の特性があります。

  • パウリ群を共役によりそれ自身に写像します。例: \( HXH^{†} = Z \)。ここでの \( H^{†} \) は、アダマールゲート \( H\) のエルミート共役 (または随伴行列) であり、\( H\) はクリフォードゲートとして機能します。\( X\) と \( Z\) はそれぞれ、パウリ X ゲートおよびパウリ Z ゲートです。
  • これらのゲートは古典ゲートを使って効率的にシミュレーションが可能であることが、Gottesman-Knill の定理によって知られています。
  • 量子誤り訂正で重要な役割を果たします。

非クリフォードゲート

非クリフォードゲートの代表的な例は T ゲートとトフォリゲートです。

回転ゲート

量子計算における回転ゲートとは、ブロッホ球の特定の軸を中心として量子ビットの状態を回転させる操作のことです。各回転ゲートは角度 θ によってパラメーター化され、その角度の回転に対応します。最も一般的な回転ゲートは次のとおりです。

  • x 軸回転ゲート。量子ビットをブロッホ球の x 軸を中心に角度 \( θ \) で回転させる。
  • y 軸回転ゲート。量子ビットを y 軸を中心に角度 \( θ \) で回転させる。
  • z 軸回転ゲート。量子ビットを z 軸を中心に角度 \( θ \) で回転させる。
  • グローバル位相での z 軸回転ゲート。グローバル位相差がある z 軸回転ゲートと同等です。

これらのゲートは任意の 1 量子ビット状態を作成するときに必要になります。量子状態の操作および量子計算では、このように回転を正確に実行することが不可欠です。

制御ゲート

量子計算における制御ゲートとは、1 つ以上の量子ビットが他の量子ビット (ターゲット) で実行される操作の制御役を果たすマルチ量子ビットゲートです。この操作は、制御量子ビットが特定の状態 (通常は状態 \( |1⟩ \)) にある場合にのみ、ターゲットである量子ビットに対して実行されます。最も一般的な例は、制御量子ビットが \( |1⟩ \) のときにターゲットの量子ビットを反転させる CNOT (制御 X ゲート) と、制御量子ビットが \( |1⟩ \) のときに x 軸を中心に角度 \( θ \) でターゲットの量子ビットを回転させる制御 x 軸回転ゲートです。制御ゲートは、量子もつれを生成したり、量子回路に条件付きロジックを実装したりするときに使用します。制御ゲートにはこの他に、制御 Z ゲート、制御アダマールゲート、CCNOTゲート (トフォリゲート) などがあります。

制御量子ビットとターゲット量子ビットを示す CNOT ゲートのプロット。

制御量子ビットとターゲット量子ビットの位置関係を示す CNOT ゲート。

マルチ量子ビットゲート

2 つ以上の量子ビットを利用して演算を行う量子ゲートをマルチ量子ビットゲートといいます。このゲートを使用すると複雑にもつれた量子状態の作成を可能にし、複雑な量子アルゴリズムを実行することができます。

量子ゲートの性質

量子ゲートにはいくつかの特殊な性質があります。

  1. ユニタリ性: 量子ゲートはユニタリ行列です。これは、量子ビットの状態のすべての確率が保存されることを意味します。ゲートの演算後、量子ビットが取り得るすべての状態の確率の合計は 1 になります。
  2. 可逆性: 量子ゲートは可逆であり、演算前に戻すことができます。
  3. 可統合性:
    • 並列演算 (テンソル積): パウリ Z ゲートやパウリ X ゲートなどの量子ゲートは、量子ビットに対して並列に作用することができます。1 つにまとめると演算は次のようになります。

      \( X \vert q_1⟩ \otimes Z \vert q_0⟩ = (X \otimes Z)\vert q_1 q_0⟩ \)

      \( X \otimes Z = \begin{bmatrix} 0\begin{bmatrix} 1 & 0 \\ 0 & -1 \end{bmatrix} & 1\begin{bmatrix} 1 & 0 \\ 0 & -1 \end{bmatrix} \\ 1\begin{bmatrix} 1 & 0 \\ 0 & -1 \end{bmatrix} & 0\begin{bmatrix} 1 & 0 \\ 0 & -1 \end{bmatrix} \end{bmatrix} = \begin{bmatrix} \begin{matrix} 0 & 0 \\ 0 & 0 \end{matrix} & \begin{matrix} 1 & 0 \\ 0 & -1 \end{matrix} \\ \begin{matrix} 1 & 0 \\ 0 & -1 \end{matrix} & \begin{matrix} 0 & 0 \\ 0 & 0 \end{matrix} \end{bmatrix}\)

      テンソル積の演算を使用すると、量子ビットの組み合わせ状態に対してゲートが及ぼす影響を記述できます。

    • 直列演算 (行列乗算): 量子ゲートは、量子ビットに対して順々に作用することも可能です。1 つにまとめると演算は次のようになります。

      \( (Z \bullet X) \vert q⟩ \)

      ここでは、量子ビット \( q\)に対して \( X\) そして \( Z\) の順で作用します。

      \( (Z \bullet X) = \begin{bmatrix} 1 & 0 \\ 0 & -1 \end{bmatrix} \begin{bmatrix} 0 & 1 \\ -1 & 0 \end{bmatrix} = \begin{bmatrix} 0 & 1 \\ -1 & 0 \end{bmatrix} \)

      行列乗算を使用すると、量子ビットの組み合わせ状態に対して直列ゲートが及ぼす影響を記述することができます。

2 つの量子回路を示すモデル: 左側の Z および X ゲートは異なる 2 つの量子ビットを使用して並列に演算し、右側の X および Z ゲートは 1 量子ビットを使用して直列に演算します。

量子ゲートを配置する 2 つの方法: 並列演算と直列演算。左側では、量子ゲート Z と X が 2 つの量子ビット \( q\)0 と \( q\)1 に並列に適用されています。右側では、量子ゲート X と Z が 1 量子ビット \( q\) に直列に適用されています。

結果として得られる行列は、量子ゲートが並列か直列かに関係なく量子ビットの状態に対する量子ゲートの全体の影響を表現しています。

量子ゲートのユニバーサルセット

量子ゲートのユニバーサルセットとは、任意の量子ゲートを、組み合わせることによって任意の精度に近似させることができる集合のことです。量子ゲートには多数のユニバーサルセットがあります。以下はその一例です。

  • アダマール、CNOT、T ゲート。
  • パウリ X、Y、Z ゲートとアダマールゲートは、任意の 1 量子ビットの回転を表すことができます。このゲートのセットは、CNOT ゲートと共にどのような量子回路でも作成することができます。
  • クリフォード群 (を成すクリフォードゲート) は、アダマール、S ゲート、CNOT ゲートです。クリフォード群は、T ゲートやトフォリゲートなどの非クリフォードゲートと共に、また別のユニバーサル量子ゲートセットです。

ユニバーサル ゲート セットの概念は、量子アルゴリズムを設計したり、基本のゲートの有限集合により量子コンピューターを実際に組み立てたりするときに重要になってきます。それによって量子コンピューターは、有限個の量子ゲートだけで、計算可能なあらゆる量子演算を実行し、あらゆる量子アルゴリズムを実現することが可能になります。

MATLAB を使用した量子ゲートの作成

MATLAB® および MATLAB Support Package for Quantum Computing では、量子回路の構築やシミュレーション、実行が行える、ビルトイン量子ゲートとカスタマイズ可能な複合ゲートをご利用いただけます。

MATLAB のマルチ量子ビットゲートには qftGatemcxGate などが含まれています。さらに、compositeGates 関数により、マルチ量子ゲートを単一の演算に統合することが可能です。この手法により、複雑な量子ゲートの作成を大幅に簡略化して効率を高めることができます。

機械学習金融最適化化学など各分野における量子ゲートの使用例については、それぞれのページをご覧ください。


製品使用例および使い方


ソフトウェア リファレンス


参考: 量子計算