Skip to main content
IBM Quantum Platform

PauliProductRotationGate

class qiskit.circuit.library.PauliProductRotationGate(pauli, angle, label=None)

GitHub

Bases: Gate

Uma rotação de Pauli genérica.

Isso implementa a operação unitária

RP(θ)=eiθ/2PR_P(\theta) = e^{-i \theta / 2 P}

para um Pauli P{I,X,Y,Z}nP \in \{I, X, Y, Z\}^{\otimes n} e um ângulo de rotação θR\theta \in \mathbb R, que poderia ser representado por um parâmetro não restrito.

Exemplo:

from qiskit.circuit import QuantumCircuit
from qiskit.circuit.library import PauliProductRotationGate
from qiskit.quantum_info import Pauli

pauli = Pauli("XYZ")
ppr = PauliProductRotationGate(pauli, angle=0.2)
circuit = QuantumCircuit(10)
circuit.append(ppr, [1, 2, 6])

Parâmetros

  • pauli (qiskit.quantum_info.Pauli) – O eixo de Pauli que define o eixo de rotação. Pode incluir uma fase de 1-1, mas não ii ou i-i.
  • angle (ParameterValueType) – O ângulo de rotação.
  • label (str | None) – Um rótulo opcional para a porta exibir nas visualizações do circuito.

Atributos

base_class

Obtenha a classe base desta instrução. Isso certamente estará 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 circuitos. Isso geralmente significa que a subclasse é definida exclusivamente para oferecer algum tipo de conveniência ao programador em relação à classe base, sendo que a classe base é a “verdadeira” classe 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 uma porta parametrizada com um conjunto específico de parâmetros com o objetivo de distingui-la em um Target da porta parametrizada completa.

Isso costuma ser exatamente 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 classe 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; 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 no site SessionEquivalenceLibrary.

definition

Defina a função de retorno em termos de outras portas lógicas básicas.

label

Etiqueta com instruções para devolução

mutable

Esta instância é uma instância única mutável ou não?

Se este atributo estiver definido, a False instância do gate é um singleton compartilhado e não é mutável.

name

Retorne o nome.

num_clbits

Retorna o número de clbits.

num_qubits

Retorne o número de qubits.

params

Os parâmetros deste Instruction. Idealmente, esses serão ângulos de porta.


Métodos

add_decomposition

add_decomposition(decomposition)

GitHub

Adicione uma descrição detalhada da instrução ao documento " SessionEquivalenceLibrary ".

broadcast_arguments

broadcast_arguments(qargs, cargs)

GitHub

Validação e tratamento dos argumentos e sua relação.

Por exemplo, cx([q[0],q[1]], q[2]) significa cx(q[0], q[2]); cx(q[1], q[2]). Este método apresenta os argumentos no agrupamento correto. No exemplo apresentado:

in: [[q[0],q[1]], q[2]],[]
outs: [q[0], q[2]], []
      [q[1], q[2]], []

As regras gerais de transmissão são:

  • Se len(qargs) == 1:

    [q[0], q[1]] -> [q[0]],[q[1]]
  • Se len(qargs) == 2:

    [[q[0], q[1]], [r[0], r[1]]] -> [q[0], r[0]], [q[1], r[1]]
    [[q[0]], [r[0], r[1]]]       -> [q[0], r[0]], [q[0], r[1]]
    [[q[0], q[1]], [r[0]]]       -> [q[0], r[0]], [q[1], r[0]]
  • Se len(qargs) >= 3:

    [q[0], q[1]], [r[0], r[1]],  ...] -> [q[0], r[0], ...], [q[1], r[1], ...]

Parâmetros

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

Retorna

Uma tupla com um único argumento.

Aumentos

CircuitError – Se a entrada não for válida. Por exemplo, o número de argumentos não corresponde ao esperado pela porta lógica.

Tipo de retorno

Iterável [ tupla [ lista, lista ]]

control

control(num_ctrl_qubits=1, label=None, ctrl_state=None, annotated=None)

GitHub

