第一原理計算
量子化学計算では, 多原子系の分子を対象とした時間を含むシュレーディンガー方程式を解くことが重要です.
ここで, Hamiltonian 1 は,
(1): 全原子核の運動エネルギー
(2): 全電子の運動エネルギー
(3): 電子・原子核間のクーロン引力のポテンシャルエネルギー
(4): 原子核間のクーロン斥力のポテンシャルエネルギー
(5): 電子間のクーロン斥力のポテンシャルエネルギー
この Hamiltonian は, 時間に依存しないため, 変数分離することができ,
すなわち, から, 定数 が求まれば, これを用いて全波動関数が
時間 により変化する様子(時間発展)を計算することができます.
つまり, Hamiltonian の固有値 を解くことが量子化学計算の1つのモチベーションとなります.
全原子系のシュレーディンガー方程式を解きたい. Hamiltonian の固有値問題.
2体問題は, 厳密解がある.
3体問題以上の多体問題は, 厳密解を求められない!!
式(4) に左から を掛けて全空間で積分した
を考えます. は規格化されているため, . すなわち,
この方程式における固有値を として, それぞれに対応する固有ベクトルを とします.
は規格直交性があり, は, 次のように表せます.
この を使って, 式 (6) は,
ここで, であり, また, から,
この式 (9) の等号が成立するように, を に近づけられるようにすればよい. 式 (9) を「変分原理」といいます.
つまり, 式 (6) の左辺の最小値を求めることが, 固有値問題の第一歩となります. (最小値問題, 最適化問題)
次に, エネルギー を波動関数 の汎関数(関数の関数)と考えると,
次の変分方程式は, 元のシュレーディンガー方程式と等価であることが分かっています.
変分原理が正しいエネルギー固有値を与えるのは, 波動関数が真の波動関数である場合であり, 真の波動関数に近いほど, は正しいエネルギー固有値 に近づきます. しかし, 私たちは真の波動関数を知りません. そこで, 未知のパラメータを含む適当な有限ヒルベルト空間で波動関数を表現するような関数を仮定します. この仮定した関数を, 試行関数(trial function)と呼びます.
Hartree-Fock 法は, 変分法の具体的な方式です.
多電子系を表す Hamiltonian の固有関数(波動関数)を一個のスレーター行列式で近似(ハートリー・フォック(Hartree-Fock)近似)できると仮定した場合に,
問題の Hamiltonian を次の Hartree-Fock 方程式として, 解を求める方式です.
このハートリー・フォック法の問題は, 多電子系の記述をたった一つのスレーター行列式で表したことに課題があり, ポスト・ハートリー・フォック法として, 次のような手法が登場して用いられています.
配置間相互作用法(configuration interaction method, CI法)
多電子系における Born-Oppenheimer 近似のもとで非相対論的シュレーディンガー方程式を解くために用いられる線形変分的なポスト・ハートリー・フォック法
メラー=プレセット法(Møller - Plesset method)
レイリー・シュレーディンガーの摂動論を用いて電子相関を考慮する方法
結合クラスター法(Coupled Cluster, CC法)
ハートリー・フォック分子軌道法を基本にして, 電子相関を考慮する指数関数クラスター演算子を使って多電子波動関数を構成する
量子化学計算では, 古典計算でできるところと量子コンピューターが得意とする計算を分けて処理することが推奨されています.
arxiv:1512.06860 Scalable Quantum Simulation of Molecular Energies
論文にある化学計算における用語に関する知識が必要となります. その用語を一部列挙します. (専門外向け)
Keyword | Description |
---|---|
VQE(QVEとも) | Variational Quantum Eigensolver, 量子固有値変分法 |
PEA | Pahse Estimation Algorithm, 位相推定アルゴリズム |
UCC | Unitary Coupled Cluster |
RDM | reduced density matrix |
問題の Hamiltonian を量子ビットと量子ゲート操作で表します.
詳しくは, The Bravyi-Kitaev transformation for quantum computation of electronic structure arxiv:1208.5986 を参照.
Jordan-Winger Transform
1 フェルミ粒子(電子)を 1 Qubit に割り当てて Hamiltonian を変換する手法です.
k 番目のフェルミ粒子に対する生成(消滅)演算子は,
Bravyi-Kitaev Transform
まず, Fenwick tree と呼ばれるツリー構造の Qubit を考えます.
1 フェルミ粒子(電子)を, その構造に対応した Qubit に割り当てて Hamiltonian を変換する手法です.
j 番目の Qubit に対する生成(消滅)演算子は, 複雑です. 式では次のように表されます.
【水素分子の例】
量子化学計算で使われる Phase Estimation Algorithm (位相推定アルゴリズム)は, 通常の量子情報の教科書にある位相推定です.
固有ベクトル とその固有値 をもったユニタリー変換 が与えられたとき,
となり, 固有値ベクトル も固有値 も, ユニタリー変換 も不明でも, その位相 を ビットの精度で推定するアルゴリズムです.
その際には, 量子フーリエ変換(QFT, Quantum Fourier Transform)と, 制御ユニタリー(Controlled Unitary)操作が重要な役割を担います.
論文にある化学計算における用語に関する知識が必要となります. その用語を一部列挙します. (専門外向け)
Keyword | Description |
---|---|
Hartree | エネルギーの単位1 ボーア半径の距離を隔てた2つの電荷素量が持つポテンシャルエネルギー |
STO-nG基底関数系 | 単一のスレーター型軌道(STO)に対してn個の原始ガウス型軌道をフィッティングする系. nは2から6の値. 最も広く使われている基底関数系はSTO-3G.STO-3Gは, 水素からキセノンまでの全ての原子に対して利用可能. STO-3Gは, 3つの原始ガウス関数の線形結合で表され, その結合係数は既知. |
ボゴリューボフ変換 | Bogoliubov transformation 正準交換関係代数(または正準反交換関係代数))の或るユニタリ表現から他のユニタリ表現への交換関係代数の同型により引き起されるユニタリ変換. |
SCF法 | Self Consistent Field 法 Hartree-Fock方程式(Hamilton方程式の一種)から得られた近似解を使って, 再帰的に解く手法. これにより多粒子系のフェルミ粒子全体の作る平均場において, その中で運動する1つのフェルミ粒子の波動関数を自己無撞着(Self Consistent)に決定することができる. |
現時点では, 次のような小さな分子系でしか研究が成果が提示されていないのが実情.
量子コンピューターの実例(ライブラリの利用用途を示すためのサンプル)も多く提示されてきている.
arxiv:quant-ph/0604193 Simulated Quantum Computation of Molecular Energies
arxiv:1704.05018 Hardware-efficient Variational Quantum Eigensolver for Small Molecules and Quantum Magnets
arxiv:1507.08969 Towards Practical Quantum Variational Algorithms
arxiv:1405.2696 Quantum Simulation of Helium Hydride in a Solid-State Spin Register
IBM : QISKit の利用を推進
Microsoft : Q# をリリース
Google : OpenFermion を提供
arxiv:1710.07629 より,
物性化学や材料化学における量子シミュレーションは, 直近のエラー耐性の量子デバイスの利用分野では, 重要な用途であると予測されています. しかし, 現時点では, これらの問題のアルゴリズムの開発と研究は, 化学領域と量子アルゴリズムの両方で必要とされる知識が非常に多いため, 困難な領域です. このギャップを埋め, より多くの研究者にフィールドを広げるために, OpenFermionソフトウェアパッケージ(www.openfermion.org)を開発しました.
OpenFermionは、量子ソフトウェア上でのフェルミニックモデルと量子化学問題のシミュレーションを可能にすることを目的として開発された Apache 2.0 ライセンスのもとでPythonで主に書かれたオープンソースのソフトウェアライブラリです.
一般的な電子構造パッケージとのインタフェースから始めて, 量子コンピューター上の電子構造問題を解決または研究するための分子構造と 量子回路との間の変換を簡素化し, この領域を研究するために必要な専門知識の量を最小限に抑えるように作られています.
このパッケージは, ドキュメント化やテストで高いソフトウェア標準を維持しながら, 拡張性と堅牢性を備えて設計されています. このリリース・ペーパーは, OpenFermionの設計選択の背後にある主な動機を概説し, OpenFermionの基本的な機能について議論します.
量子化学計算のためのライブラリですから, 量子コンピューターの実機やシミュレーターを利用する部分は, プラグインを利用するように設計されています.
量子化学計算の問題(Hamiltonian)
↓
OpenFermion による Hamiltoian の変換(=Qubitで表されたHamiltoianやOperatorに)
↓
実機で計算(plugin を利用する)
ops : Hamiltonian を表すためのデータ構造を提供. 生成・消滅演算子(つまりは複素行列)を定義しています.
hamiltonian : 化学計算に有用な Hamiltonian が提供されています.
transform : 電子系の Hamiltonian を量子ビット系の Hamiltonian に変換するための機能が提供されています.
measurements : RDM制約条件を使った reduce operator を提供します.
utils : ユーテリティとしてのツール群.
data : STO-3G の数値データが HDF5フォーマットで提供されています.
FermionOperator
FermionOperator は, Fermion Ladder 演算子を格納します.
FermionOperator(‘1^’) は, , FermionOperator(‘0’)は, を表します.
O_1 = FermionOperator('')
O_2 = FermionOperator('2')
O_3 = FermionOperator('4^ 9')
O_4 = FermionOperarot('4^ 3 9 3^')
QubitOperator
QubitOperator は, Pauli Spin 演算子を格納します.
例えば, 次のような演算子を QubitOperator を使って以下のように表します.
O = QubitOperator('Z1 Z2') + QubitOperator('X1') + QubitOperator('X2')
InteractionOperator
分子を計算するために2体の相互作用を表す Hamiltonian.
MolecularData
古典的な電子構造から得られる分子データを格納するためのクラス.
場合によっては, 10MBを超える全データを個別に保存する必要があります. 保存されるデータはHDF5フォーマットです.
この ModecluarData を作ったり, 扱うための関数も提供されています.
Hubbard Model
Fermi_hubbard 関数. Fermi-Hubbard Hamiltonian を表します.
Plane Wave Hamiltonian
plane_wave_hamiltonian 関数. 一般形式の FermionOperator としての Hamiltonian を扱えるようにしています.
Jordan Wigner Hamiltonian
jordan_wigner_dual_basis_hamiltonian 関数. QubitOperatoer としての Hamiltonian を扱えます.
Mean Field Hamiltonian
mean_field_dwave 関数. BCS mean-field d-wave Hamiltonian を表します.
※「D-Waveとは関係なく, 高温超電導の理論で見ることができるd波超電導に関するもの」と @candidusflumen さんにご指摘いただきました.
one_body_fermion_constraints
Generates one-body positivity constraints on fermionic RDMs.
two_body_fermion_constraints
Generates two-body positivity constraints on fermionic RDMs.
Bravyi-Kitaev (Super fast) transform
Bravyi-Kitaev Transform / BKSF(Bravyi-Kitaev Super Fast transform)のための関数.
Jordan-Wigner tranform / reverse Jordan-Wigner tranform
Jordan-Wingner Transform のための関数.
Verstraete-Cirec tranform
(紹介していませんが)Verstraete-Cirac Transform のための関数.
Fenwick Tree Node / Tree
Bravyi-Kitaev Transform のための Fenwick Tree を構成するためのクラス.
Operator Locality in Quantum Simulation of Fermionic Models arXiv:1701.07072
Grid
原子の位置を表現するための 多次元のグリットとその点(位置).
Trotter 関数群
トロッター展開を支援するツール群.
UCCSD 演算子関連
UCCSDを操作するための関数群.
例)uccsd_generator(FermionOperator): UCCSD波動関数を生成するための非エルミート演算子.
OpenFermion/examples/openfermion_demo.ipynb
※このPDFにあるサンプルプログラムを python のファイルにしてあります. X
Q# は, 量子アプリケーションを開発することを目指した言語として開発されており, ドキュメントやサンプル・プログラムなども充実しています.
Microsft は, 早い段階から LiQi|> の開発も含め Google からは先行していたため, 参照している論文なども古いままのものもあり, 老舗感がでています.
Q#のマニュアル Hamiltonian Simulation
Tipsにはリンク切れもあり, 十分整備されているというわけではありません.
krosuke1001 さんのQiitaブログ記事 Microsoft Qunatum Simulator を触ってみた #2
GitHub にあるサンプル・プログラムhttps://github.com/Microsoft/Quantum/tree/master/Samples/H2SimulationCmdLine
QISKit を使った量子化学計算が提案されています. 手法論や関連論文がブログで紹介されています.
The Variational Quantum Eigensolver: An unsung hero of approximate quantum computing
実際の実例も提示されています. VQE algorithm: Application to quantum chemistry
専用機・・・大規模な系の計算が目指せる可能性も
(最適化解というアプローチでは, Ising Machine も有用)
汎用機・・・効率化(Depth)
arxiv:1706.00023 Low Depth Quantum Simulation of Electronic Structure
arxiv:1711.04789 Quantum Simulation of Electronic Structure with Linear Depth and Connectivity
arxiv:1801.01053 Low-depth circuit ansatz for preparing correlated fermionic states on a quantum computer
静的な分子軌道論 高分子を対象
複雑な化学反応を対象
動分子力学法, モンテカルロ法 への量子コンピューターの適用