Skip to main content
IBM Quantum Platform

DraperQFTAdder

class qiskit.circuit.library.DraperQFTAdder(num_state_qubits, kind='fixed', name='DraperQFTAdder')

GitHub

Basi: Adder

Un circuito che utilizza la QFT per eseguire l'addizione in-place su due registri di qubit.

Per i registri con qubit di tipo " nn ", l'addizionatore QFT può eseguire l'addizione modulo 2n2^n (con kind="fixed") oppure l'addizione ordinaria aggiungendo un qubit di riporto (con kind="half").

Ad esempio, un circuito sommatore QFT che esegue una normale operazione di addizione su due registri da 2 qubit è il seguente:

 a_0: ─────────■──────■────────────────────────■────────────────
               │      │                        │
 a_1: ─────────┼──────┼────────■──────■────────┼────────────────
      ┌──────┐ │P(π)  │        │      │        │       ┌───────┐
 b_0: ┤0     ├─■──────┼────────┼──────┼────────┼───────┤0      ├
      │      │        │P(π/2)  │P(π)  │        │       │       │
 b_1: ┤1 QFT ├────────■────────■──────┼────────┼───────┤1 IQFT ├
      │      │                        │P(π/2)  │P(π/4) │       │
cout: ┤2     ├────────────────────────■────────■───────┤2      ├
      └──────┘                                         └───────┘
Nota

I blocchi QFT e inverse-QFT in questa implementazione omettono le rispettive reti di scambio, che invertono l'ordine dei qubit per garantire un'implementazione più efficiente. Ciò influisce sui qubit su cui agiscono i gate a fase controllata. Questo schema illustra come è implementato l'addizionatore in Qiskit; non deve essere utilizzato come guida per la realizzazione manuale 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=["qft_d00"].

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".

Riferimenti:

[1] T. G. Draper, Addition on a Quantum Computer, 2000. arXiv:quant-ph/0008033

[2] Ruiz-Perez et al., Aritmetica quantistica con la trasformata di Fourier quantistica, 2017. arXiv:1411.5949

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

Parametri

  • num_state_qubits (int) – Il numero di qubit in uno dei due registri di ingresso per lo stato a|a\rangle o b|b\rangle. I due registri di ingresso devono avere lo stesso numero di qubit.
  • kind (str) – Il tipo di sommatore può essere 'half' per un mezzo sommatore o 'fixed' per un sommatore a dimensione fissa. Un mezzo sommatore contiene un riporto per rappresentare il bit più significativo, ma l'addizionatore a grandezza fissa non lo contiene e quindi esegue l'addizione modulo 2 ** num_state_qubits.
  • name (str) – Il nome dell'oggetto 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.