Skip to main content
IBM Quantum Platform

VBERippleCarryAdder

class qiskit.circuit.library.VBERippleCarryAdder(num_state_qubits, kind='full', name='VBERippleCarryAdder')

GitHub

Bases: Adder

O somador de transporte de ondulação VBE [1].

Esse circuito realiza a adição no local de dois registros quânticos de tamanho igual. Como exemplo, um circuito somador clássico que executa a adição total (ou seja, incluindo um bit de transporte) em dois registros de tamanho 2-qubit é o seguinte:

          ┌────────┐                       ┌───────────┐┌──────┐
   cin_0: ┤0       ├───────────────────────┤0          ├┤0     ├
          │        │                       │           ││      │
     a_0: ┤1       ├───────────────────────┤1          ├┤1     ├
          │        │┌────────┐     ┌──────┐│           ││  Sum │
     a_1: ┤        ├┤1       ├──■──┤1     ├┤           ├┤      ├
          │        ││        │  │  │      ││           ││      │
     b_0: ┤2 Carry ├┤        ├──┼──┤      ├┤2 Carry_dg ├┤2     ├
          │        ││        │┌─┴─┐│      ││           │└──────┘
     b_1: ┤        ├┤2 Carry ├┤ X ├┤2 Sum ├┤           ├────────
          │        ││        │└───┘│      ││           │
  cout_0: ┤        ├┤3       ├─────┤      ├┤           ├────────
          │        ││        │     │      ││           │
helper_0: ┤3       ├┤0       ├─────┤0     ├┤3          ├────────
          └────────┘└────────┘     └──────┘└───────────┘

Aqui, as portas Carry e Sum correspondem às portas apresentadas no ponto [1]. Carry_dg corresponde ao inverso da porta Carry. Observe que, nesta implementação, os qubits do registro de entrada são ordenados da seguinte forma: todos os qubits do primeiro registro de entrada, seguidos por todos os qubits do segundo registro de entrada. Esta é uma disposição diferente da apresentada na Figura 2 do [documento 1], o que resulta em um esquema diferente do circuito.

Veja Também

Os seguintes objetos de porta genérica realizam adições, como essa classe de circuito, mas permitem que o compilador selecione a decomposição ideal com base no contexto. Implementações específicas podem ser definidas por meio do HLSConfigpor exemplo, esse circuito pode ser escolhido por meio de Adder=["ripple_v95"].

ModularAdderGate: Um somador inplace genérico, módulo 2n2^n. Este

é funcionalmente equivalente a kind="fixed".

AdderGate: Um somador inplace genérico. Isso

é funcionalmente equivalente a kind="half".

FullAdderGate: Um somador inplace genérico, com um bit de transporte. Isso

é funcionalmente equivalente a kind="full".

Referências

[1] Vedral et al, Quantum Networks for Elementary Arithmetic Operations (Redes Quânticas para Operações Aritméticas Elementares), 1995. arXiv:quant-ph/9511018

Parâmetros

  • num_state_qubits (int) – O tamanho do registro.
  • kind (str) – O tipo de somador pode ser 'full' para um somador completo, 'half' para um meio somador ou 'fixed' para um somador de tamanho fixo. Um somador completo inclui tanto o carry-in quanto o carry-out, um meio apenas o carry-out e um somador de tamanho fixo não inclui nem o carry-in nem o carry-out.
  • name (str) – O nome do circuito.

Aumentos

ValueError - Se num_state_qubits for menor que 1.


Atributos

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.