Skip to main content
IBM Quantum Platform

AQC

class qiskit.synthesis.unitary.aqc.AQC(optimizer=None, seed=None)

GitHub

Basen: object

Eine generische Implementierung des Approximate Quantum Compilers. Diese Implementierung ist unabhängig von der zugrundeliegenden Implementierung der approximativen Schaltung, des Ziels und des Optimierers. Die Benutzer können entsprechende Implementierungen der abstrakten Klassen übergeben:

  • Der Optimierer ist eine Implementierung des Minimizer Protokolls, ein Callable, das zur Durchführung des Optimierungsprozesses verwendet wird. Die Wahl des Optimierers kann die Gesamtkonvergenz, die benötigte Zeit für den Optimierungsprozess und den erreichten Zielwert beeinflussen.
  • Die ungefähre Schaltung stellt eine Vorlage dar, deren Parameter wir optimieren wollen. Derzeit gibt es nur eine Implementierung, die auf CNOT-Einheitsblöcken mit 4 Rotationen basiert: CNOTUnitCircuit. Weitere Einzelheiten finden Sie in dem Papier.
  • Das Näherungsziel ist eng mit der Implementierung der Näherungsschaltung gekoppelt und bietet zwei Methoden zur Berechnung der Zielfunktion und des Gradienten in Bezug auf die Parameter der Näherungsschaltung. Dieses Ziel wird an den Optimierer übergeben. Derzeit gibt es zwei Implementierungen, die auf CNOT-Einheitsblöcken mit 4 Rotationen basieren: DefaultCNOTUnitObjective und seine beschleunigte Version FastCNOTUnitObjective. Beide Implementierungen haben die gleiche Idee der Maximierung des Hilbert-Schmidt-Produkts zwischen der Zielmatrix und ihrer Approximation. Der frühere Umsetzungsansatz sollte als Basis betrachtet werden. Es kann unter Leistungsproblemen leiden und eignet sich vor allem für eine kleine Anzahl von Qubits (bis zu 5 oder 6), während das letztere, beschleunigte Verfahren auf größere Probleme angewendet werden kann.
  • Zu berücksichtigen ist das exponentielle Wachstum der Matrixgröße mit der Anzahl der Qubits, da bei der Implementierung nicht nur eine potenziell große Zielmatrix erstellt wird, sondern auch eine Reihe von temporären Speicherpuffern zugewiesen werden, deren Größe mit der der Zielmatrix vergleichbar ist.

Parameter

  • optimizer (Minimizer | None) – einen Optimierer, der im Optimierungsverfahren bei der Suche nach der besten Näherungsschaltung eingesetzt wird. Standardmäßig wird der Scipy-Minimierer mit der Methode L-BFGS-B verwendet, wobei die maximale Anzahl der Iterationen auf 1000 gesetzt ist.
  • seed (int | None) – einen Startwert, der von einem Zufallszahlengenerator verwendet wird.

Methoden

compile_unitary

compile_unitary(target_matrix, approximate_circuit, approximating_objective, initial_point=None)

GitHub

Approximate kompiliert eine als unitäre Matrix dargestellte Schaltung, indem es ein durch approximating_objective definiertes Optimierungsproblem löst und approximate_circuit als Vorlage für die approximative Schaltung verwendet.

Parameter

  • target_matrix (ndarray) – eine Einheitsmatrix zur Annäherung.
  • approximate_circuit (ApproximateCircuit) – eine Schablonenschaltung, die mit den im Optimierungsverfahren ermittelten Parameterwerten gefüllt wird.
  • approximating_objective (ApproximatingObjective) – eine Definition des Optimierungsproblems.
  • initial_point (ndarray | None) – Anfangswerte der Winkel/Parameter, mit denen die Optimierung beginnen soll.

Rückgabetyp

Keine

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