Skip to main contentIBM Quantum Documentation

Sample-based quantum diagonalization (SQD) overview

Sample-based quantum diagonalization (SQD) is a classical post-processing technique which acts on samples obtained from a quantum circuit after execution on a QPU. It is useful for finding eigenvalues and eigenvectors of quantum operators, such as the Hamiltonian of a quantum system, and uses quantum and distributed classical computing together. This post-processing technique may be especially useful for users simulating chemical or other quantum systems.

Classical computing is used to process samples obtained from a quantum processor, and to project and diagonalize a target Hamiltonian in a subspace spanned by them. This allows SQD to be robust to samples corrupted by quantum noise and manage large Hamiltonians, such as chemical systems with millions of interacting terms, beyond the reach of exact diagonalization methods.

The SQD tool can target Hamiltonians expressed as linear combinations of Pauli operators or second-quantized Fermionic operators. The input samples are obtained by quantum circuits defined by the user, which are believed to be good representations of eigenstates (for example, the ground state) of a target operator. The convergence rate of SQD as a function of the number of samples improves with the sparseness of the target eigenstate.


Install the SQD package

There are two ways to install the SQD package: PyPI and building from source. It is recommended to install these packages in a virtual environment to ensure separation between package dependencies.

Install from PyPI

The most straightforward way to install the qiskit-addon-sqd package is via PyPI.

pip install qiskit-addon-sqd

Build from source

Click here to read how to install this package manually

If you wish to contribute to this package or want to install it manually, first clone the repository:

git clone [email protected]:Qiskit/qiskit-addon-sqd.git

and install the package via pip. The repository also contains example notebooks that you can run. If you plan on developing in the repository, you can install the dev dependencies.

Adjust the options to suit your needs.

pip install tox notebook -e '.[notebook-dependencies, dev]'

Theoretical background

The SQD workflow using self-consistent configuration recovery is explained in detail in [1]. This section provides an overview to the technique depicted in the following diagram.

SQD diagram depicting configuration recovery, collecting subsamples, and obtaining eigenstates from those subsamples

Here Xˉ\bar{\mathcal{X}} is a set of noisy samples which contain, in the context of the Hamiltonian being simulated, physical and non-physical configurations (represented as bitstrings) obtained from execution on a QPU. The non-physical configurations are due to noise and can be processed by the sqd.configuration_recovery.recover_configurations() method to refine the samples into a new set XR\mathcal{X}_R.

From this set, batches of configurations S(1)... S(K)\mathcal{S}^{(1)}...\ \mathcal{S}^{(K)} are collected according to a distribution proportional to the empirical frequencies of each x\mathbf{x} in XR\mathcal{X}_R. Each batch of sampled configurations spans a subspace, S(k):k=1,...,K\mathcal{S}^{(k)}: k = 1, ..., K, in which the Hamiltonian is projected and diagonalized:

H^S(k)=P^S(k)H^P^S(k), with P^S(k)=xS(k)xx, \hat{H}_{S^{(k)}} = \hat{P}_{\mathcal{S}^{(k)}}\hat{H}\hat{P}_{\mathcal{S}^{(k)}}\text{, with } \hat{P}_{\mathcal{S}^{(k)}} = \sum_{\mathbf{x} \in \mathcal{S}^{(k)}} |\mathbf{x}\rangle\langle\mathbf{x}|,

where H^S(k)\hat{H}_{\mathcal{S}^{(k)}} is the Hamiltonian of a given subspace.

The bulk of the SQD workflow lies here wherein each of these subspace Hamiltonians is diagonalized. The ground states obtained from each of these subspaces, ψ(k)|\psi^{(k)}\rangle, are used to obtain an estimate of a reference vector of occupancies n(K)\mathbf{n}^{(K)} averaged over each of the KK subspaces and sent back to the configuration recovery step. A new set of subspaces are then obtained and diagonalized, and this procedure iterates in a loop until a user specified criterion is met.


Next steps

Recommendations

References

[1] Robledo-Moreno, Javier, et al. "Chemistry beyond exact solutions on a quantum-centric supercomputer" arXiv preprint arXiv:2405.05068 (2024).

Was this page helpful?
Report a bug or request content on GitHub.