SynthesizeRZRotations
class qiskit.transpiler.passes.SynthesizeRZRotations(*args, **kwargs)
Bases : TransformationPass
Remplacer les portes RZ par des décompositions de Clifford-T.
Cette passe remplace toutes les portes de rotation RZ à un qubit avec des angles en virgule flottante par des séquences Clifford+T équivalentes.
En interne, le circuit synthétise RZ(θ) pour un angle θ général en réduisant l'angle modulo pi/2: le circuit pour RZ(θ) peut être construit à partir d'un circuit pour RZ(θ mod pi/2 ) en y ajoutant des portes de Clifford appropriées. Il est important de noter que ce passage met également en cache les résultats de la synthèse et les réutilise pour les angles dont l'écart ne dépasse pas une tolérance donnée.
Par exemple :
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 et cache_error sont synthesis_error tous deux fournis, ils définissent respectivement la marge d'erreur pour la synthèse approximative et pour la mise en cache. Si l'une ou l'autre de ces valeurs n'est pas spécifiée, l'erreur totale autorisée est dérivée de approximation_degree, et des valeurs appropriées pour synthesis_error et cache_error sont calculées automatiquement.
Paramètres
- approximation_degree – Permet de régler le niveau global d'approximation. La valeur par défaut est
1 - 1e-10. - synthesis_error – Erreur maximale autorisée pour la synthèse approximative de . Si cette valeur est spécifiée, elle doit se situer dans l'intervalle
(0, 1]. - cache_error – Erreur maximale autorisée lors de la réutilisation d'un résultat de synthèse mis en cache pour des angles proches de . Si cette valeur est spécifiée, elle doit se situer dans l'intervalle
[0, 1].
Attributs
is_analysis_pass
Vérifiez si le passage est un passage d'analyse.
Si le pass est un « AnalysisPass, », cela signifie qu'il est capable d'analyser le DAG et d'enregistrer les résultats de cette analyse dans l'ensemble de propriétés. Ce type de passe ne permet pas d'apporter des modifications au DAG.
is_transformation_pass
Vérifiez si le passage est un passage de transformation.
Si le passeport est de type « TransformationPass, », cela signifie qu'il peut manipuler le DAG, mais ne peut pas modifier l'ensemble de propriétés (bien qu'il puisse le consulter).
Méthodes
execute
execute(passmanager_ir, state, callback=None)
Exécuter la tâche d'optimisation pour le fichier IR Qiskit d'entrée.
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
Optimisation de l'IR Qiskit et état d'avancement du flux de travail.
Type de retour
name
run
run(dag)
Exécutez la commande « SynthesizeRZRotations » sur dag.
Paramètres
dag (DAGCircuit)
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 pour la mise à jour.
- run_state (RunState) – État d'avancement de la tâche en cours.
Retours
Mise à jour de l'état du gestionnaire de passes.
Type de retour