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

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

D-WAVEのクラウド「Leap」、日本でも利用が可能に

先日、D-WAVE Systemが量子コンピューター「D-WAVE 2000Q」にアクセスできるクラウドサービス「Leap」を発表しました。

約17億円の量子コンピューターをクラウドで貸し出すD-WAVEの「Leap」、ついに日本でも正式公開jp.techcrunch.com

D-WAVEの量子コンピューターは「量子アニーリング方式」と呼ばれる方式で、これを使って解ける問題の種類が限定される代わりに、ハードウェアの実装が比較的易しいという特徴があります。

一方、IBMのQ System ONEは「量子ゲート方式」と呼ばれます。この方式は、古典コンピューターがNOTとかANDとかNORとかの基本的論理回路を組み合わせて作られているのと同様、基本的な量子演算回路を組み合わせて作られます。従って、より汎用的なアルゴリズムに対応可能なのですが、ハードウェアの実装が難しいという短所もあります。

結果として、「D-WAVE 2000Q」は名前の通り2000量子ビットの演算が可能なのですが、「IBM Q System ONE」は今の所20量子ビットということで、量子ビットの数ではD-WAVEの量子アニーリング方式ががIBMの量子ゲート方式を上回っています。

ところで、D-WAVE Systemのクラウドサービスの名前である「Leap」という単語ですが、これは量子力学的には特別な意味を持った単語です。「leap」の辞書的な意味は「跳躍」ですが、「Quantum Leap」とすると量子力学に特徴的な現象を表します。

「Quantum Leap」は「量子跳躍」と約されますが、その意味はWikipediaを御覧ください。

量子跳躍 - Wikipedia
ja.wikipedia.org

この量子跳躍の意味から派生して、「Quantum Leap」は「飛躍的進歩」を表す一般的な語彙としても使われています。

D-WAVEともIBMとも、量子コンピューターとも関係ないのですが、クオンタムリープ株式会社という会社が日本にございまして。

クオンタムリープ株式会社
qxl.jp

こちらのクオンタムリープ株式会社ですが、事業は量子コンピューターとも量子力学とも関係なく、「飛躍的進歩」を表す語を社名にしたものと思われます。

それはそれで良いのですが、会社概要を見たら、代表取締役 ファウンダー&CEOが元ソニー社長の出井伸之さんで驚きました。

特にオチはありません。

アルアイレとアポヤンド、そしてパコ・デ・ルシアの音【ギタリストのための音の科学 14】

クラシックギター教則本の最初の方に必ず書いてある、アルアイレ奏法とアポヤンド奏法。アルアイレは弦をはじいた指が隣の弦に触れない奏法で、アポヤンドは弦をはじいた指を隣の弦に触れて止める奏法です。技術的な違いはどの教則本にも書かれていますが、両者によって生み出される音は何がどう違っているのか、その理由は何かについて説明してる教則本は見たことがありません。

何も説明してくれないので、最初にアルアイレとアポヤンドについての記述を目にした時、私は「音の大きさは弦をはじく強さの問題で、はじいた後の指がどこに行こうと音には関係ないだろ?」と思ってしまいました。まあ、この考え方は半分は合っていて、ただ気付いてない点があるのですが。

実際にアルアイレとアポヤンドで音を出してみると、その違いは明らかです。アポヤンドの方が大きく太い音がします。ここで問題です。アポヤンドの方が大きな音になるのは、はじく際の弦の変位を大きくとりやすいから、という点はクラシックギタリストであれば誰でもわかると思いますが、アポヤンドの方が「太い音」になるのは何故でしょうか? そしてそもそも、「太い音」とはどういう音でしょうか?

アルアイレとアポヤンドの音を実際に出して測定してみましたので、後で測定結果のグラフを示します。そのグラフを見ると、「太い音」の正体がわかるのですが、その前に、両奏法の違いと、それによる「太い音」への影響を考えてみます。

