QFT
class qiskit.circuit.library.QFT(num_qubits=None, approximation_degree=0, do_swaps=True, inverse=False, insert_barriers=False, name=None)
Bases : BlueprintCircuit
Circuit de transformée de Fourier quantique.
La transformée de Fourier quantique (QFT) sur les qubits est l'opération suivante
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 :

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

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) :

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_circuitMéthodes
inverse
inverse(annotated=False)
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