RossSelingerSynthesis
class qiskit.transpiler.passes.synthesis.ross_selinger_plugin.RossSelingerSynthesis
Grundlagen: UnitarySynthesisPlugin
Ein Plugin zur unitären Synthese von Ross-Selinger-Qiskits.
Der Algorithmus wird in [1] beschrieben. Der Quellcode (in Rust) ist verfügbar unter https://github.com/qiskit-community/rsgridsynth.
"gridsynth"Dieses Plugin wird aufgerufen, transpile() wenn der unitary_synthesis_method Parameter auf gesetzt ist.
Dieses Plugin unterstützt Anpassungen, und zusätzliche Parameter können an das Plugin übergeben werden, indem ein Wörterbuch als Parameter der transpile()unitary_synthesis_plugin_config Funktion übergeben wird.
Unterstützte Parameter im Wörterbuch:
Epsilon ( f64 ):
Der zulässige Näherungsfehler.
Quellenangaben:
[1] Neil J. Ross, Peter Selinger, Optimale ancilla-freie Clifford+T-Näherung von z-Rotationen,
Attribute
max_qubits
Die maximale Anzahl unterstützter Qubits beträgt 1.
min_qubits
Die Mindestanzahl der unterstützten Qubits beträgt 1.
supported_bases
Das Plugin unterstützt keine Basen für die Synthese.
supports_basis_gates
Das Plugin unterstützt keine Basis-Gatter. Standardmäßig wird es auf ["h", "s", "t", "x"] Gate-Basis synthetisiert.
supports_coupling_map
Das Plugin unterstützt keine Kopplungskarten.
supports_gate_errors
Das Plugin unterstützt keine Gate-Fehler.
supports_gate_errors_by_qubit
Gibt zurück, ob das Plugin die Übernahme unterstützt. gate_errors_by_qubit
Dies unterscheidet sich von supports_gate_errors/gate_errors durch die Verwendung einer anderen Ansicht derselben Daten. Anstelle der Schlüsselung nach Gate-Namen erfolgt die Schlüsselung hier nach Qubit und verwendet Gate Instanzen, um Gates darzustellen (anstelle von Gate-Namen).
gate_errors_by_qubit wird ein Wörterbuch in der Form von {(qubits,): [Gate, error]}. Zum Beispiel:
{
(0,): [SXGate(): 0.0006149355812506126, RZGate(): 0.0],
(0, 1): [CXGate(): 0.012012477900732316]
}Bitte beachten Sie, dass dieses Wörterbuch möglicherweise nicht vollständig ist oder leer sein könnte, da es davon abhängt, dass das Ziel-Backend Fehler an jedem Gate für jedes Qubit meldet. Die in gemeldeten gate_errors Gate-Fehlerraten werden vom Zielgerät-Objekt bereitgestellt Backend , und die genaue Bedeutung kann je nach Backend unterschiedlich sein.
Die Standardeinstellung ist „False“
supports_gate_lengths
Das Plugin unterstützt keine Gate-Längen.
supports_gate_lengths_by_qubit
Gibt zurück, ob das Plugin die Übernahme unterstützt. gate_lengths_by_qubit
Dies unterscheidet sich von supports_gate_lengths/gate_lengths durch die Verwendung einer anderen Ansicht derselben Daten. Anstelle der Schlüsselung nach Gate-Namen erfolgt die Schlüsselung hier nach Qubit und verwendet Gate Instanzen zur Darstellung von Gates (anstelle von Gate-Namen)
gate_lengths_by_qubit wird ein Wörterbuch in der Form von {(qubits,): [Gate, length]}. Zum Beispiel:
{
(0,): [SXGate(): 0.0006149355812506126, RZGate(): 0.0],
(0, 1): [CXGate(): 0.012012477900732316]
}wobei der length Wert in Sekunden angegeben ist.
Bitte beachten Sie, dass dieses Wörterbuch möglicherweise nicht vollständig oder leer ist, da es vom Ziel-Backend abhängt, das die Gate-Längen für jedes Qubit meldet.
Die Standardeinstellung ist „False“
supports_natural_direction
Das Plugin unterstützt keine natürliche Richtung und geht nicht von bidirektionalen Zwei-Qubit-Gates aus.
supports_pulse_optimize
Das Plugin unterstützt keine Optimierung von Impulsen.
supports_target
Ob das Plugin die Verwendung von target als Option unterstützt
target wird ein Target Objekt sein, das das Zielgerät für die Ausgabe des Synthese-Durchgangs darstellt.
Standardmäßig ist dies der Fall, False da die Plugin-Schnittstelle älter ist als die Target Klasse. Wenn ein Plugin für dieses True Attribut zurückgibt, wird erwartet, dass das Plugin anstelle Target der übergebenen Werte verwendet, wenn einer der supports_gate_lengthsParameter supports_gate_errors, supports_coupling_map, und gesetzt supports_basis_gates ist (obwohl idealerweise alle diese Parameter doppelte Informationen enthalten sollten).
Methoden
run
run(unitary, **options)
Führen Sie das Ross-Selinger-Synthese-Plugin für die angegebene Unitäre aus.