Skip to main content
IBM Quantum Platform

FermionicCircuit

class FermionicCircuit(num_modes)

ベース: object

フェルミオン回路を表現するための QuantumCircuit ラッパー。

このクラスは、基盤となる.の完全なAPIと比較して、機能限定版のAPIを維持しています QuantumCircuit。 これは、(他の手法の中でも特に)フェルミオン回路に対して量子ビットベースのゲートを適用する機能を公開しないようにするためであり、一般の場合において、これは明確に定義された操作とはならないからである。

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

パラメーター

num_modes (int) – この回路が作用するフェルミオンモードの数。


属性

metadata

再度公開します metadata

modes

この回路が bits 作用するフェルミオンモード。

register

種類: FermionicRegister

内部回路の FermionicRegister……


方法

append

append(gate, fargs, cargs=None, *, copy=True)

この回路 FermionicGate に を追加します。

パラメーター

  • gate (FermionicGate) – 適用するフェルミオンゲート。

  • fargs (Qubit |QuantumRegister |int |slice |Sequence[Qubit |int]) – このゲートが作用するフェルミオンモード。

  • cargs (None) –

    このゲートが作用する古典的なビット。

    警告

    現在、この種のゲートはサポートされていません。

  • copy (bool) – に転送しました append()

昇給

ValueError – 指定された が のインスタンス gate でない場合 FermionicGate

戻りの型

なし

count_ops

count_ops()

再度公開します count_ops()

戻りの型

OrderedDict [ str, int ]

decompose

decompose(gates_to_decompose=None, reps=1)

再度公開します decompose()

パラメーター

戻りの型

FermionicCircuit

draw

draw(*args, **kwargs)

内部回路のメソッド 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_ ルのみを実装する命令が、非同一モードのサブセットに配置された場合。

戻りの型

ndarray

_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_ ルのみを実装する命令が、非同一モードのサブセットに配置された場合。

戻りの型

ndarray

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