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

Comprobar conmutaciones de dos operaciones.

Dos unitarios AA y BB en nn qubits conmutan si

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

donde

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,

y fijamos ε\varepsilon en 101210^{-12} 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

  • 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

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

bool

clear_cached_commutations

clear_cached_commutations()

GitHub

Borra el diccionario de conmutaciones almacenadas en caché

commute

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

GitHub

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én matrix_max_num_qubits para 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

bool

commute_nodes

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

GitHub

Comprueba si dos DAGOpNodes conmutan.

Parámetros

  • max_num_qubits (int)
  • approximation_degree (float)

Tipo de retorno

bool

num_cached_entries

num_cached_entries()

GitHub

Devuelve el número de entradas en caché

¿Le ha resultado útil esta página?
Informe de un error, de una errata o solicite contenido en GitHub.