Skip to main content
IBM Quantum Platform

SubstitutePi4Rotations

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

GitHub

Bases: TransformationPass

Convierte las puertas de rotación cuyos ángulos sean múltiplos enteros de π/4\pi/4 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 π/4\pi/4, 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 π/2\pi/2, 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 π/4\pi/4 (o, respectivamente, π/2\pi/2 para rotaciones controladas), o lo que es lo mismo, los múltiplos enteros de π/2\pi/2 (o, respectivamente, π\pi 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)

GitHub

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

name()

GitHub

Nombre del pase.

Tipo de retorno

str

run

run(dag)

GitHub

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

Circuito DAG

update_status

update_status(state, run_state)

GitHub

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

PassManagerState

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