braket.experimental.algorithms.quantum_approximate_optimization.quantum_approximate_optimization module

braket.experimental.algorithms.quantum_approximate_optimization.quantum_approximate_optimization.cost_function(values: ndarray, device: Device, circ: Circuit, coeffs: ndarray, cost_history: List[float], shots: int = 0) float[source]

Cost function and append to loss history list.

Parameters:
  • values (ndarray) – Values for the parameters.

  • device (Device) – Braket device to run on.

  • circ (Circuit) – QAOA circuit to run.

  • coeffs (ndarray) – The coefficients of the cost Hamiltonian.

  • cost_history (List[float]) – History of cost evaluations.

  • shots (int) – Number of shots. Defaults to 0.

Returns:

float – The cost function value

braket.experimental.algorithms.quantum_approximate_optimization.quantum_approximate_optimization.run_qaoa_circuit(device: Device, circ: Circuit, values: ndarray, shots: int) QuantumTask[source]

Evaluate a QAOA circuit with parameters=values.

Parameters:
  • device (Device) – Braket device to run on.

  • circ (Circuit) – QAOA circuit to run.

  • values (np.ndarray) – Values for the parameters.

  • shots (int) – Number of shots.

Returns:

QuantumTask – The Braket task to run.

braket.experimental.algorithms.quantum_approximate_optimization.quantum_approximate_optimization.get_cost(task: QuantumTask, coeffs: ndarray) float[source]

Evaluate the cost function from a QAOA task.

Parameters:
  • task (QuantumTask) – QAOA task.

  • coeffs (np.ndarray) – The coefficients of the cost Hamiltonian.

Returns:

float – Loss function value.

braket.experimental.algorithms.quantum_approximate_optimization.quantum_approximate_optimization.qaoa(n_qubits: int, n_layers: int, ising: ndarray) Circuit[source]

QAOA template.

Parameters:
  • n_qubits (int) – Number of qubits

  • n_layers (int) – Number of layers. Defaults to 1.

  • ising (ndarray) – Ising interaction matrix.

Returns:

Circuit – The parameteric QAOA Circuit

braket.experimental.algorithms.quantum_approximate_optimization.quantum_approximate_optimization.driver_layer(beta: float, n_qubits: int) Circuit[source]

Returns circuit for driver Hamiltonian U(Hb, beta).

Parameters:
  • beta (float) – Rotation angle to apply parameterized rotation around x

  • n_qubits (int) – number of qubits to apply rx gate

Returns:

Circuit – Circuit object that implements evolution with driver Hamiltonian

braket.experimental.algorithms.quantum_approximate_optimization.quantum_approximate_optimization.cost_layer(gamma: float, ising: ndarray) Circuit[source]

Returns circuit for evolution with cost Hamiltonian.

Parameters:
  • gamma (float) – Rotation angle to apply parameterized rotation around z

  • ising (np.ndarray) – Ising matrix

Returns:

Circuit – Circuit for evolution with cost Hamiltonian

braket.experimental.algorithms.quantum_approximate_optimization.quantum_approximate_optimization.decomposed_zz_gate(qubit0: int, qubit1: int, gamma: float) Circuit[source]

Return a circuit implementing \(exp(-i * \gamma * Z_i * Z_j)\) using CNOT gates if ZZ not supported.

Parameters:
  • qubit0 (int) – Index value for the controlling qubit for CNOT gate

  • qubit1 (int) – Index value for the target qubit for CNOT gate

  • gamma (float) – Rotation angle to apply parameterized rotation around z

Returns:

Circuit – Circuit object that implements ZZ gate using CNOT gates