FermionicCircuit
class FermionicCircuit(num_modes)
ベース: object
フェルミオン回路を表現するための QuantumCircuit ラッパー。
このクラスは、基盤となる.の完全なAPIと比較して、機能限定版のAPIを維持しています QuantumCircuit。 これは、(他の手法の中でも特に)フェルミオン回路に対して量子ビットベースのゲートを適用する機能を公開しないようにするためであり、一般の場合において、これは明確に定義された操作とはならないからである。
回路インスタンスの初期化は、以下に挙げる引数を使用して行うことができます。
パラメーター
num_modes (int) – この回路が作用するフェルミオンモードの数。
属性
metadata
再度公開します metadata。
modes
この回路が bits 作用するフェルミオンモード。
register
内部回路の FermionicRegister……
方法
append
append(gate, fargs, cargs=None, *, copy=True)
この回路 FermionicGate に を追加します。
パラメーター
-
gate (FermionicGate) – 適用するフェルミオンゲート。
-
fargs (Qubit |QuantumRegister |int |slice |Sequence[Qubit |int]) – このゲートが作用するフェルミオンモード。
-
cargs (None) –
このゲートが作用する古典的なビット。
警告現在、この種のゲートはサポートされていません。
昇給
ValueError – 指定された が のインスタンス gate でない場合 FermionicGate。
戻りの型
なし
count_ops
decompose
decompose(gates_to_decompose=None, reps=1)
再度公開します decompose()。
パラメーター
- gates_to_decompose (str |type[Instruction] | Sequence[str |type[Instruction]] | None)
- reps (int)
戻りの型
draw
プロトコルの手法
_apply_unitary_
_apply_unitary_(vec, norb, nelec, copy)
この回路をffsimの状態ベクトルに適用し、ffsimのプロトコルを実装します。
これは回路を位相順序で順にたどり、ffsimのプロトコル ffsim.SupportsApplyUnitary を通じて各命令のユニタリー効果を状態ベクトルに適用します(ローカルでは としてミラーリングされます SupportsApplyUnitary)。 レジスタのサブセットに対して作用する各命令については、適用される前に、そのフェルミオンモードのラベルが絶対(グローバル)インデックスに再ラベル付けされます。
詳細については _apply_unitary_placed_() を参照のこと。この手法では、回路のモードがベクトルのモードと一致することを前提としている 0..num_modes (すなわち、モード配置が単位行列となる場合)。
パラメーター
- vec (ndarray) – この回路を適用する状態ベクトル。 空の回路は、変更を加えずにそのまま返します。
- norb (int) – 空間軌道の数。
- nelec (int |tuple[int, int]) – スピンを持たない系のフェルミオン数を表す単一の整数、あるいはスピンαおよびスピンβのフェルミオン数を格納する整数のペアのいずれか。
- copy (bool) – 操作を行う前にベクトルをコピーするかどうか。
戻り値
変換後のベクトル。
昇給
- TypeError – 回路命令がffsimのプロトコル
ffsim.SupportsApplyUnitaryを実装していない場合。 - ValueError – 回路命令が、与えられた および
norbに対してそのユニタリーを適用しない場合nelec、あるいは、単純な プロトコ_apply_unitary_ルのみを実装する命令が、非同一モードのサブセットに配置された場合。
戻りの型
_apply_unitary_placed_
_apply_unitary_placed_(vec, norb, nelec, copy, freg_indices)
この回路のモードをベクトルのグローバルモードに設定した後、この回路を適用します。
これは、回路を位相順に順次処理し、ffsimのプロトコル ffsim.SupportsApplyUnitary を通じて、各命令のユニタリ効果を状態ベクトルに適用します。 各命令固有のモードは、まずこの回路の配置を通じてマッピングされます。すなわち、回路ローカルモードはグローバルモードにマッピング m されるため freg_indices[m]、回路ローカルモードに対して作用するサブ命令は、グローバルモードに対して適用 [m0, m1, ...] されます [freg_indices[m0], freg_indices[m1], ...]。 同一配置の場合、 freg_indices == 0..num_modes これはまさにその通りです _apply_unitary_()。部分配置では、この回路は、より大きなレジスタの部分集合(例: UCJ)に配置されたゲートの定義として機能します。 この配置を意識した拡張機能については、――として文書化されており、これはパッケージ固有のプロトコルであり SupportsApplyUnitaryPlaced 、ffsim には同等の機能はありません。
命令は、配置を意識した拡張 _apply_unitary_placed_ (SupportsApplyUnitaryPlaced) を実装している場合にのみ、その絶対モードに配置されます。ffsim の通常の ( _apply_unitary_SupportsApplyUnitary ) のみを実装する命令(モード引数を持たないため、ベクト 0..k ルのモード に対して作用します)は、その配置が恒等配置 である場合にのみ有効となります [0, 1, ..., k-1]。それ以外の部分集合では、配置を表現することができないため、誤ったモードに対して黙って適用されることなく、その命令は拒否されます。
パラメーター
- vec (ndarray) – この回路を適用する状態ベクトル。 空の回路は、変更を加えずにそのまま返します。
- norb (int) – グローバル状態ベクトルの空間軌道数。
- nelec (int |tuple[int, int]) – スピンを持たない系のフェルミオン数を表す単一の整数、あるいはスピンαおよびスピンβのフェルミオン数を格納する整数のペアのいずれか。
- copy (bool) – 操作を行う前にベクトルをコピーするかどうか。
- freg_indices (list[int]) – この回路のモードが対応する絶対(グローバル)モードのインデックス。
戻り値
変換後のベクトル。
昇給
- TypeError – 回路命令がffsimのプロトコル
ffsim.SupportsApplyUnitaryを実装していない場合。 - ValueError – 回路命令が、与えられた および
norbに対してそのユニタリーを適用しない場合nelec、あるいは、単純な プロトコ_apply_unitary_ルのみを実装する命令が、非同一モードのサブセットに配置された場合。
戻りの型