ansatz
eigenkit.chemistry.ansatz
Ansatz building blocks for chemistry circuits: Hartree-Fock reference-state preparation and the UCCSD ansatz.
apply_hartree_fock(circuit, n_electrons)
Prepare the Hartree-Fock reference state on an existing builder.
It applies an X gate to each of the lowest n_electrons spin-orbitals, which
marks them as occupied (|1⟩).
The convention is the one of the Jordan-Wigner mapping: mode j is qubit j,
and the spin-orbitals are ordered so that the lowest n_electrons of them are
occupied in the reference state, for example |1…1 0…0⟩.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
circuit
|
CircuitBuilder
|
The builder to add the gates to. |
required |
n_electrons
|
int
|
The number of electrons, which sets the Hartree-Fock reference state. |
required |
Returns:
| Type | Description |
|---|---|
CircuitBuilder
|
The same builder, so that calls can be chained. |
hartree_fock_state(n_qubits, n_electrons)
A circuit that prepares the Hartree-Fock reference state.
The state is |1…1 0…0⟩ on n_qubits qubits, with n_electrons occupied
spin-orbitals.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
n_qubits
|
int
|
The number of qubits. |
required |
n_electrons
|
int
|
The number of electrons, which sets the Hartree-Fock reference state. |
required |
Returns:
| Type | Description |
|---|---|
CircuitSpec
|
The circuit, as a |
uccsd_ansatz(n_qubits, n_electrons, reps=1)
The UCCSD ansatz on the Hartree-Fock reference, with a Trotter approximation.
UCCSD is the unitary coupled-cluster ansatz with single and double excitations.
The circuit prepares (∏_k exp(θ_k (T_k − T_k†)))^reps |HF⟩, where |HF⟩ is
the Hartree-Fock state.
Each generator G = T − T† is anti-Hermitian. The Jordan-Wigner mapping turns
H = −iG into a Hermitian qubit operator, and exp(θG) = exp(iθH) is then a
product of pauli_exponential gates. The Pauli terms of one generator commute,
so that product is exact. The product over different generators is a
first-order Trotter approximation. reps repeats the whole sequence with
independent weights, which reduces the Trotter error: more repetitions bring
the circuit closer to the exact UCCSD unitary. The ansatz has
reps * n_excitations weights in total.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
n_qubits
|
int
|
The number of qubits, one per spin-orbital. |
required |
n_electrons
|
int
|
The number of electrons, which sets the Hartree-Fock reference and the possible excitations. |
required |
reps
|
int
|
The number of Trotter repetitions of the product of
excitations. The default is |
1
|
Returns:
| Type | Description |
|---|---|
CircuitSpec
|
The ansatz as a |
uccsd_excitation_generators(n_qubits, n_electrons)
The excitation generators T - T† of the UCCSD ansatz.
UCCSD is the unitary coupled-cluster ansatz with single and double excitations.
The excitations go from the occupied spin-orbitals (the lowest n_electrons)
to the unoccupied ones. Single and double excitations are taken over all choices
of occupied and unoccupied indices, with no restriction from spin symmetry,
which keeps the construction simple and correct. A variant restricted by spin
symmetry, which would have fewer parameters, is not implemented.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
n_qubits
|
int
|
The number of qubits. |
required |
n_electrons
|
int
|
The number of electrons, which sets the Hartree-Fock reference state. |
required |
Returns:
| Type | Description |
|---|---|
list[FermionOperator]
|
The generators, as a list of |