AnnotatedOperation
class qiskit.circuit.AnnotatedOperation(base_op, modifiers)
Basi: Operation
Operazione annotata.
Creare un nuovo AnnotatedOperation.
Un'«operazione annotata» consente di aggiungere un elenco di modificatori all'operazione «di base». Per ora, gli unici modificatori supportati sono di tipo InverseModifier, ControlModifier e PowerModifier.
Un'operazione annotata può essere vista come un'estensione di ControlledGate (che permette anche di aggiungere un controllo all'operazione di base). Tuttavia, una differenza importante è che la definizione del circuito di un'operazione annotata non viene costruita quando l'operazione viene dichiarata, ma avviene durante la transpilazione, in particolare durante il passaggio di transpiler HighLevelSynthesis transpiler.
Un'operazione annotata può essere vista anche come un oggetto di "livello superiore" o "più astratto" che può essere aggiunto a un circuito quantistico. Ciò consente di scrivere passaggi di ottimizzazione del transpiler che fanno uso di questa rappresentazione di livello superiore, ad esempio eliminando un gate che è immediatamente seguito dal suo inverso.
Parametri
- base_op (Operation) – operazione di base in corso di modifica
- modifiers (Modifier | list[Modifier]) – elenco ordinato di modificatori. I modificatori supportati includono
InverseModifier,ControlModifierePowerModifier.
Esempi:
op1 = AnnotatedOperation(SGate(), [InverseModifier(), ControlModifier(2)])
op2_inner = AnnotatedGate(SGate(), InverseModifier())
op2 = AnnotatedGate(op2_inner, ControlModifier(2))Sia op1 che op2 sono semanticamente equivalenti a un SGate() che viene prima invertito e poi controllato da 2 qubit.
Attributi
name
Identificatore univoco del tipo di operazione.
num_clbits
Numero di bit classici.
num_qubits
Numero di qubit.
params
I parametri dell'operazione di base sottostante.
base_op
L'operazione di base a cui si applicano i modificatori presenti in questa operazione annotata.
modifiers
Sequenza ordinata dei modificatori da applicare a base_op. I modificatori vengono applicati in ordine dall'indice più basso a quello più alto.
Metodi
control
control(num_ctrl_qubits=1, label=None, ctrl_state=None, annotated=None)
Restituisce la versione controllata di se stesso.
Implementato come AnnotatedOperation, indipendentemente dal valore di annotated.
Parametri
- num_ctrl_qubits (int) – Numero di controlli da aggiungere. Il valore predefinito è
1. - label (str | None) – Ignorato.
- ctrl_state (int |str | None) – Lo stato di controllo del gate, specificato come numero intero o stringa di bit (ad esempio
"110"). SeNone, il valore predefinito è lo stato2**num_ctrl_qubits - 1tutto uno. - annotated (bool | None) – Ignorato.
Risultati
Una versione controllata dell'operazione specificata.
Tipo di restituzione
copy
inverse
inverse(annotated=True)
Restituisce la versione inversa di se stesso.
Implementato come operazione annotata, vedere AnnotatedOperation.
Parametri
annotated (bool) – ignorato (utilizzato per garantire la coerenza con altri metodi inversi)
Risultati
Versione inversa dell'operazione data.
power
power(exponent, annotated=False)
Innalzate questo cancello al potere di exponent.
Implementato come operazione annotata, vedere AnnotatedOperation.
Parametri
- exponent (float) – il potere di alzare il cancello per
- annotated (bool) – ignorato (utilizzato per garantire la coerenza con altri metodi di alimentazione)
Risultati
Un'operazione che implementa gate^exponent
to_matrix
to_matrix()
Restituisce una rappresentazione della matrice (che consente di costruire l'Operatore).
validate_parameter
validate_parameter(parameter)
Convalida un parametro per l'operazione di base sottostante.
Parametri
parameter (ParameterExpression |float)
Tipo di restituzione