qiskit.circuit.library.fourier_checking
qiskit.circuit.library.fourier_checking(f, g)
Circuito di controllo di Fourier.
Il circuito per l'algoritmo di controllo di Fourier, introdotto in [1], prevede uno strato di Hadamard, la funzione , un altro strato di Hadamard, la funzione , seguito da un ultimo strato di Hadamard. Le funzioni e sono funzioni classiche realizzate come oracoli di fase (operatori diagonali con {-1, 1} sulla diagonale).
La probabilità di osservare la stringa all-zeros è . L'algoritmo risolve il problema della verifica della promessa di Fourier, che decide se f è correlata alla trasformata di Fourier di g, verificando se o , promettendo che l'uno o l'altro sia vero.
Le funzioni e sono attualmente implementate a partire dalle loro tabelle di verità, ma potrebbero essere rappresentate in modo conciso e implementate in modo efficiente per classi speciali di funzioni.
Il controllo di Fourier è un caso speciale di -fold per la relazione [2].
Circuito di riferimento:
from qiskit.circuit.library import fourier_checking
circuit = fourier_checking([1, -1, -1, -1], [1, 1, -1, -1])
circuit.draw('mpl')
Riferimenti:
[1] S. Aaronson, BQP and the Polynomial Hierarchy, 2009 (Sezione 3.2 ). arXiv:0910.4698
[2] S. Aaronson, A. Ambainis, Forrelation: a problem that optimally separates quantum from classical computing, 2014. arXiv:1411.5729
Parametri
Tipo di restituzione