Nobisuke
Dekisugi
RAG
Privacy policy
2021/10/06 01:22
2
こんにちは。量子アニーリングから量子ゲートに参入する際に、これまでのソフトウェア資産を変換したいですよね。blueqatには2018年からその変換ツールが搭載されており、量子ゲートで量子アニーリングの資産を活用することができます。具体的な方法を見てみましょう。
基本的にイジング定式化に戻しますが、量子ゲートで読める形に変換します。まずはツールを読み込みましょう。
Copy import blueqat.wq as wq
そして、簡単です。QUBO行列を作ります。
Copy QUBO = [[1,1],[0,1]]
それをwq.pauliに入れて終わりです。自動変換されます。
Copy hamiltonian = wq.pauli(QUBO)
中身を確認してみましょう
Copy print(hamiltonian)
1.25*I - 0.75*Z[0] - 0.75*Z[1] + 0.25*Z[0]*Z[1]
うまく変換できていますね。さっそくこれを使って量子ゲートで計算してみましょう。
量子ゲートは量子ビット数が少ないので、まだ大きな問題が解けません。上記の行列は小さいので、ステップ数というアナログをデジタル分割するパラメータを決めて実行してみます。今回はステップp=2とします。
Copy step = 2
実行するにはQAOAというアルゴリズムを使いますが、blueqatには、hamiltonianとstepを入れれば計算できる機能があります。
Copy 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))
簡単に計算できましたね!ちなみに変換された量子回路は、
Copy 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