VBERippleCarryAdder
class qiskit.circuit.library.VBERippleCarryAdder(num_state_qubits, kind='full', name='VBERippleCarryAdder')
Bases: Adder
El sumador de arrastre de ondulación VBE [1].
Este circuito realiza la suma in situ de dos registros cuánticos de igual tamaño. A modo de ejemplo, un circuito sumador clásico que realiza una suma completa (es decir, incluyendo un bit de acarreo) en dos registros de 2 qubits de tamaño es el siguiente:
┌────────┐ ┌───────────┐┌──────┐
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 ├────────
└────────┘└────────┘ └──────┘└───────────┘En este caso, las puertas «Carry» y «Sum» corresponden a las puertas presentadas en [el apartado 1]. Carry_dg corresponde a la inversa de la puerta Carry. Tenga en cuenta que, en esta implementación, los qubits del registro de entrada se ordenan de tal forma que primero aparecen todos los qubits del primer registro de entrada, seguidos de todos los qubits del segundo registro de entrada. Este orden difiere del de la figura 2 del [apartado 1], lo que da lugar a un esquema del circuito diferente.
Los siguientes objetos puerta genéricos realizan adiciones, como esta clase de circuito, pero permiten al compilador seleccionar la descomposición óptima basada en el contexto. Las implementaciones específicas pueden establecerse a través de HLSConfigpor ejemplo, este circuito puede elegirse a través de Adder=["ripple_v95"].
ModularAdderGate: Un sumador genérico, módulo . Este
es funcionalmente equivalente a kind="fixed".
AdderGate: Un sumador inplace genérico. Este
es funcionalmente equivalente a kind="half".
FullAdderGate: Sumador inplace genérico, con un bit de arrastre. Este
es funcionalmente equivalente a kind="full".
Referencias:
[1] Vedral et al., Redes cuánticas para operaciones aritméticas elementales, 1995. arXiv:quant-ph/9511018
Parámetros
- num_state_qubits (int) – El tamaño del registro.
- kind (str) – El tipo de sumador, puede ser
'full'para un sumador completo,'half'para un medio sumador, o'fixed'para un sumador de tamaño fijo. Un sumador completo incluye tanto carry-in como carry-out, un medio sólo carry-out, y un sumador de tamaño fijo ni carry-in ni carry-out. - name (str) – El nombre del circuito.
Eleva
ValueError - Si num_state_qubits es inferior a 1.
Atributos
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