Skip to main content
IBM Quantum Platform

WeightedAdder

class qiskit.circuit.library.WeightedAdder(num_state_qubits=None, weights=None, name='adder')

GitHub

ベース: BlueprintCircuit

量子ビットレジスタの重み付き和を計算する回路。

nn クビット基底状態 q0,,qn1{0,1}q_0, \ldots, q_{n-1} \in \{0, 1\} と非負整数重み λ0,,λn1\lambda_0, \ldots, \lambda_{n-1} が与えられると、この回路は次の演算を行う

q0qn10sq0qn1j=0n1λjqjs|q_0 \ldots q_{n-1}\rangle |0\rangle_s \mapsto |q_0 \ldots q_{n-1}\rangle |\sum_{j=0}^{n-1} \lambda_j q_j\rangle_s

ここで、 ss は必要な合計量子ビットの数である。 これは次のように計算できる

s=1+log2(j=0n1λj)s = 1 + \left\lfloor \log_2\left( \sum_{j=0}^{n-1} \lambda_j \right) \right\rfloor

または、重みの合計が0の場合は s=1s = 1 (対数の式は無効)。

回路図中の量子ビットの場合、最初のウェイトは一番上の量子ビットに適用される。 4個の量子ビットの状態を和レジスタに加算する例では、回路は次のように概略的に描くことができる

           ┌────────┐
  state_0: ┤0       ├ | state_0 * weights[0]
           │        │ |
  state_1: ┤1       ├ | + state_1 * weights[1]
           │        │ |
  state_2: ┤2       ├ | + state_2 * weights[2]
           │        │ |
  state_3: ┤3       ├ | + state_3 * weights[3]
           │        │
    sum_0: ┤4       ├ |
           │  Adder │ |
    sum_1: ┤5       ├ | = sum_0 * 2^0 + sum_1 * 2^1 + sum_2 * 2^2
           │        │ |
    sum_2: ┤6       ├ |
           │        │
  carry_0: ┤7       ├
           │        │
  carry_1: ┤8       ├
           │        │
control_0: ┤9       ├
           └────────┘

パラメーター

  • num_state_qubits (int | None) – 状態量子ビットの数。
  • weights (list[int] | None) – 各状態量子ビットに対応する重みのリスト。 指定がない場合、各量子ビットに対してデフォルト値は1となります。
  • name (str) – 回路の名前。

属性

num_carry_qubits

和を計算するのに必要なキャリー量子ビットの数。

これは必ずしもアンシラ量子ビットの数と同じではないことに注意してほしい。これらは num_ancilla_qubits を使って問い合わせることができる。

戻り値

和を計算するのに必要なキャリー量子ビットの数。

num_control_qubits

追加で必要な制御量子ビットの数。

アンシラ量子ビットの総数は、メソッド num_ancilla_qubits を呼び出すことで得られることに注意。

戻り値

追加で必要な制御量子ビットの数(0または1)。

num_state_qubits

合計される量子ビットの数。

戻り値

状態量子ビットの数。

num_sum_qubits

回路内の和量子ビットの数。

戻り値

量子ビットの加重和を表すのに必要な量子ビットの数。

weights

量子ビットの状態の重み。

戻り値

量子ビット状態の重み。

name

タイプ: str

人間が読める回路名。

from qiskit import QuantumCircuit

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