CommutationChecker
class qiskit.circuit.CommutationChecker(standard_gate_commutations=None, cache_max_entries=1000000, *, gates=None)
Bases: object
Verifique as comutações de duas operações.
Dois unitários e em qubits comutam se
em que
e definimos como 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
check_commutation_entries
check_commutation_entries(first_op, first_qargs, second_op, second_qargs)
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
clear_cached_commutations
commute
commute(op1, qargs1, cargs1, op2, qargs2, cargs2, max_num_qubits=None, approximation_degree=1.0, matrix_max_num_qubits=3)
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émmatrix_max_num_qubitspara 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
commute_nodes
commute_nodes(op1, op2, max_num_qubits=3, approximation_degree=1.0)
Verifica se dois DAGOpNodes se deslocam.
Parâmetros
Tipo de retorno