量子コンピューターを理解したつもりになろう

 量子コンピューティング。これは、「量子もつれ」や「量子テレポーテーション」などに沿って、SFや人気のあるメディアでよく使われる単語です。

 「量子」と聞くと、難しそう!数学わからない!という声が聞こえてきます。
 量子コンピューティングは線形代数が元になっているため、技術愛好家のためのリソースはそれほど多くありません。
 この記事では、量子コンピューティングとは何かについて簡単な数学から、理論だけでなくハードウェアと実際の実装、そしてそれが将来にとって何を意味するのか、解説してみたいと思います。

ただ、量子力学はいまだ最先端でも証明しきれていない分野なので、説明しきれない分野ということになります

 

まずはイメージから

 量子コンピューターは、色々な可能性を用意し、それをふるいにかけて答えを出すイメージです。皆さんがお使いのPCも含め、現在のコンピューターは一個ずつ確実に計算をしていきます。

 計算をするには数をなにかで表現する必要があります。現在のコンピューターは0と1で表現されています。もっと言えば、電圧が高いか低いかで0と1で表現しているのです。

 量子コンピューターは、電子が上にいる状態を1、電子が下にいる状態を0としています。電子が二つあり、上下の電極のどちらかにいます。電子2個が上にいるのか、下にいるのかを0と1に対応させています。この電子はペアなので一緒に動きます。

電子とは素粒子です。素粒子は、物質を表す最小単位のことです。

 状態を0から1にしたい場合は、外からマイクロ波(電磁波)を与えるとそれぞれの間を移動させることができます。この途中でマイクロ波を与えるのをやめると、どちらの状態なのかわからなくなります。0なのか1なのかわからない状態、つまり、0でも1でもある状態になります。

 これが量子コンピューターの最大の特徴です。

 量子コンピューターの計算は、重ね合わせ、操作、観測からなります。重ね合わせに寄って0か1かわからない状態にします。
 これに計算結果となる答えの可能性が高くなるような操作をします。例えば答えが1なら、1になるように操作をするみたいなこと。このとき観測をすると、1が出てくる可能性が高くなります。

 量子コンピューターで計算が早くなるものは、「操作」がすでに開発されているもののみ。

 全てに適応できるのではなく、いい組み合わせを見つけるような計算。例えば、最適な道順や資産の最適配分の仕方などです。

 観測するまではわからない

 観測して初めて答えがわかります。

 「操作」の段階では、確率をいじっています。
 1000回同じ試行をしたら、10回くらいは違う答えが出るかもしれないし、出ないかもしれない。観測して初めてその答えがわかります。
 1000回中990回答えが1なら、おそらく答えは「1」になるでしょう。

 量子コンピューターにおける計算とは、計算というより、計算結果の予想ができる、というイメージに近いですね。

 0か1のわからない状態を作るとなにが嬉しいのでしょうか?
 それは、既存のコンピューターよりも少ない計算で処理ができるという点です。

ここの理論や計算については、量子力学を勉強していないと意味わからないと思うので、割愛させていただきます。

量子ビットと重ね合わせ

 量子ビットが何であるかを理解するには、最初にビットが何であるかを理解する必要があります。
 コンピュータは0または1のビットで実行されます。ビットは大量のデータを表すことができます。コンピュータが実行されるすべてのプログラムは、非常に長いビットの文字列に格納されます。 ビットは物理的にトランジスタで表され、ゲートを通過する電子の存在は1を表し、存在しないことは0を表します。コンピュータチップには数兆個の超小型トランジスタが詰め込まれていまるので、情報は電子で表されおります。

コンピューターは0と1の世界で表されているんだというイメージがあればOKです。

 一方で量子ビットは、0または1の状態だけに限定されないという点が根本的に異なっています。この現象は重ね合わせと呼ばれ、量子または非常に小さな世界(素粒子とか)にのみ存在します。 量子ビットは、光子のように、量子の振る舞いを示すものであれば何でもかまいません。

 重ね合わせにある量子ビットは、測定されると、2つの決定論的状態(0と1)のいずれかに寄っていき、0に落ちる確率または1に落ちる確率はその重ね合わせによって決定されます。量子ビットが等しい重ね合わせにある場合、状態0の半分と状態1の半分になります。したがって、測定すると、キュービットは50%の確率で状態0に、50%の確率で状態1に分類されます。たとえば、量子ビットが75%で状態0と25%で状態1にある場合、100回測定すると、キュービットは状態0に約75回、状態1に約25回分類されます。

 重ね合わせを理解するには、状態を相互に排他的なクラスではなく、波として考える必要があります。
 音楽Aと音楽Bという2つの形式の音楽を想像してみてください。音楽Aのみを100%の音量で再生するか、音楽Bのみを100%の音量で再生するか、両方を同時に50%の音量で再生することができますよね。そんな感じです。

 つまり量子ビットは測定時に2つの決定論的状態のいずれかに流れるため、量子ビットの真の確率的状態を測定することは不可能です。

測定することで測定結果が変わる。

 ただし、概算することは可能です。 量子ビットAが0で25%、1で75%の場合、1000回測定することで(たとえば、0を測定して239回、1を測定して761回)、物理学者は量子ビットの状態を概算できます。

 重ね合わせは実際の現象です。有名な二重スリットの実験では、電子や光子などの特定の量子が波動状態にあり、2つのスリットを通過すると、干渉パターンが画面に表示されることが示されています。

 ハードウェアにおいて、量子ビットを構築する際の主な課題は、それらの確率的性質が、それらの状態を微調整し、外力に基づいて変更できることです。 量子ビットが非常に強力であるという理由から、量子ビットを維持することは困難なのです。量子ビットの多くの可能な状態を数秒以上制御することは困難です。

