Skip to main content
IBM Quantum Platform

RossSelingerSynthesis

class qiskit.transpiler.passes.synthesis.ross_selinger_plugin.RossSelingerSynthesis

GitHub

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,

arXiv:1403.2975


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)

GitHub

Führen Sie das Ross-Selinger-Synthese-Plugin für die angegebene Unitäre aus.

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