Skip to main content
IBM Quantum Platform

CircuitInstruction

class qiskit.circuit.CircuitInstruction(operation, qubits=None, clbits=None)

Basi: object

Una singola istruzione in un QuantumCircuit, costituita dal operation e da vari operandi.

Nota

I nomi di questa classe possono creare confusione, Instructione Operatione l'attributo di questa classe operation. La terminologia che preferiamo è in analogia con i linguaggi assembly, dove una "istruzione" è costituita da una "operazione" e dai suoi "operandi".

Storicamente, Instruction era la prima a comparire e originariamente conteneva i qubit su cui agiva e tutti i parametri, quindi era una vera e propria “istruzione”. Con il passare del tempo, QuantumCircuit assunse il compito di tenere traccia dei qubit e dei clbit, e la classe venne definita più appropriatamente come “operazione”. Cambiare il nome di un oggetto fondamentale come questo comporterebbe una rottura dell'API molto sgradevole per gli utenti, e per questo abbiamo deciso di mantenerlo.

Questa classe è stata creata per fornire un oggetto contestuale formale di “istruzione” in QuantumCircuit.data, che per molto tempo era stato costituito da tuple ad hoc. Grazie a questo, e all’introduzione dell’interfaccia Operation che consente di aggiungere oggetti più complessi ai circuiti, abbiamo colto l’occasione per correggere la denominazione storica. Per il momento, ciò porta a una situazione un po’ complicata in cui CircuitInstruction.operation è spesso un’istanza Instruction di (cheInstruction implementa l’interfaccia Operation ), ma man mano che Operation l’interfaccia verrà utilizzata sempre più spesso, si spera che questa confusione si attenui.

Avvertenza

Si tratta di una classe interna leggera e il controllo degli errori è minimo; è necessario rispettare i suggerimenti sul tipo quando la si usa. È responsabilità dell'utente assicurarsi che le mutazioni dirette dell'oggetto non invalidino i tipi e le restrizioni imposte dal contesto. In genere questo significa, ad esempio, che qubits deve essere una sequenza di elementi distinti, senza duplicati.


Attributi

clbits

Una sequenza di bit classici da cui questa operazione legge o scrive.

label

matrix

name

Restituisce il nome dell'istruzione corrispondente all'operazione per questo nodo

operation

L'operazione logica di cui questa istruzione rappresenta l'esecuzione.

params

qubits

Una sequenza di qubit a cui viene applicata l'operazione.


Metodi

copy

copy()

Restituisce una copia superficiale.

Risultati

La copia superficiale.

Tipo di restituzione

CircuitInstruction

from_standard

static from_standard(standard, qubits, params, label=None)

is_control_flow

is_control_flow()

L'istruzione Operation contenuta in questa istruzione è un'operazione di flusso di controllo (cioè un'istanza di ControlFlowOp)?

is_controlled_gate

is_controlled_gate()

L'istruzione Operation contenuto in questa istruzione è una sottoclasse di ControlledGate?

is_directive

is_directive()

L'elemento Operation contenuto in questo nodo è una direttiva?

is_parameterized

is_parameterized()

Questa istruzione contiene dei ParameterExpression parametri?

is_standard_gate

is_standard_gate()

L'istruzione Operation contenuto in questa istruzione è un cancello standard Qiskit?

replace

replace(operation=None, qubits=None, clbits=None, params=None)

Crea una copia superficiale con la sostituzione dei campi indicati.

Risultati

Una nuova istanza con i campi indicati sostituiti.

Tipo di restituzione

CircuitInstruction

Questa pagina è stata utile?
Segnala un bug, un errore di battitura o richiedi contenuti su GitHub.