Skip to main content
IBM Quantum Platform

VBERippleCarryAdder

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

GitHub

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.

Consulte también

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 2n2^n. 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
¿Le ha resultado útil esta página?
Informe de un error, de una errata o solicite contenido en GitHub.