Back-Ends
qiskit_addon_mpf.backends
Optionale Backends für den DynamicMPF algorithmus.
Verfügbarkeit
Ob ein bestimmtes Backend verwendet werden kann, hängt von der Verfügbarkeit der zugrunde liegenden Tensornetzbibliothek ab. Dies kann zur Laufzeit mit Hilfe der folgenden Indikatoren leicht überprüft werden:
HAS_QUIMB
Zeigt an, ob die optionale quimb abhängigkeit installiert ist.
HAT_TENPY
Zeigt an, ob die optionale tenpy abhängigkeit installiert ist.
Back-Ends
Je nach Verfügbarkeit (siehe oben) sind folgende Backends verfügbar:
Kolumne „ 1 “ | Kolumne „ 2 “ |
|---|---|
quimb_tebd | A quimb-basierten TEBD-Backend. |
quimb_layers | Ein schichtweises Zeit-Evolutions-Backend mit quimb. |
quimb_circuit | Ein schaltkreisbasiertes Zeitentwicklungs-Backend mit quimb. |
tenpy_tebd | A tenpy-basierten TEBD-Backend. |
tenpy_layers | Ein schichtweises Zeit-Evolutions-Backend mit tenpy. |
Schnittstelle
Die Schnittstelle, die von jedem dieser optionalen Backends implementiert wird, besteht aus den folgenden Klassen:
Evolver
class Evolver
Basen: ABC
Die Schnittstelle für die Zeitentwicklungsalgorithmen, die in DynamicMPF.
Diese Schnittstelle zur Zeitentwicklung wird von den Programmen DynamicMPF.lhs und DynamicMPF.rhs verwendet und sollte die Zeitentwicklung eines State objekt unter seiner Haube. Der genaue Mechanismus des Algorithmus wird in DynamicMPF, State, und setup_dynamic_lse().
conjugate
abstract property
Typ: bool
Gibt zurück, ob diese Time-Evolver-Instanz auf der rechten Seite agiert.
evolved_time
abstract property
Typ: float
Gibt die aktuelle Entwicklungszeit zurück.
step
abstract step()
Führen Sie einen einzigen Zeitschritt dieses Zeitentwicklungsalgorithmus durch.
Dies sollte auf das intern referenzierte State objekt (für das diese Schnittstelle keinen Namen vorgibt). Ob diese Instanz des Zeit-Evolutions-Algorithmus die State von der linken oder rechten Seite entwickeln soll, hängt vom Wert von conjugate.
Rückgabetyp
Keine
Status
class State
Basen: ABC
Die Schnittstelle für die DynamicMPF.evolution_state.
Dieser Zeitentwicklungszustand wird zwischen den LHS- und RHS Evolver instanzen der DynamicMPF instanz. In den meisten Fällen, in denen ein konkretes Backend, das diese Schnittstelle implementiert, auf Tensornetzen basiert, wird dieser Zustand ein Matrixproduktoperator (MPO) sein. Dies liegt daran, dass die meisten Zeitentwicklungsalgorithmen normalerweise einen Matrixproduktzustand (MPS) entwickeln, wie unten dargestellt, wo Zeitentwicklungsblöcke (U#) nacheinander auf ein eindimensionales MPS (S#) angewendet werden. Hier wächst das Tensornetzwerk mit der Zeit nach rechts.
MPS Evolution
S0┄┄┲━━━━┱┄┄┄┄┄┄┄┄┲━━━━┱┄
│ ┃ U1 ┃ ┃ U5 ┃
S1┄┄┺━━━━┹┄┲━━━━┱┄┺━━━━┹┄
│ ┃ U3 ┃
S2┄┄┲━━━━┱┄┺━━━━┹┄┲━━━━┱┄ ...
│ ┃ U2 ┃ ┃ U6 ┃
S3┄┄┺━━━━┹┄┲━━━━┱┄┺━━━━┹┄
│ ┃ U4 ┃
S4┄┄┄┄┄┄┄┄┄┺━━━━┹┄┄┄┄┄┄┄┄In unserem Fall wollen wir jedoch, dass sich zwei Zeitentwicklungsmaschinen einen einzigen Zustand teilen. Um dies zu erreichen, können wir einen von ihnen den Zustand von rechts entwickeln lassen (genau wie zuvor, U#), aber den zweiten den Zustand von links entwickeln lassen (V#). Dies erfordert, dass der Zustand auch Bindungen hat, die in diese Richtung gehen, was ihn zu einem zweidimensionalen MPO (M#) macht und nicht zu dem eindimensionalen MPS von vorher.
MPO Evolution
┄┲━━━━┱┄┄┄┄┄┄┄┄┲━━━━┱┄┄M0┄┄┲━━━━┱┄┄┄┄┄┄┄┄┲━━━━┱┄
┃ V5 ┃ ┃ V1 ┃ │ ┃ U1 ┃ ┃ U5 ┃
┄┺━━━━┹┄┲━━━━┱┄┺━━━━┹┄┄M1┄┄┺━━━━┹┄┲━━━━┱┄┺━━━━┹┄
┃ V3 ┃ │ ┃ U3 ┃
... ┄┲━━━━┱┄┺━━━━┹┄┲━━━━┱┄┄M2┄┄┲━━━━┱┄┺━━━━┹┄┲━━━━┱┄ ...
┃ V6 ┃ ┃ V2 ┃ │ ┃ U2 ┃ ┃ U6 ┃
┄┺━━━━┹┄┲━━━━┱┄┺━━━━┹┄┄M3┄┄┺━━━━┹┄┲━━━━┱┄┺━━━━┹┄
┃ V4 ┃ │ ┃ U4 ┃
┄┄┄┄┄┄┄┄┺━━━━┹┄┄┄┄┄┄┄┄┄M4┄┄┄┄┄┄┄┄┄┺━━━━┹┄┄┄┄┄┄┄┄overlap
abstract overlap(initial_state)
Berechnen Sie die Überlappung dieses Zustands mit dem angegebenen Ausgangszustand.
Eine konkrete Implementierung dieser Methode sollte ein TypeError auslösen, wenn das bereitgestellte initial_state Objekt vom implementierenden Backend nicht unterstützt wird.
Parameter
initial_state (Any) – den Ausgangszustand, mit dem die Überlappung berechnet wird.
Erhöht
TypeError - wenn der angegebene Ausgangszustand einen inkompatiblen Typ hat.
Rückgabe
Die Überschneidung dieses Zustands mit dem vorgesehenen Zustand.
Rückgabetyp