QAOA
QAOA(Quantum Approximate Optimization Algorithm) は、組み合わせ最適化問題を解く古典・量子アルゴリズムです。
精度保証や高速性の保証はありませんが、NISQ(Noisy Intermetidate Quantum)でも動く可能性アリとされています。
今回は、各社の量子コンピュータを使って、QAOAをやってみます。1
特にRigetti, IonQ のものは有料なので、ベンチマーク結果はまだまだ貴重だと思います。
実装の流れ
IBMについては、qiskitを用いてIBMQサービス(無料)で駆動します。
マシンとして、5 qubitでは性能が最も低い ibmqx2(=ibmq_5_yorktown) と 最も高いibmq_santiagoを使います。
RigettiおよびIonQについては、braketを用いてblueqat cloud をエンドポイントとして使用することで駆動します。
QAOAで解く問題
QAOA回路です。(p=1)
qiskitでのシミュレーション結果です。
問題の解は0101と1010であり、確かに解となる量子状態が高い確率で観測されます。
braketでのシミュレーション結果です。
シミュレーターなので、qiskitもbraketも変わりませんが、いずれも正しく実装できていると確認できます。
結果
IBM
Quantum Volume という性能指標が高いibmq_satiagoでは解けていますが、低いibmqx2ではうまくいきません。
Rigetti
全然だめなようです。
IonQ
1010は出ていますが、0101のほうが出ておらず、やや不自然です。
まとめ
無料のIBM量子コンピュータが一番良い という意外な結果になりました。
IBMの5量子ビットマシンは完成度が高いのかもしれません。
RigettiやIonQは有料だけあって、それぞれ37qubit,全結合11qubit使えますので、
量子ビット数が多数必要な問題やゲート操作が密になる回路では必須になると言えます。2