もちろん、「はじいた後の指がどこに行こうと音には関係ない」というのは間違ってません。指で弦を弾いた瞬間に音は決まってますから、その後で指が隣の弦に触れるか否かは音にほとんど関係しません。ただし、アルアイレとアポヤンドでは、弦をはじく方向が異なります。

アポヤンドは弦を表板の方に押し込んで放します。すなわ、弦は表板に垂直な方向に振動します。一方、アルアイレでは(弾き方によりますが)一般的にはアポヤンドほど表板に垂直にはならず、水平方向にはじく傾向があります。アルアイレでアポヤンドに近い音を出すための技術として、「弦を押し込んで弾け」と言われますが、それはアポヤンドのように表板に垂直な振動をさせろ、という意味になります。

弦が表板に垂直に振動すると、それはブリッジを通じて表板に伝わり表板の垂直振動を引き起こします。表板の垂直振動によって発生する音(=空気の振動)が、ギターの主要な音源のひとつですから(もうひとつはボディ内の空気の振動)、アポヤンドは、

弦の垂直振動 → ブリッジの垂直振動 → 表板の垂直振動 → 空気の振動(表板に対して垂直)

というダイレクトに垂直振動が伝わる奏法ということになります。

つまり、アルアイレは表板に水平な振動、アポヤンドは表板に垂直な振動、という傾向が強い、ということです。

ここで、アルアイレとアポヤンドの音のグラフを見てみましょう。

2弦の開放を爪を当てずにアルアイレとアポヤンドで弾いてみました。2弦以外は消音し、弾弦の位置はサウンドホール真ん中付近、アルアイレはアポヤンドに近付ける「押し込んで弾く」をしていません。

まずはアルアイレ。

f:id:nose-akira:20190324195247j:plain
2弦開放 アルアイレ

次にアポヤンド。

f:id:nose-akira:20190324195359j:plain
2弦開放 アポヤンド

違いは明らかです。アポヤンドはアルアイレに比べて、主音(約247Hz)以外の倍音成分のピークが低くなっています。すなわち、アポヤンドの音は主音成分の割合が多い(=倍音成分が少ない)音になっています。

また、主音よりも低周波成分(楽器としての一種のバックグラウンドのようなものでしょうか?)もアポヤンドの方がアルアイレよりも多くなっています。

以上2点の違いが、アポヤンドの「太い音」を作っていると思われます。アポヤンドの音を「太い」と表現することに違和感を覚えるクラシックギタリストは少ないと思いますが、「太い」をより客観的に表現すると、高周波倍音成分の少なさおよび低周波成分の多さ、と言えるでしょう。

さて、アポヤンド奏法の表板に対する垂直振動が、低周波成分を太らせ、高周波成分(倍音)を細らせる理由ですが、次のように考えられると思います。

ギターの表板の垂直振動はトランポリンのような膜の振動と考えられますが、その形状(比較的大きな膜)からして、波長の長い振動(=低周波、低音)が生じやすいと思われます。

一方、弦の表板に対する水平振動はギター側板に伝わって側板を垂直振動させますが、側板の形状は表板に比べて振動する部分が短く、波長の短い振動(=高周波、高音)が生じやすい傾向があるでしょう。

以上で、アポヤンドの音のカラクリが見えたと思います。振動の垂直・水平とボディ板形状の組み合わせで、アポヤンドは相対的に低音成分が多く高音成分が少なくなるのでしょう。

このあたりの事情ですが、以下の論文に少々詳しく(モード解析という手法を使っています)書いてあります。

JAIRO | ギターのアポヤンド奏法とアルアイレ奏法

この論文では音の減衰についても測定していて、アポヤンドの方が減衰が少ないという結論になっています。私の測定では、減衰曲線の精度も悪いですし、残念ながら、そこまでの解析は出来ていません。

この論文、他にも面白い事が書いてあります。

