Skip to main content
IBM Quantum Platform

RemoveIdentityEquivalent

class qiskit.transpiler.passes.RemoveIdentityEquivalent(*args, **kwargs)

GitHub

Bases: TransformationPass

Eliminar las puertas con efectos insignificantes.

Elimina las compuertas cuyo efecto se aproxima a una operación de identidad hasta una fase global y hasta la tolerancia especificada. Las puertas parametrizadas no se tienen en cuenta en este paso.

Para una fidelidad de corte ff, este paso elimina las puertas cuya fidelidad media con respecto a la identidad es inferior a ff. Concretamente, una puerta GG se elimina si Fˉ<f\bar F < f donde

Fˉ=1+dFprocess1+d, Fprocess=Tr(G)2d2\bar{F} = \frac{1 + d F_{\text{process}}}{1 + d},\ F_{\text{process}} = \frac{|\mathrm{Tr}(G)|^2}{d^2}

donde d=2nd = 2^n es la dimensión de la puerta para nn qubits.

Esta función es multihilo y, por defecto, puede iniciar un grupo de subprocesos con un número de subprocesos igual al número de CPU. Puedes ajustar el número de subprocesos mediante la variable RAYON_NUM_THREADS de entorno. Por ejemplo, si se establece este valor, el RAYON_NUM_THREADS=4 grupo de subprocesos se limitaría a 4 subprocesos.

Inicializar el pase del transpilador.

Parámetros

  • grado_de_aproximación - El grado a aproximar para la comprobación de equivalencia. Puede ser un valor de coma flotante entre 0 y 1, o None. Si el valor es 1 no se aproxima por encima de la precisión en coma flotante. Para un valor < 1 se utiliza como factor de escala para la fidelidad de corte. Si el valor es None se aproxima hasta la fidelidad para la puerta especificada en target. En caso de que no se establezca target , aproximamos hasta 16 * machine_eps por defecto para tener en cuenta las acumulaciones en sistemas de pocos qubits.
  • target - Si approximation_degree se establece en None y se proporciona un Target para este campo, la tolerancia para determinar si una operación es equivalente a la identidad se establecerá en la tasa de error notificada en el objetivo. Si approximation_degree (el valor predeterminado) no tiene ningún efecto, si approximation_degree=None utiliza la tasa de error especificada en Target para la puerta que se está evaluando, y un valor numérico distinto de 1 con target configurado se utiliza como factor de escala de la tasa de error del objetivo.

Atributos

is_analysis_pass

Comprueba si el pase es un pase de análisis.

Si el pase es un AnalysisPass, significa que el pase puede analizar el DAG y escribir los resultados de ese análisis en el conjunto de propiedades. Este tipo de paso no permite realizar modificaciones en el DAG.

is_transformation_pass

Comprueba si el pase es un pase de transformación.

Si el pase es un TransformationPass, significa que el pase puede manipular el DAG, pero no puede modificar el conjunto de propiedades (pero se puede leer).


Métodos

execute

execute(passmanager_ir, state, callback=None)

GitHub

Ejecutar la tarea de optimización para la entrada Qiskit IR.

Parámetros

  • passmanager_ir (Any) – Qiskit IR para optimizar.
  • state (PassManagerState) – Estado asociado a la ejecución del flujo de trabajo por el propio gestor de pases.
  • callback (Callable | None) – Una función de devolución de llamada que se invoca cada vez que se ejecuta una tarea de optimización.

Devuelve

Qiskit IR optimizado y estado del flujo de trabajo.

Tipo de retorno

tupla [ Any, PassManagerState ]

name

name()

GitHub

Nombre del pase.

Tipo de retorno

str

run

run(dag)

GitHub

Ejecutar un pase en el DAGCircuit. Esto lo implementa el desarrollador del pase.

Parámetros

dag (DAGCircuit) – el dag en el que se ejecuta el pase.

Eleva

NotImplementedError - cuando esto se deja sin implementar para un pase.

Tipo de retorno

Circuito DAG

update_status

update_status(state, run_state)

GitHub

Actualizar el estado del flujo de trabajo.

Parámetros

  • state (PassManagerState) – Pasar estado de gestor a actualizar.
  • run_state (RunState) – Estado de finalización de la tarea actual.

Devuelve

Estado del gestor de pases actualizado.

Tipo de retorno

PassManagerState

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