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")
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")
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")
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")
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")
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")
Click here to download example notebook.