Skip to main content
IBM Quantum Platform

CommutationChecker

class qiskit.circuit.CommutationChecker(standard_gate_commutations=None, cache_max_entries=1000000, *, gates=None)

GitHub

Bases: object

Verifique as comutações de duas operações.

Dois unitários AA e BB em nn qubits comutam se

2nFprocess(AB,BA)+12n+1>1ε,\frac{2^n F_{\text{process}}(AB, BA) + 1}{2^n + 1} > 1 - \varepsilon,

em que

Fprocess(U1,U2)=Tr(U1U2)2n2,F_{\text{process}}(U_1, U_2) = \left|\frac{\mathrm{Tr}(U_1 U_2^\dagger)}{2^n} \right|^2,

e definimos ε\varepsilon como 101210^{-12} para levar em conta os erros de arredondamento em sistemas de poucos qubits. Essa métrica é escolhida para manter a consistência com outras verificações de proximidade no Qiskit.

Quando possível, as relações de comutação são consultadas em uma tabela de pesquisa. Esse é o caso das portas padrão sem parâmetros (como XGate ou HGate) ou portas com parâmetros livres (como RXGate com um ParameterExpression como ângulo). Caso contrário, é realizada uma verificação baseada em matriz, na qual se diz que duas operações são comutadas, se a fidelidade média da porta para realizar a comutação estiver acima de um determinado limite (consulte approximation_degree). O resultado dessa comutação é então adicionado à tabela de pesquisa em cache.


Métodos

Parâmetros

  • standard_gate_commutations (dict | None)
  • cache_max_entries (int)
  • gates (set[str] | None)

check_commutation_entries

check_commutation_entries(first_op, first_qargs, second_op, second_qargs)

GitHub

Retorna a relação de comutação armazenada, se houver

Parâmetros

  • first_op (Operation) – primeira operação.
  • first_qargs (list) – qubits da primeira operação.
  • second_op (Operation) – segunda operação.
  • second_qargs (list) – qubits da segunda operação.

Retorna

Verdadeiro se os portões forem comutados e falso se esse não for o caso.

Tipo de retorno

bool

clear_cached_commutations

clear_cached_commutations()

GitHub

Limpa o dicionário que contém as comutações em cache

commute

commute(op1, qargs1, cargs1, op2, qargs2, cargs2, max_num_qubits=None, approximation_degree=1.0, matrix_max_num_qubits=3)

GitHub

Verifica se duas operações são comutativas. O valor de retorno de True significa que as operações realmente comutam, e o valor de retorno de False significa que as operações não comutam ou que a verificação de comutação foi ignorada (por exemplo, quando as operações têm condições ou têm muitos qubits).

Parâmetros

  • op1 (Operation) – primeira operação.
  • qargs1 (Sequence[Qubit |int]) – qubits da primeira operação.
  • cargs1 (Sequence[Qubit |int]) – clbits da primeira operação.
  • op2 (Operation) – segunda operação.
  • qargs2 (Sequence[Qubit |int]) – qubits da segunda operação.
  • cargs2 (Sequence[Qubit |int]) – clbits da segunda operação.
  • max_num_qubits (int | None) – o número máximo de qubits a considerar; a verificação pode ser ignorada se o número de qubits para qualquer uma das operações exceder esse valor. O padrão é None, o que significa que não há limite. Veja também matrix_max_num_qubits para limitar a dimensão das matrizes calculadas.
  • approximation_degree (float) – Se a fidelidade média do portão entre as duas operações estiver acima desse número (até 1e-12), presume-se que elas sejam comutadas.
  • matrix_max_num_qubits (int) – o número máximo de qubits para o qual é permitido calcular a representação matricial. Isso é necessário caso não haja uma verificação eficiente prontamente disponível, por exemplo, para portas personalizadas.

Retorna

Se duas operações se comutam.

Tipo de retorno

bool

commute_nodes

commute_nodes(op1, op2, max_num_qubits=3, approximation_degree=1.0)

GitHub

Verifica se dois DAGOpNodes se deslocam.

Parâmetros

  • max_num_qubits (int)
  • approximation_degree (float)

Tipo de retorno

bool

num_cached_entries

num_cached_entries()

GitHub

Retorna o número de entradas em cache

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