Skip to main content
IBM Quantum Platform

SubstitutePi4Rotations

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

GitHub

Bases : TransformationPass

Convertir les portes de rotation dont les angles sont des multiples entiers de l' π/4\pi/4 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 π/4\pi/4, 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 π/2\pi/2, 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 π/4\pi/4 (ou respectivement π/2\pi/2 pour les rotations contrôlées), ou, de manière équivalente, les multiples entiers de π/2\pi/2 (ou respectivement π\pi 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)

GitHub

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

tuple [ DAGCircuit, PassManagerState ]

name

name()

GitHub

Nom du col.

Type de retour

str

run

run(dag)

GitHub

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

Circuit DAG

update_status

update_status(state, run_state)

GitHub

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

PassManagerState

Cette page a-t-elle été utile ?
Signaler un bogue, une coquille ou proposer du contenu sur GitHub.