Skip to main content
IBM Quantum Platform

FermionicTrotterization

class FermionicTrotterization(synthesis, *, apply=True, filter=None)

Basiszeichen: GenericPass[DAGCircuit, DAGCircuit]

Ein Transpilierungsdurchlauf, bei dem Gatter Evolution im fermionischen Raum „trottiert“ werden.

Ein Gatter Evolution enthält die Synthese-Methode, mit der es im fermionischen Raum zerlegt wird (siehe Evolution.synthesis). Die Einstellung pro Gate bedeutet, dass die Auswahl durch alle Elemente geleitet wird, aus denen ein Gate besteht – einschließlich und UCC UCJ, die intern ihre eigenen Gates aufbauen. Dieser Durchlauf wendet stattdessen eine Methode auf jedes Element in Evolution einem Schaltkreis an, sodass die Auswahl einmalig für die gesamte Transpilations-Pipeline getroffen werden kann:

pm.optimization = FermionicPassManager(
    [FermionicTrotterization(FermionicSuzukiTrotter(order=2, reps=4))]
)

Jedes ausgewählte Gatter wird durch die Faktoren ersetzt, die seine Methode ausgibt, sodass der Durchlauf sowohl die Formel auswählt als auch ausführt. Knoten, die keine Evolution Gates sind, bleiben unberührt, ebenso wie diejenigen, die von einer optionalen Funktion abgelehnt werden filter.

Anmerkung

Ein erneuter Durchlauf ist unbedenklich: Die Faktoren, die eine Synthese-Methode ausgibt, sind Evolution.atomic, und ein atomares Gatter ist ein Endfaktor, den dieser Durchlauf unverändert belässt, anstatt ihn weiter aufzuteilen. Durch dieselbe Ausnahme wird der Pass zu einem festen Punkt über der Ausgabe von QDriftTrotterization, dessen abgetastete Gatter atomar sind, da die Zufallsauswahl die von ihm durchgeführte Trotterisierung darstellt.

Anmerkung

Stellen Sie apply auf ein, False um nur die Methode auszuwählen und die Erweiterung einer anderen Komponente zu überlassen, beispielsweise Qiskits oder Decompose einem Aufruf decompose() . Beachten Sie, dass ein Gate, das nie erweitert wird, das Fermion-zu-Qubit-Stadium vollständig erreicht, wo es abgebildet wird, ohne jemals Evolution.synthesis ausgelesen zu werden – und jede Synthesemethode liefert dann identische Ergebnisse.

Vorsicht

Nicht jedes Syntheseverfahren ist für jeden Anwender geeignet. Ein, dessen Evolution Operatoren alle miteinander kommutieren (beispielsweise die Diagonal-Coulomb-Operatoren eines ) UCJ, lässt sich in jeder Ordnung exakt synthetisieren, sodass eine höhere Ordnung lediglich die Tiefe vergrößert. Verwenden Sie, filter um den Zugang auf die Tore zu beschränken, die davon profitieren.

Die Erweiterung eines Operators, der keine enthält, groups erfolgt Term für Term, und ein einzelnes ai†aja^\dagger_i a_j ist nicht hermitesch, daher ist seine Exponentialfunktion nicht unitär. Es wird nichts gemeldet, bis der abgebildete Operator erreicht wird PauliEvolutionGate, wodurch eine Ausnahme ausgelöst wird ValueError: Operator contains complex coefficients, which are not supported. Die Zuordnung von Gruppen mit konjugierten Paaren ist es, die jeden Faktor hermitisch macht.

Die Initialisierung dieses Transpiler-Durchlaufs kann mit den unten aufgeführten Argumenten erfolgen.

Parameter

  • synthesis (FermionicEvolutionSynthesis) – die Fermion-zu-Fermion-Synthese-Methode, die auf die Gatter Evolution der Schaltung angewendet werden soll.
  • apply (bool) – ob jedes ausgewählte Gatter in seine Faktoren zerlegt werden soll, ergibt synthesis . Wenn False…, wird das Gate lediglich mit … markiert, und synthesis etwas anderes muss es später erweitern. Siehe apply.
  • filter (Callable[[DAGOpNode], bool] | None) – ein optionales Prädikat, das entscheidet, synthesis auf welche Evolution Knoten es angewendet werden soll. Es wird mit dem aufgerufen, und DAGOpNode der Knoten bleibt unverändert, sofern nicht zurückgegeben wird True. Wenn None (Standardeinstellung), wird jeder Knoten Evolution ausgewählt.

Attribute

synthesis

Das auf die ausgewählten Gatter angewandte Verfahren der Fermion-zu-Fermion-Synthese.

apply

Ob jedes ausgewählte Gatter in seine Faktoren zerlegt werden soll, ergibt synthesis .

In diesem Fall wählt der Durchlauf lediglich die Methode aus False: Er kennzeichnet jedes ausgewählte Gate mit synthesis und überlässt die Erweiterung demjenigen, der die Definition des Gates später erstellt, beispielsweise Qiskits oder Decompose einem decompose() Aufruf. Beachten Sie, dass ein Gate, das nie erweitert wird, vollständig in die Fermion-zu-Qubit-Phase gelangt, wo es abgebildet wird, ohne jemals Evolution.synthesis ausgelesen zu werden, und dass jede Synthesemethode dann identische Ergebnisse liefert.

filter

Das Prädikat, das auswählt, synthesis auf welche Evolution Knoten die Anwendung erfolgen soll.


Methoden

run

run(dag)

Führt diesen Transpilation-Durchlauf aus.

Jeder von akzeptierte Evolution Knoten filter wird durch die von erzeugten synthesis Faktoren ersetzt oder (wenn apply ist False) durch ein äquivalentes Gatter, das lediglich überträgt synthesis. Alle anderen Knoten bleiben unverändert. Der Eingabe-DAG wird an Ort und Stelle geändert.

Parameter

dag (DAGCircuit) – die Eingangsschaltung mit auf Fermionen basierenden Befehlen. Es DAGOpNode op werden nur Instanzen FermionicGate wie diese unterstützt.

Rückgabe

Die Ausgangsschaltung, die weiterhin auf ein fermionisches Register einwirkt.

Rückgabetyp

DAGCircuit

Vererbte Methoden

execute

execute(passmanager_ir, state, callback=None)

Optimierungsaufgabe für die Qiskit-IR-Eingabe ausführen.

Parameter

  • passmanager_ir (IR) – Qiskit IR zur Optimierung.
  • state (PassManagerState) – Zustand, der mit der Ausführung des Workflows durch den Pass-Manager selbst verbunden ist.
  • callback (Callable[[Task, IR_OUT, PropertySet, float, int], None] | None) – Eine Callback-Funktion, die bei jeder Ausführung einer Optimierungsaufgabe aufgerufen wird.

Rückgabe

Optimiertes Qiskit-IR und aktueller Stand des Workflows.

Rückgabetyp

Tupel [ IR_OUT, PassManagerState ]

name

name()

Name des Passes.

Rückgabetyp

str

update_status

update_status(state, run_state)

Status des Workflows aktualisieren.

Parameter

  • state (PassManagerState) – Übergeben Sie den Status des Managers zur Aktualisierung.
  • run_state (RunState) – Fertigstellungsstatus der aktuellen Aufgabe.

Rückgabe

Status des Pass-Managers aktualisiert.

Rückgabetyp

PassManagerState

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