SolovayKitaevDecomposition
class qiskit.synthesis.SolovayKitaevDecomposition(basic_approximations=None, *, basis_gates=None, depth=12, check_input=False)
Basen: object
Der diskrete Solovay-Kitaev-Zerlegungsalgorithmus.
Diese Klasse wird durch den Transpiler-Pass rekursiv aufgerufen, weshalb sie getrennt ist. Siehe SolovayKitaev für weitere Informationen.
Wenn als .npy Datei basic_approximations übergeben wird, wird intern Pickle zum Laden der Daten verwendet. Dies ist eine potenzielle Sicherheitslücke, daher sollten nur vertrauenswürdige Dateien geladen werden.
Parameter
-
basic_approximations (str |dict[str, np.ndarray] | list[GateSequence] | None) –
Eine Spezifikation der grundlegenden SO(3)-Näherungen in Form diskreter Gatter. Bei jeder Iteration dieses Algorithmus wird der verbleibende Fehler durch die am besten passende Folge von Gatterfunktionen in dieser Menge approximiert. Wenn a
strangegeben ist, gibt dies einen Dateinamen an, aus dem die Approximation geladen werden soll. Wenn a giltdict, dann enthält dies{gates: effective_SO3_matrix}Paare, z. B.{"h t": np.array([[0, 0.7071, -0.7071], [0, -0.7071, -0.7071], [-1, 0, 0]]}. Handelt es sich um eine Liste, enthält diese dieselben Informationen wie das Wörterbuch, jedoch bereits inGateSequenceObjekte umgewandelt, die die SO(3)-Matrix und die Gatter enthalten.Entweder dieser Parameter oder
basis_gatesunddepthkönnen angegeben werden. -
basis_gates (list[str |Gate] | None) – Eine Liste von diskreten (d.h. nicht parametrisierten) Standardgattern. Der Standardwert ist
["h", "t", "tdg"]. -
depth (int) – Die Anzahl der Basistor-Kombinationen, die in der Basismenge berücksichtigt werden sollen. Dieser bestimmt, wie schnell (und ob) der Algorithmus konvergiert und sollte ausreichend hoch gewählt werden.
-
check_input (bool) – Falls
True, führen Sie Zwischenschritte durch, um zu prüfen, ob die Matrizen die erwartete Form haben.
Attribute
basis_gates
Der Basis-Gate-Satz der Basis-Approximationen.
Wenn None, ist die Standardeinstellung ["h", "t", "tdg"].
check_input
Ob Laufzeitprüfungen für die internen Daten durchgeführt werden sollen.
depth
Die maximale Gattertiefe der Basisapproximationen.
Methoden
find_basic_approximation
find_basic_approximation(sequence)
Finden Sie GateSequence in self._basic_approximations , das sich sequence annähert.
Die Methode qiskit.synthesis.discrete_basis.solovay_kitaev.SolovayKitaevDecomposition.find_basic_approximation() ist seit Qiskit 2.3 veraltet. Es wird frühestens 3 Monate nach dem Veröffentlichungsdatum entfernt. Verwenden Sie stattdessen query_basic_approximation, das ein Gate oder eine Matrix als Eingabe nimmt und ein Objekt vom Typ QuantumCircuit zurückgibt.
Parameter
sequence (GateSequence) – GateSequence um die Annäherung an zu finden.
Rückgabe
GateSequence in, die sich sequence annähert.
Rückgabetyp
GateSequence
load_basic_approximations
static load_basic_approximations(data)
Laden Sie Grundannäherungen.
Wenn als Zeichenfolge data angegeben wird, verwendet diese Methode intern Pickle, um die Datei zu laden. Dies ist eine potenzielle Sicherheitslücke, daher sollten nur vertrauenswürdige Dateien geladen werden.
Parameter
data (list |str |dict) – Wenn es sich um eine Zeichenkette handelt, gibt sie den Pfad zu der Datei an, aus der die Daten geladen werden sollen. Wenn ein Wörterbuch, gibt direkt die Zerlegungen als {gates: matrix} oder {gates: (matrix, global_phase)} an. Dort sind gates die Namen der Gatter, die die SO(3)-Matrix erzeugen matrix, z.B. {"h t": np.array([[0, 0.7071, -0.7071], [0, -0.7071, -0.7071], [-1, 0, 0]]} und die global_phase können angegeben werden, um eine globale Phasendifferenz zwischen der U(2)-Matrix der Quantengatter und der gespeicherten SO(3)-Matrix zu berücksichtigen. Wenn keine Angaben gemacht werden, wird global_phase als 0 angenommen.
Rückgabe
Eine Liste von Grundannäherungen als Typ GateSequence.
Erhöht
ValueError - Wenn die Anzahl der Gatterkombinationen und der zugehörigen Matrizen nicht übereinstimmt.
Rückgabetyp
Liste [GateSequence]
query_basic_approximation
query_basic_approximation(gate)
Abfrage einer grundlegenden Annäherung an eine Matrix.
Parameter
Rückgabetyp
run
run(gate_matrix, recursion_degree, return_dag=False, check_input=True)
Führen Sie den Algorithmus aus.
Parameter
- gate_matrix (np.ndarray | Gate) – Das Ein-Qubit-Gatter zu approximieren. Kann entweder a sein
Gatesein, wobeiGate.to_matrix()die Matrix zurückgibt, oder eine unitäre Matrix, die das Tor darstellt. - recursion_degree (int) – Der Rekursionsgrad, in der Arbeit genannt.
QuantumCircuitDAGCircuitreturn_dag (bool) – WennTruea zurückgeben, sonst a.- check_input (bool) – Falls
True, prüfen Sie, ob die Eingabematrix für die Zerlegung gültig ist. Überschreibt das Klassenattribut mit demselben Namen, aber nur für diesen Funktionsaufruf.
Rückgabe
Eine Ein-Qubit-Schaltung, die die gate_matrix in der angegebenen diskreten Basis approximiert.
Rückgabetyp
save_basic_approximations
save_basic_approximations(filename)
Speichern Sie die Grundannäherungen in einer Datei.
Diese kann dann wieder über den Klasseninitialisierer (bevorzugt) oder über load_basic_approximations():
filename = "approximations.bin"
sk.save_basic_approximations(filename)
new_sk = SolovayKitaevDecomposition(filename)Parameter
filename (str) – Der Dateiname, unter dem die Näherungswerte gespeichert werden.
Erhöht
ValueError - Wenn der Dateiname die Erweiterung.npy hat. Das Format ist nicht.npy, und das Speichern als solches kann zu Fehlern beim erneuten Laden der Datei führen.