量子コンピュータについて説明します!

ここ最近、「量子コンピュータ」という言葉が話題になっています。この量子コンピュータに対し、「よくわからないが計算を速く行う魔法のようなコンピュータ」というブラックボックス的なイメージを持たれている方もいらっしゃるかもしれません。

ここでは、量子コンピュータは何なのか全くわからない、という方向けに、そのブラックボックスを解き明かすための入り口の部分だけを説明します。(量子コンピュータについての専門的かつ高度な記述はしません)

ポイント
  • 量子コンピュータでは、現代の一般的なコンピュータが情報を処理する仕組みをベースに量子の持つ性質「重ねあわせ」を利用することによって問題を速く解けるようになる。
  • 今後すべてのコンピュータが量子コンピュータに置き換わるわけではない。量子コンピュータで速く解くことのできる問題は限られており、使用用途も限定的なものである。
  • 現代の量子コンピュータはフルスペックの量子コンピュータからはほど遠い。まだ技術的に未解決な部分も多く、フルスペックの量子コンピュータが実現できるのがいつになるのかはわからない。

量子力学について

 まず、量子コンピュータの導入として量子力学について簡単に説明させて頂きます。量子力学とは、とても小さな物質のふるまいを扱う学問です。量子力学で扱うミクロな世界とは、私たちの直感的な感覚とは大きく乖離した世界であり、量子は「粒でもあり、波でもある」というような奇妙なふるまいをします。

この奇妙なふるまいをよく表した非常に有名な実験に、二重スリットの実験というものがあります。

 この実験では、板に細長い隙間を2つ開け、電子がその2つの並んだ隙間を通り抜けるときに何が起こるかを検証しました。電子が左の隙間を通れば電子は左寄りに、右の隙間をとおれば電子は右寄りにぶつかることが想定できます。
 しかし、結果は電子1個を発射したところ、壁のある一点にぶつかり、もう1個発射すると今度は別の一点にぶつかります。これを繰り返していくと、電子がぶつかった位置とぶつからなかった位置が交互に現れます。これは、先に述べた予想とは大きく異なる結果です。ここで、2つの隙間のうち右側の隙間を閉じてみると、電子は左側の隙間を通り、壁の左側にぶつかります。左側の隙間を閉じた時も同様にして壁の右側にぶつかります。つまり、隙間が2つのときだけこのような私たちの常識からは考えられないような結果になるのです。

この不思議な結果は以下のような理解しがたい説明によって、説明づけられます。

電子は左の隙間を通った可能性と右の隙間を通った可能性があり、どちらの可能性にも確定せずに、両方の可能性を「**重ねあわせた**」状態になっている。2つの波を重ねあわせると干渉が起こるように、1個の電子の中で2つの可能性が重ねあわせることで**干渉**が起こる。つまり、電子はどちらの隙間を通ったかの2択なのではなく、重ねあわせという状態になって両方の隙間を同時に通り抜けた。壁にぶつかる直前までは複数の場所に存在する可能性が重ね合わさっているが、壁にぶつかった瞬間に重ねあわせは壊れ、どれか1つの可能性に決まる。すなわち、電子はぶつかる直前までは波のようにふるまっているが、ぶつかった瞬間には粒としてふるまっている。

この「重ねあわせ具合」、つまりどのように重なりあっているのかというのが量子コンピュータの肝になります。これは水面の波が干渉しあう様子をイメージするとわかりやすいのですが、2つの隙間を通り抜けた波の「大きさの比」と「振動のタイミングのずれ」から決まります。

量子コンピュータ以前のコンピュータ

量子コンピュータについて説明する前に、私たちが現在使っているコンピュータについて説明します。

スイッチがONならば電気を通し(導通)、OFFならば電気を通さないという一般的な回路をイメージしてください。

「コンピュータの世界は0と1からなる二進数の世界である」ということは有名ですが、この0と1はビットと呼ばれ、スイッチのON/OFFで表現されています。コンピュータは、このスイッチのON/OFFを切り替えることで計算しているのです。

