科学と技術を雑学的に気まぐれに語るブログ 

科学と技術に関係したエッセイのようなもの

量子ビットの表現方法 ― ディラック先生ありがとう

前回量子ビットについて、

  • 量子ビットは 0 と 1 の重ね合わせの状態にある
  • この重ね合わせによりデータの並列化が実現され、それが量子コンピューターの速さの理由である

という説明をしました。

「0 と 1 の重ね合わせの状態」についてしばしば誤解される点がふたつあって、

  • 0.5 とか 0.86 とかの 0 と 1 の間の値を示すわけではなく、値は 0 と 1 のどちらかである
  • 「0 と 1 のどちらかは決まっているけどそれがわかっていない状態」ではなく、「0 と 1 のどちらか決まっていない状態」である

という2点を確認しておきたいと思います。ただし、「0 と 1 のどちらか決まっていない状態」というのは一般的な記述であって、「0 と 1 のどちらかに決まっている状態」という特別な状態も含みます。

古典ビットは 0 と 1 のどちらの値に決まっていますので、例えば 2bit の場合はその値に応じて 00 とか 01 とか記述すれば良いのですが、量子ビットは別の記述方法が必要になります。

量子ビットの記述は量子力学の記述方法を援用して、以下のように行います。

\left | \psi \right \rangle = \alpha \left |0 \right \rangle + \beta \left | 1 \right \rangle

ここで、左辺の\left | \psi \right \rangleは 1 つの量子ビットを表し、右辺は \alpha \beta を係数として\left |0 \right \rangle\left |1 \right \rangleの重ね合わせになっていることを示します。この\left | \psi \right \rangle\left |0 \right \rangle\left |1 \right \rangleに見られる\left |  \right \rangleで囲った記法が、量子ビットの記述になります。

「重ね合わせ」と言いながら、単に\left |0 \right \rangle\left |1 \right \rangleを何倍かして足しているだけじゃないか、と思われるのも無理はありません。そして、\left |0 \right \rangleは何倍しても 0 だから、何も重なってないじゃないか、と。

実は |0 \rangle |1 \rangleはベクトルを表しています。 |   \rangleで囲ったものを「ケット・ベクトル」と呼んだりもします。「ケット」の意味は後で説明しますが、 |0 \rangle |1 \rangleがベクトルを表しますので、

\left | \psi \right \rangle = \alpha \left |0 \right \rangle + \beta \left | 1 \right \rangle

で表される | \psi \rangleは、 \alpha倍の |0 \rangleベクトルと \beta 倍の |1 \rangleベクトルの足し算になります。このベクトルの足し算が「重ね合わせ」を表しています。

ここで、 |0 \rangle |1 \rangleはそれぞれ「長さが 0と 1 のベクトル」ではありません。「0という状態」方向のベクトルと「1という状態」方向のベクトルです。 0 と 1 を使っているので混乱しやすいですが、 |0 \rangle |1 \rangleは、 xy平面における x軸方向のベクトルと y軸方向のベクトルに近いものだと思って下さい。

極めて天下り的ではありますが、量子ビットの記述方法をご紹介しました。

この記述方法は量子力学での記述方法に倣っています。

量子力学を勉強された方の多くは、「シュレディンガー波動方程式」による記述方法を目にされたことと思います。

\begin{align*} i \hbar \frac{\partial \psi}{\partial t} \ =\ - \frac{\hbar^2}{2m} \frac{\partial^2 \psi}{\partial^2 x} + V \psi \end{align*}

こんな方程式がシュレディンガー波動方程式です。意味はわからなくてもかまいません。この方程式は量子力学のひとつの表現方法である、という点だけ理解して下さい。

量子力学には別の表現方法もあります。比較的有名なのは、ハイゼンベルクによる「行列力学」です。その名の通り、行列を使った表現方法です(実はハイゼンベルクは行列を知らなかったのですが、ハイゼンベルクの師匠のボルンが行列を使ってわかりやすく書き直しました)。他に、ファインマン(有名な物理学者ですね)による経路積分法という表現もあります。

 |0 \rangleとか |1 \rangleで使われるケット・ベクトルによる表現は、ディラックという物理学者が考案したやり方です。普通に量子力学を学んだ方で、この表現方法を知らない方も少なくないと思います。波動方程式が最も広く使われていて、ディラックの表現方法はあまりメジャーではありませんでした。量子コンピューターに注目が集まる前までは、ですけど。

ディラックによる量子力学の表現はこんな風に書かれます。

E = \langle \psi | H | \psi \rangle

 | \psi \rangleというケット・ベクトルの他に、 \langle \psi | というのが出てきて、それら2つで H を挟んでいます。 \langle \psi | のような形式はブラ・ベクトルと呼ばれます。要するに、 \langle  \rangleがブラケット(括弧)なので、それを分けて \langle  | をブラ・ベクトル、 |  \rangleをケット・ベクトルと呼んでいる、というわけです。

量子ビットの表現には、ディラックのブラケット記法が便利だったため採用されましたが、量子コンピューターの理論をシュレディンガー方程式で説明するのはかなり難しいと思いますので、量子コンピューターを学ぶ者はディラック先生に感謝しなければならないと思います。

今回は量子ビットの記述方法を説明しましたが、次回は

\left | \psi \right \rangle = \alpha \left |0 \right \rangle + \beta \left | 1 \right \rangle

この式の意味を説明したいと思います。

(蛇足1)ブログ内の数式の記述にはTEXのコマンドを使っているのですが、シュレディンガー方程式が正しく書けずにずいぶん苦労しました。TEX初心者なのです。

(蛇足2)私は学生時代、ゼミでディラック形式の量子力学をやっていたのですが、卒業後30年以上も経ってから量子コンピューターの勉強で再会するとは思ってもみませんでした。