qml.qchem.hf_state¶

hf_state(electrons, orbitals, basis='occupation_number')[source]

Generate the Hartree-Fock statevector with respect to a chosen basis.

The many-particle wave function in the Hartree-Fock (HF) approximation is a Slater determinant. In Fock space, a Slater determinant for $$N$$ electrons is represented by the occupation-number vector:

$\begin{split}\vert {\bf n} \rangle = \vert n_1, n_2, \dots, n_\mathrm{orbs} \rangle, n_i = \left\lbrace \begin{array}{ll} 1 & i \leq N \\ 0 & i > N \end{array} \right.,\end{split}$

where $$n_i$$ indicates the occupation of the $$i$$-th orbital.

The Hartree-Fock state can also be generated in the parity basis, where each qubit stores the parity of the spin orbital, and in the Bravyi-Kitaev basis, where a qubit $$j$$ stores the occupation state of orbital $$j$$ if $$j$$ is even and stores partial sum of the occupation state of a set of orbitals of indices less than $$j$$ if $$j$$ is odd [Tranter et al. Int. J. Quantum Chem. 115, 1431 (2015)].

Parameters
• electrons (int) – Number of electrons. If an active space is defined, this is the number of active electrons.

• orbitals (int) – Number of spin orbitals. If an active space is defined, this is the number of active spin-orbitals.

• basis (string) – Basis in which the HF state is represented. Options are occupation_number, parity and bravyi_kitaev.

Returns

NumPy array containing the vector $$\vert {\bf n} \rangle$$

Return type

array

Example

>>> state = hf_state(2, 6)
>>> print(state)
[1 1 0 0 0 0]
>>> state = hf_state(2, 6, basis="parity")
>>> print(state)
[1 0 0 0 0 0]
>>> state = hf_state(2, 6, basis="bravyi_kitaev")
>>> print(state)
[1 0 0 0 0 0]

Using PennyLane

Release news

Development

API

Internals