垂直振動と水平振動を人工的に合成し、その音をギター経験者に聞いてもらい、その印象をまとめているのですが、垂直:水平を10:1で合成した音を聞いたフラメンコギター上級者は、その音を「パコ・デ・ルシア風」と評しています。

パコ・デ・ルシアの(おそらく)強烈なアポヤンドで生み出される垂直振動による音は、垂直成分が大部分という合成音に似ているということです。実際に、並のギタリストに比べて、パコ・デ・ルシアのアポヤンドは垂直振動成分の割合が高いのかもしれません。非常に興味深いです。

グラフでわかる3弦の特殊性【ギタリストのための音の科学 13】

3弦の話【ギタリストのための音の科学 03】クラシックギターの3弦の特殊性について書きました。一般にクラシックギターの3弦はボソボソと響きが悪く、それに満足していないギタリストは少なくありません。

その対策として、いわゆる「カーボン弦」という種類の弦が各メーカーから発売されています。通常のナイロン弦とカーボン弦の違いは、後者の方が素材の密度が大きく、その結果、細い弦になっていて、それによってある程度ボソボソを解消することに成功しています。

というような事を3弦の話【ギタリストのための音の科学 03】に書いたのですが、実音での検証はしていませんでしたので、実際に3弦の音がどういう音なのか、測定してグラフ化してみました。

測定環境は以下の通りです。

 1 - 3弦 : SAVAREZ Alliance
 4 - 6弦 : SAVAREZ Corum
 比較用3弦 : AUGUSTINE Blue

3弦の特徴を見るために以下の2つの組み合わせで、実音を鳴らして測定しました。全ての弦を正しくチューニングした状態で、弾く弦以外は消音して、親指のアポヤンド(爪は当てずに)で弾いた音を録音しました。

  • 3弦の開放と4弦5フレットの音を比較
  • 3弦の4フレットと2弦の開放の音を比較

なお、SAVAREZ Alliance(私が常用している弦です)はいわゆるカーボン弦なので、普通のナイロン弦としてAUGUSTINE Blueの3弦も使いました。また、私のギターである小林一三 No.50については、色々なギターを弾き比べて、3弦のボソボソ度が最も小さいと感じられたのがこの小林一三 No.50である、という点も付け加えておきます。

では早速、上記の比較のグラフを見てみましょう。

○ 4弦5フレットと3弦開放の音を比較(G = 196Hz)
1-a. SAVAREZ Corum 4弦5フレット(音の強さ)

f:id:nose-akira:20190303143433j:plain
1-b. SAVAREZ Corum 4弦5フレット(音の周波数成分)
f:id:nose-akira:20190303143554j:plain
2-a. SAVAREZ Alliance 3弦開放(音の強さ)
f:id:nose-akira:20190303143656j:plain
2-b. SAVAREZ Alliance 3弦開放(音の周波数成分)
f:id:nose-akira:20190303143738j:plain
3-a. AUGUSTINE Blue 3弦開放(音の強さ)
f:id:nose-akira:20190303143813j:plain
3-b. AUGUSTINE Blue 3弦開放(音の周波数成分)
f:id:nose-akira:20190303143850j:plain

○ 2弦開放と3弦4フレットの音を比較(B = 247Hz)
4-a. SAVAREZ Alliance 2弦開放(音の強さ)

f:id:nose-akira:20190303143932j:plain
4-b. SAVAREZ Alliance 2弦開放(音の周波数成分)
f:id:nose-akira:20190303144017j:plain
5-a. SAVAREZ Alliance 3弦4フレット(音の強さ)
f:id:nose-akira:20190303144049j:plain
5-b. SAVAREZ Alliance 3弦4フレット(音の周波数成分)
f:id:nose-akira:20190303144123j:plain
6-a. AUGUSTINE Blue 3弦4フレット(音の強さ)
f:id:nose-akira:20190303144201j:plain
6-b. AUGUSTINE Blue 3弦4フレット(音の周波数成分)
f:id:nose-akira:20190303144232j:plain

