1行コードで、アニーリング、量子ゲートのQAOA、D-Wave


はじめに

量子コンピュータってむずかしいですよね。1行で最適化計算ができます。やってみましょう。使用するアルゴリズムは QAOAとよばれる量子断熱計算ライクな量子ゲートアルゴリズムです。イジングモデルと呼ばれる形に問題を直します。

今回はバイナリで01で考えるQUBOと呼ばれる形で問題を設定します。


コード

from blueqat.opt import Opt

result = Opt().add([[1,1],[1,1]]).add("(q0+q1)^2").qaoa()

import入れると2行ですが、、、これで最適化計算ができています。

print(result.most_common(5))

結果の見方はいろいろあるので、今回は上位5この計算結果を取り出します。

(((0, 0), 0.7576219674038702), ((1, 0), 0.11187224023562509), ((0, 1), 0.11187224023562506), ((1, 1), 0.018633552124878376))

できましたね。


アニーリングと比較する

アニーリングの計算と簡単に比較してみましょう。

from blueqat.opt import Opt

c = Opt().add([[1,1],[1,1]]).add("(q0+q1)^2")

#qaoa
print(c.qaoa().most_common(5))
#=>(((0, 0), 0.7639901896866), ((1, 0), 0.10321404014639714), ((0, 1), 0.10321404014639707), ((1, 1), 0.029581730020605202))

#annealing
print(c.run())
[0, 0]

簡単に比較できました。


D-Waveも

量子アニーリングって難しいですよね。D-Waveのアカウントを持っていて、dwave-cloud-clientのライブラリが入ってる方は、1行でD-Waveに投げる機能をつけました。


コード

from blueqat.opt import Opt

Opt().add([[1,1],[1,1]]).dw()

答えが戻ってきました。blueqatはQUBOを推奨しているので答えも01で戻ります。シミュレータのアニーリングやQAOAとも比較が簡単です。以上です!