Skip to main content
IBM Quantum Platform

WeightedAdder

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

GitHub

Basi: BlueprintCircuit

Un circuito per calcolare la somma ponderata di registri di qubit.

Dati nn stati base dei qubit q0,,qn1{0,1}q_0, \ldots, q_{n-1} \in \{0, 1\} e pesi interi non negativi λ0,,λn1\lambda_0, \ldots, \lambda_{n-1}, questo circuito esegue l'operazione

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

dove ss è il numero di qubit somma richiesti. Si può calcolare come

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

o s=1s = 1 se la somma dei pesi è 0 (allora l'espressione del logaritmo non è valida).

Per i qubit in uno schema circuitale, il primo peso si applica al qubit più in alto. Per un esempio in cui lo stato di 4 qubit viene sommato in un registro di somma, il circuito può essere schematizzato come segue

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

Parametri

  • num_state_qubits (int | None) – Il numero di qubit di stato.
  • weights (list[int] | None) – Elenco dei pesi, uno per ogni qubit di stato. Se non vengono specificati, il valore predefinito è 1 per ogni qubit.
  • name (str) – Il nome del circuito.

Attributi

num_carry_qubits

Il numero di qubit di riporto necessari per calcolare la somma.

Si noti che questo non è necessariamente uguale al numero di qubit ancilla, che possono essere interrogati utilizzando num_ancilla_qubits.

Risultati

Il numero di qubit di riporto necessari per calcolare la somma.

num_control_qubits

Il numero di qubit di controllo aggiuntivi richiesti.

Si noti che il numero totale di qubit ancilla può essere ottenuto richiamando il metodo num_ancilla_qubits.

Risultati

Il numero di qubit di controllo aggiuntivi richiesti (0 o 1).

num_state_qubits

Il numero di qubit da sommare.

Risultati

Il numero di qubit di stato.

num_sum_qubits

Il numero di qubit somma nel circuito.

Risultati

Il numero di qubit necessari per rappresentare la somma ponderata dei qubit.

weights

I pesi per gli stati dei qubit.

Risultati

Il peso per gli stati dei qubit.

name

Tipo: str

Un nome leggibile per il circuito.

Esempio

from qiskit import QuantumCircuit

qc = QuantumCircuit(2, 2, name="my_circuit")
print(qc.name)
my_circuit
Questa pagina è stata utile?
Segnala un bug, un errore di battitura o richiedi contenuti su GitHub.