量子状態ベクトルとは?量子コンピュータの計算の基本をやさしく解説
量子コンピュータは、古典コンピュータとは根本的に異なる方法で計算を行います。その違いを理解する上で鍵となる概念の一つが「量子状態ベクトル」です。この概念は、量子コンピュータがどのように情報を保持し、操作するのかを数学的に表現するための基礎となります。
情報科学を学ばれている皆さんは、古典コンピュータが0と1のビットで情報を扱うことをよくご存知かと思います。しかし、量子コンピュータの基本単位である「量子ビット」は、0でもあり1でもある「重ね合わせ状態」をとることができます。この不思議な状態を正確に記述するために、私たちは線形代数の言葉を使います。
この記事では、量子状態ベクトルとは何か、そして量子ゲートと呼ばれる操作がこの状態ベクトルにどのように作用するのかを、専門知識がなくても理解できるようにやさしく解説します。この基礎を理解することは、量子アルゴリズムや量子コンピューティングのより進んだ概念を学ぶ上での重要な一歩となるでしょう。
量子状態ベクトルとは何か?
古典的なビットは、状態が明確に0か1かのどちらかです。これを数学的に表現するなら、単に「0」または「1」という数値で事足ります。
一方、量子ビットは重ね合わせ状態をとることができます。例えば、ある量子ビットが0と1の重ね合わせ状態にあるとは、「0である確率」と「1である確率」を同時に持っている状態です。これを表現するために、私たちはベクトルを使用します。
1つの量子ビットの状態は、2次元の複素ベクトルで表現されます。このベクトルを量子状態ベクトルと呼びます。基底ベクトルとして、古典的な0に対応する状態を $|0\rangle$、1に対応する状態を $|1\rangle$ と書きます。これらはそれぞれ、以下のようなベクトルで表現されます。
$|0\rangle = \begin{pmatrix} 1 \ 0 \end{pmatrix}$ $|1\rangle = \begin{pmatrix} 0 \ 1 \end{pmatrix}$
任意の1量子ビットの重ね合わせ状態は、これらの基底ベクトルの線形結合で表すことができます。つまり、
$|\psi\rangle = \alpha |0\rangle + \beta |1\rangle = \begin{pmatrix} \alpha \ \beta \end{pmatrix}$
ここで、$\alpha$ と $\beta$ は複素数です。これらの係数 $\alpha$ と $\beta$ は、その量子ビットを測定したときに0が得られる確率が $|\alpha|^2$、1が得られる確率が $|\beta|^2$ であることを示します。確率は全て足すと1になるはずですから、$|\alpha|^2 + |\beta|^2 = 1$ という条件を満たす必要があります。
この状態ベクトルは、2次元の空間における「方向」のようなものだとイメージすると良いかもしれません。古典ビットが南北のどちらか一方しか向けないのに対し、量子ビットは任意の方向を向くことができる、と比喩的に捉えることもできます。
量子ゲートによる量子状態ベクトルの操作
量子コンピュータが行う「計算」は、この量子状態ベクトルに対して特定の操作を行うことに相当します。この操作を行うものが量子ゲートです。
古典コンピュータの論理ゲート(AND, OR, NOTなど)がビットの値を0から1へ、あるいはその逆に変換するのと同様に、量子ゲートは量子状態ベクトルを別の量子状態ベクトルに変換します。しかし、量子ゲートは古典ゲートよりもはるかに多様で、重ね合わせやもつれといった量子の特性を利用するための操作が可能です。
数学的には、量子ゲートは行列で表現されます。1量子ビットに対する量子ゲートは、2x2の行列として表現されます。量子ゲート $U$ をある状態 $|\psi\rangle$ に作用させることは、行列 $U$ をベクトル $|\psi\rangle$ に左からかけることに対応します。結果として得られる新しい状態を $|\psi'\rangle$ とすると、
$|\psi'\rangle = U |\psi\rangle$
となります。これは線形代数における行列とベクトルの積そのものです。量子ゲートとして機能するためには、この行列 $U$ がユニタリ行列である必要があります。ユニタリ行列は、その行列とその共役転置行列をかけたものが単位行列になるという性質を持っています。この性質は、量子ゲートが状態ベクトルの「長さ」を変えないことを保証し、結果として確率の合計が常に1に保たれることを意味します。
具体的な例を見てみましょう。Pauli-Xゲート(古典的なNOTゲートに相当)は、状態 $|0\rangle$ を $|1\rangle$ に、 $|1\rangle$ を $|0\rangle$ に変換します。その行列表現は以下のようになります。
$X = \begin{pmatrix} 0 & 1 \ 1 & 0 \end{pmatrix}$
もし初期状態が $|0\rangle = \begin{pmatrix} 1 \ 0 \end{pmatrix}$ なら、Xゲートを適用すると、
$X |0\rangle = \begin{pmatrix} 0 & 1 \ 1 & 0 \end{pmatrix} \begin{pmatrix} 1 \ 0 \end{pmatrix} = \begin{pmatrix} 0 \times 1 + 1 \times 0 \ 1 \times 1 + 0 \times 0 \end{pmatrix} = \begin{pmatrix} 0 \ 1 \end{pmatrix} = |1\rangle$
となり、期待通り $|1\rangle$ 状態に変換されました。
もう一つ、量子コンピュータで非常に重要なHadamard(アダマール)ゲートを見てみましょう。これは重ね合わせ状態を作り出すゲートです。その行列表現は以下のようになります。
$H = \frac{1}{\sqrt{2}}\begin{pmatrix} 1 & 1 \ 1 & -1 \end{pmatrix}$
初期状態が $|0\rangle = \begin{pmatrix} 1 \ 0 \end{pmatrix}$ の場合、Hadamardゲートを適用すると、
$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 \ 1 \end{pmatrix} = \frac{1}{\sqrt{2}} |0\rangle + \frac{1}{\sqrt{2}} |1\rangle = |+\rangle$
という状態になります。これは、測定すると0または1がそれぞれ確率 $ (1/\sqrt{2})^2 = 1/2 $ で得られる重ね合わせ状態です。
複数の量子ビットを扱う場合は、状態空間の次元が量子ビットの数に応じて増加します。例えば、2つの量子ビットの状態は4次元の複素ベクトルで表現され、その基底は $|00\rangle, |01\rangle, |10\rangle, |11\rangle$ となります。多量子ビット系における状態ベクトルやゲート操作は、線形代数のテンソル積という概念を用いて記述されます。詳細な説明はここでは割愛しますが、基本的な考え方は1量子ビットの場合と同じく、ベクトルと行列による表現と操作に基づいています。
なぜ線形代数が量子計算の言葉なのか
量子力学の基本的な法則は、状態をベクトルで、時間発展(変化)をユニタリ変換(行列)で記述することによって成り立っています。量子コンピュータが量子力学的な現象を利用して計算を行う以上、その数学的な記述も自然と線形代数に基づいたものとなります。
状態ベクトルによる表現とユニタリ行列による操作という線形代数の枠組みは、量子コンピュータの計算が持ついくつかの重要な性質を捉える上で非常に強力です。例えば、重ね合わせ状態を線形結合として扱うこと、そして量子ゲートが本質的に可逆な操作(ユニタリ変換は逆行列を持つ)であることなどが、この数学的表現によって明確になります。
まとめ
この記事では、量子コンピュータの計算の基礎となる「量子状態ベクトル」の概念と、それを量子ゲートが行列操作によってどのように変換するのかを解説しました。
- 量子状態ベクトルは、量子ビットの重ね合わせ状態を表現するための複素ベクトルです。
- 量子ゲートは、量子状態ベクトルを別の状態ベクトルに変換する操作であり、数学的にはユニタリ行列として表現されます。
- 量子ゲートによる操作は、状態ベクトルと行列の積によって記述されます。
量子コンピュータの計算を理解するためには、この状態ベクトルとゲート操作の関係性を把握することが出発点となります。情報科学の知識、特に線形代数の基礎があれば、量子コンピュータの仕組みをより深く、より正確に理解していくことができるでしょう。量子アルゴリズムの動作原理や、量子計算の力を探求する上で、今回ご紹介した概念は非常に役立つはずです。