common.title

Generate Image


Overview
Service overview
Terms of service

Privacy policy

Contact

Sign in
Sign up
common.title

QAOAで1+1を実行。

Yuichiro Minato

2021/07/17 10:08

#qaoa

1

QUBOで足し算を行う

今回解きたい問題は、

1+1=x1+ 1 = x

となるようなxを求めます。QUBOにおいて足し算は上記右辺から左辺を引いてその最小値を求めることに相当しますので、

E=(x2)2E = (x-2)^2

というコスト関数ができます。こちらを展開すると、

E=x24x+4E = x^2 -4x + 4

という式が得られます。これを計算します。一方、xは量子ビットを使って、

x=q0+2q1x = q_0 + 2q_1

という二進数表記ができますので、さらにこれを上記のコスト関数に代入すると、

H=q02+4q0q14q0+4q128q1+4H = q_0^2 + 4*q_0*q_1 - 4*q_0 + 4*q_1^2 - 8*q_1 + 4

と展開されます。ここで、QUBOはバイナリ値{0,1}を取りますので、二乗の項はすべて指数がとれます。

q02=q0q12=q1q_0^2 = q_0 q_1^2 = q_1

より、

H=3q0+4q0q14q1+4H = -3q_0 + 4q_0q_1 - 4q_1 +4

となります。これのハミルトニアンの最小値を求めることにより足し算の答えを求めることができます。

blueqatにはQUBO対応の機能があり、ハミルトニアンをqubo形式で入力できます。

from blueqat import vqe from blueqat.pauli import qubo_bit as q

こちらを使って定式化をして解いてみます。

qubo = -3*q(0)+4*q(0)*q(1)-4*q(1) result = vqe.Vqe(vqe.QaoaAnsatz(qubo, step=1)).run() print(result.most_common()[0][0])
(0, 1)

これはQUBOでq0=0,q1=1q_0=0,q_1=1となりましたので、1+11+1の答えは、

1+1=0+21=21 + 1 = 0 + 2*1 = 2

となります。

© 2024, blueqat Inc. All rights reserved