以上のグラフを見比べると以下のことがわかります。なお、音の強さのグラフで濃い青は最大値、薄い青は平均値を示します。

2弦または4弦との比較 音の強さ 音の周波数成分
SAVAREZ Alliance 3弦(カーボン弦) 音の減衰傾向に顕著な差は見られない 4,000Hzから10,000Hzあたりの倍音成分が少ない
AUGUSTINE Blue 3弦(ナイロン弦) 平均値の減衰に差は見られないが、最大値の減衰がやや早い(?) 上記成分がさらに少ない

音の強さに関する考察は微妙なところですが、周波数成分については、明らかに3弦は高音成分が少ないと言えそうです。

私の知る限りにおいて、3弦のボソボソ音について何らかの実験・測定結果から説明したWeb記事などは見たことがありません。上記測定は科学実験としては色々とお粗末ではありますが、それでも3弦のボソボソ音について、その正体に具体的な提言が出来たり、カーボン弦の効果を可視化したりといった意義はあるのではないかと思います。

弦メーカーさんはこういう測定をしていると思うのですが、そのデータを公開してくれると非常に興味深いと思います。

量子ビットにおける0と1の重ね合わせ

「量子ビットとシュレディンガーの猫」で、量子ビットの特徴は「0か1か」ではなく「0と1の重ね合わせ」の状態である、という話をしました。

今回は「0と1の重ね合わせ」について、もう少し詳しく見ていきましょう。

古典ビット、すなわち数字の0と1では、(加重した)平均を計算する、0と1の間の値を設定する、といったことは可能ですが、「0と1の重ね合わせ」は出来ません。「0か1かのどちらか」です。

この「重ね合わせ」という概念は、もともとは量子力学の概念です。ですから、量子ビットの話の前に、量子力学における重ね合わせの例を紹介しましょう。

電子にはスピンという属性があります。しばしば、スピンとは電子の自転のようなもの、と解説されます。確かに「自転のようなもの」ですが、自転そのものではありません。電子はパチンコ玉とは違って、自転するわけではなく、自転しているかのような物理量を持っている、ということです。

電子のスピンには上向きと下向きがあります。誤解を恐れずに例えるなら、スピンの上向きと下向きはフィギュアスケートのスピンの右回りと左回りのようなものだとしましょう。そして、電子のスピンは上向きと下向きの重ね合わせの状態をとります。繰り返しになりますが、重ね合わせの状態とは「上向きか下向きか、どちらかに決まっているけど、どちらかがわからない状態」ではなくて、「上向きか下向きか、どちらにも決まっていない状態」です。

そして、電子を「観測」することにより、上向きと下向きのどちらかに決まります。「観測」結果が上向きになるか下向きになるかの確率は「観測」せずに知ることが可能ですが、どちらの状態かは「観測」前には決まっておらず、「観測」によって初めて上向きか下向きかの状態をとります。つまり、電子の状態は「観測」によって決まる、ということです。しつこいようですが、人間は電子の状態を「観測」によって知ることが出来る、わけではありません。モノの状態は「観測」によって決まるのであって、「観測」しなければモノの状態は決まらないのです。

ただし、「観測」とカギ括弧付きで書いたのは、「観測」とは人間による何らかの行為を指すことではなく、観測対象に対して、電磁波とか電子とか陽子とかを作用させることを意味します。実は量子力学における「観測」の厳密な定義は出来ていないのですが(諸説あります)、ここではこのような説明にしておきます。

仮に「観測」結果が上向きになるか下向きになるかの確率がそれぞれ半々だとすると、「観測」前の電子の状態は「上向き半分、下向き半分」の重ね合わせ状態になっています。「上向き」かつ「下向き」ということは、古典物理の世界ではありえないことですが、量子力学においてはそのような重ね合わせ状態が世の中を正しく描写するモデルになります。

