Skip to main content
IBM Quantum Platform

VBERippleCarryAdder

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

GitHub

Bases : Adder

L'additionneur de retenue de l'ondulation VBE [1].

Ce circuit effectue l'addition sur place de deux registres quantiques de taille égale. À titre d'exemple, un circuit additionneur classique qui effectue une addition complète (c'est-à-dire incluant un bit de report) sur deux registres de 2 qubits est le suivant :

          ┌────────┐                       ┌───────────┐┌──────┐
   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          ├────────
          └────────┘└────────┘     └──────┘└───────────┘

Ici, les portes «* Carry* » et «* Sum* » correspondent aux portes présentées au point [1]. Carry_dg correspond à l'inverse de la porte Carry. Il convient de noter que, dans cette implémentation, les qubits des registres d'entrée sont classés de la manière suivante : tous les qubits du premier registre d'entrée, puis tous les qubits du deuxième registre d'entrée. Il s'agit d'un ordre différent de celui de la figure 2 du [document 1], ce qui donne lieu à un schéma différent du circuit.

Voir aussi

Les objets de porte génériques suivants effectuent des additions, comme cette classe de circuit, mais permettent au compilateur de sélectionner la décomposition optimale en fonction du contexte. Des implémentations spécifiques peuvent être définies via le site HLSConfigpar exemple, ce circuit peut être choisi via Adder=["ripple_v95"].

ModularAdderGate: Un additionneur générique inplace, modulo 2n2^n. Cette

est fonctionnellement équivalent à kind="fixed".

AdderGate: Un additionneur générique inplace. Ce

est fonctionnellement équivalent à kind="half".

FullAdderGate: Un additionneur générique inplace, avec un bit de report. Ce

est fonctionnellement équivalent à kind="full".

Références :

[1] Vedral et al, Réseaux quantiques pour les opérations arithmétiques élémentaires, 1995. arXiv:quant-ph/9511018

Paramètres

  • num_state_qubits (int) – La taille du registre.
  • kind (str) – Le type d'additionneur peut être 'full' pour un additionneur complet, 'half' pour un demi-additionneur ou 'fixed' pour un additionneur de taille fixe. Un additionneur complet comprend à la fois l'entrée et la sortie, un demi-additionneur seulement l'entrée, et un additionneur de taille fixe ni l'entrée ni la sortie.
  • name (str) – Le nom du circuit.

Augmentations

ValueError - Si num_state_qubits est inférieur à 1.


Attributs

name

Type : str

Un nom lisible par l'homme pour le circuit.

Exemple

from qiskit import QuantumCircuit

qc = QuantumCircuit(2, 2, name="my_circuit")
print(qc.name)
my_circuit
Cette page a-t-elle été utile ?
Signaler un bogue, une coquille ou proposer du contenu sur GitHub.