Skip to main content
IBM Quantum Platform

SwitchCaseOp

class qiskit.circuit.SwitchCaseOp(target, cases, *, label=None)

GitHub

Bases: ControlFlowOp

Uma operação de circuito que executa um bloco de circuito específico com base na correspondência de um determinado target com uma lista ordenada de values. O valor especial CASE_DEFAULT pode ser usado para representar uma condição padrão.

Parâmetros

  • target (Clbit |ClassicalRegister |expr.Expr) – o valor em tempo real a ser ativado.
  • cases (Iterable[tuple[Any, QuantumCircuit]]) – uma lista ordenada contendo o valor correspondente do target e o bloco de circuito que deve ser executado caso haja correspondência. Não há execução automática entre blocos, e a ordem é importante.
  • label (str | None)

Atributos

base_class

Obtém a classe base dessa instrução. É garantido que isso esteja na árvore de herança de self.

A "classe base" de uma instrução é a classe mais baixa em sua árvore de herança com a qual o objeto deve ser considerado totalmente compatível para aplicativos de circuito. Isso normalmente significa que a subclasse é definida apenas para oferecer algum tipo de conveniência ao programador em relação à classe base, e a classe base é a classe "verdadeira" em uma perspectiva comportamental. Em particular, você não deve substituir base_class se estiver definindo uma versão personalizada de uma instrução que será implementada de forma diferente pelo hardware, como uma estratégia de medição alternativa ou uma versão de uma porta parametrizada com um conjunto específico de parâmetros para fins de distinção em um Target da porta parametrizada completa.

Isso geralmente é exatamente equivalente a type(obj), exceto no caso de instâncias únicas de instruções de biblioteca padrão. Essas instâncias singleton são subclasses especiais de sua classe base, e essa propriedade retornará essa base. Por exemplo:

>>> isinstance(XGate(), XGate)
True
>>> type(XGate()) is XGate
False
>>> XGate().base_class is XGate
True

Em geral, não se deve confiar na classe exata de uma instrução; em um determinado circuito, espera-se que Instruction.name seja um discriminador mais adequado na maioria das situações.

blocks

decompositions

Obtenha as decomposições da instrução no site SessionEquivalenceLibrary.

definition

Definição de retorno em termos de outras portas básicas.

label

Etiqueta de instruções de devolução

mutable

Essa instância é uma instância única mutável ou não.

Se esse atributo for False , a instância do portão será um singleton compartilhado e não será mutável.

name

Retorna o nome.

num_clbits

Retorna o número de clbits.

num_qubits

Retorna o número de qubits.

params

Os parâmetros desse Instruction. O ideal é que sejam ângulos de portão.


Métodos

add_decomposition

add_decomposition(decomposition)

GitHub

Adicione uma decomposição da instrução ao site SessionEquivalenceLibrary.

broadcast_arguments

broadcast_arguments(qargs, cargs)

GitHub

Validação dos argumentos.

Parâmetros

  • qargs (List) – Lista de argumentos de bits quânticos.
  • cargs (List) – Lista de argumentos clássicos de bits.

Lucros

Tuple(List, List) - Uma tupla com argumentos únicos.

Aumentos

CircuitError - Se a entrada não for válida. Por exemplo, o número de argumentos não corresponde à expectativa da porta.

cases

cases()

GitHub

Retorna uma tabela de pesquisa dos rótulos de caso para o circuito que seria executado nesse caso. Esse objeto geralmente não é adequado para criar um novo SwitchCaseOp porque as chaves que apontam para o mesmo objeto não serão agrupadas.

Veja Também

SwitchCaseOp.cases_specifier()

Um método alternativo que produz sua saída em um formato adequado para criar novas SwitchCaseOp instâncias.

cases_specifier

cases_specifier()

GitHub

Retorna um iterável em que cada elemento é uma tupla de dois elementos, cujo primeiro elemento é uma tupla de valores de salto e o segundo é o bloco de circuito único associado a esses valores.

Essa é uma especificação abstrata da tabela de saltos adequada para a criação de novas SwitchCaseOp instâncias.

Veja Também

SwitchCaseOp.cases()

Crie uma tabela de pesquisa que você possa usar para seus próprios fins para saltar dos valores para o circuito que seria executado.

Tipo de retorno

Iterable[ tupla [ tupla, QuantumCircuit ]]

copy

copy(name=None)

