InitializeModes
class InitializeModes(occupation)
ベース: FermionicGate
フェルミオンモードの占有状態を準備する(あるいは、シミュレーション下では、これを検証する)。
このゲートは、それが配置されたモードでの動作意図を宣言します。 その動作は、回路の使用方法によって異なります:
- トランスパイル済み (量子ビットゲートに合成済み):状態を生成します。合成プラグインは、初期化ゲートに期待される通り、指定されたモードをその占有状態に設定するゲートを出力します。
- Simulated (
_apply_unitary_()): プロデューサーというよりは、 バリデータとして機能します。 状態ベクトルが与えられると、そのベクトルの振幅が、そのベクトルが定義occupationする部分空間内に収まっていることを確認し、ベクトルをそのまま返します。これにより、入力された状態が意図された基準であることを(ベクトルを変更することなく)保証し、その後の変換がその状態に対して正しく行われるようにします。
どちらのモードにおいても、ゲートは占有名のついた軌道のみ(また、スピンセクターごとに、そのセクターの軸に沿った方向のみ)を制限するため、複数のゲ InitializeModes ートを並列に配置して、状態の互いに交わらない断片を独立して生成することができます。例えば、スピンセクターごとに1つのゲート、あるいは軌道グループごとに1つのゲートを配置することが可能です。 スピンフル・ゲートは、単一のセクター(その一部を含む)をカバーすることも、両方のセクターを完全に指定することもできますが、両方のセクターに部分的にまたがる場合は拒否されます(参照 _apply_unitary_placed_())。
を使用して、ハートリー・フォック基準の占有状態を構築 from_hartree_fock() する。
これは初期の開発プロトタイプです。 このパッケージのプレリリース開発期間中、予告なしにインターフェースが変更される可能性があるため、ご注意ください。
このゲートのインスタンスの初期化は、以下に挙げる引数を使用して行うことができます。
パラメーター
occupation (Sequence[bool]) – このゲートによって初期化 FermionicRegister される各モードの占有状態を示すブール値のシーケンス。
属性
occupation
このゲートによって初期化 FermionicRegister される各モードの占有状態を示すブール値のシーケンス。
方法
from_hartree_fock
classmethod from_hartree_fock(norb, nelec)
のハートリー・フォック基準占有状態に対するゲートを構築する (norb, nelec)。
ハートリー・フォック行列式は、各スピンセクターの最も低いインデックスを持つ軌道で満たされる。 参照がスピンなしかスピンありかは、から推論される( nelec は、モード norb のスピンなし解釈を選択 int し、ペア (n_alpha, n_beta) は、モード 2 * norb のスピンありブロックスピン解釈を選択する)。 返されたゲートを対応するレジスタに配置し、ハートリー・フォック基準状態を認定する。
パラメーター
- norb (int) – 空間軌道の数。
- nelec (int |tuple[int, int]) – スピンを持たない系の場合は単一の整数、あるいはスピンαおよびスピンβのフェルミオンの数を表す整数のペアのいずれか。
戻り値
ハートリー・フォック行列を値とするアン・ InitializeModes ゲート。
昇給
ValueError – 電子数が、そのセクターで利用可能な軌道 norb 数を超える場合。
戻りの型
プロトコルの手法
_apply_unitary_placed_
_apply_unitary_placed_(vec, norb, nelec, copy, freg_indices)
は、このゲートの占有部分空間に限定 vec され、変更を加えることなく元の状態を返すことを保証する。
トランスフォームゲートとは異なり、このゲートは状態を変更しません。このゲートは、 vecの振幅が、そのが定義 occupation する部分空間に完全に含まれているかどうかを確認し、その場合は、を vec そのまま返します。 この部分空間とは、そのゲートが指定する軌道において、その占有状態がこのゲートと一致し、指定されていないすべての軌道が自由なまま残されるような行列式の集合である。つまり、部分的な占有(セクターの一部分)は、一連の行列式全体を受け入れ、このチェックは他の並列ゲート InitializeModes と合成可能である。
ゲートのローカルモード( occupation ローカルモードごとに1つのフラグ)は、次のようにしてグローバルレジスタに格納されます freg_indices:ローカルモードはグローバルモードを制約 i します freg_indices[i]。 その後、グローバルモードは以下の規約 (norb, nelec) に基づいて解釈される:
- スピンレス (
nelecとはint):そのモードnorbは直接軌道であり、検証はC(norb, nelec)次元空間上で行われる。 - スピンフル (
nelecペア):ブロック・スピン表記法では、モード はアルファ軌道0..norbであり、モード はベータ軌道norb..2*norbである。 単一のセクターに接するゲートは、そのセクターの状態(dim_a, dim_b)の軸(アルファゲートの場合は完全な行の集合、ベータゲートの場合は完全な列の集合)を制限し、もう一方の軸は自由に保つため、他のセクター上の並列ゲートと合成される。 ゲートが両方のセクターをカバーする場合もありますが、それはそのゲートが完全な行列式(両方のセクターのすべての軌道が指定され、未指定の軌道が残されていない状態)を固定する場合に限られます。一方、両方のセクターの一部の軌道を制限しつつ、他の軌道を未指定のままにする「 部分的なまたがり」は、軸ごとの部分空間の積ではなく、合成できないため、拒否されます(その場合は、セクターごとに1つのゲートを使用してください)。
この検証は「 閉じ込め 」を対象としており、「等しさ」を対象としているわけではない。入射振幅は、その部分空間内で任意の位相と振幅をとることができる(全体的な位相や正規化は物理的には無関係である)ため、これにより、特定の決定ベクトルに固定することなく、基準が妥当であることが確認される。
パラメーター
- vec (ndarray) – 検証対象の状態ベクトル。 その長さは、セク
(norb, nelec)タの寸法と一致していなければなりません。 - norb (int) – グローバル状態ベクトルの空間軌道数。
- nelec (int |tuple[int, int]) – スピンを持たない系の場合は単一の整数、あるいはスピンαおよびスピンβのフェルミオンの数を表す整数のペアのいずれか。 整数を選ぶと、スピンなしモードの解釈(モード
norbは軌道である)が選択され、ペアを選ぶと、モード2 * norbのスピンを含むブロック(orb, spin)・スピン解釈が選択される。 - copy (bool) – プロトコルに準拠していると認められるが、何の影響も及ぼさない――このゲートは状態を変化させないため、いずれにせよそのままが
vec返される。 - freg_indices (list[int]) – このゲートのローカルモードが写像される絶対(グローバル)モードのインデックス。
戻り値
占有部分空間への閉じ込めが確認されれば vec、入力は変更されずにそのままとなります。
昇給
ValueError – 占有モードがによって示唆される範囲外にある場合 norb;スピンを含むゲートが両方のスピンセクターに部分的にまたがっている場合(完全な行列式を固定しない場合); vecの長さがセクター (norb, nelec) の次元と一致しない場合;またはが、占有によって定義される部分空間の外側に振幅 vec を持つ場合。
戻りの型