PauliProductMeasurement
class qiskit.circuit.library.PauliProductMeasurement(pauli, label=None)
Bases: Instruction
Instruções de medição do produto Pauli.
A medição do produto de Pauli é uma operação fundamental na computação quântica tolerante a falhas. Matematicamente, corresponde a uma medição projetiva conjunta em múltiplos qubits, onde o observável medido é um produto tensorial de operadores de Pauli. O resultado dessa medição é um único valor próprio, seja ou , indicando o estado próprio do produto de Pauli.
Referências
[1] Daniel Litinski. “Um jogo de códigos superficiais: computação quântica em grande escala com cirurgia de rede” arXiv:1808.02892
Parâmetros
- pauli (qiskit.quantum_info.Pauli) – Um produto tensorial de operadores de Pauli que define a medição, por exemplo,
Pauli("XY")ouPauli("-XYIZ"). O operador identidade de Pauli não é permitido. O Pauli pode incluir uma fase de , mas não ou . - label (str | None) – Uma etiqueta opcional para o portão exibir nas visualizações do circuito. Por padrão, o rótulo é definido como
PPM(<pauli label>).
Embora os termos "I"envolvendo Paulis sejam totalmente suportados, recomenda-se remover "I"os termos do Pauli ao criar uma PauliProductMeasurement instrução, pois isso não altera a medição real, mas especifica a instrução sobre um conjunto menor de qubits.
Aumentos
CircuitError – Se o operador de Pauli for o operador de identidade, tiver dimensão 0 ou uma fase complexa.
Parâmetros
- pauli (qiskit.quantum_info.Pauli)
- label (str | None)
Atributos
base_class
Obter a classe base desta instrução. Isso está garantido 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 todas as aplicações de circuito. Isso normalmente significa que a subclasse é definida exclusivamente para oferecer algum tipo de conveniência ao programador em relação à classe base, e a classe base é a classe “verdadeira” do ponto de vista 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 maneira diferente pelo hardware, como uma estratégia de medição alternativa ou uma versão de um gate parametrizado com um conjunto específico de parâmetros com o objetivo de distingui-lo em um gate parametrizado Target completo.
Isso geralmente é equivalente a type(obj), exceto no caso de instâncias únicas de instruções da 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, você não deve confiar na classe precisa de uma instrução; dentro de um determinado circuito, espera-se que Instruction.name seja um discriminador mais adequado na maioria das situações.
decompositions
Obtenha as decomposições da instrução a partir do SessionEquivalenceLibrary.
definition
Definição de retorno em termos de outros portões básicos.
label
Etiqueta com instruções de devolução
mutable
Esta instância é uma instância única mutável ou não?
Se este atributo for verdadeiro, False a instância do gate é um singleton compartilhado e não é mutável.
name
Retorne o nome.
num_clbits
Retorne o número de clbits.
num_qubits
Retorne o número de qubits.
params
Os parâmetros deste Instruction. Idealmente, estes serão ângulos de porta.
Métodos
add_decomposition
add_decomposition(decomposition)
Adicione uma decomposição da instrução ao SessionEquivalenceLibrary.
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(Lista, Lista) – 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 do gate.
copy
copy(name=None)
Cópia da instrução.
Parâmetros
name (str) – nome a ser dado ao circuito copiado; se None então o nome permanece o mesmo.
Retorna
uma cópia da instrução atual, com o nome atualizado, se tiver sido fornecido
Tipo de retorno
inverse
is_parameterized
pauli
pauli()
Retorne o produto de Pauli implementado por esta medição.
Este é um acessador público que reconstrói e retorna o Pauli correspondente ao produto tensorial subjacente dos operadores de Pauli desta instrução, incluindo sua fase global de +1 ou -1.
Retorna
O produto de Pauli medido por esta instrução.
Tipo de retorno
repeat
repeat(n)
Cria uma instrução com self repetido vezes.
Parâmetros
n (int) – Número de vezes que a instrução deve ser repetida
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 revertendo recursivamente todas as subinstruções. Não inverte nenhum portão.
Retorna
uma nova instrução com
subinstruções invertidas.
Tipo de retorno
soft_compare
soft_compare(other)
Comparação suave entre portas. 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 for um ParameterExpression, então não é levado em consideração.
Parâmetros
other (instruction) – outras instruções.
Retorna
são iguais a si mesmos e aos outros até expressões de parâmetros.
Tipo de retorno
to_mutable
to_mutable()
Retorna uma cópia mutável deste gate.
Este método retornará uma nova cópia mutável desta instância de porta. Se uma instância singleton estiver sendo usada, esta será uma nova instância única que pode ser alterada. Se a instância já for mutável, será uma cópia profunda dessa instância.