ラベル グローバー の投稿を表示しています。 すべての投稿を表示
ラベル グローバー の投稿を表示しています。 すべての投稿を表示

2022年12月21日水曜日

Groverの探索(量子アルゴリズム)でコンビニ出店案

【要旨】Groverの探索は、典型的な量子アルゴリズムの一つである。これは、可能性のある全ての探索問合せを量子重ね合わせの原理で一度に行い、量子状態の確率振幅を波の干渉のように増幅/減衰させる。この繰り返しによって、解を浮き上がらせ、確定させる。そのような驚異のアルゴリズムである。その概要は、すでに本ブログ記事[1]でも述べた。ここでは、IBM Quantum Challenge 2019[2]で出題された課題「コンビニ出店案作成」に対するGrover探索による解答例を追試行し、その威力と魅力を確認した。

[量子アニーリングによる結果も、末尾に追加した。]

Grover探索アルゴリズムの概要
 すでに、別の記事[1]で述べたので、ここでは極く簡単に復習する。簡単な例として、00、01、10、11を入力とする関数fがあり、fはある一つの入力に対してのみ1であり、その他の入力に対しては0を出力する。関数値f(xx)=1となる入力xxを求める問題である。古典的探索では、最悪の場合、関数fの評価を3回行う必要があるが、Groverによれば、それは1回で済む。図1はこのアルゴリズムを実現する量子回路とその説明である。
 まず、Oracleと呼ばれる量子回路を作る。それは、4個の全ての入力を纏めた量子重ね合わせを受け取り、f(xx)=1となる|xx⟩の確率振幅の符号を反転させる。その際、 解xxに応じたOracleを構成するのである。だが、これは解をすでに与えているわけではなく、課題そのものの記述に相当する。Oracleの中で、関数fは1回評価される。
 次に、Grover反復と呼ばれる確率振幅の増幅/減衰により、解を他から分離することができるのである。すなわち、解を与える入力のみが多数回測定されるように作られている。そこが核心部分である。この例では反復1回で明確に解が得られた。一般には、入力サイズNに対して、√N回のオーダーの反復で解が得られることが知られている。
課題:コンビニ出店案の作成
 少し現実的な「コンビニ出店案の作成」にGrover探索を適用する。これは、IBMのQuantum Challenge 2019での出題[2]を若干変更したものである。図2にその仕様を示した。合計11地区に4社のいずれかのコンビニを一つだけ出店する案を全て列挙せよという問題である。
 これはグラフの彩色問題の一つであり、各辺の両端のノードの色が同色になることを禁止することに相当する。すでにA社、B社、C社、D社が図1のようにそれぞれ1店を出店済みなので、残り7地区にどのように出店させるかである。
 これを解くには、全ての条件を満たす場合に最小になるようなエネルギー関数を設定した量子アニーリング法が適しているかも知れない。また、数理計画による解法もあるだろう。しかし、ここでは、Grover探索を用いて、量子アルゴリズムの威力、魅力を確認したい。

「コンビニ出店案」をGrover探索で解く
 この解法は、最初に挙げた00、01、10、11を入力とする探索と基本的に同じ仕組みである。だが、解がいくつ存在するかわからないので、それに対応するOracleの作成に工夫が必要である。具体的な実装方法とプログラムは参考資料[2]を利用させていただいた。解の候補として考えるべき、7量子による入力は16,384(4の7乗)とおりである。Oracleが構成した後は、上に述べたGrover反復を行えばよい。図3に、Qiskitを用いた量子シミュレーション結果を示した。
 この量子シミュレーションでは同じことを500回(500 shots)行ない、その測定値の統計を示してある。図3(a)は、Grover反復1回の状態である。ほとんどの入力は1回だけ測定され、いくつかの入力に対しては2回〜7回程度測定された。さらに反復を続けると、解を与える入力の測定回数が順次増加し、解でないものの出現が減少する。
 Grover反復を7回実行した結果が図4(b)である。出現頻度が40〜50と際立つものが9個観測された。それが解だと判定される。実に見事な解法ではないか!
(なお、(a)よりも(b)での縦棒の幅が太くなっているのは、出現回数0回の入力が激増したため、図からそれらが取り除かれたためである。)
得られた解を確認する
 以上の結果を図4の通り確認した。(解が9個しかないことは証明されていないが)恐らくこれが全ての解であろう。確かに、どの解においても、辺の両端のノードは異なる彩色となっており、全ての条件を満たしている。

感想
 驚嘆すべき量子アルゴリズムの一つであるGrover探索を、ある程度現実的な問題にも適用できることが分かった。IBM Quantum Challengeでは、現実的な課題を順次増やして量子コンピューティングコミュニティを活性化させようとしている。いずれ、そこで出題される課題にも挑戦してみたい。また、冒頭に述べたように、この課題は、量子アニーリングの利用にも適していると思われるので、そちらも試す価値はあるだろう。

[追加]2022-12-22
 その後、量子アニーリングによる解法もやってみた。参考資料[3]のデモアプリ(グラフ彩色)を参考にした。縦軸にノード番号、横軸に色番号のマス目を作り、そこに0(該当せず)か1(該当する)が入るようにする。初期設定済み(出店済み)に対応するマス目は1とする。各行についてone-hot制約を、各色について隣接ノード同士の値の積が0となるように制約を設定する。それに対して量子アニーリングを実行すれば良い。その結果、上記と同一の9個の解が得られたので、以下に掲載する。
参考資料
[1] 初級量子コンピューティングの旅の目的地Grover:

[2] IBM Quantum Challenge 2019:



