Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Preparation of Slater determinants and fermionic Gaussian states #459

Closed
kevinsung opened this issue Dec 10, 2021 · 0 comments · Fixed by #483
Closed

Preparation of Slater determinants and fermionic Gaussian states #459

kevinsung opened this issue Dec 10, 2021 · 0 comments · Fixed by #483
Labels
type: feature request New feature or request

Comments

@kevinsung
Copy link
Contributor

What should we add?

Slater determinants and fermionic Gaussian states are important classes of initial states for quantum simulations which can be efficiently prepared on a quantum computer [1]. Qiskit Nature should include routines to generate circuits to prepare these states. Efficient algorithms to prepare these states are described in arxiv:1711.05395, and these are already implemented in OpenFermion. I can contribute these routines to Qiskit Nature. Note that these algorithms assume the Jordan-Wigner Transformation is used to map fermions to qubits.

Implementation details

Qiskit Nature already has routines in the qiskit_nature.circuit.library module to prepare initial states, such as the HartreeFock class which prepares computational basis states. The new functionality should be implemented by adding new classes SlaterDeterminant and FermionicGaussianState to this module. My current plan for these classes is to have them called like this:

SlaterDeterminant(transformation_matrix)

FermionicGaussianState(transformation_matrix, occupied_orbitals)

In both cases, each row of transformation_matrix contains the coefficients of a transformed creation operator in terms of the original creation (and possibly annihilation) operators.

For SlaterDeterminant, the input transformation_matrix is an η x N matrix where N is the number of orbitals (qubits) and η is the number of particles.

For FermionicGaussianState, the input transformation_matrix is is either N x N or N x 2N, the latter case corresponding to when both creation and annihilation operators are mixed together, rather than only creation operators. The argument occupied orbitals is a list of integers indicating the indices of the transformed orbitals that should be occupied.

A common use case for these routines is preparing eigenstates of quadratic Hamiltonians. In addition to these routines, we will want to add functionality for representing quadratic Hamltonians and computing the transformation matrices from them, but that can be done in a separate issue.


[1] https://arxiv.org/abs/cond-mat/0012334

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
type: feature request New feature or request
Projects
None yet
Development

Successfully merging a pull request may close this issue.

1 participant