SynthesizeRZRotations
class qiskit.transpiler.passes.SynthesizeRZRotations(*args, **kwargs)
Bases: TransformationPass
Sustituye las puertas RZ por descomposiciones de Clifford+T.
Este paso sustituye todas las puertas de rotación RZ de un solo qubit con ángulos en coma flotante por secuencias Clifford+T equivalentes.
Internamente, la etapa sintetiza RZ(theta) para un valor general de theta reduciendo el ángulo módulo pi/2: el circuito para RZ(theta) puede construirse a partir de un circuito para RZ(theta mod pi/2 ) añadiendo las puertas de Clifford adecuadas. Es importante destacar que la pasada también almacena en caché los resultados de la síntesis y los reutiliza para ángulos que se encuentran dentro de un margen de tolerancia determinado entre sí.
Por ejemplo:
from qiskit.circuit import QuantumCircuit
from qiskit.transpiler.passes import SynthesizeRZRotations
from qiskit.quantum_info import Operator
from numpy import pi
# The following quantum circuit consists of 5 Clifford gates
# and three single-qubit RZ rotations gates
qc = QuantumCircuit(4)
qc.cx(0, 1)
qc.rz(9*pi/4, 0)
qc.cz(0, 1)
qc.rz(3*pi/8, 1)
qc.h(1)
qc.s(2)
qc.rz(13*pi/2, 2)
qc.cz(2, 0)
qc.rz(5*pi/3, 3)
qct = SynthesizeRZRotations()(qc)
# The transformed circuit consists of Clifford, T and Tdg gates
clifford_t_names = get_clifford_gate_names() + ["t"] + ["tdg"]
assert(set(qct.count_ops().keys()).issubset(set(clifford_t_names)))
# The circuits before and after the transformation are equivalent
# (with the default value of approximation_degree used by SynthesizeRZRotations)
assert Operator(qc) == Operator(qct)Si se especifican cache_error tanto synthesis_error como, estos valores determinan el margen de error para la síntesis aproximada y para el almacenamiento en caché, respectivamente. Si no se especifica ninguno de los dos valores, el error total permitido se calcula a partir de approximation_degree, y los valores adecuados para synthesis_error y cache_error se calculan automáticamente.
Parámetros
- approximation_degree – Controla el grado general de aproximación. El valor predeterminado es
1 - 1e-10. - synthesis_error – Error máximo permitido para la síntesis aproximada de .
- cache_error – Error máximo permitido al reutilizar un resultado de síntesis almacenado en caché para ángulos cercanos a .
Atributos
is_analysis_pass
Comprueba si la pasada es una pasada de análisis.
Si el paso es un « AnalysisPass, », eso significa que el paso puede analizar el DAG y escribir los resultados de ese análisis en el conjunto de propiedades. Este tipo de pasada no permite realizar modificaciones en el DAG.
is_transformation_pass
Comprueba si el paso es un paso de transformación.
Si el acceso es de tipo « TransformationPass, », esto significa que dicho acceso puede manipular el DAG, pero no puede modificar el conjunto de propiedades (aunque sí puede leerlo).
Métodos
execute
execute(passmanager_ir, state, callback=None)
Ejecutar la tarea de optimización para el IR de Qiskit de entrada.
Parámetros
- passmanager_ir (Any) – Qiskit IR para optimizar.
- state (PassManagerState) – Estado asociado a la ejecución del flujo de trabajo por parte del 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
IR de Qiskit optimizado y estado del flujo de trabajo.
Tipo de retorno
tupla [ Any, PassManagerState ]
name
run
run(dag)
Ejecuta la tarea « SynthesizeRZRotations » en dag.
Parámetros
dag (DAGCircuit)
Tipo de retorno
update_status
update_status(state, run_state)
Actualizar el estado del flujo de trabajo.
Parámetros
- state (PassManagerState) – Pasa el estado del gestor para actualizarlo.
- run_state (RunState) – Estado de finalización de la tarea actual.
Devuelve
Se ha actualizado el estado del gestor de pases.
Tipo de retorno