2022年8月28日日曜日

初級量子コンピューティングの旅の目的地Grover

要旨初級量子コンピューティングの旅を2ヶ月ほど続けてきたが、ようやくその目的地Grover(グローバーアルゴリズム)に達した。旅の魅力は尽きないが、次の出発に向けて、ここでひと息とする。グローバー探索アルゴリズムは、ショアの因数分解アルゴリズムと並んで、量子の性質を巧みに利用した傑作である。量子の概念と量子ビット/ゲート/回路の基礎を学んだ後に、このアルゴリズムをIBM Quautum実機で確かめることができた。(→ 一連の旅の日記はこの記事の末尾を参照されたい。)

今回の記事で何をしたいのか
 グローバー探索アルゴリズムを簡単な例で実装するのだが、まず、その狙いを説明する。図1にあるように、整列されていない電話番号簿(小学校名-電話番号)がある。例えば、電話番号241-7312の小学校名を知りたい場合、普通は順番に一件一件、名簿を調べていくだろう。しかし、グローバーは、これと全く異なり、名簿の全ての項目を重ね合わせた状態にして、一度に問い合わせることができる。ただし、精度を上げるために、項目数をNとした場合、√N回の問い合わせを行う。従来の探索では平均N/2回の問い合わせが必要なので、Nが巨大になれば、グローバーの優位性は顕著になるだろう。
 本記事では、グローバーアルゴリズムを量子コンピュータ実機で動かして観察する都合上、扱う電話番号簿は図1右下のように、僅か4項目に縮小して、電話番号 "11" の小学校名を探すという、簡単な例題とした。

グローバー探索アルゴリズムの概要
 ロブ・グローバーによって1996年に発表された探索アルゴリズは、「振幅増幅法」という量子特有の性質を利用したものである。図2にあるように、ステップ(1)として、N個(今回N=4)のデータに対応した量子状態ベクトルを用意し、全状態ベクトルの確率振幅が等しい重ね合わせ状態を作ることから始める。
 次に、ステップ(2)として、探索したい項目番号(今回は"11")の状態ベクトルの確率振幅を位相反転させる。(マイナスの振幅となる。)これは、探したいものにマーキングすることになる。ここで誤解しやすいのだが、「マーキングしたらもう解は分かっているのじゃないのか」と言うかも知れないが、それは違う。解はこの時点で分かっていない。問い合わせたある小学校の電話番号が、マーキングされたものと一致するかを判定するために使うのだ。
 続いてステップ(3)はまさに、振幅増幅である。ステップ(2)でターゲットにマーキングはしたが、振幅の位相が反転しただけであり、依然として全状態ベクトルの確率振幅の大きさは揃っていて見分けがつかない。そこで、全確率振幅の平均値周りに、全確率振幅を反転させる。すると、ターゲットの確率振幅だけが大きくなる。すなわち、それが解に対応する。ただし、他の状態ベクトルの確率振幅もまだ相当大きいかも知れないので、ステップ(2)とステップ(3)を何度か繰り返すことによって、ターゲットの確率振幅の大きさを際立せるのである。

グローバー探索アルゴリズムを実現する量子回路
 このアルゴリズムを実現する量子回路は種々考えられるが、図3はその一例である。それは、アダマールゲート(H)、パウリXゲート(丸の中に+)、CNOT(制御付きNOT)で構成されている。それらのゲートの働きは学んで来たので、この回路の動作を把握することはそれほど難しくない。また、IBM QuantumのComoserでこの回路を作る場合、Investigatorにより、各ゲートを通過した後の状態ベクトルの確率振幅と位相の状況がシミュレーションで表示されるので、理解の助けとなる。

IBM Quantum実機による実行結果
 この量子回路をIBM Quantum実機(5量子ビット構成のmanila機)での実行結果は図4のとおりである。図2でのシミュレーションでは、"11"だけが観測されたが、現状の実機では、種々のノイズによる誤差がどうしても含まれるため、他の"01"、"10"なども若干出現しているが、"11"はダントツに出現頻度が高いので問題ではない。
 さて、念の為、この結果を見方を述べておく。この例では、"11"、すなわち、0番から初めて3番目(電話番号簿では上から4番目)の「香川小学校」が正解であるということである。
 そして、繰り返しになるが、この例では、4件の候補の小学校のうちの正解校をただ1回の問い合わせだけで得ることができたのである。
 今回の記事では、以下の参考資料[1][2][3][4]を参考にさせていただいた。特に、武田俊太郎著[2]から学んだ量子の波の性質を使って複数のパタンを並列に計算し、波と波をうまく干渉させて正しいパターンだけに絞り込んでいくという、量子コンピュータだからこそできる芸当を見ることができた。

これまでの初級量子コンピュータの旅の日記
 量子アニーリング以外の量子コンピューテング(ゲート型)を学んできた際に記した日記(ブログ記事)を以下に列挙しておきたい。

(11) 初級量子コンピュータの旅の目的地Grover(この記事)


参考資料
[1] 中山茂:量子アプリQni - 量子プログラミング初歩、Gaia教育シリーズ52、2022-8-8初版
[2] 武田俊太郎:量子コンピュータが本当に分かる!、技術評論社、2020-3-3初版
[3] 宇津木健:絵で見てわかる量子コンピュータの仕組み、翔泳社、2019-7-10初版
[4] 沼田祈史(IBM):量子コンピューター入門ハンズオン
https://www.youtube.com/watch?v=_b_yEgZh3BE

付録
その後、3量子ビット回路でも、グローバーアルゴリズムを実行できたので、記録しておく。