qiskit_addon_cutting.instructions.Move¶
- class Move(label=None)[source]¶
Bases:
Instruction
A two-qubit instruction representing a reset of the second qubit followed by a swap.
Circuit Symbol:
┌───────┐ q_0: ┤0 ├ q_0: ──────X─ │ Move │ = │ q_1: ┤1 ├ q_1: ─|0>──X─ └───────┘
The desired effect of this instruction, typically, is to move the state of the first qubit to the second qubit. For this to work as expected, the second incoming qubit must share no entanglement with the remainder of the system. If this qubit is entangled, then performing the reset operation will in turn implement a quantum channel on the other qubit(s) with which it is entangled, resulting in the partial collapse of those qubits.
The simplest way to ensure that the second (i.e., destination) qubit shares no entanglement with the remainder of the system is to use a fresh qubit which has not been used since initialization.
Another valid way is to use, as a desination qubit, a qubit whose immediate prior use was as the source (i.e., first) qubit of a preceding
Move
operation.The following circuit contains two
Move
operations, corresponding to each of the aforementioned cases:import numpy as np from qiskit import QuantumCircuit from qiskit_addon_cutting.instructions import Move qc = QuantumCircuit(4) qc.ryy(np.pi / 4, 0, 1) qc.rx(np.pi / 4, 3) qc.append(Move(), [1, 2]) qc.rz(np.pi / 4, 0) qc.ryy(np.pi / 4, 2, 3) qc.append(Move(), [2, 1]) qc.ryy(np.pi / 4, 0, 1) qc.rx(np.pi / 4, 3) qc.draw("mpl")
A full demonstration of the
Move
instruction is available in the introductory tutorial on wire cutting.Create a
Move
instruction.Methods
__init__
([label])Create a
Move
instruction.Attributes