Skip to main content
IBM Quantum Platform

WeightedAdder

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

GitHub

Bases : BlueprintCircuit

Un circuit pour calculer la somme pondérée des registres de qubits.

Étant donné les états de base des qubits nn q0,,qn1{0,1}q_0, \ldots, q_{n-1} \in \{0, 1\} et les poids entiers non négatifs λ0,,λn1\lambda_0, \ldots, \lambda_{n-1}, ce circuit effectue l'opération suivante

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 est le nombre de qubits de somme requis. Cette valeur peut être calculée comme suit

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

ou s=1s = 1 si la somme des poids est égale à 0 (l'expression du logarithme n'est alors pas valide).

Pour les qubits d'un schéma de circuit, le premier poids s'applique au qubit le plus élevé. Pour un exemple où l'état de 4 qubits est ajouté dans un registre de somme, le circuit peut être schématisé comme suit

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

Paramètres

  • num_state_qubits (int | None) – Le nombre de qubits d'état.
  • weights (list[int] | None) – Liste des poids, un pour chaque qubit d'état. Si aucune valeur n'est fournie, la valeur par défaut est 1 pour chaque qubit.
  • name (str) – Le nom du circuit.

Attributs

num_carry_qubits

Le nombre de qubits de report nécessaires pour calculer la somme.

Notez que ce nombre n'est pas nécessairement égal au nombre de qubits ancillaires, qui peuvent être interrogés à l'aide de num_ancilla_qubits.

Retours

Le nombre de qubits de report nécessaires pour calculer la somme.

num_control_qubits

Le nombre de qubits de contrôle supplémentaires requis.

Notez que le nombre total de qubits ancillaires peut être obtenu en appelant la méthode num_ancilla_qubits.

Retours

Le nombre de qubits de contrôle supplémentaires requis (0 ou 1).

num_state_qubits

Le nombre de qubits à additionner.

Retours

Le nombre de qubits d'état.

num_sum_qubits

Le nombre de qubits de somme dans le circuit.

Retours

Le nombre de qubits nécessaires pour représenter la somme pondérée des qubits.

weights

Les poids des états des qubits.

Retours

Le poids des états du qubit.

name

Type : str

Un nom lisible par l'homme pour le circuit.

Exemple

from qiskit import QuantumCircuit

qc = QuantumCircuit(2, 2, name="my_circuit")
print(qc.name)
my_circuit
Cette page a-t-elle été utile ?
Signaler un bogue, une coquille ou proposer du contenu sur GitHub.