MCMT
class qiskit.circuit.library.MCMT(gate, num_ctrl_qubits, num_target_qubits)
Bases: QuantumCircuit
A porta multialvo multicontrolada, para uma porta de alvo arbitrária controlada individualmente.
Por exemplo, a porta H controlada por 3 qubits e que atua sobre 2 qubits-alvo é representada da seguinte forma:
───■────
│
───■────
│
───■────
┌──┴───┐
┤0 ├
│ 2-H │
┤1 ├
└──────┘Essa implementação padrão não requer qubits auxiliares, pois transmite a porta de destino para o número de qubits de destino e utiliza a rotina de controle genérica do Qiskit para controlar o destino transmitido nos qubits de controle. Se houver qubits auxiliares disponíveis, pode-se utilizar uma variante mais eficiente que recorre à chamada decomposição em cadeia V. Isso é implementado em MCMTVChain.
Crie um novo portão multicontrole e multialvo.
A classe qiskit.circuit.library.generalized_gates.mcmt.MCMT está obsoleta desde o Qiskit 1.4. Ele não será removido antes de 3 meses após a data de lançamento. Em vez disso, use o MCMTGate.
Parâmetros
- gate (Gate | Callable[[QuantumCircuit, circuit.Qubit, circuit.Qubit], circuit.Instruction]) – A porta a ser aplicada é controlada pelos qubits de controle e aplicada aos qubits-alvo. Pode ser tanto um método de porta quanto um método de circuito. Se for um objeto chamável, ele será convertido para um Gate.
- num_ctrl_qubits (int) – O número de qubits de controle.
- num_target_qubits (int) – O número de qubits de destino.
Aumentos
- AttributeError – Se o portal não puder ser transformado em um portal controlado.
- AttributeError - Se o número de controles ou alvos for 0.
Atributos
num_ancilla_qubits
Retorna o número de ancillas.
name
Tipo: str
Um nome legível por humanos para o circuito.
Exemplo
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)
Retorna a versão controlada do circuito MCMT.