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
Circuitobject.- Raises:
ValueError – Parameter count mismatch or empty groups.
- Return type:
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)