Skip to main content
IBM Quantum Platform

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_tebdA quimb-basierten TEBD-Backend.
quimb_layersEin schichtweises Zeit-Evolutions-Backend mit quimb.
quimb_circuitEin schaltkreisbasiertes Zeitentwicklungs-Backend mit quimb.
tenpy_tebdA tenpy-basierten TEBD-Backend.
tenpy_layersEin 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

GitHub

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()

GitHub

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

GitHub

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)

GitHub

Berechnen Sie die Überlappung dieses Zustands mit dem angegebenen Ausgangszustand.

Achtung

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

Komplex

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