Skip to main content
IBM Quantum Platform

境界

qiskit_addon_slc.bounds

バインドされた計算関数。

このモジュールは、シェーディングされたライトコーンを構成する誤差範囲を計算するためのさまざまな関数を提供します。

compute_forward_bounds

compute_forward_bounds(circuit, noise_model_paulis, /, observable, *, evolution_max_terms=1000000, eigval_max_qubits=14, atol=1e-08, atol_simplify=1e-08, atol_eigenvalue=1e-08, **kwargs)

GitHub

順方向進化による不等時間コミューテーターの上限を計算する。

回路の末端から開始し、対象回路内の各ノイズを含む層について、すべてのパウリ誤差項に対する順方向進化による不等時間コミューテーターの上限を計算する。

つまり、すべての誤差項について、 [EF,AF]2\| \left[ E_F, A_F \right] \|_2 を計算する。ここで、 EFE_F であり、 AFA_F は、上で測定されるべき observable 目標値である circuit

誤差項 EIE_I は、によって決まる noise_model_paulis。 この辞書は、ノイズモデルの識別子(samplomatic.InjectNoise.ref)を、パウリ誤差項のリストにマッピングします。 に対する反復処理中に、一致する InjectNoise アノテーション BoxOp を持つ が見つかるたびに、対応する用語が使用されます circuit

バージョン 0.2.0 以降、非推奨となっています

qiskit_addon_slc.bounds.forward.compute_forward_bounds()の引数は、qiskit-addon-slc 0.2.0 以降、非推奨となっています atol 。 リリース日から3ヶ月以上経過してから削除されます。 代わりに atol_simplify および atol_eigenvalue を使用してください。

パラメーター

  • circuit (QuantumCircuit) – 対象回路。
  • noise_model_paulis (dict[str, QubitSparsePauliList]) – 各ノイズモデルについて考慮すべきパウリ誤差項。
  • observable (Pauli |PauliList |SparseObservable |SparsePauliOp) – 回路の末端で測定される対象の観測量。
  • evolution_max_terms (int) – 進化の過程で追跡する演算子項の最大数。
  • eigval_max_qubits (int) – 固有値の計算が試みられる、コミューテーターの量子ビットの最大数。 この値を超えた場合、その境界は、より単純で緩やかな三角不等式を用いて近似される。
  • atol (float) –** 非推奨です。 **atol_eigenvalue 代わりに と atol_simplify を使用してください!
  • atol_simplify (float) – コミューテータから項を削除する際に用いられる絶対許容誤差。 この許容誤差を緩めると、コミューテーターの項の切り捨てがさらに大きくなり、固有値の計算は効率的になるものの、精度は低下する。
  • atol_eigenvalue (float) – コミューテータの固有値の収束を判定するために用いられる絶対許容誤差。 この許容誤差を緩めると、反復型Davidson固有値ソルバーによって計算される固有値の精度が低下します。
  • kwargs – 追加のキーワード引数はすべて に渡されます compute_bounds()

戻り値

不等時間コミューテーターの境界値。

昇給

NotImplementedError – (その式が)1つ以上のパウリ項を含む observable 場合。 このような状況に遭遇した場合は、対象となる各パウリについて、この関数を個別に呼び出す必要があります。

戻りの型

dict [ str, PauliLindbladMap ]

tighten_with_speed_limit

tighten_with_speed_limit(bounds, circuit, noise_model_paulis, /, observable)

GitHub

情報の伝播速度に制限を設けることで、与えられた境界を厳密化する。

リーブ・ロビンソン境界の背後にある考え方に着想を得て、この関数は、情報伝播速度の限界を活用することで、以前に計算された前方進化による不等時間コミューテーターの境界をさらに厳密化しています(こちらも参照 compute_forward_bounds())。

パラメーター

戻り値

不等時間コミューテーターの境界に関する、より厳密な結果。

昇給

  • NotImplementedError – (その式が)1つ以上のパウリ項を含む observable 場合。 このような状況に遭遇した場合は、対象となる各パウリについて、この関数を個別に呼び出す必要があります。
  • ValueError – 2個以上の量子ビットに作用するゲートに遭遇した場合。

戻りの型

dict [ str, PauliLindbladMap ]

compute_backward_bounds

compute_backward_bounds(circuit, noise_model_paulis, /, *, evolution_max_terms=1000000, **kwargs)

GitHub

後方進化による不等時間コミューテーターの上限を計算する。

