55# QAOA circuit for some Z objective
66from collections .abc import Sequence
77from qiskit import QuantumCircuit
8+ from qokit .labs import get_energy_term_indices
89from .qaoa_circuit import get_qaoa_circuit_from_terms , get_parameterized_qaoa_circuit_from_terms
910
1011
11- def get_qaoa_circuit (N : int , terms : Sequence , gammas : Sequence , betas : Sequence , save_statevector : bool = True ) -> QuantumCircuit :
12+ def get_qaoa_circuit (N : int , gammas : Sequence , betas : Sequence , save_statevector : bool = True ) -> QuantumCircuit :
1213 """Generates a circuit for Hamiltonian of the form \sum_{term \in terms} \prod_{j \in term} Z_j
1314
1415 Parameters
1516 ----------
1617 N : int
1718 Number of qubits
18- terms : list of tuples
19- Each tuple corresponds to a term \prod_{j \in term} Z_j and contains indices
20- Example: for H = Z_0*Z_1 + Z_2*Z_3 + Z_0*Z_2*Z_4, terms = [(0,1), (2,3), (0,2,4)]
21- All indices must be less than N
2219 beta : list-like
2320 QAOA parameter beta
2421 gamma : list-like
@@ -30,10 +27,11 @@ def get_qaoa_circuit(N: int, terms: Sequence, gammas: Sequence, betas: Sequence,
3027 qc : qiskit.QuantumCircuit
3128 Quantum circuit implementing QAOA
3229 """
30+ terms , _ = get_energy_term_indices (N )
3331 return get_qaoa_circuit_from_terms (N = N , terms = terms , gammas = gammas , betas = betas , save_statevector = save_statevector )
3432
3533
36- def get_parameterized_qaoa_circuit (N : int , terms : Sequence , p : int , save_statevector : bool = True , return_parameter_vectors : bool = False ) -> QuantumCircuit :
34+ def get_parameterized_qaoa_circuit (N : int , p : int , save_statevector : bool = True , return_parameter_vectors : bool = False ) -> QuantumCircuit :
3735 """Generates a parameterized circuit for Hamiltonian of the form \sum_{term \in terms} \prod_{j \in term} Z_j
3836 This version is recommended for long circuits
3937
@@ -69,6 +67,7 @@ def f(theta):
6967 (beta first, then gamma). To bind:
7068 qc.bind_parameters(np.hstack([angles['beta'], angles['gamma']]))
7169 """
70+ terms , _ = get_energy_term_indices (N )
7271 return get_parameterized_qaoa_circuit_from_terms (
7372 N = N ,
7473 terms = terms ,
0 commit comments