GitHub

Cópia da instrução.

Parâmetros

name (str) – nome a ser dado ao circuito copiado; se for None , o nome permanecerá o mesmo.

Retorna

uma cópia da instrução atual, com o nome atualizado, caso tenha sido fornecido

Tipo de retorno

qiskit.circuit.Instruction

inverse

inverse(annotated=False)

GitHub

Inverta essa instrução.

Se annotated for False, a instrução inversa será implementada como uma nova instrução com a definição recursivamente invertida.

Se annotated for True, a instrução inversa será implementada como AnnotatedOperatione corresponde à instrução dada anotada com o "modificador inverso".

As instruções especiais herdadas de Instruction podem implementar seu próprio inverso (por exemplo, T e Tdg, Barrier, etc.) Em particular, eles podem escolher como lidar com o argumento annotated , o que pode incluir ignorá-lo e sempre retornar uma classe de porta concreta se o inverso for definido como uma porta padrão.

Parâmetros

annotated (bool) – se definido como True, a porta inversa de saída será retornada como AnnotatedOperation.

Retorna

A operação inversa.

Aumentos

CircuitError - se a instrução não for composta e não tiver sido implementado um inverso para ela.

is_parameterized

is_parameterized()

GitHub

Retorna se o Instruction contém parâmetros de tempo de compilação.

iter_captured_stretches

iter_captured_stretches()

GitHub

Obtém um iterador sobre as variáveis de extensão capturadas exclusivas em todos os blocos dessa construção.

Tipo de retorno

Iterável [ expr.Stretch ]

iter_captured_vars

iter_captured_vars()

GitHub

Obtém um iterador sobre as variáveis capturadas exclusivas em todos os blocos dessa construção.

Tipo de retorno

Iterável [ expr.Var ]

repeat

repeat(n)

GitHub

Cria uma instrução com nnself repetido vezes.

Parâmetros

n (int) – Número de vezes para repetir a instrução

Retorna

Contendo a definição.

Tipo de retorno

qiskit.circuit.Instruction

Aumentos

CircuitError - Se n < 1.

replace_blocks

replace_blocks(blocks)

GitHub

Retorna uma nova versão das operações desse fluxo de controle com os blocks mapeados para os novos dados.

Normalmente, isso é usado em um fluxo de trabalho como, por exemplo:

existing_op = ...

def map_block(block: QuantumCircuit) -> QuantumCircuit:
    new_block = block.copy_empty_like()
    # ... do something to `new_block` ...
    return new_block

new_op = existing_op.replace_blocks(
    map_block(block) for block in existing_op.blocks
)

É responsabilidade do chamador garantir que os blocos mapeados sejam definidos em um conjunto unificado de recursos de circuito, da mesma forma que a construção de um ControlFlowOp usando seu construtor padrão.

Parâmetros

blocks (Iterable[QuantumCircuit]) – os novos blocos de subcircuito a serem usados.

Retorna

Novo ControlFlowOp com blocos substituídos.

Tipo de retorno

SwitchCaseOp

reverse_ops

reverse_ops()

GitHub

Para uma instrução composta, inverta a ordem das subinstruções.

Isso é feito por meio da inversão recursiva de todas as subinstruções. Ele não inverte nenhuma porta.

Retorna

uma nova instrução com

subinstruções invertidas.

Tipo de retorno

qiskit.circuit.Instruction

soft_compare

soft_compare(other)

GitHub

Comparação suave entre portões. Seus nomes, número de qubits e números de bits clássicos devem corresponder. O número de parâmetros deve corresponder. Cada parâmetro é comparado. Se a pessoa for um ParameterExpression, isso não será levado em conta.

Parâmetros

other (instruction) – outras instruções.

Retorna

são iguais a si mesmo e ao outro até as expressões de parâmetro.

Tipo de retorno

bool

to_mutable

to_mutable()

GitHub

Retorna uma cópia mutável desse portão.

Esse método retornará uma nova cópia mutável dessa instância de porta. Se uma instância singleton estiver sendo usada, essa será uma nova instância exclusiva que poderá ser alterada. Se a instância já for mutável, será uma cópia profunda dessa instância.

validate_parameter

validate_parameter(parameter)

GitHub

O parâmetro de instrução não tem validação ou normalização.

Esta página foi útil?
Relate um bug, erro de digitação ou solicite conteúdo no GitHub.