Skip to main content
IBM Quantum Platform

PrepareSlaterDeterminant

class PrepareSlaterDeterminant(occupation, rotation_unitary)

ベース: FermionicGate

占有状態と軌道回転からスレーター行列式を算出します。

このゲートは、参照 InitializeModes 操作とそれに続く の組み合わせで構成されています OrbitalRotation。これは、このゲートが作用するモードが、 によって定義される決定子から始まり、 occupation その後 だけ回転されることを表しています rotation_unitary。 初期占有がわかっているため、このゲートをトランスパイルする際には、a のみ OrbitalRotation の場合に必要な完全な正方形の分解ではなく、長方形の分解を用いてゲート数を削減 givens_decomposition_slater() した合成を行うことができます(参照 GivensDecompositionSlaterDeterminantSynthesis)。

aijUjiaja^\dagger_i \mapsto \sum_j U_{ji} a^\dagger_jOrbitalRotation 規約に従い、占有モードを回転させると、それらは の対応する列に写像される rotation_unitary。これらの列は、準備されたスレーター行列式の占有空間を張る。

シミュレーション意味論

シミュレーションにおいて、このゲートは「 検証後回転(validate-then-rotate)」 であり、状態生成器ではありません。入力として状態ベクトルが与えられると、そのベクトルが( via InitializeModes)によって定義 occupation される部分空間に収まっていることを検証し、その後( rotation_unitary via OrbitalRotation)を適用します。 したがって、外部で(例えば、…を介して ffsim.slater_determinant())準備された実際の基準状態ベクトルが必要となる。 プロデューサーの動作(基準占有率を設定するゲートを出力する)は、シミュレーションパスではなく、合成プラグイン内に実装されています。

回転を適用する(取り除くのではなく)ことで、とをこの単一のゲート OrbitalRotation に統合しても InitializeModes 、シミュレーションによる最終状態が変化しないことが保証される。

警告

これは初期の開発プロトタイプです。 このパッケージのプレリリース開発期間中、事前の予告なしにインターフェースが変更される可能性があるため、ご注意ください。

このゲートのインスタンスの初期化は、以下に挙げる引数を使用して行うことができます。

パラメーター

  • occupation (Sequence[bool]) – このゲートが作用する各モードについて、参照職業を示すブール値の列。
  • rotation_unitary (np.ndarray) – n×nn \times n のユニタリ行列 UU は、 aijUjiaja^\dagger_i \mapsto \sum_j U_{ji} a^\dagger_j を通じて軌道回転を定義する。ここで、 nn はモードの数(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]) – このゲートのローカルモードが写像される、絶対(グローバル)モードのインデックス。

戻り値

変換後のベクトル。

戻りの型

ndarray

このページは役に立ちましたか?
バグや誤字の報告、またはコンテンツの要求はGitHubで行ってください。