qiskit.circuit.library.fourier_checking
qiskit.circuit.library.fourier_checking(f, g)
Fourier-Kontrollschaltung.
Die in [1] vorgestellte Schaltung für den Fourier-Prüfalgorithmus umfasst eine Hadamard-Schicht, die Funktion , eine weitere Hadamard-Schicht, die Funktion , gefolgt von einer letzten Hadamard-Schicht. Die Funktionen und sind klassische Funktionen, die als Phasenorakel realisiert sind (Diagonaloperatoren mit {-1, 1} auf der Diagonalen).
Die Wahrscheinlichkeit für die Beobachtung der All-Zero-Kette ist . Der Algorithmus löst das Versprechungs-Fourier-Prüfungsproblem, das entscheidet, ob f mit der Fourier-Transformation von g korreliert ist, indem er prüft, ob oder wahr ist, und verspricht, dass das eine oder das andere wahr ist.
Die Funktionen und werden derzeit anhand ihrer Wahrheitstabellen implementiert, könnten aber für spezielle Klassen von Funktionen prägnant dargestellt und effizient implementiert werden.
Die Fourier-Prüfung ist ein Spezialfall von -fold forrelation [2].
Referenzkreislauf:
from qiskit.circuit.library import fourier_checking
circuit = fourier_checking([1, -1, -1, -1], [1, 1, -1, -1])
circuit.draw('mpl')
Quellenangaben:
[1] S. Aaronson, BQP and the Polynomial Hierarchy, 2009 (Abschnitt 3.2 ). arXiv:0910.4698
[2] S. Aaronson, A. Ambainis, Forrelation: ein Problem, das Quanten- und klassisches Rechnen optimal trennt, 2014. arXiv:1411.5729
Parameter
Rückgabetyp