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 circuito para calcular la suma ponderada de registros de qubits.

Dados nn estados base qubit q0,,qn1{0,1}q_0, \ldots, q_{n-1} \in \{0, 1\} y pesos enteros no negativos λ0,,λn1\lambda_0, \ldots, \lambda_{n-1}, este circuito realiza la operación

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

donde ss es el número de qubits de suma necesarios. Se puede calcular como

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 si la suma de los pesos es 0 (entonces la expresión del logaritmo no es válida).

Para los qubits de un circuito, el primer peso se aplica al qubit superior. Para un ejemplo en el que el estado de 4 qubits se suma en un registro de suma, el circuito puede dibujarse esquemáticamente como

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

Parámetros

  • num_state_qubits (int | None) – El número de qubits de estado.
  • weights (list[int] | None) – Lista de pesos, uno por cada qubit de estado. Si no se especifica ningún valor, el valor predeterminado es 1 para cada qubit.
  • name (str) – El nombre del circuito.

Atributos

num_carry_qubits

El número de qubits de acarreo necesarios para calcular la suma.

Tenga en cuenta que esto no es necesariamente igual al número de qubits ancilla, estos pueden ser consultados utilizando num_ancilla_qubits.

Devuelve

El número de qubits de acarreo necesarios para calcular la suma.

num_control_qubits

El número de qubits de control adicionales necesarios.

Obsérvese que el número total de qubits ancilla puede obtenerse llamando al método num_ancilla_qubits.

Devuelve

El número de qubits de control adicionales necesarios (0 o 1).

num_state_qubits

El número de qubits que hay que sumar.

Devuelve

El número de qubits de estado.

num_sum_qubits

El número de qubits de suma en el circuito.

Devuelve

El número de qubits necesarios para representar la suma ponderada de los qubits.

weights

Los pesos de los estados de los qubits.

Devuelve

El peso de los estados qubit.

name

Tipo: str

Un nombre legible para el circuito.

Ejemplo

from qiskit import QuantumCircuit

qc = QuantumCircuit(2, 2, name="my_circuit")
print(qc.name)
my_circuit
¿Le ha resultado útil esta página?
Informe de un error, de una errata o solicite contenido en GitHub.