SynthesizeRZRotations
class qiskit.transpiler.passes.SynthesizeRZRotations(*args, **kwargs)
Grundlagen: TransformationPass
Ersetze RZ-Gatter durch Clifford-T-Zerlegungen.
Dieser Pass ersetzt alle RZ-Rotationsgatter für einzelne Qubits mit Gleitkommawinkeln durch äquivalente Clifford+T-Sequenzen.
Intern synthetisiert die Stufe RZ(theta) für ein allgemeines theta, indem sie den Winkel modulo pi/2: reduziert; die Schaltung für RZ(theta) lässt sich aus einer Schaltung für RZ(theta mod pi/2 ) konstruieren, indem man entsprechende Clifford-Gatter anfügt. Wichtig ist, dass der Durchlauf die Syntheseresultate zwischenspeichert und sie für Winkel wiederverwendet, die innerhalb einer vorgegebenen Toleranz zueinander liegen.
Zum Beispiel:
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)Wenn sowohl synthesis_error als auch cache_error angegeben werden, legen sie das Fehlerbudget für die approximative Synthese bzw. für das Caching fest. Wenn einer der beiden Werte nicht angegeben wird, wird der zulässige Gesamtfehler aus approximation_degreeabgeleitet, und geeignete Werte für synthesis_error und cache_error werden automatisch berechnet.
Parameter
- approximation_degree – Steuert den allgemeinen Grad der Annäherung. Standardmäßig ist
1 - 1e-10. (0, 1]synthesis_error – Maximal zulässiger Fehler für die approximative Synthese von . Falls angegeben, muss der Wert im Bereich liegen.- cache_error – Maximal zulässiger Fehler bei der Wiederverwendung eines zwischengespeicherten Syntheseergebnisses für Winkel nahe . Falls angegeben, muss der Wert im Bereich
[0, 1]. liegen.
Attribute
is_analysis_pass
Prüfen Sie, ob es sich um einen Analyse-Durchlauf handelt.
Wenn es sich bei dem Pass um einen „ AnalysisPass, “ handelt, bedeutet dies, dass der Pass den DAG analysieren und die Ergebnisse dieser Analyse in den Eigenschaftssatz schreiben kann. Änderungen am DAG sind bei dieser Art von Durchlauf nicht zulässig.
is_transformation_pass
Prüfe, ob es sich bei dem Pass um einen Transformationspass handelt.
Wenn es sich bei dem Pass um einen „ TransformationPass, “ handelt, bedeutet dies, dass der Pass den DAG bearbeiten kann, jedoch die Eigenschaften nicht ändern darf (sie können jedoch gelesen werden).
Methoden
execute
execute(passmanager_ir, state, callback=None)
Optimierungsaufgabe für die Qiskit-IR-Eingabe 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
name
run
run(dag)
Führen Sie den Befehl „ SynthesizeRZRotations “ auf „dag“ aus.
Parameter
dag (DAGCircuit)
Rückgabetyp
update_status
update_status(state, run_state)
Status des Workflows aktualisieren.
Parameter
- state (PassManagerState) – Den Status des Pass-Managers zur Aktualisierung übergeben.
- run_state (RunState) – Fertigstellungsstatus der aktuellen Aufgabe.
Rückgabe
Status des Pass-Managers aktualisiert.
Rückgabetyp