Skip to main content
IBM Quantum Platform

SubstitutePi4Rotations

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

GitHub

Grundlagen: TransformationPass

Wandle Rotationsgatter, deren Winkel ganzzahlige Vielfache von π/4\pi/4 sind, in diskrete Sätze von Clifford-, TGate und TdgGate -Gattern um.

Bei Rotationsgattern für einzelne Qubits (RXGate, RYGate, RZGate, PhaseGate) und Rotationsgattern für zwei Qubits (RXXGate, RYYGate, RZZGate, RZXGate) erfordert die Zerlegung, wenn der Winkel ein Vielfaches von π/4\pi/4 ist, ein einzelnes TGate oder TdgGate Gatter sowie einige Clifford-Gatter. Bei kontrollierten Rotationsgattern für zwei Qubits (CPhaseGate, CRXGate, CRYGate, CRZGate) sind, wenn der Winkel ein Vielfaches von π/2\pi/2 ist, für drei TGate oder TdgGate Gatter CPhaseGate erforderlich und andernfalls zwei, sowie einige Clifford-Gatter. Beachte, dass sogar Vielfache von π/4\pi/4 (bzw. π/2\pi/2 bei kontrollierten Rotationen) oder, äquivalent dazu, ganzzahlige Vielfache von π/2\pi/2 (bzw. π\pi bei kontrollierten Rotationen) ausschließlich mit Clifford-Gattern geschrieben werden können.

Zum Beispiel:

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)

Parameter

approximation_degree – Wird bei den Toleranzberechnungen verwendet. Dies ergibt den Schwellenwert für die durchschnittliche Gate-Genauigkeit.


Attribute

is_analysis_pass

Überprüfen Sie, ob es sich um einen Analyse-Pass handelt.

Wenn es sich bei dem Pass um einen „ AnalysisPass, “ handelt, bedeutet dies, dass der Pass die DAG analysieren und die Ergebnisse dieser Analyse in den Eigenschaftensatz schreiben kann. Änderungen an der DAG sind mit dieser Art von Pass nicht zulässig.

is_transformation_pass

Überprüfen Sie, ob es sich um einen Transformationspass handelt.

Wenn es sich um einen Pass vom Typ „ TransformationPass, “ handelt, bedeutet dies, dass der Pass die DAG manipulieren kann, aber nicht die Eigenschaftsmenge ändern kann (diese kann jedoch gelesen werden).


Methoden

execute

execute(passmanager_ir, state, callback=None)

GitHub

Optimierungsaufgabe für Eingabe-Qiskit-IR ausführen.

Parameter

  • passmanager_ir (DAGCircuit) – Qiskit IR zur Optimierung.
  • state (DAGCircuit) – Zustand, der mit der Ausführung des Workflows durch den Pass-Manager selbst verbunden ist.
  • callback (Callable[[Task, DAGCircuit, PropertySet, float, int], None] | None) – Eine Callback-Funktion, die bei jeder Ausführung einer Optimierungsaufgabe aufgerufen wird.

Rückgabe

Optimiertes Qiskit IR und Status des Workflows.

Rückgabetyp

Tupel [ DAGCircuit, PassManagerState ]

name

name()

GitHub

Name des Passes.

Rückgabetyp

str

run

run(dag)

GitHub

Führen Sie den Optimierungsdurchlauf „Substitute Pi4-Rotations “ auf dag.

Parameter

dag (DAGCircuit) – der Eingabe-DAG.

Rückgabe

Die Ausgabe DAG.

Rückgabetyp

DAG-Schaltkreis

update_status

update_status(state, run_state)

GitHub

Workflow-Status aktualisieren.

Parameter

  • state (PassManagerState) – Passmanager-Status zur Aktualisierung übergeben.
  • run_state (RunState) – Abschlussstatus der aktuellen Aufgabe.

Rückgabe

Passmanager-Status aktualisiert.

Rückgabetyp

PassManagerState

War diese Seite hilfreich?
Melden Sie auf GitHub einen Fehler, einen Tippfehler oder fordern Sie Inhalte an.