Skip to main content
IBM Quantum Platform

QFT

class qiskit.circuit.library.QFT(num_qubits=None, approximation_degree=0, do_swaps=True, inverse=False, insert_barriers=False, name=None)

GitHub

Bases : BlueprintCircuit

Circuit de transformée de Fourier quantique.

La transformée de Fourier quantique (QFT) sur les qubits nn est l'opération suivante

j12n/2k=02n1e2πijk/2nk|j\rangle \mapsto \frac{1}{2^{n/2}} \sum_{k=0}^{2^n - 1} e^{2\pi ijk / 2^n} |k\rangle

Le circuit qui met en œuvre cette transformation peut être réalisé à l'aide de portes de Hadamard sur chaque qubit, d'une série de portes controlled-U1 (ou Z, selon la phase) et d'une couche de portes Swap. La couche de portes Swap peut en principe être supprimée si la QFT apparaît à la fin du circuit, puisque le réordonnancement peut alors être effectué de manière classique. Ils peuvent être désactivés à l'aide de l'attribut do_swaps .

Pour 4 qubits, le circuit qui met en œuvre cette transformation est le suivant :

Schéma illustrant le circuit décrit précédemment.

La QFT inverse peut être obtenue en appelant la méthode inverse sur cette classe. Le schéma de circuit correspondant est le suivant :

Schéma illustrant le circuit décrit précédemment.

Une méthode pour réduire la profondeur du circuit consiste à mettre en œuvre la QFT de manière approximative en ignorant les rotations à phase contrôlée lorsque l'angle est inférieur à un seuil. Cette question est abordée plus en détail dans https://arxiv.org/abs/quant-ph/9601018 ou https://arxiv.org/abs/quant-ph/0403071.

Ici, cela peut être ajusté à l'aide de l'attribut approximation_degree : les plus petits angles de rotation approximation_degree sont supprimés de la QFT. Par exemple, une QFT sur 5 qubits avec un degré d'approximation 2 donne (les barrières sont supprimées dans cet exemple) :

Schéma illustrant le circuit décrit précédemment.
Déclassé depuis la version 2.1

La classe qiskit.circuit.library.basis_change.qft.QFT est obsolète depuis Qiskit 2.1. Elle sera supprimée à Qiskit 3.0. ('Utilisez qiskit.circuit.library.QFTGate ou qiskit.synthesis.qft.synth_qft_full à la place, pour accéder à tous les arguments précédents.',)

Paramètres

  • num_qubits (int | None) – Le nombre de qubits sur lesquels la QFT agit.
  • approximation_degree (int) – Le degré d'approximation (0 pour aucune approximation).
  • do_swaps (bool) – Inclure ou non les swaps finaux dans le QFT.
  • inverse (bool) – Si True, la transformée de Fourier inverse est construite.
  • insert_barriers (bool) – Si Vrai, les barrières sont insérées pour améliorer la visualisation.
  • name (str) – Le nom du circuit.

Attributs

approximation_degree

Le degré d'approximation de la QFT.

Retours

Le degré d'approximation actuellement défini.

do_swaps

Que les échanges finaux de la QFT soient appliqués ou non.

Retours

True, si les swaps finaux sont appliqués, False si ce n'est pas le cas.

insert_barriers

Que des barrières soient insérées pour une meilleure visualisation ou non.

Retours

True, si les barrières sont insérées, False si elles ne le sont pas.

num_qubits

Le nombre de qubits dans le circuit QFT.

Retours

Le nombre de qubits dans le circuit.

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

Méthodes

inverse

inverse(annotated=False)

GitHub

Inverser ce circuit.

Paramètres

annotated (bool) – indique si la porte inverse peut être mise en œuvre comme une porte annotée. La valeur de cet argument est ignorée car l'inverse d'une QFT est une IQFT qui est juste une autre instance de QFT.

Retours

Le circuit inversé.

Type de retour

QFT

is_inverse

is_inverse()

GitHub

Si la transformée de Fourier inverse est mise en œuvre.

Retours

True, si la transformée de Fourier inverse est implémentée, False sinon.

Type de retour

booléen

Cette page a-t-elle été utile ?
Signaler un bogue, une coquille ou proposer du contenu sur GitHub.