回路の先頭から開始し、対象回路内の各ノイズを含む層について、すべてのパウリ誤差項に対する後方進化による不等時間コミューテーターの上限を計算する。

すなわち、すべての誤差項について、 [EI,ρI]1\| \left[ E_I, \rho_I \right] \|_1 (シャッテン1ノルム、別名核ノルムを用いて)を計算する。ここで、 EIE_I であり、 ρI\rho_I は、のすべてのアクティブな量子ビットにおいて、すべてゼロの状態、 00\ket{0 \ldots 0} であると仮定する circuit

誤差項 EIE_I は、によって決まる noise_model_paulis。 この辞書は、ノイズモデルの識別子(samplomatic.InjectNoise.ref)を、パウリ誤差項のリストにマッピングします。 に対する反復処理中に、一致する InjectNoise アノテーション BoxOp を持つ が見つかるたびに、対応する用語が使用されます circuit

警告

境界を計算する前に、この関数はすべてを削除します Measure からの操作 circuit。 この処理が必要な理由は、回路が逆順で処理される前に反転されるためであり、これにより(反転された回路において)逆方向の進化を順方向の進化と同様に扱うことができるからです。

パラメーター

  • circuit (QuantumCircuit) – 対象回路。
  • noise_model_paulis (dict[str, QubitSparsePauliList]) – 各ノイズモデルについて考慮すべきパウリ誤差項。
  • evolution_max_terms (int) – 進化の過程で追跡する演算子項の最大数。 (演算子がこのサイズを超える場合、最も小さい項が切り捨てられます)。
  • kwargs – 追加のキーワード引数はすべて に渡されます compute_bounds()

戻り値

逆進化による不等時間コミューテーターの境界値。

戻りの型

dict [ str, PauliLindbladMap ]

merge_bounds

merge_bounds(circuit, forward_bounds, backward_bounds, /, noise_rates=None, *, is_clifford_circuit=False)

GitHub

前方境界と後方境界を統合する。

後方境界の使用から前方境界の使用への切り替えが行われる層は、すべての量子ビットで同じになります。 これは、提供された学習済みデータを考慮して決定されます noise_rates。 これらが提供されない場合は、一律の騒音レベルが適用されるものとみなされます。 これは非現実的な仮定ではありますが、マージされた境界をプレビューすることは、それでも有用である可能性があります。

パラメーター

戻り値

結合された境界。

昇給

  • ValueError – 指定された両方の境界が. である場合 None
  • KeyError – 対象の に含まれていない、 circuit またはその InjectNoise.ref が見つからない キー InjectNoise.modifier_ref が含ま bounds れている場合。
  • ValueError – 特定の に対して計算されたノイズモデルのパウリ項の上限値が、 と forward_bounds の間で一致 InjectNoise.modifier_ref しない場合 backward_bounds
  • NotImplementedErroris_clifford_circuit が のとき True

戻りの型

dict [ str, PauliLindbladMap ] | None

compute_local_scales

compute_local_scales(circuit, bounds, /, noise_rates, *, sampling_cost_budget=inf, bias_tolerance=0.0)

GitHub

の引 local_scales 数を計算します Samplex

この引 local_scales 数は、どの個々の誤差項を軽減するかを指定するために使用されます。

または sampling_cost_budget のいずれかを指定 bias_tolerance する必要があります。 前者はサンプリングコストの上限を設定し、後者は許容できる残差バイアスの上限を設定する。

および bounds におけるパウリ項の順序が一致 noise_rates しない場合、この関数の出力は、スケールが、同様に に提供される反応速度と互換性を持つことを保証するために noise_rates 、 で定められた順序を採用します QuantumProgram

パラメーター

  • circuit (QuantumCircuit) – 対象回路。
  • bounds (dict[str, PauliLindbladMap]) – 陰影で示された光錐の境界。
  • noise_rates (dict[str, PauliLindbladMap | None]) – 学習済みノイズモデルの評価値。
  • sampling_cost_budget (float) – 許容される最大サンプリングコスト。
  • bias_tolerance (float) – 許容できる最大バイアス。

