@yuichirominato 2019.02.21更新 114views

【新機能】1行コードで量子ゲートのQAOAでイジング計算。


はじめに

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

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

コード

from blueqat.opt import Opt
result = Opt().add([[1,1],[1,1]]).add("(q0+q1)^2",N=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",N=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]

簡単に比較できました。以上です!

Recommended


Wikiへ移動