qiskit_circuit_hubo

qiskit_circuit_hubo#

iqm.qaoa.circuits.qiskit_circuit_hubo(qaoa, measurements=True)[source]#

Construct a Qiskit quantum circuit implementing the QAOA ansatz for a HUBO.

This function builds a parameterized Quantum Approximate Optimization Algorithm (QAOA) circuit for a Higher-Order Unconstrained Binary Optimization (HUBO) problem encoded as a binary polynomial. The resulting circuit alternates between phase-separation and mixing layers.

The QAOA unitary for \(p\) layers is given by

\[\begin{split}U(\\boldsymbol{\\gamma}, \\boldsymbol{\\beta}) = \\prod_{\\ell=1}^{p} \\left( e^{-i \\beta_\\ell \\sum_{i} X_i} \\, e^{-i \\gamma_\\ell H_C} \\right),\end{split}\]

where \(H_C\) is the cost Hamiltonian derived from the HUBO:

\[\begin{split}H_C = \\sum_{S \\subseteq \\{1, \\dots, n\\}} c_S \\prod_{i \\in S} Z_i.\end{split}\]

Each term in the Hamiltonian is implemented using an n-qubit Pauli-Z string rotation via rnz(), i.e.,

\[\begin{split}e^{-i \\gamma c_S \\prod_{i \\in S} Z_i}.\end{split}\]

The mixer corresponds to independent single-qubit X-rotations:

\[\begin{split}e^{-i \\beta \\sum_i X_i} = \\prod_i R_X(2\\beta).\end{split}\]

The circuit is initialized in the uniform superposition state by applying Hadamard gates to all qubits.

Parameters:
  • qaoa (HUBOQAOA) – QAOA instance containing the HUBO Hamiltonian, number of qubits, number of layers, and variational parameters gammas and betas.

  • measurements (bool) – If True, append measurements on all qubits at the end of the circuit. Defaults to True.

Returns:

A Qiskit circuit implementing the QAOA ansatz for the given HUBO.

Return type:

QuantumCircuit