前回の n個のうちmだけを1にする問題をPyQUBOを使ってアニーリングマシンで解く では、D-Wave Ocean SDKをつかってD-Waveで解いてみましたが、D-Wave Leapには、3つのデモが用意されています。
無料で日本からも利用できるようになっているので、闇雲に論文等を調べるのもいいのですが、せっかくソースまで見えるので、使い倒したほうが絶対にいいとおもっています。そのようなことからデモをすこし紹介できればと思います。
ただ3つ目はLeapが発表されて(たしかぼくが初めてみた2018年10月からは)ずっとComing Soonでいまだ(2019/4現在)に公開されていません。それでは、見ていきたいとおもいます。
(ログインが必要ですので、ユーザ登録などは済ませてください。)
Factoring、Social Network Analysis、Quantum Materials Simulation(これが公開されてない)の3つのデモがありますが、先に述べたように3つ目のQuantum Materials Simulationは公開されていません。
インタラクティブなデモとなっているので、ぜひ実物を試してみてください。
今回は、Factoringを見ていきます。 ファクタリングと日本でいうと、売掛債権取引の方が多いようにも思いますが、素因数分解のことです。
Factoring by running a multiplication circuit in reverse
とは、
乗算器を、反対につかうという意味です。のちほど詳細は出てきますが、素数21は、$3*7 = 21$なので、3,7の乗算器を使うと21がでます。その反対に3,7を求める問題となるので、21を与えて、乗算器を反対に使えば回答が出るだろうということになります。
また、more informationをクリックすると、

背景にあるCSP(Constraint satisfaction problem、制約充足問題) と、Shorアルゴリズムアニーリングマシンでは、Shorアルゴリズムを動かすことはできないことと、その説明があります。
アニーリングマシンでは、最適化計算が得意といわれますが、この制約充足問題にような最適化問題をIsingモデルに置き換えることがうまくできれば、アニーリングマシンで解いてくれるといった具合になります。
次にいきます。
まず、12、21、49といった素数が並んでいるので、どれかを選択します。今回は21を選びました。


more informationをクリックすると、trial division(数全てを順に割り切れるかどうか試す方法)について説明が書いてあります。

そして次には、Boolean logic circuit(ブール論理回路)

実は、PyQUBOにもLogical Gate
という表現が存在し、PyQUBOで表現することも可能です。
CSP(Constraint satisfaction problem、制約充足問題)をブール論理回路
へ変換して、といて行く方法が述べられています。



このブール論理回路をD-WaveのChimeraグラフにMappingして解くのですが、それについて書かれています。

どのようにハミルトニアンの最小値を探して行くのかといった説明があります。

Runボタンを押す

計算結果がでてきて(たぶんここは実機は動かしてないとおもう)をして、50回やって、2のユニークな答えがあり、0.016sで答えが戻ってきたとのこと。


このRecapのところの more informationには、有用な論文の紹介あるので、参考になります。

次に、2つ目のデモのSocial Network Analysisにはいかず、Learnをクリックしてみましょう。

ここまでだと、概要で、本当のソースを見ながらD-Waveの実機を動かしてみたいとおもうので人情だとおもいます。さすがD-Waveそのあたりもちゃんと公開してくれています。
このFactoring以外にも、2個目のDEMOのSocial Network Analysisや、アニーリングのスケジュール、リバースアニーリングのJupyterNote形式で公開されています。


このjupyter noteのソースコードはDownloadもできますので詳細を今後2個目DEMOのSocial Network Analysisも含め、どこかで紹介をしていこうと思います。
今日はこのくらいで。。。