Retorna a versão controlada de si mesmo.

O portão retornado representa eiθ/2PCe^{-i \theta / 2 P_C}, onde PCP_C é o portão de Pauli original PP, tensorializado com os projetores 00|0\rangle\langle 0| e 11|1\rangle\langle 1| (dependendo do estado de controle).

Parâmetros

  • num_ctrl_qubits (int) – Número de controles a serem adicionados. Padroniza para 1.
  • label (str | None) – Etiqueta opcional para o portão. Padroniza para None. Ignorado se o portão controlado for implementado como uma operação anotada.
  • 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"). Se None, o padrão é o estado em que todos os bits estão 2**num_ctrl_qubits - 1 definidos como 1.
  • annotated (bool | None) – Indica se a porta controlada deve ser implementada como uma porta controlada ou como uma operação anotada. Se None, considerado como False.

Retorna

Uma versão controlada deste portão.

Aumentos

QiskitError – inválido num_ctrl_qubits ou ctrl_state.

copy

copy(name=None)

GitHub

Cópia da instrução.

Parâmetros

name (str) – nome a ser atribuído ao circuito copiado; caso None contrário, o nome permanece 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

Retorna a inversa; uma rotação em torno do ângulo negativo.

is_parameterized

is_parameterized()

GitHub

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

pauli

pauli()

GitHub

Retorna o eixo de rotação de Pauli.

Observe que isso não inclui nenhum sinal potencial no Pauli objeto usado para construir essa porta, uma vez que o sinal é incorporado ao ângulo de rotação, que pode ser acessado por meio do params atributo.

Retorna

O eixo de rotação de Pauli.

Tipo de retorno

qiskit.quantum_info.Pauli

power

power(exponent, annotated=False)

GitHub

Eleve este portão à potência de exponent.

Implementado como um portão unitário (ref. UnitaryGate) ou como uma operação anotada (ref. AnnotatedOperation). No caso de várias portas padrão, como RXGate, quando a potência de uma porta pode ser expressa em termos de outra porta padrão que é retornada diretamente.

Parâmetros

  • exponent (float) – o mecanismo para levantar o portão
  • annotated (bool) – indica se o power gate pode ser implementado como uma operação anotada. No caso de várias portas lógicas padrão, como RXGate, esse argumento é ignorado quando a potência de uma porta pode ser expressa em termos de outra porta lógica padrão.

Retorna

Uma operação que implementa gate^exponent

Aumentos

CircuitError – Se a porta não for unitária

repeat

repeat(n)

GitHub

Cria uma instrução com nnself 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

qiskit.circuit.Instruction

Aumentos

CircuitError – Se n < 1.

reverse_ops

reverse_ops()

GitHub

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

Isso é feito invertendo recursivamente todas as subinstruções. Não inverte nenhuma porta lógica.

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 portas. Seus nomes, o número de qubits e o número de bits clássicos devem coincidir. O número de parâmetros deve corresponder. Cada parâmetro é comparado. Se for um ParameterExpression, isso não é levado em consideração.

Parâmetros

other (instruction) – outras instruções.

Retorna

"self" e "other" são iguais nas expressões de parâmetros.

Tipo de retorno

bool

to_matrix

to_matrix()

GitHub

Retorna um objeto Numpy.array para a matriz unitária da porta.

Retorna

se a subclasse Gate tiver uma definição de matriz.

Tipo de retorno

np.ndarray

Aumentos

CircuitError – Se uma subclasse de Gate não implementar este método, será lançada uma exceção quando este método da classe base for chamado.

to_mutable

to_mutable()

GitHub

Retorna uma cópia mutável desta porta.

Este método retornará uma nova cópia mutável desta instância de gate. Se estiver sendo usada uma instância singleton, esta será uma nova instância única que poderá ser alterada. Se a instância já for mutável, será criada uma cópia profunda dessa instância.

validate_parameter

validate_parameter(parameter)

GitHub

Os parâmetros da porta devem ser do tipo int, float ou ParameterExpression

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