Skip to main content
IBM Quantum Platform

QuadraticForm

class qiskit.circuit.library.QuadraticForm(num_result_qubits=None, quadratic=None, linear=None, offset=None, little_endian=True)

GitHub

ベース: QuantumCircuit

量子ビットレジスタにエンコードされた2値変数に2次形式を実装する。

2進変数上の2次形式とは、 nn ビットの2進変数 x=x0...xn1x = x_0 ... x_{n-1} に作用する2次関数 QQ のことである。整数行列 AA、整数ベクトル bb、整数 cc の場合、関数は次のように書ける

Q(x)=xTAx+xTb+cQ(x) = x^T A x + x^T b + c

AA, bb または cc にスカラー値が含まれている場合、この回路は2次形式の近似値のみを計算する。

この回路は、値をエンコードするための mm 量子ビットを与えられ、 Q(x)mod2mQ(x) \mod 2^m を [2の補数表現] ( https://stackoverflow.com/questions/1049722/what-is-twos-complement )表現で計算する。

xn0mxn(Q(x)+2m)mod2mm|x\rangle_n |0\rangle_m \mapsto |x\rangle_n |(Q(x) + 2^m) \mod 2^m \rangle_m

2の補数を使うので、例えば Q(x)=3Q(x) = 3 の値を表すには2ビット、符号には1ビットが必要である。 一方、 Q(x)=3Q(x) = -3 は、 -3 = '101'となり、最初の1は負の値を示し、01は3の2の補数である。

もし Q(x)Q(x) の値が大きすぎてm量子ビットで表現できない場合、結果のビット列は (Q(x)+2m)mod2m)(Q(x) + 2^m) \mod 2^m)

この回路の実装については、 [1]、図6で説明する。

参照資料:

[1] ギリアムら 制約付き多項式2値最適化のためのグローバー適応探索. arXiv:1912.04088

バージョンから非推奨 2.1

クラス qiskit.circuit.library.arithmetic.quadratic_form.QuadraticForm は Qiskit 2.1 で非推奨となりました。 削除されます Qiskit 3.0。 代わりに QuadraticFormGate。

パラメーター

  • num_result_qubits (int | None) – 結果を符号化するために必要な量子ビットの数。 クラスのドキュメントでは「 mm 」と呼ばれています。
  • quadratic (np.ndarray | list[list[float |ParameterExpression]] | None) – 二次係数を含む行列、 AA
  • linear (np.ndarray | list[float |ParameterExpression] | None) – 線形係数を含む配列、 bb
  • offset (float |ParameterExpression | None) – 定数オフセット、 cc
  • little_endian (bool) – 結果をリトルエンディアンでエンコードする。

レイズ

  • ValueError - linearquadratic のサイズが不一致の場合。
  • ValueError - 二次形式のいくつかの値がパラメータ化されているため、 num_result_qubits が指定されていないが決定できない場合。

属性

name

タイプ: str

人間が読める回路名。

from qiskit import QuantumCircuit

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

方法

required_result_qubits

static required_result_qubits(quadratic, linear, offset)

GitHub

必要な結果量子ビット数を取得する。

パラメーター

戻り値

2次形式の値を2の補数で表すのに必要な量子ビット数。

戻りの型

int

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