DraperQFTAdder
class qiskit.circuit.library.DraperQFTAdder(num_state_qubits, kind='fixed', name='DraperQFTAdder')
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 " ", l'addizionatore QFT può eseguire l'addizione modulo (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 ├
└──────┘ └───────┘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.
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 . 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 o . 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 modulo2 ** 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