UCJ
class UCJ(ucj_op)
ベース: FermionicGate
(局所)ユニタリー・クラスター・ジャストロ((L)UCJ)の仮説を実装する。
単一クラスター・ジャストロ演算子は、以下の形式をとる
ここで、各 は OrbitalRotation、各 は対角クーロン演算子である
また、 は、任意の最終軌道回転です。 の項の数は、アンザッツの反復回数に相当する。
この演算子自体は ffsimによって構築されており、このゲートによってそれが.に変換されます FermionicCircuit。 この役割分担は意図的なものです。ffsimはアンザッツ数学( 振幅の二重因数分解、圧縮された変種、変分最適化アルゴリズムが駆動するパラメータベクトルのパッキング)を担当し、一方、このゲートは結果をフェルミオンモードとして表現するため、トランスパイラーは任意のフェルミオンから量子ビットへのエンコーディングを通じてこれを低位化することができます。 ffsim演算子を変更せずにそのまま渡すことで、両者の一貫性が保たれます。詳細は、 ffsimリレーションシップガイドを参照してください。
ffsimの3つのUCJ演算子のいずれかを受け付けます。その型によって、このゲートが作用するスピンバリアントとモード数が決定されます:
UCJOpSpinBalanced2 * norbブロックスピンモードに作用し、両方のスピンセクターで1つの軌道回転が共有され、対[alpha-alpha, alpha-beta]角クーロン行列を持つ(β-βはα-αを再利用し、β-αはα-βを再利用する)。UCJOpSpinUnbalanced2 * norbブロックスピンモードに作用し、それぞれ独立した[alpha, beta]回転と[alpha-alpha, alpha-beta, beta-beta]行列を持つ。UCJOpSpinlessnorbスピンレスモードに対して作用する。
ffsimはスピンを持つセクターにおいても成立 UCJOpSpinless し、そのテンソルはクロススピン項なしに両方のスピンセクターに作用する。 ゲートは構築時に幅を固定する必要があるため、このゲートは常にそのタイプを norbシングルモードレジスタとして認識します。 2レジスタ読み取りを、アルファ・ベータ・ブロック UCJOpSpinBalanced がゼロである として構築する。これは同じ演算子である。
ffsim は Windows をサポートしていない( PySCF への無条件依存関係のため)ため、このゲートでは ffsim extra(pip install "qiskit-fermions[ffsim]") が必要となり、Windows では利用できません。 Windowsで WSL を使用します。
これは初期の開発用プロトタイプです。 このパッケージのプレリリース開発期間中、予告なしにインターフェースが変更される可能性があるため、ご注意ください。
>>> import ffsim
>>> from qiskit_fermions.circuit.library import UCJ
>>> ucj_op = ffsim.random.random_ucj_op_spin_balanced(3, n_reps=1, seed=1234)
>>> gate = UCJ(ucj_op)
>>> gate.norb, gate.num_modes, gate.n_reps
(3, 6, 1)
このゲートのインスタンスの初期化は、以下に挙げる引数を使用して行うことができます。
パラメーター
ucj_op (Any) – 回路を構築するための ffsim UCJ オペレータとして、 UCJOpSpinBalanced、または UCJOpSpinUnbalanced のいずれかを選択します UCJOpSpinless。 その型によって、このゲートが作用するスピンバリエーションとモードの数が決まります(クラスのドキュメント文字列を参照してください)。
昇給
- MissingOptionalLibraryError –
ffsimがインストールされていない場合。 - TypeError – が ffsim の 3 種類の UCJ 演算子のいずれにも該当
ucj_opしない場合。
属性
n_reps
アンザッツの繰り返し回数。
norb
空間軌道の数。
ucj_op
このゲートが回路を構成するために使用する ffsim UCJ 演算子。
プロトコルの手法
_apply_unitary_placed_
_apply_unitary_placed_(vec, norb, nelec, copy, freg_indices)
そのモードをベクトルのグローバルモードに割り当てた後、そのアンザッツを適用します。
これにより、ゲートの定義(反復ごとの軌道回転および対角クーロン演算)が構築され、それが に適用されます vec。この際、定義回路はグローバルモード上に配置され( freg_indices その各命令は、対応する絶対モードに再ラベル付けされます)。 正確なゲートシーケンス _define() については、こちらを参照してください。
パラメーター
- vec (ndarray) – 作用させる状態ベクトル。
- norb (int) – グローバル状態ベクトルの空間軌道数。
- nelec (int |tuple[int, int]) – スピンを持たない系の場合は単一の整数、あるいはスピンαおよびスピンβのフェルミオンの数を表す整数のペアのいずれか。
- copy (bool) – 操作を行う前にベクトルをコピーするかどうか。
- freg_indices (list[int]) – このゲートのローカルモードが写像される絶対(グローバル)モードのインデックス。
戻り値
変換後のベクトル。
戻りの型