class SlaterDeterminant(transformation_matrix, qubit_mapper=None, *, validate=True, rtol=1e-05, atol=1e-08, **circuit_kwargs)[source]#

Bases: QuantumCircuit

A circuit that prepares a Slater determinant.

A Slater determinant is a state of the form

\[b^\dagger_1 \cdots b^\dagger_{N_f} \lvert \text{vac} \rangle,\]


\[b^\dagger_j = \sum_{k = 1}^N Q_{jk} a^\dagger_k.\]
  • \(Q\) is an \(N_f \times N\) matrix with orthonormal rows.

  • \(a^\dagger_1, \ldots, a^\dagger_{N}\) are the fermionic creation operators.

  • \(\lvert \text{vac} \rangle\) is the vacuum state. (mutual 0-eigenvector of the fermionic number operators \(\{a^\dagger_j a_j\}\))

The matrix \(Q\) can be obtained by calling the diagonalizing_bogoliubov_transform() method of the QuadraticHamiltonian class when the quadratic Hamiltonian conserves particle number. This matrix is used to create circuits that prepare eigenstates of the quadratic Hamiltonian.

Currently, only the Jordan-Wigner transformation is supported.

Reference: arXiv:1711.05395

  • transformation_matrix (np.ndarray) – The matrix \(Q\) that specifies the coefficients of the new creation operators in terms of the original creation operators. The rows of the matrix must be orthonormal.

  • qubit_mapper (QubitMapper | None) – The QubitMapper. The default behavior is to create one using the call JordanWignerMapper().

  • validate (bool) – Whether to validate the inputs.

  • rtol (float) – Relative numerical tolerance for input validation.

  • atol (float) – Absolute numerical tolerance for input validation.

  • circuit_kwargs – Keyword arguments to pass to the QuantumCircuit initializer.