SubstitutePi4Rotations
class qiskit.transpiler.passes.SubstitutePi4Rotations(*args, **kwargs)
Bases : TransformationPass
Convertir les portes de rotation dont les angles sont des multiples entiers de l' e en ensembles discrets de portes de TdgGate Clifford, TGate et.
Pour les portes de rotation à un qubit (RXGate, RYGate, RZGate, PhaseGate) et les portes de rotation à deux qubits (RXXGate, RYYGate, RZZGate, RZXGate), lorsque l'angle est un multiple de , la décomposition nécessite une seule TGate porte TdgGate ou ainsi que certaines portes de Clifford. Pour les portes de rotation contrôlées à deux qubits (CPhaseGate, CRXGate, CRYGate, CRZGate), lorsque l'angle est un multiple de , la décomposition nécessite trois portes TGate TdgGate ou pour CPhaseGate et deux dans le cas contraire, ainsi que quelques portes de Clifford. Il convient de noter que même les multiples de (ou respectivement pour les rotations contrôlées), ou, de manière équivalente, les multiples entiers de (ou respectivement pour les rotations contrôlées), peuvent être écrits en utilisant uniquement des portes de Clifford.
Par exemple :
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)Paramètres
degré_d'approximation – Utilisé dans les calculs de tolérance. Cela donne le seuil pour la fidélité moyenne de la porte.
Attributs
is_analysis_pass
Vérifiez si le passage est un passage d'analyse.
Si le pass est un « AnalysisPass, », cela signifie qu'il peut analyser le DAG et écrire les résultats de cette analyse dans le jeu de propriétés. Les modifications sur le DAG ne sont pas autorisées par ce type de passe.
is_transformation_pass
Vérifiez si le passage est un passage de transformation.
Si le pass est un « TransformationPass, », cela signifie qu'il peut manipuler le DAG, mais ne peut pas modifier l'ensemble de propriétés (qui peut toutefois être lu).
Méthodes
execute
execute(passmanager_ir, state, callback=None)
Exécuter la tâche d'optimisation pour l'entrée Qiskit IR.
Paramètres
- passmanager_ir (DAGCircuit) – IR Qiskit à optimiser.
- state (DAGCircuit) – État lié à l'exécution du flux de travail par le gestionnaire de passes lui-même.
- callback (Callable[[Task, DAGCircuit, PropertySet, float, int], None] | None) – Une fonction de rappel qui est appelée à chaque exécution d'une tâche d'optimisation.
Retours
Qiskit IR optimisé et état du flux de travail.
Type de retour
name
run
run(dag)
Exécutez le passage d'optimisation Substitute Pi4-Rotations sur dag.
Paramètres
dag (DAGCircuit) – le DAG d'entrée.
Retours
Le DAG de sortie.
Type de retour
update_status
update_status(state, run_state)
Mettre à jour le statut du flux de travail.
Paramètres
- state (PassManagerState) – Transmettre l'état du gestionnaire de mots de passe pour mise à jour.
- run_state (RunState) – État d'avancement de la tâche en cours.
Retours
État du gestionnaire de mots de passe mis à jour.
Type de retour