uniqc.algorithms.core.ansatz.hva module

Hamiltonian Variational Ansatz (HVA).

Constructs an ansatz that alternates between groups of commuting Hamiltonian terms, suitable for quantum chemistry simulations.

uniqc.algorithms.core.ansatz.hva.hva(hamiltonian_groups, p=1, qubits=None, params=None, hf_state=None)[source]

Build a Hamiltonian Variational Ansatz (HVA) circuit.

The HVA alternates between applying exponentials of commuting Hamiltonian groups. Each group is applied with an independent variational parameter.

Parameters:
  • hamiltonian_groups (list[list[tuple[str, float]]]) – List of commuting Hamiltonian groups. Each group is a list of (pauli_string, coefficient) tuples. Groups should contain mutually commuting operators.

  • p (int) – Number of ansatz layers (repetitions of the full group cycle).

  • qubits (list[int] | None) – Qubit indices. None → auto-detect from hamiltonian.

  • params (Parameters | np.ndarray | None) – Variational parameters. Length must equal len(hamiltonian_groups) * p. None → random initialization.

  • hf_state (list[int] | None) – Qubit indices to initialize in |1> (Hartree-Fock state). None → all qubits start in |0>.

Returns:

A Circuit object.

Raises:

ValueError – Parameter count mismatch or empty groups.

Return type:

Circuit

Example

>>> # Hubbard model example with two groups: hopping and interaction
>>> hopping = [("X0X1", 1.0), ("Y0Y1", 1.0)]
>>> interaction = [("Z0Z1", 0.5)]
>>> groups = [hopping, interaction]
>>> c = hva(groups, p=2)