Skip to main content
IBM Quantum Platform

LinearAmplitudeFunction

class qiskit.circuit.library.LinearAmplitudeFunction(num_state_qubits, slope, offset, domain, image, rescaling_factor=1, breakpoints=None, name='F')

GitHub

ベース: QuantumCircuit

量子ビットの振幅に対する(区分的)線形関数を実装した回路。

関数 ff の振幅関数 FF は写像である

Fx0=1f^(x)x0+f^(x)x1.F|x\rangle|0\rangle = \sqrt{1 - \hat{f}(x)} |x\rangle|0\rangle + \sqrt{\hat{f}(x)} |x\rangle|1\rangle.

f^:{0,...,2n1}[0,1]\hat{f}: \{ 0, ..., 2^n - 1 \} \rightarrow [0, 1] ここで x|x\ranglenn の量子ビット状態である。

この回路は、区分線形関数 f^\hat{f} に対して FF を実装します。この場合、マッピング FF はテイラー展開と線形制御されたパウリ-Y回転を用いて近似的に実装できます。詳細は [1, 2 を]参照してください。 この近似では、 rescaling_factor を使ってテイラー展開の精度を決定する。

一般に、関心関数 ff は、区間 [a,b][a,b]、区間 domain から区間 [c,d][c,d]、区間 image、区間 {1,...,N}\{ 1, ..., N \} から区間 [0,1][0, 1] の代わりに定義される。アフィン変換を使えば、区間 ff から区間 f^\hat{f} を再スケールすることができる:

f^(x)=f(ϕ(x))cdc\hat{f}(x) = \frac{f(\phi(x)) - c}{d - c}

への

ϕ(x)=a+ba2n1x.\phi(x) = a + \frac{b - a}{2^n - 1} x.

ff が、 mm 間隔 [pi1,pi],i{1,...,m}[p_{i-1}, p_i], i \in \{1, ..., m\} で、傾き αi\alpha_i とオフセット βi\beta_i を持つ区分線形関数である場合、次のように書くことができる

f(x)=i=1m1[pi1,pi](x)(αix+βi)f(x) = \sum_{i=1}^m 1_{[p_{i-1}, p_i]}(x) (\alpha_i x + \beta_i)

ここで、 1[a,b]1_{[a, b]} は、引数が区間 [a,b][a, b] に属する場合に 1 となり、それ以外の場合は 0 となる指示関数である。 pip_i のブレークポイントは、引数 breakpoints で指定できます。

参照資料:

[1] ヴェルナー, S., & エガー, D. J. (2018). 量子リスク分析。 arXiv:1806.06893

[2] ガコン, J., Zoufal, C. および Woerner, S. (2020). 量子技術を活用したシミュレーションベースの最適化。 arXiv:2005.10780

バージョンから非推奨 2.2

クラス qiskit.circuit.library.arithmetic.linear_amplitude_function.LinearAmplitudeFunction は Qiskit 2.2 で非推奨となりました。 Qiskit 3.0 で削除されます。 代わりにクラス qiskit.circuit.library.LinearAmplitudeFunctionGate。

パラメーター

  • num_state_qubits (int) – 変数 xx をエンコードするのに使われる量子ビットの数。
  • slope (float |list[float]) – 一次関数の傾き。 区分線形関数の場合は、傾きのリスト。
  • offset (float |list[float]) – 線形関数のオフセット。 区分線形関数の場合は、オフセットのリストにすることができる。
  • domain (tuple[float, float]) – タプルとしての関数のドメイン (xmin,xmax)(x_{\min}, x_{\max})
  • image (tuple[float, float]) – タプルとしての関数のイメージ (fmin,fmax)(f_{\min}, f_{\max})
  • rescaling_factor (float) – テイラー近似の精度を調整するための再スケーリング係数。
  • breakpoints (list[float] | None) – 関数が区分線形である場合のブレークポイント。 None の場合、関数は区分的でない。
  • name (str) – サーキットの名称

属性

name

タイプ: str

人間が読める回路名。

from qiskit import QuantumCircuit

qc = QuantumCircuit(2, 2, name="my_circuit")
print(qc.name)
my_circuit

方法

post_processing

post_processing(scaled_value)

GitHub

近似された f^\hat{f} の関数値を ff にマップする。

パラメーター

scaled_value (float) – f^(x)\hat{f}(x) のテイラー展開による関数値。

戻り値

scaled_value 、まずテイラー近似に使用した変換を反転させ、 [0,1][0, 1] から元のドメインにマッピングし直すことで、 ff のドメインにマッピングし直した。

戻りの型

浮動小数点

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