Skip to main content
IBM Quantum Platform

DraperQFTAdder

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

GitHub

Bases : Adder

Un circuit qui utilise la QFT pour effectuer une addition in-place sur deux registres de qubits.

Pour les registres comportant des qubits de type « nn », l'additionneur QFT peut effectuer une addition modulo 2n2^n (avec kind="fixed") ou une addition classique en ajoutant un qubit de report (avec kind="half").

À titre d'exemple, voici un circuit additionneur QFT qui effectue une addition classique sur deux registres de 2 qubits :

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

Dans cette implémentation, les blocs QFT et inverse-QFT ne comportent pas de réseaux d'échange, ce qui permet d'inverser l'ordre des qubits pour une implémentation plus efficace. Cela détermine sur quels qubits agissent les portes à phase contrôlée. Ce schéma illustre la manière dont l'additionneur est implémenté dans Qiskit; il ne doit pas être utilisé comme guide pour monter le circuit manuellement.

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=["qft_d00"].

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

Références :

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

[2] Ruiz-Perez et al, Arithmétique quantique avec la transformée de Fourier quantique, 2017. arXiv:1411.5949

[3] 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) – Le nombre de qubits dans l'un ou l'autre des registres d'entrée pour l'état a|a\rangle ou b|b\rangle. Les deux registres d'entrée doivent avoir le même nombre de qubits.
  • kind (str) – Le type d'additionneur peut être 'half' pour un demi-additionneur ou 'fixed' pour un additionneur de taille fixe. Un demi-additionneur contient un report pour représenter le bit de poids fort, ce qui n'est pas le cas de l'additionneur à taille fixe, qui effectue donc une addition modulo 2 ** num_state_qubits.
  • name (str) – Le nom de l'objet 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.