PrepareSlaterDeterminant
class PrepareSlaterDeterminant(occupation, rotation_unitary)
Basen: FermionicGate
Ermittelt eine Slater-Determinante aus einer Besetzung und einer Orbitalrotation.
Dieses Gatter setzt sich aus einer InitializeModes Referenzbelegung gefolgt von einem zusammen OrbitalRotation: Es legt fest, dass die Moden, auf die es einwirkt, in der durch definierten Determinante beginnen und occupation anschließend um gedreht werden rotation_unitary. Da die anfängliche Belegung bekannt ist, kann bei der Transpilation dieses Gatters die rechteckige Zerlegung für givens_decomposition_slater() eine Synthese mit reduzierter Gatteranzahl (siehe GivensDecompositionSlaterDeterminantSynthesis) verwendet werden, anstatt der vollständigen quadratischen Zerlegung, die ein OrbitalRotation allein erfordern würde.
Gemäß der Konvention OrbitalRotation werden die besetzten Moden durch Rotation auf die entsprechenden Spalten von abgebildet rotation_unitary; diese Spalten spannen den besetzten Raum des vorbereiteten Slater-Determinanten ab.
Simulationssemantik
In der Simulation handelt es sich bei diesem Gatter um ein „Validate-then-Rotate“-Gatter und nicht um einen Zustandsgenerator: Bei einem eingehenden Zustandsvektor wird geprüft, ob der Vektor auf den durch definierten occupation Unterraum beschränkt ist (über InitializeModes), und anschließend wird angewendet ( rotation_unitary über OrbitalRotation). Daher ist ein realer Referenzzustandsvektor erforderlich, der extern bereitgestellt wird (z. B. über ffsim.slater_determinant()). Das Verhalten des Generators – das Ausgeben der Gates, die die Referenzbelegung festlegen – ist im Synthese-Plugin implementiert, nicht im Simulationspfad.
Das Anwenden (anstatt das Weglassen) der Rotation gewährleistet, dass das Zusammenführen eines InitializeModes und eines zu OrbitalRotation diesem einzelnen Gatter den simulierten Endzustand unverändert lässt.
Dies ist ein früher Entwicklungsprototyp. Bitte beachten Sie, dass es während der Vorab-Entwicklungsphase dieses Pakets ohne Vorankündigung zu Änderungen an der Benutzeroberfläche kommen kann.
Die Initialisierung einer Instanz dieses Gatters kann mit den unten aufgeführten Argumenten erfolgen.
Parameter
- occupation (Sequence[bool]) – eine Folge von Booleschen Werten, die den Referenzzustand für jeden Modus angibt, auf den dieses Gatter einwirkt.
- rotation_unitary (np.ndarray) – Die unitäre Matrix „ “ definiert die Orbitalrotation über , wobei die Anzahl der Moden (
len(occupation)) ist. Sie muss quadratisch und unitär sein; dies liegt in der Verantwortung des Aufrufers und wird nicht überprüft.
Erhöhungen
ValueError – wenn keine quadratische Matrix ist rotation_unitary , deren Dimension mit der Länge von übereinstimmt occupation.
Attribute
occupation
Der Referenzberuf (ein boolescher Wert pro Modus), auf den die Drehung angewendet wird.
rotation_unitary
Die Einheitsmatrix, die die Drehkoeffizienten der Bahnen darstellt.
Protokollmethoden
_apply_unitary_placed_
_apply_unitary_placed_(vec, norb, nelec, copy, freg_indices)
Überprüft den Referenzberuf und wendet die Rotation an, wobei die Modi auf platziert werden vec.
Abbilder auf die Definition des Tors (_build_definition()): Das vorangestellte InitializeModes stellt sicher, dass auf den von definierten occupation Unterraum beschränkt vec ist, und das nachfolgende dreht OrbitalRotation diesen. Siehe diese Gatter für _apply_unitary_placed_ die vollständige Semantik (Unterraum-Einschränkung und die Ablehnung von Spin-Mischungsrotationen).
Parameter
- vec (ndarray) – der Referenzzustandsvektor, der validiert und gedreht werden soll.
- norb (int) – die Anzahl der räumlichen Orbitalen des globalen Zustandsvektors.
- nelec (int |tuple[int, int]) – entweder eine einzelne ganze Zahl für ein spinloses System oder ein Paar ganzer Zahlen, das die Anzahl der Alpha- und Beta-Fermionen angibt.
- copy (bool) – ob der Vektor vor der Bearbeitung kopiert werden soll.
- freg_indices (list[int]) – die absoluten (globalen) Modenindizes, auf die die lokalen Moden dieses Gatters abgebildet werden.
Rückgabe
Der transformierte Vektor.
Rückgabetyp