Skip to main content
IBM Quantum Platform

AnnotatedOperation

class qiskit.circuit.AnnotatedOperation(base_op, modifiers)

GitHub

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, ControlModifier y PowerModifier.

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)

GitHub

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"). Si None, se establece por defecto en el estado «todos 2**num_ctrl_qubits - 1 unos».
  • annotated (bool | None) – Ignorado.

Devuelve

Una versión controlada de la operación dada.

Tipo de retorno

AnnotatedOperation

copy

copy()

GitHub

Devolver una copia del AnnotatedOperation.

Tipo de retorno

AnnotatedOperation

inverse

inverse(annotated=True)

GitHub

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)

GitHub

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

to_matrix()

GitHub

Devuelve una representación matricial (que permite construir Operador).

validate_parameter

validate_parameter(parameter)

GitHub

Valida un parámetro para la operación base subyacente.

Parámetros

parameter (ParameterExpression |float)

Tipo de retorno

ParameterExpression | float

¿Le ha resultado útil esta página?
Informe de un error, de una errata o solicite contenido en GitHub.