Skip to main content
IBM Quantum Platform

WeightedAdder

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

GitHub

Bases: BlueprintCircuit

Um circuito para computar a soma ponderada de registros de qubit.

Dados os estados da base do nn qubit q0,,qn1{0,1}q_0, \ldots, q_{n-1} \in \{0, 1\} e os pesos inteiros não negativos λ0,,λn1\lambda_0, \ldots, \lambda_{n-1}, esse circuito executa a operação

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

em que ss é o número de qubits de soma necessários. Isso pode ser calculado como

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 se a soma dos pesos for 0 (então a expressão no logaritmo é inválida).

Para qubits em um diagrama de circuito, o primeiro peso se aplica ao qubit mais alto. Para um exemplo em que o estado de 4 qubits é adicionado a um registro de soma, o circuito pode ser desenhado esquematicamente 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) – O número de qubits de estado.
  • weights (list[int] | None) – Lista de pesos, um para cada qubit de estado. Se nenhum valor for fornecido, o padrão será 1 para cada qubit.
  • name (str) – O nome do circuito.

Atributos

num_carry_qubits

O número de qubits de transporte necessários para computar a soma.

Observe que isso não é necessariamente igual ao número de qubits de ancilla, que podem ser consultados usando num_ancilla_qubits.

Retorna

O número de qubits de transporte necessários para computar a soma.

num_control_qubits

O número de qubits de controle adicionais necessários.

Observe que o número total de qubits de ancilla pode ser obtido chamando o método num_ancilla_qubits.

Retorna

O número de qubits de controle adicionais necessários (0 ou 1).

num_state_qubits

O número de qubits a serem somados.

Retorna

O número de qubits de estado.

num_sum_qubits

O número de qubits de soma no circuito.

Retorna

O número de qubits necessários para representar a soma ponderada dos qubits.

weights

Os pesos para os estados do qubit.

Retorna

O peso para os estados do qubit.

name

Tipo: str

Um nome legível por humanos para o circuito.

Exemplo

from qiskit import QuantumCircuit

qc = QuantumCircuit(2, 2, name="my_circuit")
print(qc.name)
my_circuit
Esta página foi útil?
Relate um bug, erro de digitação ou solicite conteúdo no GitHub.