以上、我々の直感とは相容れない説明かとは思いますが、むりやり理解しようとは思わず、「そういうものである」と思って下さい。物理学者でも、例外なく「そういうものである」です。本当です。

このような電子のスピンの重ね合わせと同じようなものが、量子ビットの0と1の重ね合わせです。

前回の「量子ビットの表現方法 ― ディラック先生ありがとう」では、量子ビットを以下のように記述しました。

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

そして、\left |0 \right \rangle\left |1 \right \rangleはそれぞれ、「0という状態」方向のベクトルと「1という状態」方向のベクトルという説明をしました。

最初に書いたように、重ね合わせるためには、普通の数字ではダメです。ベクトルであれば、適当な係数をかけて足すことである種の「重ね合わせ」が実現できます。その重ね合わせが上の式です。

とは言え、この式を見ても重ね合わせを実感することは難しいと思います。そこで、正確性を犠牲にして、直感的理解を促すような図を書いてみたいと思います。

f:id:nose-akira:20190203211536j:plain
|0>と|1>の重ね合わせ

こんな風に、 |0 \rangle |1 \rangleは、 xy平面における x軸方向のベクトルと y軸方向のベクトルのようなものと考えても良いと思います。実際はもう少し複雑な表現になるのですが、重ね合わせを理解するための図としては、正確ではないですが許容範囲ではないかと考えます。

オレンジ色の |0 \rangleベクトルと |1 \rangleベクトルの足し算が赤い | \psi \rangleになっています。 |0 \rangleベクトルと |1 \rangleベクトルにある条件を満たす係数をかけて足し算すると、水色のようなベクトルになります。実際に量子ビットの表現で用いる |0 \rangleベクトルと |1 \rangleベクトルの重ね合わせは、終点が水色の破線円の上に来るようなベクトルになります。

「ある条件を満たす係数をかけて」というのは、

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

における \alpha \beta に課される条件ですが、その条件についてはまた次回にしたいと思います。

「IBM Q System One」の発表について(アナリスト風に)

2019/1/8にIBMから量子コンピューター「IBM Q System One」が発表されました。

www.itmedia.co.jp

今日はこの発表について所感を述べたいと思います。

この記事には「世界初の商用統合ユニバーサル近似量子計算システム」という表現が使われていて、「ユニバーサル近似」ってのがよくわかりませんでした。

近似なんていう表現を使うのはあたかも計算が不正確であるかのようなイメージですから、量子コンピューターの発表としてはあまり相応しくないと思うのですが、そもそものIBMの発表でどういう表現だったのかがわからないので、元のプレスリリースを探してみました。

これですね。

newsroom.ibm.com

タイトルには「World's First Integrated Quantum Computing System」とあって、「ユニバーサル近似」に相当する部分はないのですが、本文の最初には「the world's first integrated universal approximate quantum computing system」と書いてあり、「ユニバーサル近似」とは「universal approximate」の訳であると思われます。でも、「universal approximate」を「ユニバーサル近似」と訳しても、翻訳した人も含めて意味不明でしょう。

この「universal approximate」は明らかに、D-Wave Systems社製量子コンピューターの動作原理である「quantum annealing」方式(量子アニーリング法または量子焼きなまし法と訳されます)を意識して、「quantum annealing」とは違う、という強い意味が込められていると思います。

 IBM量子コンピューターの動作原理は「量子ゲート方式」、D-Wave Systemsの量子コンピューターの動作原理は「量子アニーリング方式」です。前者は汎用的(古典コンピューターほど汎用的ではありませんが)で応用範囲が広く、後者は組み合わせ最適化問題などに限られた応用になります。ただし、後者の方が技術的なハードルが低く実用化が早いというメリットがあります。

