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

Basen: BlueprintCircuit

Quanten-Fourier-Transformations-Schaltung.

Die Quanten-Fourier-Transformation (QFT) auf nn Qubits ist die Operation

∣j⟩↦12n/2∑k=02n−1e2πijk/2n∣k⟩|j\rangle \mapsto \frac{1}{2^{n/2}} \sum_{k=0}^{2^n - 1} e^{2\pi ijk / 2^n} |k\rangle

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:

Diagramm zur Veranschaulichung der zuvor beschriebenen Schaltung.

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

Diagramm zur Veranschaulichung der zuvor beschriebenen Schaltung.

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

Diagramm zur Veranschaulichung der zuvor beschriebenen Schaltung.
Veraltet seit Version 2.1

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_circuit

Methoden

inverse

inverse(annotated=False)

GitHub

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

QFT

is_inverse

is_inverse()

GitHub

Ob die inverse Fourier-Transformation implementiert ist.

Rückgabe

True, wenn die inverse Fourier-Transformation implementiert ist, andernfalls False.

Rückgabetyp

bool

War diese Seite hilfreich?
Melden Sie auf GitHub einen Fehler, einen Tippfehler oder fordern Sie Inhalte an.