Skip to main content
IBM Quantum Platform

FourierChecking

class qiskit.circuit.library.FourierChecking(f, g)

GitHub

Basi: QuantumCircuit

Circuito di controllo di Fourier.

Il circuito per l'algoritmo di controllo di Fourier, introdotto in [1], prevede uno strato di Hadamard, la funzione ff, un altro strato di Hadamard, la funzione gg, seguito da un ultimo strato di Hadamard. Le funzioni ff e gg sono funzioni classiche realizzate come oracoli di fase (operatori diagonali con {-1, 1} sulla diagonale).

La probabilità di osservare la stringa all-zeros è p(f,g)p(f,g). L'algoritmo risolve il problema della verifica della promessa di Fourier, che decide se f è correlata alla trasformata di Fourier di g, verificando se p(f,g)<=0.01p(f,g) <= 0.01 o p(f,g)>=0.05p(f,g) >= 0.05, promettendo che l'uno o l'altro sia vero.

Le funzioni ff e gg 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 kk -fold per la relazione [2].

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

Creare un circuito di controllo di Fourier.

Deprecato dalla versione 2.1

La classe qiskit.circuit.library.fourier_checking.FourierChecking è deprecata a partire da Qiskit 2.1. Verrà rimosso in Qiskit 3.0. Utilizzare invece qiskit.circuit.library.fourier_checking.

Parametri

  • f (Sequence[int]) – tabella di verità per f, lunghezza 2**n elenco di {1,-1}.
  • g (Sequence[int]) – tabella di verità per g, lunghezza 2**n elenco di {1,-1}.

Aumenti

CircuitError – se gli input f e g non sono validi.

Circuito di riferimento:

Schema che illustra il circuito precedentemente descritto.

Attributi

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
Questa pagina è stata utile?
Segnala un bug, un errore di battitura o richiedi contenuti su GitHub.