Skip to main content
IBM Quantum Platform

バックエンド

qiskit_addon_mpf.backends

オプションの DynamicMPF アルゴリズムに


可用性

あるバックエンドが使えるかどうかは、基礎となるテンソルネットワークライブラリが使えるかどうかに依存する。 これは、以下のインジケータを使って実行時に簡単にアサートできる:

ハズ・クインブ

オプションの quimb 依存関係がインストールされているかどうかを示します。

ハス・テンピー

オプションの tenpy 依存関係がインストールされているかどうかを示します。


バックエンド

可用性(上記参照)に応じて、以下のバックエンドが利用可能です:

quimb_tebdA quimb-ベースのTEBDバックエンド。
quimb_layersを使用したレイヤーワイズ時間進化バックエンド。 quimb.
quimb_circuit回路を用いた時間発展バックエンド quimb.
tenpy_tebdA tenpy-ベースのTEBDバックエンド。
tenpy_layersを使用したレイヤーワイズ時間進化バックエンド。 tenpy.

インターフェース

これらの任意のバックエンドによって実装されるインターフェースは、以下のクラスで構成される:

進化者

class Evolver

GitHub

ベース: ABC

で使用される時間発展アルゴリズムのインターフェイスである。 DynamicMPF.

この時間進化インターフェイスは DynamicMPF.lhs そして DynamicMPF.rhs で使用され State オブジェクトを時間進化させる。 アルゴリズムの正確なメカニズムについては、以下を参照されたい。 DynamicMPF, Stateおよび setup_dynamic_lse().

conjugate

abstract property

タイプ: bool

この時間分解インスタンスが右辺で動作するかどうかを返します。

evolved_time

abstract property

タイプ: float

現在の進化時間を返します。

step

abstract step()

GitHub

この時間発展アルゴリズムの1つの時間ステップを実行する。

これは内部的に参照されている State オブジェクトに作用するはずである。 を左辺から進化させるか、右辺から進化させるかは、時間進化アルゴリズ ムのインスタンスに依存する。 State の値に依存する。 conjugate.

戻りの型

なし

状態

class State

GitHub

ベース: ABC

のインターフェースは DynamicMPF.evolution_state.

この時間発展状態は、LHSとRHSの間で共有される。 Evolver インスタンスの間で共有される。 DynamicMPF インスタンスの間で共有される。 このインターフェイスを実装する具体的なバックエンドがテンソル・ネットワークに基づいているほとんどの場合、この状態は行列積演算子(MPO)になる。 というのも、ほとんどの時間発展アルゴリズムでは、通常、下図に示すように、行列積状態(MPS)を進化させるからである。ここで、時間発展ブロック(U# )は、1次元のMPS(S# )に連続して適用される。ここでは、テンソルネットワークは時間が経つにつれて右に向かって成長している。

MPS Evolution

S0┄┄┲━━━━┱┄┄┄┄┄┄┄┄┲━━━━┱┄
│   ┃ U1 ┃        ┃ U5 ┃
S1┄┄┺━━━━┹┄┲━━━━┱┄┺━━━━┹┄
│          ┃ U3 ┃
S2┄┄┲━━━━┱┄┺━━━━┹┄┲━━━━┱┄ ...
│   ┃ U2 ┃        ┃ U6 ┃
S3┄┄┺━━━━┹┄┲━━━━┱┄┺━━━━┹┄
│          ┃ U4 ┃
S4┄┄┄┄┄┄┄┄┄┺━━━━┹┄┄┄┄┄┄┄┄

しかし、今回のケースでは、2つの時間進化エンジンが1つの状態を共有することを望んでいる。 そのためには、片方の状態を右から進化させ(先ほどと同じように U# )、もう片方の状態を左から進化させればよい(V# )。この場合、状態もその方向に向かう結合を持つ必要があり、以前の1次元のMPSではなく、2次元のMPO(M#)となる。

MPO Evolution

    ┄┲━━━━┱┄┄┄┄┄┄┄┄┲━━━━┱┄┄M0┄┄┲━━━━┱┄┄┄┄┄┄┄┄┲━━━━┱┄
     ┃ V5 ┃        ┃ V1 ┃  │   ┃ U1 ┃        ┃ U5 ┃
    ┄┺━━━━┹┄┲━━━━┱┄┺━━━━┹┄┄M1┄┄┺━━━━┹┄┲━━━━┱┄┺━━━━┹┄
            ┃ V3 ┃         │          ┃ U3 ┃
... ┄┲━━━━┱┄┺━━━━┹┄┲━━━━┱┄┄M2┄┄┲━━━━┱┄┺━━━━┹┄┲━━━━┱┄ ...
     ┃ V6 ┃        ┃ V2 ┃  │   ┃ U2 ┃        ┃ U6 ┃
    ┄┺━━━━┹┄┲━━━━┱┄┺━━━━┹┄┄M3┄┄┺━━━━┹┄┲━━━━┱┄┺━━━━┹┄
            ┃ V4 ┃         │          ┃ U4 ┃
    ┄┄┄┄┄┄┄┄┺━━━━┹┄┄┄┄┄┄┄┄┄M4┄┄┄┄┄┄┄┄┄┺━━━━┹┄┄┄┄┄┄┄┄

overlap

abstract overlap(initial_state)

GitHub

この状態と与えられた初期状態との重なりを計算する。

警告

このメソッドの具体的な実装では TypeErrorinitial_state を発生させなければなりません。

パラメーター

initial_state (Any) – オーバーラップを計算するための初期状態。

レイズ

TypeError - 提供された初期状態が互換性のない型を持っている場合。

戻り値

この状態と提供された状態の重なり。

戻りの型

複合

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