common.title

Docs
Quantum Circuit
TYTAN CLOUD

QUANTUM GAMING


autoQAOA
Desktop RAG

Overview
Terms of service

Privacy policy

Contact
Research

Sign in
Sign up
common.title

QAOA逆再生

Yuichiro Minato

2020/12/20 11:51

#量子ゲート #QAOA

1

はじめに

QAOAというアルゴリズムは量子断熱過程を利用し、二つのハミルトニアンを交換して計算をします。QAOAでは、初期ハミルトニアンを制約をかけたmixerとして使えます。

mixerにXYmixerとして、(XX+YY)/2を設定します。

通常は

「簡単な問題」

から

「難しい問題」

にいきますが、

逆に

「難しい問題」

から

「簡単な問題」

をやってみてできるかどうかやってみました。

問題

このような感じでハミルトニアンを設定し、やってみます。

from blueqat import Circuit
from blueqat import vqe
from blueqat.pauli import X,Y,Z

h = 5*Z[0]-2*Z[0]*Z[1]
step = 2
init = Circuit().h[0].cx[0,1].x[0]
mixer = 0.5*X[0]*X[1] + 0.5*Y[0]*Y[1]

result = vqe.Vqe(vqe.QaoaAnsatz(h,step,init,mixer)).run()
print(result.most_common())
print(result.circuit)

結果は、

(((1, 0), 0.9970150121543512),)

Circuit(2).h[0].cx[0, 1].x[0].cx[0, 1].rz(39.00633185153547)[1].cx[0, 1].rz(-97.51582962883867)[0].h[0].h[1].cx[0, 1].rz(-8.988636280080764)[1].cx[0, 1].h[0].h[1].rx(-1.5707963267948966)[0].rx(-1.5707963267948966)[1].cx[0, 1].rz(-8.988636280080764)[1].cx[0, 1].rx(1.5707963267948966)[0].rx(1.5707963267948966)[1].cx[0, 1].rz(34.522866650015565)[1].cx[0, 1].rz(-86.30716662503892)[0].h[0].h[1].cx[0, 1].rz(-8.64561683891384)[1].cx[0, 1].h[0].h[1].rx(-1.5707963267948966)[0].rx(-1.5707963267948966)[1].cx[0, 1].rz(-8.64561683891384)[1].cx[0, 1].rx(1.5707963267948966)[0].rx(1.5707963267948966)[1]

こうなりました。

逆再生

できるはずです。出た答えの|10>状態をXゲートで作ってからQAOAを逆再生し、|00>に戻るかやってみます。

result2 = (Circuit().x[0] + result.circuit.dagger()).m[:].run(shots=100)
print(result2)
Counter({'00': 100})

無事戻りました!当たり前ですが、ハミルトニアンの交換を逆にしても大丈夫ですね。

© 2025, blueqat Inc. All rights reserved