Skip to main content
IBM Quantum Platform

VBERippleCarryAdder

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

GitHub

Basi: Adder

L'addizionatore di riporto a ripple VBE [1].

Questo circuito esegue l'addizione inplace di due registri quantistici di pari dimensioni. A titolo di esempio, un circuito sommatore classico che esegue un'addizione completa (cioè con un bit di riporto) su due registri di dimensioni pari a 2 qubit è il seguente:

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

In questo caso, le porte Carry e Sum corrispondono alle porte presentate al punto [1]. Carry_dg corrisponde all'inverso della porta Carry. Si noti che in questa implementazione i qubit del registro di ingresso sono ordinati in modo tale che tutti i qubit del primo registro di ingresso siano seguiti da tutti i qubit del secondo registro di ingresso. Si tratta di una sequenza diversa rispetto alla Figura 2 del [punto 1], il che comporta una diversa rappresentazione del circuito.

Vedi anche

I seguenti oggetti gate generici eseguono addizioni, come questa classe di circuiti, ma consentono al compilatore di selezionare la decomposizione ottimale in base al contesto. Le implementazioni specifiche possono essere impostate tramite il sito HLSConfig, ad esempio questo circuito può essere scelto tramite Adder=["ripple_v95"].

ModularAdderGate: Un generico sommatore inplace, modulo 2n2^n. Questo

è funzionalmente equivalente a kind="fixed".

AdderGate: Un generico sommatore inplace. Questa serie di webinar

è funzionalmente equivalente a kind="half".

FullAdderGate: Un generico sommatore inplace, con un bit di riporto. Questa serie di webinar

è funzionalmente equivalente a kind="full".

Riferimenti:

[1] Vedral et al, Reti quantistiche per operazioni aritmetiche elementari, 1995. arXiv:quant-ph/9511018

Parametri

  • num_state_qubits (int) – La dimensione del registro.
  • kind (str) – Il tipo di sommatore può essere 'full' per un sommatore completo, 'half' per un mezzo sommatore o 'fixed' per un sommatore a dimensione fissa. Un sommatore completo include sia il carry-in che il carry-out, un sommatore dimezzato solo il carry-out e un sommatore di dimensioni fisse né il carry-in né il carry-out.
  • name (str) – Il nome del circuito.

Aumenti

ValueError - Se num_state_qubits è inferiore a 1.


Attributi

name

Tipo: str

Un nome leggibile per il circuito.

Esempio

from qiskit import QuantumCircuit

qc = QuantumCircuit(2, 2, name="my_circuit")
print(qc.name)
my_circuit
Questa pagina è stata utile?
Segnala un bug, un errore di battitura o richiedi contenuti su GitHub.