このスイッチはトランジスタと呼ばれるもので、電気信号を入れるとON、入れないとOFFになっており、トランジスタをつなげるとドミノ倒しのようにトランジスタのON、OFFが変化します。このようにトランジスタをつなげることで、NOTやANDなどの基本論理演算を行っています(NOTとはビットを反転させ、ANDは2つの入力がいずれも1のときのみ1を出力し、それ以外のときは0を出力する論理ゲートです)。この基本論理演算を組み合わせることで、加減乗除を行い、さらに加減乗除を組み合わせて、微分・積分、三角関数、対数関数などの複雑な計算を行っているのです。コンピュータでは、このようにトランジスタが連携することによって、複雑かつ高度な計算を全自動で行うことができます。

現代のコンピュータの脳みそである、CPU(中央演算処理装置)の部分は大量のトランジスタの集合体です。驚くべきことに、1辺数センチほどの小さいチップにトランジスタが約10億個ほど入っており、ON/OFFを1秒間に10億回ほど切り替えています。

これらのことから、CPU内のトランジスタの数はコンピュータの性能に直結しています。これまで、コンピュータは「同一面積あたりのトランジスタの数は1年半ごとに2倍になる」というムーアの法則(この法則を提唱したゴードンムーアは、米インテルの創業者の一人)によって予言されていた通りに発展してきました。黎明期と比べ、コンピュータの性能が年を追うごとに飛躍的に向上していることは実感されている方も多いと思います。しかし、近年ムーアの法則の限界が近づいていると言われています。なぜなら、トランジスタのサイズが原子1個のサイズに迫っているため、物理的にこれ以上小さいトランジスタを作ることは不可能であるという限界が見えてきたためです。そこで生まれたのが量子コンピュータなのです。

また、現在のコンピュータには消費エネルギーの問題もあります。現在のスーパーコンピュータは消費エネルギーが膨大であり、例えば、スーパーコンピュータ「京」では約3万世帯分に相当する電気量、年間約20億円もの電気代がかかっていました。量子コンピュータは一般的なコンピュータに比べると消費エネルギーが少ないと言われています。

量子コンピュータとは

量子コンピュータについてのアイデアは、今のように量子コンピュータが騒がれだす前の1982年、リチャード・ファインマンによって提案され、1985年、ドイッチュによって計算の基礎理論がまとめられました。

先ほど説明したように、一般的なコンピュータでは「0」と「1」からなるビットによって計算を行っていますが、量子コンピュータは量子ビットという特別なビットを使って計算をします。量子ビットとは「0と1の重ねあわせ」の情報を表しており、例えば一般的なコンピュータでの「00」「01」「10」「11」の4つの状態は、量子ビットを2ビット使うことで表現することができます。

また、一般的な論理ゲートは使わず、量子版の論理ゲートによって、おおざっぱに言えば量子ビットの波の重ねあわせ具合を変えています。二重スリットの実験で壁にぶつかった瞬間に重ねあわせが壊れてどれか1つの可能性に決まったように、量子コンピュータの最後の測定では1つの答えしか読みだすことができません。そこで、量子の波の性質を使い、複数のパターンを並列に計算し、波と波をうまく干渉させて正しいパターンにだけ絞り込んでいく、ということを行っています。

現在、IBM Quantum Experience(通称IQX)によって、誰でもクラウド経由で量子コンピューターにアクセスして量子計算を実行することができます。(IQXのログインはGoogleアカウント、SNSなどから簡単に行えます)

IBM Quantum Experience. "Get started with IBM Quantum Experience". https://quantum-computing.ibm.com/docs/(IQXログインページ)

IBM developer. "IBM Quantum Experienceで体験するはじめての量子計算". https://developer.ibm.com/jp/articles/iqx-getstart/(IQXの日本語チュートリアル)

ここでは、IQXの実行結果を示し、量子版の論理ゲートの役割を視覚的に表します。

量子ビットは|0〉, |1〉というようにベクトルとして表されています。初期状態は|00〉なので、以下のように2つの量子ビットのうち最初の量子ビットq[0]にX反転ゲートを適用して測定すると、

上のような結果を得ることができます。これは、右端のビットを 0 から 1 へ反転する操作、すなわち一般的なコンピュータの論理ゲートでのNOTです。

