量子コンピュータの基本ゲート:重ね合わせとエンタングルメントを生み出す鍵をやさしく解説
量子コンピュータの計算を司る基本ゲートとは?
量子コンピュータは、量子ビットと呼ばれる特別な情報単位を使って計算を行います。この量子ビットの状態を操作することで、計算を進めていくのですが、その操作を行うための基本的な要素が「量子ゲート」です。古典コンピュータにおける論理ゲート(AND、OR、NOTなど)にあたるものだと考えると分かりやすいでしょう。
ただし、量子ゲートは古典ゲートとはいくつかの重要な点で異なります。最も大きな違いは、量子ゲートが量子ビットの重ね合わせ状態や量子もつれといった量子の特徴を利用した操作を行う点です。また、ほとんどの量子ゲートは「ユニタリ変換」と呼ばれる特別な数学的な性質を持っており、これは情報が失われない(可逆である)ということを意味します。
量子コンピュータの計算は、これらの量子ゲートを組み合わせて「量子回路」を作ることで実現されます。複雑な量子アルゴリズムも、突き詰めれば基本的な量子ゲートの組み合わせから成り立っています。
量子ビットの状態と操作の表現
量子コンピュータにおける量子ビットの状態は、通常、縦ベクトルで表現されます。例えば、古典ビットの0に対応する状態を $|0\rangle$、1に対応する状態を $|1\rangle$ というベクトルで表します。これらは「ケット記法」と呼ばれ、量子力学でよく使われる表記法です。
- 状態 $|0\rangle$: $\begin{pmatrix} 1 \ 0 \end{pmatrix}$
- 状態 $|1\rangle$: $\begin{pmatrix} 0 \ 1 \end{pmatrix}$
量子ゲートは、これらの量子ビットの状態ベクトルに対して行列として作用し、状態を別の状態に変化させます。例えば、あるゲートが状態ベクトル $| \psi \rangle$ に作用した結果の状態を $| \phi \rangle$ とすると、これは行列 $U$ を使って $| \phi \rangle = U | \psi \rangle$ と書くことができます。
ここでは、量子コンピュータの計算において特に重要な役割を果たすいくつかの基本ゲートを見ていきましょう。
重ね合わせ状態を作り出す鍵:ハダマールゲート(Hゲート)
ハダマールゲート(Hadamard gate, Hゲート)は、単一の量子ビットに作用するゲートです。このゲートの最も重要な役割は、古典的な状態である $|0\rangle$ や $|1\rangle$ を「重ね合わせ」の状態に変換することです。
行列で表現すると、ハダマールゲートは以下のようになります。
$H = \frac{1}{\sqrt{2}} \begin{pmatrix} 1 & 1 \ 1 & -1 \end{pmatrix}$
このHゲートが状態 $|0\rangle$ に作用するとどうなるでしょうか。 $H |0\rangle = \frac{1}{\sqrt{2}} \begin{pmatrix} 1 & 1 \ 1 & -1 \end{pmatrix} \begin{pmatrix} 1 \ 0 \end{pmatrix} = \frac{1}{\sqrt{2}} \begin{pmatrix} 1 \times 1 + 1 \times 0 \ 1 \times 1 + (-1) \times 0 \end{pmatrix} = \frac{1}{\sqrt{2}} \begin{pmatrix} 1 \ 1 \end{pmatrix}$
この結果の状態 $\frac{1}{\sqrt{2}} \begin{pmatrix} 1 \ 1 \end{pmatrix}$ は、$\frac{1}{\sqrt{2}} |0\rangle + \frac{1}{\sqrt{2}} |1\rangle$ と書くことができます。これは、0と1の状態が等しい確率(それぞれの振幅の絶対値の2乗、$|\frac{1}{\sqrt{2}}|^2 = \frac{1}{2}$)で重ね合わさった状態です。同様に、Hゲートが状態 $|1\rangle$ に作用すると、$\frac{1}{\sqrt{2}} |0\rangle - \frac{1}{\sqrt{2}} |1\rangle$ という重ね合わせ状態になります。
量子コンピュータが多数の可能性を同時に探ることができるのは、この重ね合わせ状態を作り出し、利用できるからです。Hゲートは、量子計算の多くのアルゴリズムで計算の初期段階や途中で重ね合わせを導入するために不可欠なゲートです。
量子もつれ状態を作り出す鍵:CNOTゲート
CNOTゲート(Controlled-NOT gate, 制御NOTゲート)は、2つの量子ビットに作用する基本的な多量子ビットゲートです。2つの量子ビットのうち一方が「制御ビット」、もう一方が「標的ビット」となります。
CNOTゲートの動作は以下の通りです。 - 制御ビットが $|0\rangle$ の場合、標的ビットの状態は変化しません。 - 制御ビットが $|1\rangle$ の場合、標的ビットの状態が反転します($|0\rangle$ なら $|1\rangle$ に、$|1\rangle$ なら $|0\rangle$ になります。これは古典的なNOT操作に相当します)。
このゲートの重要な点は、量子もつれ状態を作り出すことができることです。例えば、制御ビットを $|0\rangle$、標的ビットを $|0\rangle$ とした初期状態 $|00\rangle$(2つの量子ビットの状態を並べたもの)に対して、まず制御ビットにHゲートを適用し、次に2つの量子ビットにCNOTゲートを適用してみましょう。
- 初期状態: $|00\rangle = |0\rangle \otimes |0\rangle = \begin{pmatrix} 1 \ 0 \end{pmatrix} \otimes \begin{pmatrix} 1 \ 0 \end{pmatrix} = \begin{pmatrix} 1 \ 0 \ 0 \ 0 \end{pmatrix}$ (テンソル積 $\otimes$ を使って2量子ビット状態を表現)
- 1つ目の量子ビットにHゲートを適用: $(H \otimes I) |00\rangle = (H |0\rangle) \otimes (I |0\rangle) = \left(\frac{1}{\sqrt{2}}(|0\rangle + |1\rangle)\right) \otimes |0\rangle = \frac{1}{\sqrt{2}}(|00\rangle + |10\rangle)$ ここで $I$ は標的ビットに何も操作しない単位行列です。状態は $\frac{1}{\sqrt{2}}(|00\rangle + |10\rangle) = \frac{1}{\sqrt{2}} \begin{pmatrix} 1 \ 0 \ 1 \ 0 \end{pmatrix}$ となります。これは制御ビットが重ね合わせ状態になった状態です。
- この状態にCNOTゲートを適用します。CNOTゲートの行列は以下の通りです。 $CNOT = \begin{pmatrix} 1 & 0 & 0 & 0 \ 0 & 1 & 0 & 0 \ 0 & 0 & 0 & 1 \ 0 & 0 & 1 & 0 \end{pmatrix}$ $CNOT \left(\frac{1}{\sqrt{2}}(|00\rangle + |10\rangle)\right) = \frac{1}{\sqrt{2}} (CNOT |00\rangle + CNOT |10\rangle)$ CNOT $|00\rangle$: 制御ビット0なので標的ビットは変わらず $|00\rangle$ CNOT $|10\rangle$: 制御ビット1なので標的ビットは反転し $|11\rangle$ 結果の状態は $\frac{1}{\sqrt{2}}(|00\rangle + |11\rangle)$ となります。
この状態 $\frac{1}{\sqrt{2}}(|00\rangle + |11\rangle)$ は「ベル状態」と呼ばれる、量子もつれ状態の最も基本的な例です。この状態では、2つの量子ビットはそれぞれ個別の状態としては定義されていませんが、強い相関を持っています。一方の量子ビットを測定して0だった場合、もう一方も必ず0になり、1だった場合も必ず1になります。どれだけ離れていてもこの相関は保たれます。CNOTゲートは、このような量子もつれ状態を作り出すために中心的な役割を果たします。
量子もつれは、量子テレポーテーションや量子暗号、そして Shor のアルゴリズムのような量子アルゴリズムの効率を支える重要なリソースです。
その他の基本的な単一量子ビットゲート
Hゲートの他にも、量子計算でよく使われる単一量子ビットゲートがいくつかあります。
- パウリXゲート(Xゲート): 古典的なNOTゲートに対応し、$|0\rangle$ を $|1\rangle$ に、$|1\rangle$ を $|0\rangle$ に反転させます。行列は $\begin{pmatrix} 0 & 1 \ 1 & 0 \end{pmatrix}$ です。
- パウリZゲート(Zゲート): $|0\rangle$ は変化させず、$|1\rangle$ に $-1$ の位相(符号)をつけます。行列は $\begin{pmatrix} 1 & 0 \ 0 & -1 \end{pmatrix}$ です。量子ビットの状態によっては目に見える変化はありませんが、重ね合わせ状態や多量子ビットの状態においては重要な役割を果たします。
これらのゲートは、量子ビットの状態を様々に変化させるための基本的なツールとなります。
まとめ:基本ゲートが拓く量子計算の世界
ここまで見てきたように、ハダマールゲートは重ね合わせを、CNOTゲートは量子もつれを作り出す上で極めて重要な基本ゲートです。これらのゲートやその他の基本的なゲートを組み合わせることで、量子コンピュータは古典コンピュータでは困難な特定の計算を高速に行うことが可能になります。
量子コンピュータのプログラミングは、これらの基本ゲートをどのように組み合わせて量子回路を設計するかという作業に他なりません。今後、量子コンピュータの学習を進める上では、これらの基本的な量子ゲートがどのような操作を行い、量子ビットの状態をどのように変化させるのかをしっかりと理解することが、量子アルゴリズムや量子回路の理解への第一歩となります。
もちろん、これら以外にも多くの種類の量子ゲートが存在し、より複雑な操作を実現するために使われます。しかし、HゲートやCNOTゲートのような基本ゲートの役割を理解することは、量子コンピュータがどのように動作するのか、その不思議で強力な計算能力がどこから来るのかを理解する上で、非常に大切な出発点となるでしょう。