Skip to main content
IBM Quantum Platform

SolovayKitaevDecomposition

class qiskit.synthesis.SolovayKitaevDecomposition(basic_approximations=None, *, basis_gates=None, depth=12, check_input=False)

GitHub

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.

Anmerkung

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 gilt dict, 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 in GateSequence Objekte umgewandelt, die die SO(3)-Matrix und die Gatter enthalten.

    Entweder dieser Parameter oder basis_gates und depth kö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)

GitHub

Finden Sie GateSequence in self._basic_approximations , das sich sequence annähert.

Seit Version 2.3 veraltet

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)

GitHub

Laden Sie Grundannäherungen.

Anmerkung

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)

GitHub

Abfrage einer grundlegenden Annäherung an eine Matrix.

Parameter

gate (ndarray |Gate)

Rückgabetyp

QuantumCircuit

run

run(gate_matrix, recursion_degree, return_dag=False, check_input=True)

GitHub

Führen Sie den Algorithmus aus.

Parameter

  • gate_matrix (np.ndarray | Gate) – Das Ein-Qubit-Gatter zu approximieren. Kann entweder a sein Gatesein, wobei Gate.to_matrix() die Matrix zurückgibt, oder eine 2×22\times 2 unitäre Matrix, die das Tor darstellt.
  • recursion_degree (int) – Der Rekursionsgrad, in der Arbeit nn genannt.
  • QuantumCircuitDAGCircuitreturn_dag (bool) – Wenn True a 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

QuantumCircuit | DAGCircuit

save_basic_approximations

save_basic_approximations(filename)

GitHub

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.

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