AQCSynthesisPlugin
class qiskit.transpiler.passes.synthesis.aqc_plugin.AQCSynthesisPlugin
Basen: UnitarySynthesisPlugin
Ein AQC-basiertes Qiskit-Einheitssynthese-Plugin.
"aqc"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:
network_layout (str)
Typ der Netzgeometrie, einer von {"sequ", "spin", "cart", "cyclic_spin", "cyclic_line"}. Standardwert ist "spin".
connectivity_type (str)
art der Inter-Qubit-Konnektivität, {"full", "line", "star"}. Der Standardwert ist "full".
tiefe (int)
tiefe des CNOT-Netzes, d. h. die Anzahl der Schichten, wobei jede Schicht aus einem einzelnen CNOT-Block besteht.
optimierer (Minimizer)
Eine Implementierung des Minimizer Protokolls, das im Optimierungsprozess verwendet werden soll.
seed (int)
Ein zufälliges Saatgut.
initial_point (ndarray)
Anfangswerte der Winkel/Parameter, mit denen der Optimierungsprozess beginnen soll.
Attribute
max_qubits
Die maximale Anzahl der unterstützten Qubits ist 14.
min_qubits
Die Mindestanzahl der unterstützten Qubits ist 3.
supported_bases
Das Plugin unterstützt keine Basen für die Synthese.
supports_basis_gates
Das Plugin unterstützt keine Basisgatter und synthetisiert standardmäßig eine Schaltung mit ["rx", "ry", "rz", "cx"] gate basis.
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 Aufnahme von gate_errors_by_qubit
Dies unterscheidet sich von supports_gate_errors/gate_errors durch die Verwendung einer anderen Sichtweise auf dieselben Daten. Anstelle des Gatternamens wird dieser durch ein Qubit verschlüsselt und verwendet Gate instanzen zur Darstellung von Gattern (anstelle von Gatternamen).
gate_errors_by_qubit wird ein Wörterbuch in Form von {(qubits,): [Gate, error]} sein. Zum Beispiel:
{
(0,): [SXGate(): 0.0006149355812506126, RZGate(): 0.0],
(0, 1): [CXGate(): 0.012012477900732316]
}Beachten Sie, dass dieses Wörterbuch möglicherweise nicht vollständig oder leer ist, da es davon abhängt, dass das Ziel-Backend Gate-Fehler für jedes Gate und jedes Qubit meldet. Die in gate_errors gemeldeten Gate-Fehlerraten werden vom Zielgerät Backend object bereitgestellt und die genaue Bedeutung kann je nach Backend unterschiedlich sein.
Standardmäßig ist dies False
supports_gate_lengths
Das Plugin unterstützt keine Gate-Längen.
supports_gate_lengths_by_qubit
Gibt zurück, ob das Plugin die Aufnahme von gate_lengths_by_qubit
Dies unterscheidet sich von supports_gate_lengths/gate_lengths durch die Verwendung einer anderen Sichtweise auf dieselben Daten. Anstatt nach Gatternamen wird hier nach Qubit verschlüsselt und es werden Gate instanzen zur Darstellung von Gattern (anstelle von Gatternamen)
gate_lengths_by_qubit wird ein Wörterbuch in Form von {(qubits,): [Gate, length]} sein. Zum Beispiel:
{
(0,): [SXGate(): 0.0006149355812506126, RZGate(): 0.0],
(0, 1): [CXGate(): 0.012012477900732316]
}wobei der Wert length in Sekundeneinheiten angegeben ist.
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 die Gatelängen für jedes Gatter für jedes Qubit meldet.
Standardmäßig ist dies False
supports_natural_direction
Das Plugin unterstützt keine natürliche Richtung, sondern geht von bidirektionalen Zwei-Qubit-Gattern aus.
supports_pulse_optimize
Das Plugin unterstützt keine Optimierung von Impulsen.
supports_target
Ob das Plugin die Aufnahme von target als Option unterstützt
target ist ein Target objekt, das das Zielgerät für die Ausgabe des Synthesedurchgangs darstellt.
Standardmäßig wird dies False sein, da die Plugin-Schnittstelle vor der Target klasse vorausgeht. Wenn ein Plugin True für dieses Attribut zurückgibt, wird erwartet, dass das Plugin die Target anstelle der übergebenen Werte verwendet, wenn einer der Parameter supports_gate_lengths, supports_gate_errors, supports_coupling_map und supports_basis_gates gesetzt ist (obwohl idealerweise alle diese Parameter doppelte Informationen enthalten sollten).
Methoden
run
run(unitary, **options)
Durchführung der Synthese für die angegebene unitäre Matrix
Parameter
- unitary (numpy.ndarray) – Die zu synthetisierende unitäre Matrix zu einem
DAGCircuitobjekt - options - Die optionalen kwargs, die basierend auf der Ausgabe der
support_*Methoden der Klasse übergeben werden. Schauen Sie in der Dokumentation zu diesen Methoden unterUnitarySynthesisPluginum zu sehen, was die Schlüssel und Werte sind.
Rückgabe
Die dag-Schaltkreis-Darstellung des Unitary. Alternativ können Sie ein Tupel der Form (dag, wires) zurückgeben, wobei dag die dag-Schaltkreisdarstellung der Schaltkreisdarstellung der Einheit ist und wires die Abbildungsdrähte, die für qiskit.dagcircuit.DAGCircuit.substitute_node_with_dag(). Wenn Sie ein Tupel zurückgeben und wires None ist, verhält sich dies genauso, als ob nur ein DAGCircuit zurückgegeben wurde. Außerdem wird keine Ersetzung vorgenommen, wenn die Antwort None lautet.
Rückgabetyp