戻り値

  • その辞 local_scales 書を、の直接入力として提供すること samplomatic.samplex.Samplex.inputs()
  • のサンプリングを実行するために必要なサンプリングコストのオーバーヘッド( γ2\gamma^2local_scales
  • これらの境界を用いて計算された期待値に残るバイアス。

戻りの型

長さが3のタプルで、その要素は次のとおりです

昇給

  • ValueError – 両方に既定値以外の値が指定された場合、 および sampling_cost_budget bias_tolerance
  • KeyError – もし、で検出されたノイズモデル識別子(InjectNoise.ref)のエントリが欠落している noise_rates 場合 circuit

このモジュールには、通常、エンドユーザーが直接アクセスすることのない低レベルの関数もいくつか含まれていますが、このパッケージを基盤としたさらなる開発において役立つ場合があります。

compute_bounds

compute_bounds(circuit, noise_model_paulis, light_cone, norm_fn, *, backwards, max_num_boxes=None, num_processes=1, timeout=None)

GitHub

不等式による時間コミューテーターの上限を計算します。

注釈 InjectNoise が 個付いた 個の BoxOp 命令からなる回路と、ノイズモデル識別子 (InjectNoise.ref) からパウリ誤差項のリスト (noise_model_paulis) への対応付けが与えられた場合、この関数は不等時間コミューテーターの上界を計算する(その詳細については によって実装されている norm_fn)。 その際、観測可能量の光錐内(によって初期化される light_cone)に位置するゲートのみが考慮される。 これらの計算された境界が、陰影付きの光錐の基礎をなす。

この関数は長時間かかる計算を行うため、例外 KeyboardInterrupt を適切に処理しており、ユーザーは任意の時点で計算を中断しても、その時点までに計算された結果を取得することができます。

パラメーター

  • circuit (QuantumCircuit) – 対象回路。
  • noise_model_paulis (dict[str, QubitSparsePauliList]) – 各ノイズモデルについて考慮すべきパウリ誤差項。
  • light_cone (LightCone) – 初期化済みで状態保持型のトラッカー LightCone
  • norm_fn (Callable[[Pauli, RotationGates], CommutatorBounds]) – 特定の不等時間コミューテーターを実装する関数。
  • backwards (bool) – を逆順 circuit に反復処理するかどうか。
  • max_num_boxes (int | None) – 境界を計算する箱の最大数。 追加のボックスに対する境界値には、 2.02.0 という自明な上限値が与えられます。
  • num_processes (int) – 使用する並列プロセスの数。
  • timeout (float | None) – オプションのタイムアウト(秒単位)。この時間が経過すると、残りのすべてのレイヤーは、. という単純な数値範囲で埋められます 2.0。 なお、これは厳密なタイムアウトではなく、このタイムアウトに達した時点で処理中のレイヤーは通常通り完了します。

戻り値

計算された不等時間コミューテーターの上限値。

戻りの型

dict [ str, PauliLindbladMap ]

CommutatorBounds

class CommutatorBounds(commutator_bound, truncation_bias, fallback_to_tri_ineq)

GitHub

ベース: NamedTuple

計算されたコミューテーターの境界に関するメタデータを格納するためのデータクラス。

CommutatorBounds(commutator_bound, truncation_bias, fallback_to_tri_ineq) の新しいインスタンスを作成する

パラメーター

  • commutator_bound (float)
  • truncation_bias (float)
  • fallback_to_tri_ineq (bool)

commutator_bound

種類: float

コミューテーターの上限。

この上限値は、用途に応じて異なる方法で計算されます。 例えば、後方境界では核ノルム(シャッテン1-ノルム)が計算されるのに対し、前方境界では通常、スペクトルノルム(シャッテン無限大ノルム)を用いて計算される。

ノルムの計算が指定された難易度の限界を超えた場合、その計算は中止され、三角不等式に基づくより単純な上界が採用されます。これは、が に設定される fallback_to_tri_ineq ことで示されます True

この値は、コミューター境界の計算が中断された NaN 場合に発生することがあります。 これは、がすでに truncation_bias の理論的限界を超えている場合に起こり得ます 2.0

fallback_to_tri_ineq

種類: bool

が、単純な三角不等式を用いて「大まかに」計算 commutator_bound されたかどうか。

min

min()

GitHub

このメタデータによってエンコードされた最小の境界値を返します。

最小境界値は、と の和と commutator_bound 、の理論的境界値のいずれ truncation_bias か小さい方である 2.0

の値が用いられる 2.0 のは、範囲 で有界なパウリ観測量には、 以上のバイアスを加えることができない [-1, +1] ためである 2.0

戻りの型

浮動小数点

truncation_bias

種類: float

コミューテーターの切り捨てに起因する境界値のバイアス。

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