また、量子の重ね合わせは以下のようにアダマール(H)ゲートによって実現されます。Hゲートは、X反転ゲートのように一般の論理ゲートと同じような働きをするものではなく、量子コンピュータのための特別な論理ゲートです。

初期状態が|00〉だった2つの量子ビットのうち、最初の量子ビットq[0]にアダマール(H)ゲートを適用して測定すると、ほぼ半々の割合で|00〉と|01〉の量子状態が現れており、重ね合わせが実現されていることがわかります。

また、量子の重ね合わせだけでなく、量子もつれも実現することができます。

量子もつれとは、1つの粒子の重ね合わせが2つペアになった状態の特別な場合に起こることです。たとえば、ペアになった粒子Aと粒子Bのそれぞれのスピン(正確な表現ではないのですが、ある方向を向いた小さな矢印のようなものです)の向きが「Aが上向き・Bが下向き」と「Aが下向き・Bが上向き」との重ね合わせ状態を形成している場合を考えます。このとき、一方の粒子を観測してその状態が分かれば、もう一方の粒子の状態は観測するまでもなく、"瞬時に"決まってしまうのです。たとえば、Aが下向きだと観測されれば、その瞬間Bは上向き状態に決まります。重ね合わせ同様、このことも私たちの常識からは考えられないことですが、量子コンピュータで実現することができます。

以下のように、先ほどのHゲートを置いたあとに、入力値(小さな●)が1の時だけターゲットの量子ビット(大きな●)を反転させるCNOTゲートを適用します。

すると、上の棒グラフが示すように結果は|00〉または|11〉となります。つまり、一方の量子ビットを測定した瞬間、100%の確率でもう片方が一方の量子ビットと同じ量子状態をとることを意味しています。

これらのゲートの働きなどを応用することで、量子アルゴリズムを組むことができます。量子アルゴリズムで有名なものには、グローバーのアルゴリズム、ショアのアルゴリズムが挙げられます。グローバーのアルゴリズムとは、探索アルゴリズムの一種です。たくさんの引き出しのある棚の中に探したいものがある状況を想像してください。どの引き出しに探しているものがあるのか調べるのはとても手間がかかることがわかると思います。グローバーのアルゴリズムはこのように手間のかかる”探索”を効率的に行うアルゴリズムです。また、ショアのアルゴリズムとは、素因数分解を行うアルゴリズムです。ショアが示したのは、量子コンピュータによって 15=3×5 に素因数分解できた、という中学生にもできるような簡単なことですが、今後、量子コンピュータの性能が上がっていくことによって、もっと大きな桁数の素因数分解を行うことが期待できます。それぞれのアルゴリズムが具体的にどのように動いているのか理解するためには、前提として数学の知識が必要となるため、ここでは説明しませんが、もっと詳しく知りたい方は、こちらのリンクが参考になるかもしれません。

Quantum Native Dojo. "Welcome to Quantum Native Dojo!". https://dojo.qulacs.org/ja/latest/index.html

また、現在、このように量子ビット、量子版の論理ゲートを実現するためのハードウェア開発が、超伝導、半導体、イオントラップ、冷却原子、光など様々な方式からのアプローチによって行われています。近年の「量子コンピュータブーム」はGoogle, IBMなどの巨大企業がこのハードウェア開発に参入したことから始まったとも言われています。どの大学、企業が、どのような方式からのアプローチを行っているのか詳しく知りたい方は、よろしければ下記のリンクを参考にしてください。

Qmedia. "量子コンピュータを実現するハードウェア(後編)". https://www.qmedia.jp/making-quantum-hardware-2/

量子コンピュータの開発アプローチ

 現在、研究が進めらている量子コンピュータですが、汎用型の「量子ゲート方式」と特化型の「量子アニーリング方式」の二つが広く研究されています。

