Skip to main content
IBM Quantum Platform

WeightedAdder

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

GitHub

Basen: BlueprintCircuit

Eine Schaltung zur Berechnung der gewichteten Summe von Qubit-Registern.

Bei nn Qubit-Basiszuständen q0,…,qn−1∈{0,1}q_0, \ldots, q_{n-1} \in \{0, 1\} und nichtnegativen ganzzahligen Gewichten λ0,…,λn−1\lambda_0, \ldots, \lambda_{n-1} führt diese Schaltung die folgende Operation durch

∣q0…qn−1⟩∣0⟩s↦∣q0…qn−1⟩∣∑j=0n−1λjqj⟩s|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

wobei ss die Anzahl der benötigten Summenqubits ist. Dies kann wie folgt berechnet werden

s=1+⌊log⁡2(∑j=0n−1λj)⌋s = 1 + \left\lfloor \log_2\left( \sum_{j=0}^{n-1} \lambda_j \right) \right\rfloor

oder s=1s = 1, wenn die Summe der Gewichte 0 ist (dann ist der Ausdruck im Logarithmus ungültig).

Bei Qubits in einem Schaltplan gilt das erste Gewicht für das oberste Qubit. Für ein Beispiel, bei dem der Zustand von 4 Qubits in einem Summenregister addiert wird, kann die Schaltung schematisch wie folgt gezeichnet werden

           ┌────────┐
  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       ├
           └────────┘

Parameter

  • num_state_qubits (int | None) – Die Anzahl der Zustandsqubits.
  • weights (list[int] | None) – Liste der Gewichte, eines für jedes Zustandsqubit. Wenn keine angegeben werden, wird standardmäßig für jedes Qubit der Wert 1 verwendet.
  • name (str) – Der Name des Stromkreises.

Attribute

num_carry_qubits

Die Anzahl der Carry-Qubits, die zur Berechnung der Summe erforderlich sind.

Beachten Sie, dass dies nicht unbedingt gleich der Anzahl der Ancilla-Qubits ist, diese können mit num_ancilla_qubits abgefragt werden.

Rückgabe

Die Anzahl der Carry-Qubits, die zur Berechnung der Summe erforderlich sind.

num_control_qubits

Die Anzahl der zusätzlich benötigten Kontrollqubits.

Man beachte, dass die Gesamtzahl der Ancilla-Qubits durch Aufruf der Methode num_ancilla_qubits ermittelt werden kann.

Rückgabe

Die Anzahl der zusätzlich benötigten Steuerqubits (0 oder 1).

num_state_qubits

Die Anzahl der zu summierenden Qubits.

Rückgabe

Die Anzahl der Zustandsqubits.

num_sum_qubits

Die Anzahl der Summenqubits in der Schaltung.

Rückgabe

Die Anzahl der Qubits, die benötigt wird, um die gewichtete Summe der Qubits darzustellen.

weights

Die Gewichte für die Qubitzustände.

Rückgabe

Das Gewicht für die Qubitzustände.

name

Typ: str

Ein von Menschen lesbarer Name für den Stromkreis.

Beispiel

from qiskit import QuantumCircuit

qc = QuantumCircuit(2, 2, name="my_circuit")
print(qc.name)
my_circuit
War diese Seite hilfreich?
Melden Sie auf GitHub einen Fehler, einen Tippfehler oder fordern Sie Inhalte an.