同じ状態をキープするのが難しいので、観測も難しいのです。

 量子ゲートを適用して演算を実行すると、量子ビットの誤った取り扱いが原因でゲートエラーが発生することがよくあるようです。量子ビットは、量子の振る舞いを示す限り、光子から電子、特定の分子まで何でもかまいません。

量子ビットシステムとエンタングルメント

 一般的なコンピュータは、2つの値しか保持できませんでした。

 一方で、状態00の2量子ビットシステムは、状態0の最初の量子ビットと状態0の2番目の量子ビットを持ちます。状態10の2量子ビットシステムは、状態1の最初の量子ビットと状態0の2番目の量子ビットを持ちます。

 重ね合わせのため、2量子ビットシステムは単に決定論的(0または1)状態に限定されるのではなく、重ね合わせにすることができます。等しい重ね合わせの2量子ビットシステムは、状態00で4分の1、状態01で4分の1、10で4分の1、11で4分の1になります。つまり、システムを測定すると、同じ確率でシステムが 4つの決定論的な2量子ビット状態の1つに収束することができます。

すげー簡単にかつ雑な説明になりますが、より多くの状態の測定ができるんだなみたいな感じで良いでしょう。

 エンタングルメントは物理会では一般的によく使われる言葉です。

 2つの絡み合った量子ビットAとBが任意の重ね合わせである場合、太郎君が量子ビットAを測定して状態1にあるとすると、太郎君は量子ビットBも測定せずに状態1にあることを即座に認識します。大将くんがBを測定すると、状態1になります。大将くんが量子ビットAの状態が0にあると測定した場合、キュービットBも状態0にあると測定されます。驚くことは、この現象は、AとBが数兆光年離れている場合でも発生します。

一方の状態が決まれば、もう一方の状態も決まる、これが量子の世界。

 これに関して、アインシュタインと他の物理学者は、光速より速く移動できるものはないと述べているアインシュタインの特殊相対性理論に違反しているように見えるという点で、エンタングルメントに誤りを見つけました。 太郎さんが量子ビットAを持ち、花子さんが量子ビットB(両方とも絡み合っている)を持ち、太郎さんが数十億光年離れて移動する場合、花子さんの量子ビットは太郎さんの量子ビットとまったく同じように測定されます。
  量子ビットを測定すると、2つの決定論的状態のいずれかに強制されるため、量子ビットの正確な確率的状態を見つけることは不可能なのです。 この質問はいまだに議論されています。

なぜ量子ビットが優れているか? そしてその未来は?

 量子ビットは、データベース検索や因数分解など、いくつかのコンピューティングの問題でこれまでのビットよりも指数関数的に高速です。その高速さゆえに、既存の暗号化システムも破られる可能性も大いにあります。
 認識しておくべき重要なことは、量子ビットはビットよりもはるかに多くの情報を保持できるということです。 1ビットは1量子ビットと同じ量の情報を保持します。両方とも1つの値しか保持できません。 ただし、2量子ビットと同じ量の情報を格納するには、4ビットを使用する必要があります。等しい重ね合わせの2量子ビットシステムは、4つの状態の値を保持します。これは、従来のコンピューターでは、保持するために少なくとも4ビットが必要です。 3量子ビットシステムは、000、001、010、011、100、101、110、および111の8つの状態(2の3乗)を格納できるため、3量子ビットと同じ量の情報を格納するには8ビットが必要です。

 量子コンピューターは、数値の因数分解にも優れています。これにより、RSA暗号化が実現します。元来ののWebサイトを保護するセキュリティプロトコルは、RSA暗号化と呼ばれます。 現在のコンピューティングリソースでは、解が1つしかない30桁以上の数mを因数分解するのに非常に長い時間がかかります。

 Shorのアルゴリズムと呼ばれる量子アルゴリズムは、数の因数分解において指数関数的な高速化を示しました。これは、将来的にRSA暗号化を破る可能性があります。
 一方で、量子コンピューターがいつかRSA暗号化を破ったとしても、量子特性に依存するBB84と呼ばれる新しいセキュリティプロトコルは、量子コンピューターから安全であることが確認されています。

量子暗号とかそういう世界の話になってくる……

 では、量子コンピューターが従来のPCに完全に取って代わるのでしょうか。

 量子コンピューティングは非常に急速に発展していますが、まだまだ初期段階にあり、研究はGoogle、マイクロソフト、IBMなどの大企業によって半競争的にしか行われていません。量子の未来にはたくさんの障壁がありますが、その主要な障壁は、ゲートエラーに対処し、量子ビットの状態の整合性を維持することです。

 しかし、過去数年間に起こった革新の量を考えると、量子コンピューティングが大きな進歩を遂げることはそう遠くないかもしれません。
 IBMの量子コンピューター開発者は、量子コンピューティングが古典的なコンピューターを完全に排除することはおそらくないだろうと述べています。代わりに、将来的には、どちらがより適切であるかに応じて、特定のタスクを量子トランジスタに依存し、他のタスクを古典的なトランジスタに依存するハイブリッドチップが登場する可能性があります。

お互いの良いところを使っていきましょうという感じですね!