# qml.qaoa.layers.cost_layer¶

cost_layer(gamma, hamiltonian)[source]

Applies the QAOA cost layer corresponding to a cost Hamiltonian.

For the cost Hamiltonian $$H_C$$, this is defined as the following unitary:

$U_C \ = \ e^{-i \gamma H_C}$

where $$\gamma$$ is a variational parameter.

Parameters
• gamma (int or float) – The variational parameter passed into the cost layer

• hamiltonian (Hamiltonian) – The cost Hamiltonian

Raises

ValueError – if the terms of the supplied cost Hamiltonian are not exclusively products of diagonal Pauli gates

We first define a cost Hamiltonian:

from pennylane import qaoa
import pennylane as qml

cost_h = qml.Hamiltonian([1, 1], [qml.PauliZ(0), qml.PauliZ(0) @ qml.PauliZ(1)])


We can then pass it into qaoa.cost_layer, within a quantum circuit:

dev = qml.device('default.qubit', wires=2)

@qml.qnode(dev)
def circuit(gamma):

for i in range(2):

cost_layer(gamma, cost_h)

return [qml.expval(qml.PauliZ(wires=i)) for i in range(2)]


which gives us a circuit of the form:

>>> print(qml.draw(circuit)(0.5))
0: ──H─╭ApproxTimeEvolution(1.00,1.00,0.50)─┤  <Z>
1: ──H─╰ApproxTimeEvolution(1.00,1.00,0.50)─┤  <Z>
>>> print(qml.draw(circuit, expansion_strategy="device")(0.5))
0: ──H──MultiRZ(1.00)─╭MultiRZ(1.00)─┤  <Z>
1: ──H────────────────╰MultiRZ(1.00)─┤  <Z>


Using PennyLane

Development

API