手を上げるキュビットくんゆるふわ量子コンピュータ
計算中のキュビットくん

Qiskit VQE入門|分子の基底エネルギーを量子×古典ハイブリッドで求める

2026-08-12実践

#Qiskit#VQE#量子化学#ハイブリッド#Python#実践

ショアやグローバーは「完成した大規模量子コンピュータ」が前提でした。一方で VQE(Variational Quantum Eigensolver) は、NISQ期の今の小さくてノイズの多い実機でも動く、現実的なアルゴリズムです。この記事では、量子と古典を組み合わせて分子のエネルギーを求める仕組みを、手を動かして理解します。

何を解くのか: 基底エネルギー

分子の「いちばん安定な状態のエネルギー(基底エネルギー)」は、創薬や材料開発で最重要の量です。数学的には、ある行列(ハミルトニアン)の最小固有値を求める問題になります。VQEはこれを量子×古典で近似的に解きます。

VQEは量子と古典の往復

⚛️

量子回路

パラメータθで状態を作る

📏

測定

エネルギーを見積もる

🧮

古典最適化

θを更新して繰り返す

💡

なぜNISQで動くのか

VQEは深い回路を必要とせず、浅い回路を何度も回して古典コンピュータに最適化を任せます。「量子は状態を作るだけ、賢く探すのは古典」——この役割分担が、ノイズに弱い今の実機と相性がいい理由です。

準備

pip install qiskit qiskit-aer scipy numpy

量子化学ライブラリは使わず、水素分子(H₂)のハミルトニアンを直接与えることで、VQEの本質だけに集中します。

① ハミルトニアンを用意する

H₂(結合距離0.735Å付近)のハミルトニアンは、パウリ演算子の重み付き和として知られています。Qiskitの SparsePauliOp で表します。

from qiskit.quantum_info import SparsePauliOp

# H2分子(2量子ビットに縮約した近似)の係数
H2 = SparsePauliOp.from_list([
    ("II", -1.052373),
    ("IZ",  0.397937),
    ("ZI", -0.397937),
    ("ZZ", -0.011280),
    ("XX",  0.180931),
])

ゴールは、このハミルトニアンの最小固有値(=基底エネルギー、単位ハートリー)を見つけることです。

② パラメータ付き回路(アンザッツ)

「θで形が変わる量子状態」を作ります。これをアンザッツ(ansatz)と呼びます。シンプルな1パラメータの回路を用意します。

from qiskit import QuantumCircuit
from qiskit.circuit import Parameter

theta = Parameter("θ")

def ansatz():
    qc = QuantumCircuit(2)
    qc.x(0)              # 初期の電子配置
    qc.ry(theta, 1)
    qc.cx(1, 0)
    return qc

③ エネルギーを測る関数

与えたθで状態を作り、ハミルトニアンの期待値(=エネルギー)を計算します。Qiskitの StatevectorEstimator を使います(run には (回路, 観測量, パラメータ) のタプルを渡し、結果は .data.evs で受け取ります)。

import numpy as np
from qiskit.primitives import StatevectorEstimator

estimator = StatevectorEstimator()
circuit = ansatz()

def energy(params):
    job = estimator.run([(circuit, H2, [params[0]])])
    return job.result()[0].data.evs

# ためしにθ=0のエネルギー
print(energy([0.0]))

④ 古典最適化でθを探す

あとは「エネルギーが最小になるθ」を古典の最適化ルーチンで探すだけ。SciPyに任せます。

from scipy.optimize import minimize

result = minimize(energy, x0=[0.0], method="COBYLA")
print("最適 θ =", round(float(result.x[0]), 4))
print("基底エネルギー ≈", round(float(result.fun), 6), "ハートリー")

出力はおおよそ 基底エネルギー ≈ -1.857 ハートリー。これは、このハミルトニアン(電子エネルギー部分)の厳密な最小固有値とぴったり一致します。量子回路で状態を作り、古典で探索する——この往復だけで、分子のエネルギーが求まりました。

💡

よく見る -1.137 との違い

「H₂の基底エネルギーは約 -1.137 ハートリー」という値を見たことがあるかもしれません。これは電子エネルギー(≈ -1.857)に、原子核どうしの反発エネルギー(≈ +0.72)を足した総エネルギーです。今回のハミルトニアンは電子部分だけなので -1.857 になります。定数を足すかどうかの違いで、VQE自体は正しく動いています。

🌱

厳密解と答え合わせ

2量子ビット程度なら、np.linalg.eigvalsh(H2.to_matrix()).min() で厳密な最小固有値を直接計算できます。VQEの答えと並べると、どちらも -1.857274 でぴったり一致するはず。小さい問題で"答えを知っている"状態で試すのが、実装を信頼する近道です。

実機・大規模では何が難しいか

きれいに動きましたが、現実には壁があります。分子が大きくなるとアンザッツのパラメータが急増し、最適化が局所解に落ちたり収束しなくなる(Barren Plateau問題)ことが知られています。さらに実機ではノイズが測定値を揺らします。VQEは「今動く」代わりに、この最適化の難しさと戦うアルゴリズムでもあります。

まとめ

  • VQE=量子回路で状態を作り、古典最適化でパラメータを探すハイブリッド
  • 目標はハミルトニアンの最小固有値=分子の基底エネルギー
  • 浅い回路でよいのでNISQ期の実機でも動く
  • 大規模化ではBarren Plateauやノイズが課題

もう少し詳しく(背景と理論)

VQE は Peruzzo et al. (2014) が提案した変分量子固有値ソルバで1、ハミルトニアンの基底エネルギーをリッツの変分原理(⟨ψ(θ)|H|ψ(θ)⟩ ≥ E₀)に基づいて下から近づけます。量子は状態の準備と期待値測定だけを担い、パラメータ最適化は古典が行うハイブリッド構成のため、浅い回路で動くNISQ向けの代表格です。ただし課題も多く、パラメータが増えると勾配が指数的に消えるバレンプラトー現象2、測定回数(ショット)の爆発、局所解などが実用化の壁になります3。アンザッツ設計では、化学の対称性を反映した UCCSD や、ハードウェア効率型など複数の流儀があります4

次の一歩 🌸

別の量子アルゴリズムを実装するならグローバー探索の実装、アルゴリズムの全体像は量子アルゴリズム入門、活用先は量子コンピュータの活用事例へどうぞ。

Footnotes

  1. Peruzzo, A. et al. (2014). "A variational eigenvalue solver on a photonic quantum processor." Nature Communications, 5, 4213.

  2. McClean, J. et al. (2018). "Barren plateaus in quantum neural network training landscapes." Nature Communications, 9, 4812. ランダムに深い回路では勾配の分散が量子ビット数に対し指数的に小さくなり、学習が停滞する。

  3. ハミルトニアンをパウリ項の和に分解し各項を測るため、必要ショット数が項数と精度に応じて増える。項のグルーピングや古典シャドウ等で削減が図られる。

  4. 化学では Unitary Coupled Cluster(UCCSD)が精度高いが回路が深い。ハードウェア効率型アンザッツは浅いがバレンプラトーに陥りやすい、というトレードオフがある。

🔥 この分野の最新トレンドをチェック →

あわせて読みたい