Multiple cuts#

Performing multiple cuts works the exact same way as a single cut. It is good to keep in mind that each wire cut adds an extra qubit and increases the number of needed circuits exponentially.

Cutting to more than two parts#

1: Define the circuit we want to cut

circuit = QuantumCircuit(4)
circuit.h(0)
circuit.cx(0,1)
circuit.cx(1,2)
circuit.cx(2,3)

circuit.draw("mpl")
_images/circ6.png

Now let’s say we want to cut this circuit into three pieces with two cuts.

2: Insert cut_wire operations to the circuit to denote where we want to cut the circuit

cut_circuit = QuantumCircuit(4)
 cut_circuit.h(0)
 cut_circuit.cx(0,1)
 cut_circuit.append(cut, [1])
 cut_circuit.cx(1,2)
 cut_circuit.append(cut, [2])
 cut_circuit.cx(2,3)

cut_circuit.draw("mpl")
_images/circ5.png

3: Continue like with single cut

backend = AerSimulator()
observables = [0,1,2, [0,2]]

estimated_expectation_values = ck.run(cut_circuit, observables, backend)

Click here to download example notebook.

More examples on how the cuts should be placed.#

1: Cutting two subsequent wires

Initial circuit:

circuit = QuantumCircuit(4)
circuit.h(0)
circuit.cx(0,1)
circuit.cx(0,2)
circuit.cx(1,2)
circuit.cx(1,3)

circuit.draw("mpl")
_images/circ9.png

Circuit with cuts:

cut_circuit = QuantumCircuit(4)
cut_circuit.h(0)
cut_circuit.cx(0,1)
cut_circuit.cx(0,2)
cut_circuit.append(cut, [1])
cut_circuit.append(cut, [2])
cut_circuit.cx(1,2)
cut_circuit.cx(1,3)

cut_circuit.draw("mpl")
_images/circ10.png

Click here to download example notebook.

2: Two consequent cuts on the same wire

Initial circuit:

circuit = QuantumCircuit(3)
circuit.h(0)
circuit.cx(0,1)
circuit.cx(1,2)
circuit.cx(0,1)

circuit.draw("mpl")
_images/circ7.png

Circuit with cuts:

cut_circuit = QuantumCircuit(3)
cut_circuit.h(0)
cut_circuit.cx(0,1)
cut_circuit.append(cut, [1])
cut_circuit.cx(1,2)
cut_circuit.append(cut, [1])
cut_circuit.cx(0,1)

cut_circuit.draw("mpl")
_images/circ8.png

Click here to download example notebook.