古典的なコンピュータのパラダイムは、常にスピードで語られてきた。少なくとも一般的なイメージでは。もちろん実際には、古典的なコンピュータの目標は、もっとずっと複雑なものになってきている。たとえば、より大きな、より多くの、あるいはより微妙なデータから、意味のある洞察を取り出せるような能力の向上、といったものだ。しかし、われわれがスマートフォン、タブレット、ラップトップを評価する際に気にするのはスピードだ。つまりどれだけ速いかということ。それによって、どれが「最高」なのかが決まる。
というわけで、この妄信的なものさしが、量子コンピュータの議論に持ち込まれるのも不思議ではない。量子コンピュータに関する一般的な記事を読むと、ほとんどスピード、スピード、スピードという語で埋まっている。スピードしか気にしていない。そのように考えている限り、量子コンピュータがわれわれに何をもたらしてくれるのか、理解することはできないだろう。
なによりも、古典的なコンピュータのスピードへの関心は、現在では時代遅れで潜在的に有害であるとみなされている。というのも、スピードの追求は、現在最も火急の研究開発課題とされているエネルギー効率から目をそむけさせるからだ。
このような固定観念によって量子コンピュータを見ることは、本質を突いたものではなく、古典的なコンピュータと量子コンピュータの性質の違いを描き出すものではない。
古典的な計算機の限界と、それを量子コンピュータによってどのように克服できるのか、ということが多くの人の関心を集めている。しかしスピード、トランザクションのスピードに、あまりにも興味が集中してしまう。私は実際に、量子コンピュータを使えば取引業務がどれくらい速くなるのか、と聞かれたことさえある。データセンターにある標準的なラックマウント型コンピュータと量子コンピュータの速度を比較できるチャートを見せてほしい、と言われたこともあるが、それはまだマシなほうだ。
もちろん、それは、この驚異的な新技術を評価するために取るべき手段ではない。むしろ、われわれは、これまでに考えたこともなかったようなやり方で、問題を解決する方法を検討すべきなのだ。量子コンピュータは、そのためにある。これらのマシンは、現在も解決できている問題を、単により迅速に解決するために設計されたのではなく、想像したことさえなかったような問題を解決するためのもの。まったく新しい能力を備えた、まったく新しいカテゴリのマシンなのだ。
古典的な「巡回セールスマン問題」を考えてみよう。訪ねるべき町のリストと、それぞれの間の距離が示されたとき、すべての町を巡って元の場所に戻ってくる最も短い経路を求める、というものだ。
われわれは、自身の想像力を使って、量子コンピュータによって可能になることを想像してみる必要がある。
あるいは、「ケーニヒスベルクの7つの橋」について検討してみよう。このかつてのプロイセンの都市は、プレゲル川の両岸にまたがっていた。その川の中には2つの島があり、それらが互いに合計7つの橋でつながれていた。それらの橋を必ず1度だけ通って、街を渡り歩く方法を見つけ出すことができるだろうか?Leonhard Euler(レオンハルト・オイラー)氏は、1736年に、それが不可能であることを証明した。この難問に挑むには、数学的な分析の技法を使わなければならなかった。そして、この不可であるという発見が、今日「グラフ理論の最初の定理」として広く知られている定理の創出に、そしてネットワーク理論の最初の証明に、Euler氏を導いた。
この答えがない奇妙な問題が、数学的なブレークスルーをもたらしたのだ。もしオイラー氏が量子コンピュータを持っていたら、どうだっただろう? 役に立っただろうか?それは私には分からないが、これだけは言える。われわれは、自身の想像力を使って、量子コンピュータによって可能になることを想像してみる必要がある、ということ。スピードに固執した古典的なコンピュータの世界とは決別すべきだ。そこには何の類似性もない。
量子コンピュータは、その設計において、古典的なコンピュータとはまったく異なっていて、私たちが夢見たこともないようなことを実行する能力を持っている。
量子コンピュータは古典的なコンピュータを置き換えるものではない。これからも両方が使われ続けるだろう。それらは異なった用途のために設計されているからだ。
古典的なコンピュータは、0か1かで表されるビットを使う。そろばんを使うのと基本的に同じ方法で計算を実行するわけだ。そのため、古典的なコンピュータで解くことのできる問題の種類は、事実上われわれが手で解くのと同じ。つまり、古典的なコンピュータが得意とする問題の種類は、演算にかかる時間が入力のサイズに応じて急激に大きくならないようなものに限られることになる。言い換えれば、もし入力に応じて評価時間が指数関数的に増加するような場合、古典的なコンピュータが解答を導き出す頃には(もし答えが出ればの話だが)、あなたはすでに死んでいる、ということも考えられる。
量子コンピュータは、キュービット、つまり量子ビット使用する。1つのキュービットは、その古典的なコンピュータとまったく同じように、0または1の値を取ることができる。ただし、それら2つの状態を重ね合わせた状態になることも可能だ。それは、以下のように書くことができる。
a|0⟩ + b|1⟩
ここで、aとbは複素数の値を表す。キュービットを計測すると、|a^2|の確率で0となり、|b^2|の確率で1となる。量子コンピュータは、キュービットの状態にユニタリ変換を適用して計算を実行する。そうして、これら2つの要素を組み合わせることにより、手計算でも、古典的なコンピュータでも不可能な計算の可能性が生まれる。これには、より優れた因数分解、検索、および量子力学のシミュレーションなどが含まれる。これらすべてが、計算機にとってまったく新しい時代の到来を意味している。それは、今後10年間で、これまでの計算機のすべての歴史よりも大きな変化をもたらすと、私は信じている。
速度に固執するのではなく、どのような種類の計算上の課題が量子コンピュータのスイートスポットとなるのかを想像してみる必要がある。もし、量子コンピュータが昔からある計算のために生まれたのでないとすれば、過去の問題を解決するために適したものでもない、ということになる。量子コンピュータは、まだだれも夢にさえ見ていなかったような、まったく新しい問題を解決するためのものなのだ。
画像クレジット:Syaheir Azizan/Shutterstock
[原文へ]
(翻訳:Fumihiko Shibata)