というわけで、IBMの「universal approximate」には「森羅万象の普遍的な問題を扱える」といった意味合いがあるのではないかと思います。approximateは計算の値が近似値という意味ではなく、「(普遍的な問題を)計算モデル化できる」というような意味での「近い」ではないでしょうか? 

ちなみに、AI(人工知能)の世界では、ニューラルネットワークにおけるUniversal Approximation Theoremってのがあって、普遍性定理と訳されていますが、そういう意味での「普遍性」と似たような意味だと思います。

もし私が「universal approximate」をプレスリリース向けに訳するなら「森羅万象に適用可能な」みたいな、やや詩的な表現にするかもしれません。

さて、「ユニバーサル近似」はさておき、IBMのプレスリリースをざっと読んでみても、何か技術的に新しいことを成し遂げたわけでもなく、IBM Q System Oneの量子ビット数すら記載されておらず、クラウドでの量子ゲート利用ってのも以前からやってますし、特に新しいことのない肩透かし風プレスリリースです。

発表をCES 2019に合わせていることからして、これまでの量子コンピューターでの成果をまとめてアピールしたかった、という感じかもしれません。あるいは、CERNとかFermilabとか、錚々たる研究機関がユーザーについたことを発表するのに、あれこれ盛ったのかもしれません。

さらに深読みすると、どこかのユーザー(現時点ではスポンサー的でもある)を獲得するための打ち上げ花火かもしれません。いずれにしろ、技術的成果主導のプレスリリースではなく、マーケティング的あるいは営業的な意味合いの強いプレスリリースだと思います。

個人的には、IBMのD-Wave Systemsへの対抗意識が感じられて、非常に面白かったです。

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

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

  • 量子ビットは 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年以上も経ってから量子コンピューターの勉強で再会するとは思ってもみませんでした。

量子ビットとシュレディンガーの猫

さて今回は量子ビットのお話。

前回は、量子コンピューターが速い理由を「データの並列化」にあると説明しました。そして、その「データの並列化」のカラクリが量子ビットにあります。

まずは用語の定義。量子コンピューターに対して普通のコンピューター(スーパーコンピューターも含みます)を「古典コンピューター」と呼びます。また、量子ビットに対して普通のビットを「古典ビット」と呼びます。

古典という用語が奇異に感じられるかもしれませんが、これは物理学の用語でして、量子物理学以外の物理学をまとめて「古典物理学」と呼んでいます。ニュートン力学もマックスウェルの電磁気学アインシュタイン相対性理論も全て「古典物理学」です。それに倣って、「量子コンピューターではない」という意味で「古典」を付けて呼びます。

量子ビットでのデータの並列化を説明するための前段階として、古典ビットについて考えます。古典コンピューターにおける古典ビットは、データを表現するために使われており、同時にそのデータに対する演算を可能とするための仕組みでもありました。

例えば、古典ビットで整数を表すことを考えると、以下のような表が出来るでしょう。この表は2bitで整数の0から3までを表しています(「bit」は古典ビットを表します)が、もちろん、ビット数を大きくすると、さらに広い範囲の整数を表すことが可能です。一般的な古典コンピューターで用いられている整数表現は8bit、32bit、64bitなどですが、長く煩雑になるので2bitで考えます。

10進数 2bit(2進数)
0 00
1 01
2 10
3 11

次にデータを2つ使って演算をしてみます。整数の足し算をしても良いのですが、簡単のためにAND(論理積)の演算を行います。2bitのデータiとjのAND(論理積)を取ると下表のようになります。

 i   j  i AND j
00 00 00
00 01 00
00 10 00
00 11 00
01 00 00
01 01 01
01 10 00
01 11 01
10 00 00
10 01 00
10 10 10
10 11 10
11 00 00
11 01 01
11 10 10
11 11 11

このように、i も j も00、01、10、11の4通りの値を取りうるので、i AND j は4 x 4 = 16通りの計算があります。i も j も各ビットは 0 か 1 のどちらかですから当然です。

