Mover
class Move(label=None)
Bases: Instruction
Uma instrução de dois qubits que representa uma redefinição do segundo qubit seguida de uma troca.
Símbolo do circuito:
┌───────┐
q_0: ┤0 ├ q_0: ──────X─
│ Move │ = │
q_1: ┤1 ├ q_1: ─|0>──X─
└───────┘O efeito desejado dessa instrução, normalmente, é mover o estado do primeiro qubit para o segundo qubit. Para que isso funcione como esperado, o segundo qubit de entrada não deve compartilhar nenhum emaranhamento com o restante do sistema. Se esse qubit estiver emaranhado, a realização da operação de redefinição, por sua vez, implementará um canal quântico no(s) outro(s) qubit(s) com o(s) qual(is) ele está emaranhado, resultando no colapso parcial desses qubits.
A maneira mais simples de garantir que o segundo qubit (ou seja, o de destino) não compartilhe emaranhamento com o restante do sistema é usar um qubit novo que não tenha sido usado desde a inicialização.
Outra maneira válida é usar, como um qubit de destino, um qubit cujo uso anterior imediato foi como o qubit de origem (ou seja, o primeiro) de uma operação anterior Move operação anterior.
O circuito a seguir contém duas operações Move operações, correspondentes a cada um dos casos mencionados acima:
import numpy as np
from qiskit import QuantumCircuit
from qiskit_addon_cutting.instructions import Move
qc = QuantumCircuit(4)
qc.ryy(np.pi / 4, 0, 1)
qc.rx(np.pi / 4, 3)
qc.append(Move(), [1, 2])
qc.rz(np.pi / 4, 0)
qc.ryy(np.pi / 4, 2, 3)
qc.append(Move(), [2, 1])
qc.ryy(np.pi / 4, 0, 1)
qc.rx(np.pi / 4, 3)
qc.draw("mpl")Uma demonstração completa da instrução Move está disponível no tutorial introdutório sobre corte de arame.
Criar uma Move instrução.
Atributos
Parâmetros
label (str | None)
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 distingui-la 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
TrueEm geral, não se deve confiar na classe precisa de uma instrução; em um determinado circuito, espera-se que Instruction.name seja um discriminador mais adequado na maioria das situações.
condition
A condição clássica da instrução.
A propriedade qiskit.circuit.instruction.Instruction.condition está obsoleta desde o qiskit 1.3.0. Ele será removido em 2.0.0.
condition_bits
Obter Clbits em condições.
A propriedade qiskit.circuit.instruction.Instruction.condition_bits está obsoleta desde o qiskit 1.3.0. Ele será removido em 2.0.0.
decompositions
Obtenha as decomposições da instrução no site SessionEquivalenceLibrary.
definition
Definição de retorno em termos de outras portas básicas.
duration
Obtenha a duração.
A propriedade qiskit.circuit.instruction.Instruction.duration está obsoleta desde o qiskit 1.3.0. Ele será removido no Qiskit 2.0.0.
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 do site Instruction. O ideal é que sejam ângulos de portão.
unit
Obter a unidade de tempo da duração.
A propriedade qiskit.circuit.instruction.Instruction.unit está obsoleta desde o qiskit 1.3.0. Ele será removido no Qiskit 2.0.0.
Métodos
add_decomposition
add_decomposition(decomposition)
Adicione uma decomposição da instrução ao site SessionEquivalenceLibrary.
assemble
assemble()
Montar um QasmQobjInstruction
O método qiskit.circuit.instruction.Instruction.assemble() foi descontinuado a partir do qiskit 1.2. Ele será removido na versão 2.0. A classe Qobj e a funcionalidade relacionada fazem parte do fluxo de trabalho obsoleto do site BackendV1 e não são mais necessárias para o site BackendV2. Se um fluxo de trabalho do usuário exigir Qobj, ele provavelmente depende de uma funcionalidade obsoleta e deve ser atualizado para usar BackendV2.
broadcast_arguments
broadcast_arguments(qargs, cargs)
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.
c_if
c_if(classical, val)
Defina uma condição de igualdade clássica nessa instrução entre o registro ou cbit classical e o valor val.
Esse é um método setter, não um método aditivo. Chamar essa opção várias vezes substituirá silenciosamente qualquer condição definida anteriormente; ela não se acumula.
O método qiskit.circuit.instruction.Instruction.c_if() foi descontinuado a partir do qiskit 1.3.0. Ele será removido em 2.0.0.
copy
copy(name=None)
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
inverse
inverse(annotated=False)
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 AnnotatedOperation, e corresponderá à 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()
Retorna se o site Instruction contém parâmetros de tempo de compilação.
repeat
repeat(n)
Cria uma instrução com self repetida :math`n` vezes.
Se essa operação tiver uma condicional, a instrução de saída terá a mesma condicional e as operações internas repetidas serão incondicionais; as instruções em uma definição composta não podem ser condicionadas a registros no modelo de dados do Qiskit. Isso significa que não é válido aplicar uma instrução repetida a um clbit no qual ela grava e lê em sua condição.
Parâmetros
n (int) – Número de vezes para repetir a instrução
Retorna
Contendo a definição.
Tipo de retorno
Aumentos
CircuitError - Se n < 1.
reverse_ops
reverse_ops()
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
soft_compare
soft_compare(other)
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 consideração.
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
to_mutable
to_mutable()
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)
Os parâmetros de instrução não têm validação ou normalização.