SubstitutePi4Rotations
class qiskit.transpiler.passes.SubstitutePi4Rotations(*args, **kwargs)
Bases: TransformationPass
Convierte las puertas de rotación cuyos ángulos sean múltiplos enteros de en conjuntos discretos de puertas de TdgGate Clifford, TGate y.
En el caso de las puertas de rotación de un solo qubit (RXGate, RYGate, RZGate, PhaseGate) y de las puertas de rotación de dos qubits (RXXGate, RYYGate, RZZGate, RZXGate), cuando el ángulo es un múltiplo de , la descomposición requiere una sola puerta TGate TdgGate o, así como algunas puertas de Clifford. En el caso de las puertas de rotación controlada de dos qubits (CPhaseGate, CRXGate, CRYGate, CRZGate), cuando el ángulo es un múltiplo de , la descomposición requiere tres TGate puertas TdgGate o para CPhaseGate y dos en los demás casos, además de algunas puertas de Clifford. Cabe señalar que incluso los múltiplos de (o, respectivamente, para rotaciones controladas), o lo que es lo mismo, los múltiplos enteros de (o, respectivamente, para rotaciones controladas), pueden expresarse utilizando únicamente puertas de Clifford.
Por ejemplo:
from qiskit.circuit import QuantumCircuit
from qiskit.transpiler.passes import SubstitutePi4Rotations
from qiskit.quantum_info import Operator
# The following quantum circuit consists of 5 Clifford gates,
# four rotation gates whose angles are integer multiples of pi/4,
# and one controlled rotation gate whose angle is an integer multiple of pi/2
qc = QuantumCircuit(3)
qc.cx(0, 1)
qc.rz(pi/4, 0)
qc.cz(0, 1)
qc.rx(3*pi/4, 1)
qc.h(1)
qc.s(2)
qc.ry(2*pi/4, 2)
qc.cz(2, 0)
qc.rzz(pi/4, 0, 2)
qc.cry(3*pi/2, 2, 1)
# The transformed circuit consists of Clifford, T and Tdg gates
qct = SubstitutePi4Rotations()(qc)
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
assert Operator(qc) == Operator(qct)Parámetros
aproximación_grado – Se utiliza en los cálculos de tolerancia. Esto proporciona el umbral para la fidelidad media de la puerta.
Atributos
is_analysis_pass
Comprueba si el pase es un pase de análisis.
Si el pase es un « AnalysisPass, », significa que puede analizar el DAG y escribir los resultados de ese análisis en el conjunto de propiedades. Este tipo de pase no permite 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 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 tarea de optimización para 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 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
Qiskit IR optimizado y estado del flujo de trabajo.
Tipo de retorno
tupla [ Any, PassManagerState ]
name
run
run(dag)
Ejecuta la optimización Substitute Pi4-Rotations en dag.
Parámetros
dag (DAGCircuit) – el DAG de entrada.
Devuelve
El DAG de salida.
Tipo de retorno
update_status
update_status(state, run_state)
Actualizar el estado del flujo de trabajo.
Parámetros
- state (PassManagerState) – Pasar el estado del gestor para actualizar.
- run_state (RunState) – Estado de finalización de la tarea actual.
Devuelve
Estado actualizado del administrador de pases.
Tipo de retorno