LoginSignup
1
0

More than 3 years have passed since last update.

VQEをBlueqatで実装してみた

Posted at

NISQ時代はVQEがくるんじゃない?(ホントにくるのかな・・・?)って事で、簡単な問題をBlueqatで実装してみた。なお今回はプログラム動作確認という意味で、トリビアルな組み合わせ最適化問題を解いてみる。

今回解いた問題

以下のハミルトニアン$H$が最小となる$q(0)$、$q(1)$の組み合わせを解く。
$$
H = 1 - q(0) - q(1)
$$
なお、$q(0)$、$q(1)$は0もしくは1のどちらかの値となる。この問題設定では、$q(0)=q(1)=1$のときハミルトニアン$H=-1$で最小の値をとる。

補足情報

ちなみに、すべての$q(0), q(1)$の組み合わせについてハミルトニアンは以下の値をとる。

  • $q(0)=0,q(1)=0 \rightarrow H = 1$
  • $q(0)=0,q(1)=1 \rightarrow H = 0$
  • $q(0)=1,q(1)=0 \rightarrow H = 0$
  • $q(0)=1,q(1)=1 \rightarrow H = -1$

ソースコード


from blueqat.pauli import qubo_bit as q
from blueqat.vqe import Vqe, QaoaAnsatz

#Hamiltonian
h = 1.0 - q(0) - q(1)

ansatz = QaoaAnsatz(h, 10)
runner = Vqe(ansatz)
result = runner.run()

print("mode:")
print(result.most_common())
print("minimum value:")
print(runner.ansatz.get_energy(result.circuit, runner.sampler))

ソースコードの詳細の説明は割愛しますが、結構簡単に書けますね。

実行結果

mode:
(((1, 1), 0.9999999999996781),)
minimum value:
-0.9999999999996781

$(1,1)\rightarrow q(0)=1, q(1)=1$の解の組み合わせ

$0.9999999999996781 \rightarrow (1,1)$の出現確率(実行の都度結果が変わる)

最後に

すごい簡単に実装できました!今後は少し応用を利かせていきたいと思います。

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0