量子ゲート方式

 量子ゲート方式は汎用型量子コンピュータといわれ、従来のANDゲートやORゲートなどの論理ゲートの代わりに量子ゲートを配置し、初期化、ゲート操作、測定の3ステップで計算が行われており、利点として、高速化が保証されているアルゴリズムが複数あることや設計性が高いことがあげられています。
 しかし、従来のトランジスタを用いたコンピュータでは、ゲートごとに出力されノイズが除去されていたのに対して、量子ゲート方式は入力からそのゲートまでの波の重ね合わせで表現しています。そのため、量子ゲート方式はノイズに弱いとされており、「誤り」が発生しやすく、現在確立されている「誤り訂正技術」よりも優れた誤り訂正技術の開発が課題とされています。

量子アニーリング方式

 量子アニーリング方式は特化型量子コンピュータと呼ばれ、イジングモデルと呼ばれる数式を解くことで、消費エネルギーが最小となる組み合わせ最適化問題の近似解を算出します。
 ポートフォリオ作成など、社会課題に対して応用範囲が広いことが利点として挙げられていますが、対象となる組み合わせ問題の定式化や高速化手法が見つかっていないことなどが欠点としてあげられています。

量子コンピュータによってどのようなことが可能となるのか

それでは、量子コンピュータは私達の生活にどう影響するのでしょうか?量子コンピュータが得意な計算のうち、代表的なものを取り上げます。

1. 化学計算

そもそも量子コンピュータのアイデアを提唱したファインマンの目的は、量子の動きを計算することでした。物質の持つ多くの性質は、物質中の電子によって決まっています。コンピュータに電子の振る舞いを計算させることで、世の中に役立つ新物質が発見される可能性があります。この計算では量子力学のルールに基づいて計算する必要があるため、現代の高性能なコンピュータでも計算が難しく、量子コンピュータが向いています。

2. 素因数分解

先ほども述べたように、1994年、ピータ・ショアが量子コンピュータを用いた素因数分解の解法を発見しました。このように、量子コンピュータは素因数分解を高速に計算可能であるだろう、とされています。現在のあらゆるインターネット通信に使われる暗号化の方式であるRSA暗号は、巨大な数の素因数分解は極めて困難であるという前提に基づいて作られています。つまり、量子コンピュータによって高速に巨大な数を素因数分解することが可能になってしまえば、現在使われているRSA暗号は破られてしまうということです。量子コンピュータによって、RSA暗号に変わる新たな暗号(おそらく素因数分解に依らない暗号)を作る必要が出てきています。

その他、"Quantum Algorithm Zoo"(https://quantumalgorithmzoo.org/)というHPに量子コンピュータで高速化できる計算がまとめられています。

3. 組合せ最適化問題

「組合せ最適化問題」は、現代のコンピュータの手の負えない難問としてよく紹介されます。まず、最適化問題とは、「実行可能解の中で目的関数を最適にするような問題」です。そして、組合せ最適化問題とは、「解が順序や割当のように組合せ的な構造を持つ最適化問題」のことを言います。組合せ最適化問題では問題のサイズに関して、実行可能解の数が指数関数的に増えていくため、実行可能解に対して全探索を行うと最適解を求めるのに天文学的な時間が必要となります。量子コンピュータでは量子重ね合わせによる並列計算によって総当りすることができ、現代のコンピュータよりも高速に解くことが出来るのではないかと期待されています。この方法は、Groverの検索アルゴリズムとして知られており、問題サイズを*n*とするとき、現代のコンピュータで*O(2^n)*の計算が必要な問題でも、量子コンピュータならば*O(2^(n/2))*の計算で済みます。指数部分が半分になるだけでもだいぶ高速に解くことが出来るようになります。ただ、問題のサイズが大きくなれば、天文学的な時間がかかることには変わりはないので、得意であると言い切ることは出来ませんが、今まで膨大な計算時間によって断念していた問題やアルゴリズムの一部に関してさらなる研究成果が出ることが期待されています。

今回、基本的には文章での説明を試みましたが、量子力学の世界はとても抽象的なので、文章にしようとすると不正確な表現になってしまいがちであり、実際には量子コンピュータについての基本的なことを理解するためには数式が不可欠です。この記事では、量子コンピュータについてほんの一部しか説明できていないのですが、量子コンピュータについて興味を持つきっかけになれば幸いです。