def circuit(params):
     """Parametrized circuit."""
     for layer in range(n):
         qml.broadcast(qml.RX, pattern="single", wires=self.all_wires, parameters=params[layer])
     for _layer in range(n):
         qml.broadcast(qml.CNOT, pattern="double", wires=self.all_wires)
     return [bu.expval(qml.PauliZ(w)) for w in self.all_wires]
 def circuit(params1, params2):
     """Parametrized circuit with nearest-neighbour gates."""
     for layer in range(n):
         qml.broadcast(
             qml.RX,
             pattern="single",
             wires=self.all_wires,
             parameters=params1[layer],
         )
         qml.broadcast(
             qml.CRY,
             pattern="chain",
             wires=self.all_wires,
             parameters=params2[layer],
         )
     return bu.expval(qml.PauliZ(0))
Beispiel #3
0
        def circuit():
            """Mutable IQP quantum circuit."""
            for i in range(self.n_wires):
                qml.Hadamard(i)

            for i in range(n * self.n_wires):
                wires = random_iqp_wires(self.n_wires)
                if len(wires) == 1:
                    qml.PauliZ(wires=wires)
                elif len(wires) == 2:
                    qml.CZ(wires=wires)
                elif len(wires) == 3:
                    CCZ(wires)

            for i in range(self.n_wires):
                qml.Hadamard(i)

            return bu.expval(qml.PauliZ(0))