QFT
class qiskit.circuit.library.QFT(num_qubits=None, approximation_degree=0, do_swaps=True, inverse=False, insert_barriers=False, name=None)
Basen: BlueprintCircuit
Quanten-Fourier-Transformations-Schaltung.
Die Quanten-Fourier-Transformation (QFT) auf Qubits ist die Operation
Die Schaltung, die diese Transformation umsetzt, kann mit Hadamard-Gattern auf jedem Qubit, einer Reihe von controlled-U1 (oder Z, je nach Phase) und einer Schicht von Swap-Gattern realisiert werden. Die Schicht der Swap-Gates kann im Prinzip entfallen, wenn die QFT am Ende der Schaltung auftaucht, da dann die Umordnung auf klassische Weise erfolgen kann. Sie können mit dem Attribut do_swaps ausgeschaltet werden.
Für 4 Qubits ist die Schaltung, die diese Transformation umsetzt, wie folgt:

Die inverse QFT kann durch Aufruf der Methode inverse für diese Klasse ermittelt werden. Der entsprechende Schaltplan lautet:

Eine Methode zur Verringerung der Schaltungstiefe besteht darin, die QFT näherungsweise zu implementieren, indem Drehungen mit kontrollierter Phase ignoriert werden, wenn der Winkel unter einem Schwellenwert liegt. Dies wird ausführlicher behandelt in https://arxiv.org/abs/quant-ph/9601018 oder https://arxiv.org/abs/quant-ph/0403071.
Hier kann dies mit dem Attribut approximation_degree angepasst werden: Die kleinsten approximation_degree Drehwinkel werden aus der QFT gestrichen. Eine QFT auf 5 Qubits mit Approximationsgrad 2 ergibt beispielsweise (die Schranken werden in diesem Beispiel weggelassen):

Die Klasse qiskit.circuit.library.basis_change.qft.QFT ist ab Qiskit 2.1 veraltet. Sie wird in Qiskit 3.0 entfernt. ('Verwenden Sie stattdessen qiskit.circuit.library.QFTGate oder qiskit.synthesis.qft.synth_qft_full, um auf alle vorherigen Argumente zuzugreifen.',)
Parameter
- num_qubits (int | None) – Die Anzahl der Qbits, auf die die QFT wirkt.
- approximation_degree (int) – Der Grad der Angleichung (0 für keine Angleichung).
- do_swaps (bool) – Ob die endgültigen Swaps in die QFT aufgenommen werden sollen.
- inverse (bool) – Wenn True, wird die inverse Fourier-Transformation konstruiert.
- insert_barriers (bool) – Wenn True, werden Barrieren als Verbesserung der Visualisierung eingefügt.
- name (str) – Der Name der Rennstrecke.
Attribute
approximation_degree
Der Approximationsgrad der QFT.
Rückgabe
Der aktuell eingestellte Approximationsgrad.
do_swaps
Ob die endgültigen Swaps der QFT angewendet werden oder nicht.
Rückgabe
True, wenn die endgültigen Swaps angewendet werden, False, wenn nicht.
insert_barriers
Unabhängig davon, ob Barrieren zur besseren Visualisierung eingefügt werden oder nicht.
Rückgabe
True, wenn Barrieren eingefügt sind, False, wenn nicht.
num_qubits
Die Anzahl der Qubits in der QFT-Schaltung.
Rückgabe
Die Anzahl der Qubits in der Schaltung.
name
Typ: str
Ein von Menschen lesbarer Name für den Stromkreis.
Beispiel
from qiskit import QuantumCircuit
qc = QuantumCircuit(2, 2, name="my_circuit")
print(qc.name)my_circuitMethoden
inverse
inverse(annotated=False)
Invertieren Sie diese Schaltung.
Parameter
annotated (bool) – gibt an, ob das inverse Gatter als kommentiertes Gatter implementiert werden kann. Der Wert dieses Arguments wird ignoriert, da die Inverse einer QFT eine IQFT ist, die nur eine weitere Instanz von QFT.
Rückgabe
Die invertierte Schaltung.
Rückgabetyp