IBM Quantum Challengeで取り扱われたVQE応用例をまとめる

# はじめに
本記事は量子科学計算で注目されているVQEに関して、実際のところどんな応用例があるのか知りたい方向けの記事となっています。といっても、私が動かしたことのあるVQEのプログラムはIBM主催のIBM Quantum Challengeの内容ばかりなので、せっかくなら過去5回開催されたQuantum Challengeで扱われたVQE問題を振り返るという内容としました。改めて、先進的な技術・それに触れる機会を広くあまねく提供し続けているIBMには感謝の意を示しつつ、本編に入っていこうと思います。

なおIBM Quantum Challengeの内容共有は、開催中のコンペ課題を除き特に縛りが設けられていないため、過去のQuantum Challengeについて自由に共有させていただいています。今後なにかルール変更が行われた場合は、速やかに準拠させていただきます。その他なにかお気づきの方がいらっしゃりましたら、ぜひコメントいただけたらと思います。

# VQEとは
過去のVQE問題のまとめに入る前に、VQEについて最低限の知識を揃えたいと思います。
VQEの解説は以下の記事がおすすめです。

* [Variational Quantum Eigensolver（VQE）アルゴリズム(Quantum Native Dojo)](https://dojo.qulacs.org/ja/latest/notebooks/5.1_variational_quantum_eigensolver.html)
* [VQEについて調べてみた(yenomoto)](https://blueqat.com/8cc88814-a573-4ac9-bca9-14cf40664d0f/3e0a6da7-1983-46a6-9e6b-6aa03116adf5)

また、VQEの期待値測定をわかりやすく解説している次の記事も必見です。gyu-donさんがおっしゃる通り、なぜかあまり触れられていないんですよね。

* [VQE/QAOAの期待値測定の部分を学ぶ(@gyu-don)](https://qiita.com/gyu-don/items/efbd66c691981d7185c5)

VQEの理論についてはここまでとして、以降開催順にVQEが利用された問題を紹介していきます。

# IBM Quantum Challenge 2019
問題はGithubで公開されています。
https://github.com/quantum-challenge/2019/tree/master/problems

2019ではVQEの取り扱いはありませんでした。

# IBM Quantum Challenge 2020
問題はGithubで公開されています。
https://github.com/qiskit-community/may4_challenge_exercises

2020ではVQEの取り扱いはありませんでした。

# IBM Quantum Challenge 2020 fall
問題はGithubで公開されています。
https://github.com/qiskit-community/IBMQuantumChallenge2020/tree/main/exercises

2020 fallではVQEの取り扱いはありませんでした。

# IBM Quantum Challenge 2021
問題はGithubで公開されています。私はこの回からチャレンジに参加するようになりました。
https://github.com/qiskit-community/ibm-quantum-challenge-2021/tree/main/content

2021では演習５にてVQEが取り扱われました。参加者同士で競い合うコンペ課題でした。

内容はシンプルで、水素化リチウム分子LiHの基底エネルギーを求める問題でした。また、チュートリアルとして水素分子H2の基底エネルギーを求める問題も扱っています。この回では基底エネルギー計算に必要な以下の実装を学ぶことができます。

* QubitConverterクラスの利用法。
    * 分子のハミルトニアンを量子ビット（パウリストリング）に変換します。
* HartreeFockクラスの利用法。
    * ハートリーフォック法により基底状態の波動関数の99%精度近似を用意します。
* TwoLocal、UCCSD、PUCCD、SUCCDクラスの利用法。
    * 様々な試行状態（ansatz）を用意します。
* スクラッチで試行状態を定義する方法。

# IBM Quantum Challenge 2021 africa
年２回開催のIBM Quantum Challengeの番外編になりますが、課題自体はとてもチャレンジングな内容になっています。問題はGithubで公開されています。
https://github.com/qiskit-community/ibm-quantum-challenge-africa-2021/tree/main/content

2021 africaでは演習１と演習３にてVQEが取り扱われました。

演習１では、複数の穀物を栽培する農地の作付面積の組み合わせを最適化する問題に利用されました。組合せ最適化に必要な以下の実装を学ぶことができます。

* QuadraticProgramクラスの利用法。
    * 定式化された最適化問題を定義します。
* QuadraticProgramToQuboクラスの利用法。
    * 最適化問題をQUBO（イジングハミルトニアン）に変換します。

演習３では、HIV、コロナウイルスに代表されるウイルスのハサミ（プロテアーゼ）の破壊を目指したシミュレーション問題に利用されました。理屈としては、プロテアーゼに別の分子・原子を近づけてより低いエネルギー状態を作ることができれば、プロテアーゼを破壊できます。そのため、異なる2分子間の距離を変えながら一番低いエネルギー状態を探すようなシミュレーションの実装を学ぶことができます。

* Moleculeクラスの利用法。
    * 分子の原子配列と原子の可動域を定義します。

# IBM Quantum Challenge 2021 fall
問題はGithubで公開されています。
https://github.com/qiskit-community/ibm-quantum-challenge-fall-2021/tree/main/content

2021 fallでは演習１と演習２にてVQEが取り扱われました。

演習１では、有価証券の保有率をポートフォリオ最適化する問題に利用されました。ポートフォリオ最適化に必要な以下の実装を学ぶことができます。

* RandomDataProviderクラスの利用法。
    * ランダムな値動きを生成します。
* PortfolioOptimizationクラスの利用法。
    * ポートフォリオ最適化問題を定義します。

演習２では、有機EL分子のエネルギーバンドギャップ（基底状態と励起状態のエネルギー差）を求める問題に利用されました。ただし、励起エネルギーはqEOMという手法で求めるようで、VQEは基底エネルギーを求めるために登場しました。一方で有機EL分子は大きくて複雑な分子であるため、より大きな分子に対して基底エネルギー計算を行う実装を学ぶことができます。

* ActiveSpaceTransformationクラスの利用法。
    * アクティブスペース変換により注目する分子軌道を減らします。

# さいごに
振り返ってみると、私が参加し始めた2021からVQEの問題を取り扱い始めていたみたいです。私の中では毎回出題されているので、全コンペで取り扱っているのかと思っていました。それにしてもVQEの利用方法は徐々に高度化しているように感じました。
今後もできる限りIBM Quantum Challengeに参加して、最新の動向をつかんでいきたいと思います（おい論文読め）。