uniqc.algorithmics.ansatz.qaoa_ansatz module#

QAOA (Quantum Approximate Optimization Algorithm) ansatz.

Constructs the alternating-operator ansatz used in QAOA for solving combinatorial optimisation problems.

uniqc.algorithmics.ansatz.qaoa_ansatz.qaoa_ansatz(cost_hamiltonian, p=1, qubits=None, betas=None, gammas=None)[source]#

Build a QAOA ansatz circuit.

The ansatz alternates between the cost unitary \(U_C(\gamma) = e^{-i\gamma H_C}\) and the mixer unitary \(U_M(\beta) = e^{-i\beta \sum X_i}\) for p layers.

Parameters:
  • cost_hamiltonian (List[Tuple[str, float]]) – List of (pauli_string, coefficient) tuples. Pauli strings use the format "Z0Z1", "X0Y1Z2", etc.

  • p (int) – Number of QAOA layers.

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

  • betas (ndarray | None) – Mixer angles, length p. None → random.

  • gammas (ndarray | None) – Cost angles, length p. None → random.

Returns:

A Circuit object.

Raises:

ValueError – Angle arrays have wrong length.

Return type:

Circuit

Example

>>> from uniqc.algorithmics.ansatz import qaoa_ansatz
>>> H = [("Z0Z1", 1.0), ("Z1Z2", 1.0), ("Z0Z2", 0.5)]
>>> c = qaoa_ansatz(H, p=2)