PrepareSlaterDeterminant
class PrepareSlaterDeterminant(occupation, rotation_unitary)
ベース: FermionicGate
占有状態と軌道回転からスレーター行列式を算出します。
このゲートは、参照 InitializeModes 操作とそれに続く の組み合わせで構成されています OrbitalRotation。これは、このゲートが作用するモードが、 によって定義される決定子から始まり、 occupation その後 だけ回転されることを表しています rotation_unitary。 初期占有がわかっているため、このゲートをトランスパイルする際には、a のみ OrbitalRotation の場合に必要な完全な正方形の分解ではなく、長方形の分解を用いてゲート数を削減 givens_decomposition_slater() した合成を行うことができます(参照 GivensDecompositionSlaterDeterminantSynthesis)。
の OrbitalRotation 規約に従い、占有モードを回転させると、それらは の対応する列に写像される rotation_unitary。これらの列は、準備されたスレーター行列式の占有空間を張る。
シミュレーション意味論
シミュレーションにおいて、このゲートは「 検証後回転(validate-then-rotate)」 であり、状態生成器ではありません。入力として状態ベクトルが与えられると、そのベクトルが( via InitializeModes)によって定義 occupation される部分空間に収まっていることを検証し、その後( rotation_unitary via OrbitalRotation)を適用します。 したがって、外部で(例えば、…を介して ffsim.slater_determinant())準備された実際の基準状態ベクトルが必要となる。 プロデューサーの動作(基準占有率を設定するゲートを出力する)は、シミュレーションパスではなく、合成プラグイン内に実装されています。
回転を適用する(取り除くのではなく)ことで、とをこの単一のゲート OrbitalRotation に統合しても InitializeModes 、シミュレーションによる最終状態が変化しないことが保証される。
これは初期の開発プロトタイプです。 このパッケージのプレリリース開発期間中、事前の予告なしにインターフェースが変更される可能性があるため、ご注意ください。
このゲートのインスタンスの初期化は、以下に挙げる引数を使用して行うことができます。
パラメーター
- occupation (Sequence[bool]) – このゲートが作用する各モードについて、参照職業を示すブール値の列。
- rotation_unitary (np.ndarray) – のユニタリ行列 は、 を通じて軌道回転を定義する。ここで、 はモードの数(
len(occupation))である。この行列は正方行列かつユニタリでなければならない。これは呼び出し側の責任であり、検証は行われない。
昇給
ValueError – が、の長さと次元が一致する正方行列 rotation_unitary でない場合 occupation。
属性
occupation
回転が適用される参照オブジェクト(モードごとに1つのブール値)。
rotation_unitary
軌道回転係数を表す単位行列。
プロトコルの手法
_apply_unitary_placed_
_apply_unitary_placed_(vec, norb, nelec, copy, freg_indices)
参照職業を検証し、回転を適用して、モードを に配置します vec。
ゲートの定義(_build_definition())への代入:先頭の は、 が によって定義 occupation される部分空間に限定されている vec ことを検証 InitializeModes し、続く はそれを回転 OrbitalRotation させる。 完全な意味論(部分空間の閉じ込めとスピン混合回転の排除)については _apply_unitary_placed_ 、それらのゲートを参照してください。
パラメーター
- vec (ndarray) – 検証および回転を行うための基準状態ベクトル。
- norb (int) – グローバル状態ベクトルの空間軌道数。
- nelec (int |tuple[int, int]) – スピンを持たない系の場合は単一の整数、あるいはスピンαおよびスピンβのフェルミオンの数を表す整数のペアのいずれか。
- copy (bool) – 操作を行う前にベクトルをコピーするかどうか。
- freg_indices (list[int]) – このゲートのローカルモードが写像される、絶対(グローバル)モードのインデックス。
戻り値
変換後のベクトル。
戻りの型