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
Circuitobject.- Raises:
ValueError – Angle arrays have wrong length.
- Return type:
Example
>>> from uniqc.algorithmics.ansatz import qaoa_ansatz >>> H = [("Z0Z1", 1.0), ("Z1Z2", 1.0), ("Z0Z2", 0.5)] >>> c = qaoa_ansatz(H, p=2)