Skip to main content
IBM Quantum Platform

RGQFTM倍増率

class qiskit.circuit.library.RGQFTMultiplier(num_state_qubits, num_result_qubits=None, name='RGQFTMultiplier')

GitHub

ベース: Multiplier

2つの入力レジスタの積をout-of-placeで格納するQFT乗算回路。

この回路における乗算は、 [文献] [1]の図3に示す手順を用いて実装されており、重み付き和の回転は、 [文献] [1]の図5に示す通り実装されている。 QFTは出力レジスタに対して適用され、その後に入力レジスタによって制御される回転演算が続きます。 この回転により、状態はQFT基底における2つの入力レジスタの積に変換され、逆QFTを用いてQFT基底から元の状態に戻される。

例えば、2クビットサイズの入力レジスタ2つに対してモジュラーQFT乗算を行い、2クビットの出力レジスタを持つ回路は、以下の通りである:

  a_0: ────────────────────────────────────────■───────■──────■──────■────────────────
                                               │       │      │      │
  a_1: ─────────■───────■───────■───────■──────┼───────┼──────┼──────┼────────────────
                │       │       │       │      │       │      │      │
  b_0: ─────────┼───────┼───────■───────■──────┼───────┼──────■──────■────────────────
                │       │       │       │      │       │      │      │
  b_1: ─────────■───────■───────┼───────┼──────■───────■──────┼──────┼────────────────
       ┌──────┐ │P(4π)  │       │P(2π)  │      │P(2π)  │      │P(π)  │       ┌───────┐
out_0: ┤0     ├─■───────┼───────■───────┼──────■───────┼──────■──────┼───────┤0      ├
       │  qft │         │P(2π)          │P(π)          │P(π)         │P(π/2) │  iqft │
out_1: ┤1     ├─────────■───────────────■──────────────■─────────────■───────┤1      ├
       └──────┘                                                              └───────┘
関連資料

この MultiplierGate オブジェクトは、この回路クラスと同様に乗算を表しますが、コンパイラが文脈に基づいて最適な分解を選択できるようにします。 具体的な実装は を通じて設定できます HLSConfig。例えば、この回路は を通じて選択できます Multiplier=["qft_r17"]

参照資料:

[1] Ruiz-Perezら、 量子フーリエ変換による量子算術、2017年。 arXiv:1411.5949

パラメーター

  • num_state_qubits (int) – 状態 a|a\rangle または b|b\rangle のどちらかの入力レジスタの量子ビット数。 2つの入力レジスタは同じ数の量子ビットを持たなければならない。
  • num_result_qubits (int | None) – 出力を制限する結果量子ビットの数。 結果の量子ビット数が nn の場合、乗算モジュロ 2n2^n が実行され、出力が指定された量子ビット数に制限される。 デフォルト値は 2 * num_state_qubits 、2つの入力の乗算から得られる可能性のある結果を表す。
  • name (str) – 回路オブジェクトの名前。

属性

name

タイプ: str

人間が読める回路名。

from qiskit import QuantumCircuit

qc = QuantumCircuit(2, 2, name="my_circuit")
print(qc.name)
my_circuit
このページは役に立ちましたか?
バグや誤字の報告、またはコンテンツの要求はGitHubで行ってください。