CommutationChecker
class qiskit.circuit.CommutationChecker(standard_gate_commutations=None, cache_max_entries=1000000, *, gates=None)
Bases: object
Comprobar conmutaciones de dos operaciones.
Dos unitarios y en qubits conmutan si
donde
y fijamos en para tener en cuenta los errores de redondeo en sistemas de pocos qubits. Esta métrica se elige por coherencia con otras comprobaciones de proximidad de Qiskit.
Cuando es posible, las relaciones de conmutación se consultan a partir de una tabla de consulta. Este es el caso de las puertas estándar sin parámetros (como XGate o HGate) o puertas con parámetros libres (como RXGate con ParameterExpression como ángulo). De lo contrario, se realiza una comprobación basada en matrices, en la que se dice que dos operaciones conmutan, si la fidelidad media de la puerta para realizar la conmutación está por encima de un cierto umbral (véase approximation_degree). El resultado de esta conmutación se añade a la tabla de búsqueda en caché.
Métodos
Parámetros
check_commutation_entries
check_commutation_entries(first_op, first_qargs, second_op, second_qargs)
Devuelve la relación de conmutación almacenada, si existe
Parámetros
- first_op (Operation) – primera operación.
- first_qargs (list) – los qubits de la primera operación.
- second_op (Operation) – segunda operación.
- second_qargs (list) – los qubits de la segunda operación.
Devuelve
Verdadero si las puertas conmutan y falso si no es el 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)
Comprueba si dos operaciones son conmutativas. El valor de retorno de True significa que las operaciones realmente conmutan, y el valor de retorno de False significa que las operaciones no conmutan o que se omitió la comprobación de conmutación (por ejemplo, cuando las operaciones tienen condiciones o tienen demasiados qubits).
Parámetros
- op1 (Operation) – primera operación.
- qargs1 (Sequence[Qubit |int]) – cubits de la primera operación.
- cargs1 (Sequence[Qubit |int]) – clbits de la primera operación.
- op2 (Operation) – segunda operación.
- qargs2 (Sequence[Qubit |int]) – qubits de la segunda operación.
- cargs2 (Sequence[Qubit |int]) – clbits de la segunda operación.
- max_num_qubits (int | None) – el número máximo de qubits a tener en cuenta; la comprobación puede omitirse si el número de qubits para cualquiera de las operaciones supera esta cantidad. El valor predeterminado es
None, lo que significa que no hay límite. Véase tambiénmatrix_max_num_qubitspara limitar la dimensión de las matrices calculadas. - approximation_degree (float) – Si la fidelidad media de la puerta entre las dos operaciones es superior a este número (hasta
1e-12), se supone que conmutan. - matrix_max_num_qubits (int) – el número máximo de qubits para los que se permite calcular la representación matricial. Esto es necesario si no se dispone de una comprobación eficaz, por ejemplo, en el caso de puertas personalizadas.
Devuelve
Si dos operaciones son conmutativas.
Tipo de retorno
commute_nodes
commute_nodes(op1, op2, max_num_qubits=3, approximation_degree=1.0)
Comprueba si dos DAGOpNodes conmutan.
Parámetros
Tipo de retorno