もし、i と j の全ての取りうる値全てについて計算を行わなければならないとしたら、その計算を16回行う必要があります。ANDならば単純な計算ですが、もっともっと複雑な計算の場合は1回の計算にもそれなりの時間を要します。

仮にiもjも32bitだとしたら18,446,744,073,709,551,616回の計算が必要になります。1回の計算を100万分の1秒で行うとしても、18,446,744,073,709,551,616回の計算には60万年近くを要します。このように、全ての場合をもれなく計算する場合、とてつもない手間がかかることがあります。

古典コンピューターであるスーパーコンピューターは、膨大な数の計算ユニットを用意して、「i=00の場合の計算は計算ユニットXで行う、i=01の場合の計算は計算ユニットYで行う」などとその計算ユニット毎にデータを割り振って並列で計算を行います。

量子コンピューターの場合はビットの考え方から違います。古典ビットは 0 か 1 のどちらかでしたが、量子ビットは「0 と 1 のどちらでもありうる状態」です。「0 と 1 のどちらかわからない状態」と言っても良いでしょう。量子ビットを「観測」するまでは、0 か 1 のどちらになるかわからないのです。量子ビットを「観測」したら 0 か 1 のどちらかの結果が得られます。どちらの結果が得られるのかを確率的に知ることは出来ますが、「観測」するまでは「0 と 1 のどちらでもありうる状態」「0 と 1 のどちらかわからない状態」です。

このあたりの概念が量子力学なのですが、この概念を直感的に理解出来なくても全く問題ありません。直感的に理解出来る人類は皆無だと思います。ここではとりあえず、「そういうものなんだ」と思っていて下さい。著名な物理学者でも「そういうものなんだ」とあまり変わりませんし、アインシュタインは「そういうものなんだ」すら拒否してましたので、安心して下さい。

上表の i と j を量子ビットで表すとしましょう。i と j はそれぞれ2量子ビットになります。そして、i と j の全てのビット(合計4量子ビット)が「観測すると同じ確率で 0 または 1 になる状態」に設定できたとしましょう。そうすると、その状態は上表の16通りのパターン全てを含んでいることになります。

古典ビットは 0 か 1 のどちらに決まっていますので、それぞれの値の組み合わせが16通り必要でした。量子ビットは「観測すると同じ確率で 0 または 1 になる状態」ですので、各ビットは「 0 と 1 の重ね合わせ」の状態ですし、i と j 全体では16通りの重ね合わせの状態にあると考えられます。

この「データにおける重ね合わせ」が「データの並列化」の正体です。このデータの並列化を利用すると、組み合わせの数の回数分の計算を行う必要がなく、重ね合わせ状態にあるデータについて1回の計算だけで済むことがあります。「ことがあります」が重要ですが、ここでは深入りしません。

古典コンピューターであるスーパーコンピューターでは「組み合わせ」の数に対抗して計算ユニットを多数用意していますが、量子コンピューターでは「重ね合わせ」を利用して一気に計算を行う、という違いがあります。そして、理論的には重ね合わせの度合いが計算ユニット数よりも桁外れに大きいので、量子コンピューターによる高速計算が期待されている、というわけです。

この、量子ビットにおける重ね合わせですが、おそらく多くの方は重ね合わせの逸話をご存知です。シュレディンガーの猫です。

猫が「死んでいる」と「生きている」の重ね合わせ状態になっているというパラドックスシュレディンガーの猫ですが、量子ビットの0 と 1 の重ね合わせはパラドックスでも何でもなく、実験室レベルでは実証されていることです。

シュレディンガーの猫のお話と同じ「重ね合わせ」の原理によって、量子コンピューターはデータの並列性を得て、それが高速な計算につながっています。

次回は重ね合わせ状態にある量子ビットの表現方法について述べたいと思います。ブラとケットでブラケット、というお話です。