AnnotatedOperation
class qiskit.circuit.AnnotatedOperation(base_op, modifiers)
Bases: Operation
Operação anotada.
Crie um novo AnnotatedOperation.
Uma "operação anotada" permite adicionar uma lista de modificadores à operação "básica". Por enquanto, os únicos modificadores suportados são dos tipos InverseModifier, ControlModifier e PowerModifier.
Uma operação anotada pode ser vista como uma extensão de ControlledGate (que também permite adicionar controle à operação de base). No entanto, uma diferença importante é que a definição do circuito de uma operação anotada não é construída quando a operação é declarada e, em vez disso, ocorre durante a transpilação, especificamente durante a HighLevelSynthesis passagem do transpilador.
Uma operação anotada também pode ser vista como um objeto de "nível superior" ou "mais abstrato" que pode ser adicionado a um circuito quântico. Isso permite escrever passes de otimização do transpilador que fazem uso dessa representação de nível superior, por exemplo, removendo uma porta que é imediatamente seguida por seu inverso.
Parâmetros
- base_op (Operation) – operação de base que está sendo modificada
- modifiers (Modifier | list[Modifier]) – lista ordenada de modificadores. Os modificadores suportados incluem
InverseModifier,ControlModifierePowerModifier.
Exemplos:
op1 = AnnotatedOperation(SGate(), [InverseModifier(), ControlModifier(2)])
op2_inner = AnnotatedGate(SGate(), InverseModifier())
op2 = AnnotatedGate(op2_inner, ControlModifier(2))Tanto o op1 quanto o op2 são semanticamente equivalentes a um SGate() que é primeiro invertido e depois controlado por 2 qubits.
Atributos
name
Identificador de cadeia de caracteres exclusivo para o tipo de operação.
num_clbits
Número de bits clássicos.
num_qubits
Número de qubits.
params
Os parâmetros da operação básica subjacente.
base_op
A operação base à qual os modificadores desta operação anotada se aplicam.
modifiers
Sequência ordenada dos modificadores a serem aplicados a base_op. Os modificadores são aplicados na ordem do menor índice para o maior índice.
Métodos
control
control(num_ctrl_qubits=1, label=None, ctrl_state=None, annotated=None)
Retorna a versão controlada de si mesmo.
Implementado como AnnotatedOperation, independentemente do valor de annotated.
Parâmetros
- num_ctrl_qubits (int) – Número de controles a serem adicionados. Padroniza para
1. - label (str | None) – Ignorado.
- ctrl_state (int |str | None) – O estado de controle da porta, especificado como um número inteiro ou uma sequência de bits (por exemplo
"110"). SeNone, o padrão é o estado2**num_ctrl_qubits - 1todos-uns. - annotated (bool | None) – Ignorado.
Retorna
Uma versão controlada da operação dada.
Tipo de retorno
copy
inverse
inverse(annotated=True)
Retorna a versão inversa de si mesmo.
Implementado como uma operação anotada, consulte AnnotatedOperation.
Parâmetros
annotated (bool) – ignorado (utilizado para manter a consistência com outros métodos inversos)
Retorna
Versão inversa da operação fornecida.
power
power(exponent, annotated=False)
Eleve esse portão ao poder de exponent.
Implementado como uma operação anotada, consulte AnnotatedOperation.
Parâmetros
- exponent (float) – o poder de elevar o portão para
- annotated (bool) – ignorado (utilizado para manter a consistência com outros métodos de potência)
Retorna
Uma operação que implementa gate^exponent
to_matrix
validate_parameter
validate_parameter(parameter)
Validar um parâmetro para a operação básica subjacente.
Parâmetros
parameter (ParameterExpression |float)
Tipo de retorno