VBERippleCarryAdder
class qiskit.circuit.library.VBERippleCarryAdder(num_state_qubits, kind='full', name='VBERippleCarryAdder')
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.
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 . 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