common.title

Overview
Service overview
Terms of service

Privacy policy

Contact

Sign in
Sign up
common.title

祝!D-Wave量子ゲート参入。blueqatSDKをつかって、量子アニーリングのソフトウェアを簡単に量子ゲートに変換するたった1つの方法

Yuichiro Minato

2021/10/06 01:22

#QAOA

2

量子アニーリングのハミルトニアンQUBO行列を量子ゲートのハミルトニアンに変換する

こんにちは。量子アニーリングから量子ゲートに参入する際に、これまでのソフトウェア資産を変換したいですよね。blueqatには2018年からその変換ツールが搭載されており、量子ゲートで量子アニーリングの資産を活用することができます。具体的な方法を見てみましょう。

旧wildqatモジュールのpauliを呼び出し、QUBOをパウリ演算に変換

基本的にイジング定式化に戻しますが、量子ゲートで読める形に変換します。まずはツールを読み込みましょう。

import blueqat.wq as wq

そして、簡単です。QUBO行列を作ります。

QUBO = [[1,1],[0,1]]

それをwq.pauliに入れて終わりです。自動変換されます。

hamiltonian = wq.pauli(QUBO)

中身を確認してみましょう

print(hamiltonian)
1.25*I - 0.75*Z[0] - 0.75*Z[1] + 0.25*Z[0]*Z[1]

うまく変換できていますね。さっそくこれを使って量子ゲートで計算してみましょう。

変換したパウリ行列をQAOAに入れる

量子ゲートは量子ビット数が少ないので、まだ大きな問題が解けません。上記の行列は小さいので、ステップ数というアナログをデジタル分割するパラメータを決めて実行してみます。今回はステップp=2とします。

step = 2

実行するにはQAOAというアルゴリズムを使いますが、blueqatには、hamiltonianとstepを入れれば計算できる機能があります。

from blueqat import vqe result = vqe.Vqe(vqe.QaoaAnsatz(hamiltonian, step)).run() print(result.most_common(12))
(((0, 0), 0.8798531143252394), ((1, 0), 0.055608069152822334), ((0, 1), 0.05560806915282233), ((1, 1), 0.008930747369115135))

簡単に計算できましたね!ちなみに変換された量子回路は、

result.circuit
Circuit(2).h[:].cx[0, 1].rz(-11.210193556301645)[1].cx[0, 1].rz(33.63058066890493)[0].rz(33.63058066890493)[1].rx(9.311417774397983)[:].cx[0, 1].rz(-10.563031499027225)[1].cx[0, 1].rz(31.689094497081676)[0].rz(31.689094497081676)[1].rx(1.595426458189565)[:]

このように変換できました。これをIonQなどの実機にblueqat cloud経由で入れたりもできます。では楽しんでください!

© 2024, blueqat Inc. All rights reserved