common.title

Docs
Quantum Circuit
TYTAN CLOUD

QUANTUM GAMING


Overview
Contact
Event
Project
Research

Terms of service (Web service)

Terms of service (Quantum and ML Cloud service)

Privacy policy


Sign in
Sign up
common.title

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

Yuichiro Minato

2021/10/06 01:22

#QAOA

量子アニーリングのハミルトニアン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経由で入れたりもできます。では楽しんでください!

© 2025, blueqat Inc. All rights reserved