AnnotatedOperation
class qiskit.circuit.AnnotatedOperation(base_op, modifiers)
Bases: Operation
Operación anotada.
Crear un nuevo AnnotatedOperation.
Una "operación anotada" permite añadir una lista de modificadores a la operación "base". Por ahora, los únicos modificadores admitidos son de tipo InverseModifier, ControlModifier y PowerModifier.
Una operación anotada puede verse como una extensión de ControlledGate (que también permite añadir control a la operación base). Sin embargo, una diferencia importante es que la definición del circuito de una operación anotada no se construye cuando se declara la operación, sino que ocurre durante la transpilación, concretamente durante la pasada del HighLevelSynthesis transpilador.
Una operación anotada también puede verse como un objeto de "nivel superior" o "más abstracto" que puede añadirse a un circuito cuántico. Esto permite escribir pases de optimización del transpilador que hagan uso de esta representación de nivel superior, por ejemplo, eliminando una puerta que vaya inmediatamente seguida de su inversa.
Parámetros
- base_op (Operation) – operación base que se modifica
- modifiers (Modifier | list[Modifier]) – lista ordenada de modificadores. Los modificadores admitidos son
InverseModifier,ControlModifieryPowerModifier.
Ejemplos:
op1 = AnnotatedOperation(SGate(), [InverseModifier(), ControlModifier(2)])
op2_inner = AnnotatedGate(SGate(), InverseModifier())
op2 = AnnotatedGate(op2_inner, ControlModifier(2))Tanto op1 como op2 son semánticamente equivalentes a un SGate() que primero se invierte y luego se controla mediante 2 qubits.
Atributos
name
Identificador único de cadena para el tipo de operación.
num_clbits
Número de bits clásicos.
num_qubits
Número de qubits.
params
Los parámetros de la operación base subyacente.
base_op
La operación base a la que se aplican los modificadores de esta operación comentada.
modifiers
Secuencia ordenada de los modificadores a aplicar a base_op. Los modificadores se aplican en orden de menor a mayor índice.
Métodos
control
control(num_ctrl_qubits=1, label=None, ctrl_state=None, annotated=None)
Devuelve la versión controlada de sí mismo.
Implementado como AnnotatedOperation, independientemente del valor de annotated.
Parámetros
- num_ctrl_qubits (int) – Número de controles que se van a añadir. El valor predeterminado es
1. - label (str | None) – Ignorado.
- ctrl_state (int |str | None) – El estado de control de la puerta, especificado como un número entero o una cadena de bits (por ejemplo,
"110"). SiNone, se establece por defecto en el estado «todos2**num_ctrl_qubits - 1unos». - annotated (bool | None) – Ignorado.
Devuelve
Una versión controlada de la operación dada.
Tipo de retorno
copy
inverse
inverse(annotated=True)
Devuelve la versión inversa de sí mismo.
Implementado como una operación anotada, véase AnnotatedOperation.
Parámetros
annotated (bool) – se ignora (se utiliza para mantener la coherencia con otros métodos inversos)
Devuelve
Versión inversa de la operación dada.
power
power(exponent, annotated=False)
Eleva esta puerta al poder de exponent.
Implementado como una operación anotada, véase AnnotatedOperation.
Parámetros
- exponent (float) – el poder de elevar la puerta a
- annotated (bool) – se omite (se utiliza para mantener la coherencia con otros métodos de potencia)
Devuelve
Una operación de aplicación gate^exponent
to_matrix
validate_parameter
validate_parameter(parameter)
Valida un parámetro para la operación base subyacente.
Parámetros
parameter (ParameterExpression |float)
Tipo de retorno