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

Basi: BlueprintCircuit

Circuito della trasformata di Fourier quantistica.

La trasformata quantistica di Fourier (QFT) su nn qubit è l'operazione

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

Il circuito che implementa questa trasformazione può essere realizzato utilizzando porte Hadamard su ogni qubit, una serie di porte controlled-U1 (o Z, a seconda della fase) e uno strato di porte Swap. In linea di principio, lo strato di porte Swap può essere abbandonato se la QFT compare alla fine del circuito, poiché in tal caso il riordino può essere effettuato in modo classico. Possono essere disattivati utilizzando l'attributo do_swaps .

Per 4 qubit, il circuito che implementa questa trasformazione è:

Schema che illustra il circuito precedentemente descritto.

La QFT inversa può essere ottenuta chiamando il metodo inverse su questa classe. Il relativo schema circuitale è:

Schema che illustra il circuito precedentemente descritto.

Un metodo per ridurre la profondità del circuito consiste nell'implementare la QFT ignorando approssimativamente le rotazioni a fase controllata quando l'angolo è inferiore a una soglia. Questo aspetto è discusso in modo più dettagliato in https://arxiv.org/abs/quant-ph/9601018 o https://arxiv.org/abs/quant-ph/0403071.

In questo caso, questo può essere regolato utilizzando l'attributo approximation_degree : gli angoli di rotazione più piccoli di approximation_degree vengono eliminati dalla QFT. Per esempio, una QFT su 5 qubit con grado di approssimazione 2 dà come risultato (in questo esempio le barriere vengono abbandonate):

Schema che illustra il circuito precedentemente descritto.
Deprecato dalla versione 2.1

La classe qiskit.circuit.library.basis_change.qft.QFT è deprecata a partire da Qiskit 2.1. Verrà rimosso in Qiskit 3.0. ('Usare invece qiskit.circuit.library.QFTGate o qiskit.synthesis.qft.synth_qft_full per accedere a tutti gli argomenti precedenti.',)

Parametri

  • num_qubits (int | None) – Il numero di qubit su cui agisce la QFT.
  • approximation_degree (int) – Il grado di approssimazione (0 per nessuna approssimazione).
  • do_swaps (bool) – Se includere o meno gli swap finali nella QFT.
  • inverse (bool) – Se Vero, viene costruita la trasformata di Fourier inversa.
  • insert_barriers (bool) – Se Vero, le barriere vengono inserite come miglioramento della visualizzazione.
  • name (str) – Il nome del circuito.

Attributi

approximation_degree

Il grado di approssimazione della QFT.

Risultati

Il grado di approssimazione attualmente impostato.

do_swaps

Se gli scambi finali della QFT sono applicati o meno.

Risultati

Vero, se gli scambi finali sono stati applicati, Falso in caso contrario.

insert_barriers

Se le barriere sono inserite per una migliore visualizzazione o meno.

Risultati

Vero, se le barriere sono inserite, Falso se non lo sono.

num_qubits

Il numero di qubit nel circuito QFT.

Risultati

Il numero di qubit nel circuito.

name

Tipo: str

Un nome leggibile per il circuito.

Esempio

from qiskit import QuantumCircuit

qc = QuantumCircuit(2, 2, name="my_circuit")
print(qc.name)
my_circuit

Metodi

inverse

inverse(annotated=False)

GitHub

Invertire questo circuito.

Parametri

annotated (bool) – indica se il gate inverso può essere implementato come gate annotato. Il valore di questo argomento viene ignorato poiché l'inverso di una QFT è una IQFT che è solo un'altra istanza di QFT.

Risultati

Il circuito invertito.

Tipo di restituzione

QFT

is_inverse

is_inverse()

GitHub

Se viene implementata la trasformata di Fourier inversa.

Risultati

Vero, se la trasformata di Fourier inversa è implementata, Falso altrimenti.

Tipo di restituzione

bool

Questa pagina è stata utile?
Segnala un bug, un errore di battitura o richiedi contenuti su GitHub.