MCMT
class qiskit.circuit.library.MCMT(gate, num_ctrl_qubits, num_target_qubits)
Bases: QuantumCircuit
La puerta multiobjetivo multicontrolada, para una puerta objetivo arbitraria controlada individualmente.
Por ejemplo, la puerta H controlada por 3 qubits y que actúa sobre 2 qubits de destino se representa así:
───■────
│
───■────
│
───■────
┌──┴───┐
┤0 ├
│ 2-H │
┤1 ├
└──────┘Esta implementación predeterminada no requiere qubits auxiliares, ya que difunde la puerta de destino al número de qubits de destino y utiliza la rutina de control genérica de Qiskit para controlar el destino difundido en los qubits de control. Si se dispone de qubits auxiliares, se puede emplear una variante más eficiente que utiliza la denominada descomposición en cadena V. Esto se implementa en MCMTVChain.
Crear una nueva puerta multicontrol multiobjetivo.
La clase qiskit.circuit.library.generalized_gates.mcmt.MCMT está obsoleta a partir de Qiskit 1.4. Se retirará como muy pronto 3 meses después de la fecha de publicación. Utilice MCMTGate en su lugar.
Parámetros
- gate (Gate | Callable[[QuantumCircuit, circuit.Qubit, circuit.Qubit], circuit.Instruction]) – La puerta se aplica de forma controlada a los qubits de control y se aplica a los qubits de destino. Puede ser un método de puerta o un método de circuito. Si se trata de un objeto invocable, se convertirá en un Gate.
- num_ctrl_qubits (int) – El número de qubits de control.
- num_target_qubits (int) – El número de qubits objetivo.
Eleva
- AttributeError – Si la puerta no se puede convertir en una puerta controlada.
- AttributeError - Si el número de controles u objetivos es 0.
Atributos
num_ancilla_qubits
Devuelve el número de ancillas.
name
Tipo: str
Un nombre legible para el circuito.
Ejemplo
from qiskit import QuantumCircuit
qc = QuantumCircuit(2, 2, name="my_circuit")
print(qc.name)my_circuitMétodos
control
control(num_ctrl_qubits=1, label=None, ctrl_state=None, annotated=False)
Devuelve la versión controlada del circuito MCMT.