ひねくれボッチのエンジニアも感動で震えた「量子コンピュータ至高の技術」:踊るバズワード 〜Behind the Buzzword(6)量子コンピュータ(6)(5/9 ページ)
いよいよ最終回を迎えた「量子コンピュータ」シリーズ。フィナーレを飾るテーマは「量子テレポーテーション」「量子暗号」、そして、ひねくれボッチのエンジニアの私さえも感動で震えた「2次元クラスター状態の量子もつれ」です。量子コンピュータを調べるほどに「この技術の未来は暗いのではないか」と憂うようになっていた私にとって、2次元クラスター状態の量子もつれは、一筋の光明をもたらすものでもありました。
ひねくれエンジニアも震えた「2次元クラスター量子もつれ」
しかし、ここまでお話してきた「量子もつれ」のアプリケーションは、電子顕微鏡であったり、イメージング装置であったり、通信方式の話です。これらは、量子コンピュータのハードウェアやソフトウェアに直接関わる話ではありません。
もちろん、量子コンピュータのHゲートとCNOTゲートによって「量子もつれ」を作れることによって、これらの量子を製造することができるようになるのは事実ですが、私は「量子もつれ」が、量子コンピュータの機能となっているものを知りたかったのです。
では、ここから、本シリーズ最終回にふさわしい、私のような、ひねくれたボッチのエンジニアを震撼せしめた、量子コンピュータの至高の技術 ―― 「2次元クラスター量子もつれ」の江端風の解説を始めたいと思います。
さて、量子コンピュータの本を読めば、誰であっても以下のような図を見ることになると思います。実はこれ、量子コンピュータのプログラムです。
以下のC言語のプログラムと同じようなものです。
#include <stdio.h> int main() { printf(“Hello world!”); Return 0; }
上図は、GUIイメージで記載されていますので、実際のプログラム(Python)は、こんな感じになります*)。
*)ビット計算をしているという意味では、右図のアセンブラプログラミング(1980年代の8ビットコンピュータZ80プログラムです)の方が近いかもしれません。
from qiskit import * from qiskit.tools.visualization import * import math bx = 3 #量子ビット数 by = 4 #量子ビット数 cn = 4 #古典的ビット数 qx = QuantumRegister(bx,'qx') qy = QuantumRegister(by,'qy') c = ClassicalRegister(cn,'c') qcx = QuantumCircuit(qx, c) qcy = QuantumCircuit(qy, c) qc = qcx + qcy for i in range(bx): qc.h(qx[i]) qc.x(qy[3]) qc.cx(qx[2],qy[1]) qc.cx(qx[2],qy[2]) qc.cx(qx[1],qy[1]) qc.cx(qx[1],qy[3]) qc.ccx(qx[1],qx[2],qy[0]) qc.ccx(qx[1],qx[2],qy[1]) qc.ccx(qx[1],qx[2],qy[2]) qc.ccx(qx[1],qx[2],qy[3]) for i in range(by): qc.measure(qy[by-1-i], c[i]) r = execute(qc, Aer.get_backend('qasm_simulator')).result() rc = r.get_counts() print(rc) plot_histogram(rc) circuit_drawer(qc)
上記のpythonプログラムは、私が教本の中で見つけた、最も複雑なプログラムですが、それでも対象としているのは、たかだか"7ビット"です(ちなみに、コンピュータで1文字の英数を表現するには、最低でも8ビット必要です)。
ですから、こういう言い方は、かなり卑怯(ひきょう)ではあるのですが ―― この7つの量子ビットと、4つの古典ビットを操作するだけの量子プログラムは、1文字すら表現できないショボイプログラムとも言えるのです*)。
*)量子ビットは、古典ビットと全く違う性質(量子重ね合わせ)があるので、この言い方は全く不当です。
(NISQではない)量子コンピュータを、まともに使うのであれば、6000量子ビットが必要と言われているのに ―― たかだか数十ビットの量子コンピュータのハードウェアと、ビット単位でしか操作できないプログラミングでは、全くお話になりません。
まあ、プログラムのコンパイラの方は、正直全然心配していません(私でもコンパイラの作成方法はイメージできます)が、量子コンピュータの量子ビット数のスケールアップは、絶対に避けられない問題です。
特に問題は、量子ビットの取り扱いです。古典ビットと量子ビットは、その取り扱い方法が違う ―― というか、はっきり言えば、私には「真逆」に見えるほどです。
簡単に言えば、量子ビット(0猫/1猫)には、その場所からピクリとも動かない(超伝導回路、イオントラップ)、または、動くけどそのコースが固定されていて、それ以外のコースから外れることができない(光路)、という、面倒くさい制約があるのです。
量子ビットが動かせない、または、量子のコース動かせないなら、夥しい数の量子ビット間の結線、または、コースを作らなければなりませんが、これは想像を絶するスケールとなります*)。
*)「1量子ビットを制御してみよう」で、51量子ビット(IBM 2017年11月)の計算機を作るのに、仮に1光路の重量を”1グラム”としても、2兆キログラム(322億人分の体重)が必要になる、という話をしました。
この話が、ここで冒頭の、『あーー! そういうことかーーー!!』の話につながります(プレスリリース)。
つまり、
―― 「量子もつれ」を、「配線」に使う
です。
量子もつれとは、2つのペアとなっている量子がもつれている(連携している)状態です。
一方の状態が確定すれば、他方の量子が、宇宙のかなたにあったとしても、(光速を無視して)瞬時に伝搬します。そして、当然ながら、その量子の間に、何があろうとも(物質はもちろん、電磁波や、重力、そしてブラックホールがあろうとも)、まったく無関係につながっているのです。
―― 伝達媒体なし、エネルギーなし、転送時間0の配線
の実現です。
以下の図は、これを私なりに理解して、ブレークダウンしてみた図です(詳細は間違っている(CNOTを使っている等)と思いますので、専門家の方のご指摘をお待ちします)。
「入力」と同時に「出力結果」が分かってしまうコンピュータって、どの世界線の魔法だよ、と思いました。
[Tさんツッコミ!]クラスター状態を使った量子計算(測定型量子計算)は、大規模なクラスター量子もつれを準備した上で、量子ビット測定→測定結果から次の測定方法を計算→量子ビット測定→・・・を逐次的に繰り返す必要があるので、一瞬で計算が終わるわけではありません。
もっとも、これも詳細に詰めてみれば、技術的課題は山積になるとは思いますが、取りあえず、現時点で、この可能性を完全に否定できる要因はありません ―― だって、「量子もつれ」は、もはや簡単に作り出すことができて、実際に実用化(量子暗号)もされているのですから。
さて、このニュースリリースでは、この量子もつれの「2次元クラスター状態」の作成にも成功しています。
これが持つ意味は何かと言われれば『量子コンピュータのFPGA化*)』です。
*)念のため……。Field Programmable Gate Arrayとは、直訳すれば「現場で構成可能な回路アレイ」のことで、自分が欲しいICやLSI(×プログラム)を、さくっと作ることができるデバイスです。普通にLSIを設計、増産すると億単位のお金が必要となりますが、FPGAなら1個200円くらいから入手可能です。
- 量子コンピュータを「プログラム」ではなく、量子コンピュータの「回路そのものを変更」してしまう ――
- そして、量子間の結線は、「量子もつれ」に押しつける ――
多量子ビット問題、結線問題、など、私の気持ちを暗くさせてきた、量子コンピュータのスケーラブル問題が、(理論上は)これで解決可能です。
いや、それどころか、量子もつれを使えば、FPGAのような集積化すら不要です。地球と木星でバラバラに回路を作っても、それを瞬時連動させることも(理論的には)可能なはずです。
光の速度を無視して構わない、宇宙レベルの超広域超分散コンピューティング ―― そんな話、私は、SFですら読んだことがありません(単に、私が読んでいないだけかもしれませんが)*)。
*)「コヒーレンス時間は、どうするのだ」とか「観測のタイミング同期を、どうするのだ」というツッコミは、”今は忘れる”の方向で(私は今、気分がいいのです)。
で、このニュースリリースを、もっと読み込むと、さらにすごいことが書いてありました ―― 名付けて「量子もつれの大量製造装置」です。
[Tさんツッコミ!](江端さんは盛り上がっているようですが)このニュースリリースを持ち上げてしまうと、江端さん自身が「バズワード発生装置」になってしまうので十分ご注意ください。実際、このニュースリリースの方法も、他方式と同様にまだまだ、課題山積みの方式です。
この話をする前に、ちょっと光子を使った量子もつれの製造方法を簡単に説明します。
上図は、光子を使ったCNOTゲートの作り方の概要図になります。この前段にHゲートをつっこめば、光子を使った「量子もつれ」の製造が可能となります。
[Tさんツッコミ!]このニュースリリースの量子計算の方式は、単一の「光子」を使った方式ではなく、「光子」の重ね合わせ状態である「特殊な光の量子状態(スクイーズド状態)」を使った方式なので、「光の量子状態を使った量子もつれ生成の一例」と説明するのが良いと思います。
ところが、このような回路を普通に使った場合、光子の対が1個製造できるだけのもので、あくまで実験レベルの話です。
しかし、このニュースリリースの中で登場する「時間領域多重」というのは、簡単にいえば、光を単位時間ごとにぶった切って、それを量子の単位として、連続してぶっ放し続ける ―― 量子計算の繰り返しを実現する、というものです。
古典コンピュータで言うところの、クロックパルスのようなもの(?)ですが、単に、「光を連続的に遮断する」のではなく、スクイードな光 ―― 量子ゆらぎがコントロールされた光の波の束(波束)を作り出しているという点で、単なるパルス光とは異なります。
で、そこからの発想がすごい。まず、このスクイード光源から発射された量子(光子)をもつれ状態にした後、その一方だけを光ファイバーを使って、わざと遅延到着させます。
[Tさんツッコミ!]上記で説明した通り「光子」ではありません。
しかし、量子もつれは、状態を確定させない限り、宇宙のかなたでもつながっていますので、光ファイバーによる遅延ごときでは「もつれ」は切れません。
さらにここからの発想が、もっとすごい。この遅延していない量子と遅延している量子を、さらにもう一度「もつれ」させます。「もつれ」の「もつれ」が発生して、もう、「もつれ祭り」状態です。
こうして、もつれを続けることによって、ある量子を突つけば(観測すれば)、その観測が、複数の量子にゼロ時間で伝搬する、「配線レスの量子回路」が完成することになります。
もっとも、この研究の内容を見る限り、現時点では、FPGAのように自由な量子回路を自由自在に作り出せる訳ではないでしょう。また、他の量子デバイス(超伝導半導体やら、イオントラップ等)で同じ仕組みが作れる訳でもないでしょうが ―― とりあえず、ベルトコンベア的な「量子もつれ」を使った量子回路の製造方式には目処が立ったと思います。
―― エンジニアとしての私は、”1億倍”やら”1万年”なんぞより、”モノ作りのプロセスを具体的にイメージできる”ということの方が、はるかに”萌える”のです*)。
*)このあたりが、数学者や、基礎研究者と、モノ作りエンジニアとの違いだと思います。
量子コンピュータの連載の開始から、調べるたびに気分が陰鬱になっていた私は、この最終回で、ようやく、顔を上げることができる希望 ―― 量子コンピュータの未来を信じるに足る「技術」を知るに至ったのです。
[Tさんツッコミ!]江端さん、盛り上がっているところ大変恐縮ですが、量子コンピュータオタクの私としては、この技術について”も”、「江端さんの現時点の量子コンピュータの所感をひっくり返すに足る技術かどうか」は、もう少し時間をかけた詳細な再調査を、強くお勧めしたいです。ニュースリリースの記載内容に対する、江端さんご自身のコメント(例:「バラ色の未来の話がやたら多くて困る」等)も思い出してください。
Copyright © ITmedia, Inc. All Rights Reserved.