💠 量子コンピュータはなぜ速いのか
STAGE 6 ― グローバーの探索 ―
クリア 0 / 8
🗺️ マップ
STAGE 6

グローバーの探索

振幅増幅
🎯 ミッション
「当たりの矢印を反転させる」「平均のまわりで折り返す」という2手だけで、正解の矢印が育っていく仕組みを理解しよう。必要な回数が約√N であること、そしてそれが2次加速にとどまることまで説明できれば合格。
未達成
ねこ博士
今日は、誰もが本当に困っている問題を扱おう。並べ替えられていない大量の候補の中から、条件に合う1個を探す問題だ。
たとえば、電話帳から「この電話番号の持ち主は誰か」を調べるとする。電話帳は名前の五十音順に並んでいて、番号順には並んでいない。この場合、どう探すことになるかな。
うさ美
端から順に見ていくしかありません。運がよければ1件目、悪ければ最後の1件。候補が N 件あれば、平均で N の半分くらい、最悪 N 回調べることになります。
並び順に手がかりがない以上、これより速い方法はないはずです。だって、調べていない項目が当たりでない保証はどこにもないので。
ねこ博士
その推論はふつうのコンピュータについては完全に正しくて、証明もされている。N 件の総当たり探索は、N に比例する回数がどうしても必要だ。
ところが1996年、ロブ・グローバーが量子コンピュータでこれを 約√N 回に減らす方法を見つけた。N が100万なら、100万回ではなく約1000回。1兆件なら100万回だ。
うさ美
100万件を1000回で……。でも、どうやって。全部の候補に矢印を立てて重ね合わせても、そのまま測ったら100万分の1の確率で当たりが出るだけです。それでは100万回引かないと当たりません。
――ということは、測る前に当たりの矢印だけを長くする操作があるんですね。でも、どれが当たりか分かっていないのに、どうやってその1本だけを狙うんですか。
ねこ博士
いい問いの立て方だ。答えはこうだよ。私たちは当たりが「どれ」かを知らないが、当たりを「見分ける箱」は持っている。電話番号の例なら、名前を1つ渡されて「この人の番号は探している番号か」と聞けば、はい・いいえは即答できる。これがオラクルだ。前回と同じ道具だね。
うさ美
引っかかることがあります。名前を渡せば「はい・いいえ」を即答できるなら、箱は答えを知っているも同然に見えます。回りくどいことをせずに、「当たりはどれ?」と箱に聞けば済むように思えます。
ねこ博士
聞いても、箱には答えられないんだ。箱が持っているのは照合の手順であって、答えの一覧表ではない。電話帳の例で言えば、1枚の板に電話帳と探す番号を刻みつけたようなものだね。渡された名前の欄と探す番号を1桁ずつ照らし合わせる手順が、板の上に回路として書いてある。錠前と同じだよ。錠前は、差し込まれた鍵が正しいかどうかを一瞬で完璧に判定する。でも錠前に「正しい鍵の形を教えて」と頼むことはできない。暗号の鍵探しも、パズルの答え探しも同じ形をしている――1つの候補を確かめるのは一瞬、でも正しい1つを見つけるのは大仕事。世の中の難問の多くがこのタイプで、グローバーの方法はこの「照合の箱」だけを頼りに、たった2手を何度も繰り返す
うさ美
準備は想像がつきます。前回と同じで、全部の量子ビットに H を当てて、N 個の候補すべてに同じ長さの矢印を立てるんですよね。長さは√N分の1――2乗して N分の1、N 個で合計1です。……そこから、どうするんですか。
ねこ博士
その通りの準備でいい。ここから2手を繰り返す。
【第1手・反転】オラクルに聞いて、当たりの行の矢印だけを正反対の向きにする。前回の位相キックバックがそのまま使える。当たりを名指しできなくても、重ね合わせの全候補を箱に通せば、照合に引っかかった行だけが反転する――照合の手順さえあれば、この操作は組めるんだ。
うさ美
でも、向きを変えただけでは長さは変わりません。2乗すれば向きは消えるので、いま測っても当たる確率は N分の1 のまま。目印を付けただけですね。……いえ、待ってください。箱は当たりの行だけを狙って反転できたわけですよね。だったら、どの行を反転したのかを教えてもらえば、それで終わりなのでは?
ねこ博士
教えられないんだ、2つの理由で。第一に、箱のどこにも「当たりは◯番」と計算する部分がない。反転は行ごとに「この行は照合に引っかかったか」で起きるだけで、当たりの番号はどこにも書き出されない。教えたくても、教える中身を箱は持っていないんだ。第二に、きみが言った通り、印は向き(位相)で書かれている――いわば見えないインクだ。測っても確率に現れない以上、外から読む方法がない。
できる唯一のことは、この見えない印を、干渉で長さという見える形に変換していくこと――それだけなんだ。
うさ美
その変換、候補が2個なら私は知っています! 準備の状態は |0⟩ と |1⟩ が0.71ずつ――|+⟩ です。箱が当たり(たとえば |1⟩)の矢印を反転すると、|0⟩ に0.71、|1⟩ に正反対の0.71――|−⟩ そのものです。そのまま測れば五分五分で何も分かりませんが、H を1発かけてから測れば、確実に 1 が出る。STAGE3でやった、|+⟩ と |−⟩ の見分けそのものだ。
……でも、候補が N 個に増えたら、この H にあたる変換は何になるんですか?
ねこ博士
その通り。候補2個なら H 1発で印を読み切れる。その N 行版を担うのが第2手――ただし N が大きいと1発では変換しきれず、少しずつ進めることになる。
【第2手・平均のまわりの折り返し】全部の矢印の平均を計算して、それを鏡だと思って、すべての矢印を平均の反対側へ折り返す。式で書けば、新しい値=2×平均 − 元の値。平均より下にあったものは同じだけ上に、上にあったものは同じだけ下に移る。
うさ美
なるほど、当たりだけが平均からうんと離れているから、折り返すと当たりだけが大きく動くんですね。
小さい例で確かめます。候補が4個なら量子ビットは2個――表は |00⟩ |01⟩ |10⟩ |11⟩ の4行です。当たりを |10⟩ としましょう。最初はみんな0.5(0.5の2乗が0.25で、4行足して1)。
第1手:|10⟩ だけ反転して、0.5、0.5、−0.5、0.5。
平均:(0.5+0.5−0.5+0.5)÷4 = 0.25。
第2手:|10⟩ は 2×0.25 −(−0.5)=1.0。他の行は 2×0.25 − 0.5 =0
……できてしまいました。|10⟩ の矢印が1.0、他は全部ゼロ。測れば100%で「10」が出ます。4個の中から、箱への質問1回で確実に。
反転 → 平均で折り返す。当たりだけが育つ
候補の数 16 くり返した回数 0 当たりが出る確率 6% ちょうどよい回数 3
候補の数
棒1本が候補1つの矢印。上向きが「そのままの向き」、下向きが「正反対の向き」で、棒の長さの2乗がその候補が出る確率。緑の棒が当たり(本来はどれが当たりか分からないが、仕組みを見るために色を付けてある)。点線は全部の矢印の平均
①を押すと当たりだけが下に反転し、平均がわずかに下がる。②を押すと全部の棒が平均の反対側へ折り返され、平均から大きく離れていた当たりだけが大きく跳ね上がる。繰り返すほど当たりが育つが、行き過ぎると今度は縮んでいく――ちょうどよい回数で止めるのがコツだ。
うさ美
では、反転と折り返しを繰り返せば繰り返すほど、当たりの矢印は育っていくわけですね。
ねこ博士
それが、そう単純でもないんだ。反転と折り返しは、どちらも矢印を回す操作だからね。回転を続ければ、いつか行き過ぎて戻ってくる――回しすぎると、育てた矢印がまた縮んでいく。ブランコを押すタイミングを間違えると勢いが落ちるのと同じだよ。ふつうの探索なら探し続けて損をすることはないのだから、ここも「探索」ではなく干渉である証拠だね。
ちょうどよい回数は決まっていて、約 0.785×√N 回――円周率πの4分の1が0.785だ。N が100万なら785回くらい。この回数で当たりの確率がほぼ1になり、それを過ぎると下がり始める。
うさ美
100万件が785回。確かにものすごい進歩です。
……それでも、やっぱり最初の疑問が解けません。箱は、4行のそれぞれについて「この行は当たりか」に応じて反転する・しないを決めていますよね。それは、内部で候補を1個ずつ判定しているのと何が違うんですか? それなら、質問は1回ではなく実質4回では。
ねこ博士
いい問いだ、そこが「同時に計算」の正確な中身だよ。
まず、箱に入る物は1つだけだ。量子ビットのかたまりが1つあって、その状態が1つ。N行の表というのは、そのたった1つの状態を書き下した姿であって、N個の物が詰まっているわけではない。
そしてゲートは、表全体への書き換え規則だ。行が4行でも100万行でも適用は1回で、かかる時間は照合の手順の複雑さぶんだけ。候補の数には比例しない。
では、なぜ1回通しただけで行ごとに違う結果が出るのか。量子力学の法則が線形だからだ――「AとBを足したものを入れたら、Aの結果とBの結果を足したものが出てくる」という性質だよ。箱は行1つずつを正しく照合するように組んであるだけで、あとは法則のほうが重ね合わせを勝手に分配してくれる。こちらは場合分けを1度もしていないのに、全行ぶんの照合が済んでいる――手品の種はここなんだ。
うさ美
「場合分けをしていない」のは、こちらの手順の話ですよね。装置の側が、目にも留まらぬ速さで、こっそり成分を1行ずつ順番に照合している――ということは、ないんですか。
ねこ博士
それは、やりたくてもできないんだ。ゲートの実体は、装置に電磁波のパルスを一瞬当てることだったね。パルスは波全体に一度に働く。矢印の表というのは、たった1つの波の成分帳簿だから、成分を1つずつ触るボタンは、装置のどこにも存在しない。「1行ずつ順番に」は、この機械にはそもそもできない芸当なんだよ。
線形とは ― 1行ずつでも、まとめてでも、行ごとの結果は同じ ① 1行ずつ通す 照合の箱 当たりなら 向きを反転 入口 出口 箱を通した回数 0 4行を順番に。4回かかる
同じ箱に、①1行ずつ通した場合と、②4行を重ね合わせのまま通した場合の比べ図。行ごとの結果はどちらもまったく同じ――当たりの2番(|10⟩)だけが向きを反転され、他の3行はそのまま出てくる。違うのは箱を通した回数だけで、①は4回、②は1回。これが「法則が線形」ということの中身だ。箱は行を1つずつ入れたときに正しく照合するように組んであるだけで、重ね合わせ用の仕掛けは何も入っていない。それでも重ね合わせを入れれば、各行はそれぞれ自分の結果になって出てくる。候補が100万行でも、箱を通るのは1回のままだ。
うさ美
まだ腑に落ちません。ふつうのコンピュータでも、候補の数だけCPUを並べて、いっせいに判定させれば「1回で全候補を処理」になりますよね。それと何が違うんですか?
ねこ博士
いい比較だね。決定的な違いは設備の数だ。CPU並列は候補の数だけ物理的な機械が要る。候補が2¹²⁸個なら、宇宙の原子を全部使ってもコアが足りない。量子の側は、候補が2倍になっても量子ビットが1個増えるだけ。なぜそんなに安いのか――候補たちが「N台の機械」ではなく、1つの波のN個の成分だからだ。さっき言ったとおり、成分ごとの処理を装置がやっているのではなく、法則のほうが勝手に分配してくれるからね。
うさ美
でも、「板には電話帳が刻まれている」とおっしゃいましたよね。それは実際にはどうやるんですか。100万件なら、板のほうに100万件ぶんを刻むことになりませんか。だとしたら、その刻む手間はどこへ行ったんでしょう。
ねこ博士
そこを見逃さないのが大事だ。まず素朴なやり方から言うと、問い合わせのたびに電話帳ぜんぶを回路に焼き直すことになる。100万件なら100万件ぶんの部品だ。しかもグローバーは√N回くり返すから、合計するとふつうの総当たりより高くつく。「量子コンピュータはデータベース検索が速い」がほとんど神話だと言われるのは、この計算のせいなんだよ。
そこで考えられているのが QRAM(量子RAM)という装置だ。RAMというのは、ふつうのコンピュータの記憶装置のこと。「何番地の中身をくれ」と言うと、その番地に入れてある中身を出してくれる箱だと思えばいい。その量子版を作ろう、という構想だね。
うさ美
……でも、それで手間はどこへ消えたんでしょうか。
いえ、消えていませんね。番地ごとに中身を置いておく場所が要るのだから、100万件なら装置のほうに100万か所ぶんの部品が必要です。
ねこ博士
そこに気づけば十分だ。手間は消えたのではなく、装置の側へ移った。装置ぜんたいが100万個規模になるんだ。しかも、それだけの部品を誤りから守り続けられるのか――QRAMが実際に作れるのかどうかは、いまも決着がついていない。あくまで構想の段階だよ。
うさ美
最初の電話帳の話ですが、そもそも番号順に並べ替えてしまえばいいのではありませんか。順番に並んでいれば、辞書を引くように半分ずつ絞り込めます。100万件でも、半分にするのを20回ほど繰り返せば1件に届く計算です。785回よりずっと速い。
並べ替えるのも、板に刻む作業に比べれば効率的です。
ねこ博士
その見立てで合っている。ただ、分かれ目がひとつある。一度きりの調べものなら、並べ替えは損になる。全部の行を読んで並べ替える手間のほうが、端から順に照合していく手間より大きいからね。逆に何度も引くなら、並べ替えたほうが勝つ。手間を最初に一度だけ払えば、あとは1件あたり20回で済む。これはふつうのコンピュータの完勝で、世の中のデータベースはみなこれをやっている。
ついでに、量子の側の言い分も言っておこう。オラクルは、行どうしを比べない。1つの行を渡されて「照合に引っかかるか」を答えるだけだ。並べ替えというのは行どうしの大小を使う作業だから、この箱にとって並び順は最初から関係がない。だから重ね合わせにそのまま通せるんだ。
うさ美
結局、手順をぜんぶ数えれば、アルゴリズムの旅で勉強したやり方――あらかじめ番号順に並べ替えて索引を付けておき、探すたびに「真ん中を見て、半分に絞る」を繰り返す二分探索で見つける――のほうが、はるかに速いですね。一回限りの操作なら、端から順に照合していく線形探索のほうが速いですし。
では、並べ替えられる相手にグローバーを持ち出しても、あまり意味がないということですか。
ねこ博士
そうだ。だから本当の出番は、並べ替えるべき一覧表が、そもそも存在しない問題のほうなんだ。
たとえば、暗号の鍵を総当たりで探す問題だ。候補は2¹²⁸通り。これは「並べ替えるのが大変」なのではなく、書き出すことすらできない。宇宙にそれだけの紙がない。索引も辞書も作りようがなくて、できるのは鍵を1つ決めて錠前に差してみることだけだ。
こういう問題は世の中にいくらでもある。「条件を満たす組み合わせを探せ」「この計算結果になる入力を探せ」――どれも候補を一覧にできず、1つずつ試すしかない。その世界で N 回が √N 回になる。グローバーの居場所は、電話帳ではなくこちら側なんだよ。
うさ美
待ってください。それだと、もっとひどいことになりませんか。100万件の電話帳で装置に100万個の部品が要ったのなら、候補が2¹²⁸通りの鍵探しでは、2¹²⁸個の部品が要るはずです。宇宙に紙がないのと同じで、装置も作れません。
ねこ博士
そこが、電話帳と鍵探しの決定的な違いだよ。板に刻むものが、まるで違うんだ。
電話帳で刻んでいたのはデータそのものだった。「0番は鈴木さんで、番号はこれこれ」「1番は大谷さんで――」と、1件ずつが互いに無関係だから、規則で書けない。100万件なら100万件ぶんを刻むしかない。
ところが鍵探しで刻むのは手順のほうだ。「渡された鍵で暗号文を復号して、意味のある文になるか調べよ」――これは計算の手順を1つ書けば済む。候補が2⁶⁴通りだろうと2¹²⁸通りだろうと、板の大きさはまったく変わらない。暗号1つぶんの回路で足りるんだ。
うさ美
では、2¹²⁸通りの候補のほうは、どこにいるんですか。板になければ、どこかに置き場所が要るはずです。
……あ。量子ビットの中ですね。ステージ4で確かめたとおり、n本の量子ビットの表は 2ⁿ 行になるのだから、128本並べれば、表は自動的に2¹²⁸行になる。
ねこ博士
そういうことだ。候補の数を決めるのは、装置の大きさではなく量子ビットの本数。だから宇宙の原子より多い候補を、手のひらに載るチップが相手にできる。
逆に言えば、電話帳がやっかいだったのは、量子のせいではない。規則で書けないデータを、まるごと持ち込もうとしたからだ。世の中で本当に困っている大きな問題は、たいてい候補を規則で作れて、正しいかどうかも計算で判定できる。表を持たなくていいから、板は小さいままでいられるんだよ。
うさ美
ここまで聞くと、量子コンピュータが魔法の箱ではないことが、よく分かります。
まとめます。グローバーの方法は、当たりの矢印を反転して目印を付け、平均のまわりで折り返して目印を長さに変える。これを約0.785×√N 回。使うのは、いつもの「打ち消し合いと強め合い」だけで、新しい原理は何も足していない。
ねこ博士
そのまとめで十分だよ。効き目の大きさも、数字で押さえておこう。グローバーの加速は、回数が N から √N になる2次加速で、指数加速ではない。鍵の候補が2¹²⁸通りある暗号なら、総当たりが2⁶⁴回くらいに減る――深刻ではあるけれど、鍵の長さを2倍にすれば元の強さに戻る。しかもこの2次加速が限界であることも証明されていてね。構造のない総当たり探索を、量子コンピュータでこれ以上速くする方法は存在しない。何も構造のない問題にも効く汎用の道具だからこそ、効き目もそこまでにとどまるんだ。
――では、本当に世界を揺るがしたアルゴリズムはどれか。それは、問題に隠れている構造を干渉で暴き出すものだ。次のステージでは、インターネットの安全を支えている暗号を根こそぎにする力を持つ、ショアのアルゴリズムを扱うよ。
必要な質問回数:N に比例 vs √N に比例
横軸が候補の数、縦軸が必要な質問回数(どちらも対数目盛り=1目盛りで10倍)。ふつうのコンピュータは候補が10倍になれば回数も10倍になるが、グローバーの方法では約3.2倍にしか増えない。差は確かに大きいが、傾きが半分になっただけで、指数の壁が消えたわけではない。次のステージで扱うショアのアルゴリズムは、この図の直線そのものを別の形に変えてしまう。
【グローバーの探索 ― 振幅増幅】 ・問題:構造のない N 個の候補から当たり1個を探す。ふつうのコンピュータは平均 N/2 回、最悪 N 回の質問が必要(これが限界であることも証明済み) ・準備:全候補に H を当て、すべての矢印を長さ √N分の1 にそろえる 第1手(反転):オラクルで当たりの行の矢印だけ正反対の向きにする(位相キックバック)。長さは変わらず、目印が付くだけ ・1パスで全行に効くのは波の並列(二重スリットで両道筋が同時に変換されたのと同じ)。
コアN個の並列と違い設備は量子ビット log₂N 個。ただし読み出せるのは1行だけ
第2手(平均のまわりの折り返し):新しい値=2×平均 − 元の値。平均から大きく外れた当たりだけが大きく伸び、外れは少しずつ縮む ・くり返す回数は約 0.785×√N 回(πの4分の1×√N)。行き過ぎると確率は下がる――回転だから ・加速は2次まで(N → √N)で、指数加速ではない。128ビット鍵の総当たりは実質64ビット分になるが、鍵長を2倍にすれば対策できる

確認クイズ

Q1. 候補が4個、当たりが1個。全部の矢印を0.5にそろえてから、当たりを反転し、平均のまわりで折り返した。当たりの矢印の長さは?

Q2. グローバーの方法で、ちょうどよい回数を過ぎても繰り返し続けるとどうなる?

Q3. グローバーの加速について正しい説明は?