common.title
Cloud support

Nobisuke

Dekisugi

RAG


autoQAOA
RAG for dev
Fortune telling app
Annealing
DEEPSCORE
Translation

Overview
Service overview
Terms of service

Privacy policy

Contact
Research

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