VQE is a variational algorithm that finds ground state energies and eigenstates of quantum Hamiltonians. Given a Hamiltonian $H$ (a Hermitian operator), VQE trains a parameterized circuit to minimize the energy expectation value $E(\theta) = \langle \psi(\theta) | H | \psi(\theta) \rangle$.
VQE is one of the most promising near-term quantum algorithms. It's used for chemistry (finding molecular ground states), materials science, and optimization.
To compute $E(\theta)$, measure expectation values of Pauli operators (the terms in $H$) and sum them:
$$E(\theta) = \sum_i c_i \langle \psi(\theta) | P_i | \psi(\theta) \rangle$$
where each $P_i$ is a Pauli string (tensor product of X, Y, Z, I) and $c_i$ is a coefficient. Measure many copies with different Pauli measurements to estimate each term.
from qiskit_aer import AerSimulator from qiskit.primitives import Estimator from qiskit.quantum_info import SparsePauliOp import numpy as np # Define a Hamiltonian (e.g., XXZ model) H2_op = SparsePauliOp.from_list([ ("II", -1.052373245772859), ("IZ", 0.39793742484318045), ("ZI", -0.39793742484318045), ("ZZ", -0.01128010425623538), ("XX", 0.18093119978423156) ]) # Define ansatz ansatz = ... # a parameterized circuit # Compute energy for given parameters estimator = Estimator() result = estimator.run(ansatz, H2_op, [theta_values]).result() energy = result.values[0]
Use a classical optimizer (see optimizers) to find the minimum energy. Start with an initial parameter guess, evaluate the cost, compute gradients, and update.
from qiskit.optimizers import SLSQP # Initial parameters x0 = np.random.rand(len(ansatz.parameters)) def cost_function(params): result = estimator.run(ansatz, H2_op, [params]).result() return result.values[0] optimizer = SLSQP(maxiter=100) result = optimizer.minimize(cost_function, x0=x0) print(f"Ground state energy: {result.fun}")
VQE is practical on current (noisy) quantum hardware because it only requires measuring expectation values, not full state tomography.