Skip to main content
IBM Quantum Platform

UCJ

class UCJ(ucj_op)

ベース: FermionicGate

(局所)ユニタリー・クラスター・ジャストロ((L)UCJ)の仮説を実装する。

単一クラスター・ジャストロ演算子は、以下の形式をとる

(∏k=1LUk eiJk Uk†)Ufinal\left(\prod_{k=1}^{L} \mathcal{U}_k\, e^{i \mathcal{J}_k}\, \mathcal{U}_k^\dagger\right) \mathcal{U}_\text{final}

ここで、各 Uk\mathcal{U}_k は OrbitalRotation、各 Jk\mathcal{J}_k は対角クーロン演算子である

J=12∑ij,στJijστ niσ njτ,\mathcal{J} = \frac12 \sum_{ij,\sigma\tau} \mathbf{J}^{\sigma\tau}_{ij}\, n_{i\sigma}\, n_{j\tau},

また、 Ufinal\mathcal{U}_\text{final} は、任意の最終軌道回転です。 LL の項の数は、アンザッツの反復回数に相当する。

この演算子自体は ffsimによって構築されており、このゲートによってそれが.に変換されます FermionicCircuit。 この役割分担は意図的なものです。ffsimはアンザッツ数学( t2t_2 振幅の二重因数分解、圧縮された変種、変分最適化アルゴリズムが駆動するパラメータベクトルのパッキング)を担当し、一方、このゲートは結果をフェルミオンモードとして表現するため、トランスパイラーは任意のフェルミオンから量子ビットへのエンコーディングを通じてこれを低位化することができます。 ffsim演算子を変更せずにそのまま渡すことで、両者の一貫性が保たれます。詳細は、 ffsimリレーションシップガイドを参照してください。

ffsimの3つのUCJ演算子のいずれかを受け付けます。その型によって、このゲートが作用するスピンバリアントとモード数が決定されます:

  • UCJOpSpinBalanced 2 * norb ブロックスピンモードに作用し、両方のスピンセクターで1つの軌道回転が共有され、対 [alpha-alpha, alpha-beta] 角クーロン行列を持つ(β-βはα-αを再利用し、β-αはα-βを再利用する)。
  • UCJOpSpinUnbalanced 2 * norb ブロックスピンモードに作用し、それぞれ独立した [alpha, beta] 回転と [alpha-alpha, alpha-beta, beta-beta] 行列を持つ。
  • UCJOpSpinless norb スピンレスモードに対して作用する。
注

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]) – このゲートのローカルモードが写像される絶対(グローバル)モードのインデックス。

戻り値

変換後のベクトル。

戻りの型

ndarray

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