量子コンピュータをつかって組合せ最適化問題解きたいですよね。量子アニーリングをやっているとQUBO問題をつくるとあり、内部ではイジングモデルに変換されていると書いてあります。
イジングモデルでは、上向きスピンを+1、下向きスピンをー1として、設定した問題の答えを求めます。量子ゲートで量子アニーリングのような問題を解きたい場合には、量子断熱時間発展計算をつかい、量子アニーリングの時間経過をゲートの形で書き下す必要があります。
横磁場のハミルトニアンはX、問題に対応するハミルトニアンHはZもしくはZZという2量子ビットの相互作用を考えます。
時間発展演算子は、
exp(-iHt)
という形で、指数の肩に行列が乗る形になるため、この行列を指数の肩から降ろす必要があります。行列は対角行列の場合には、指数の肩から簡単に降ろせます。
参考:量子ゲートの時間発展
https://qiita.com/KeiichiroHiga/items/d9377060fbc97817d849
H=Zの場合には、
exp(-iZt) = Rz(2t)
となります。その他、XとYの時はそれぞれ、
X = H Z H
Y = SH Y HS*
を使って、
exp(-iXt) = exp(-i(HZH)t) = H exp(-iZt) H = HRz(2t)H = Rx(2t)
を使います。同様に、
exp(-iYt) = Ry(2t)
という便利な式があります。
2量子ビットゲートはちょっとコツが
exp(-iHt) のハミルトニアンがXXやYYやZZのような場合には少し変わります。これらはイジングカップリングゲートと呼ばれています。
参考:
https://en.wikipedia.org/wiki/Quantum_logic_gate#Ising_coupling_gates
exp(-iZZt) = CX Rz(2t) CX = Rzz(2t)
となります。Rigettiのようなマシンの場合にはRzzのようなイジングカップリングゲートがないので、CXとRzをつかい、IonQのようなイオントラップマシンには標準でRzzが提供されています。
Amazon Braket のゲート型量子コンピュータで指定できる量子回路
https://qiita.com/doiken_/items/a8886990130da898c625
同様に、
exp(-iXXt) = Rxx(2t)
exp(-iYYt) = Ryy(2t)
となります。最近はRxx,Ryy,Rzzゲートがポピュラーになってきたのこれらを直接使うのが簡単かと思います。以上です。