L'algoritmo di Deutsch-Jozsa
L'algoritmo di Deutsch supera tutti gli algoritmi classici per un problema di query, ma il vantaggio è piuttosto modesto: una query contro due. L'algoritmo di Deutsch-Jozsa estende questo vantaggio — e, in effetti, può essere usato per risolvere un paio di problemi di query diversi.
Ecco una descrizione circuitale quantistica dell'algoritmo di Deutsch-Jozsa. Un ulteriore passo di post-elaborazione classica, non mostrato nella figura, può essere necessario a seconda del problema specifico da risolvere.
Naturalmente, non abbiamo ancora discusso quali problemi risolve questo algoritmo; questo viene fatto nelle due sezioni che seguono.
Il problema di Deutsch-Jozsa​
Inizieremo con il problema di query che l'algoritmo di Deutsch-Jozsa era originalmente destinato a risolvere, noto come il problema di Deutsch-Jozsa.
La funzione di input per questo problema ha la forma per un intero positivo arbitrario Come nel problema di Deutsch, il compito è restituire se è costante e se è bilanciata, il che significa che il numero di stringhe di input su cui la funzione assume il valore è uguale al numero di stringhe di input su cui la funzione assume il valore .
Nota che, quando è maggiore di esistono funzioni della forma che non sono né costanti né bilanciate. Per esempio, la funzione definita come
non rientra in nessuna di queste due categorie. Per il problema di Deutsch-Jozsa, semplicemente non ci preoccupiamo di funzioni come questa — sono considerate input "don't care". Cioè, per questo problema abbiamo la promessa che sia costante o bilanciata.
L'algoritmo di Deutsch-Jozsa, con la sua singola query, risolve questo problema nel senso seguente: se tutti gli risultati di misura sono allora la funzione è costante; altrimenti, se almeno uno dei risultati di misura è allora la funzione è bilanciata. Un altro modo di dirlo è che il circuito descritto sopra è seguito da un passo di post-elaborazione classica in cui viene calcolato l'OR dei risultati di misura per produrre l'output.
Analisi dell'algoritmo​
Per analizzare le prestazioni dell'algoritmo di Deutsch-Jozsa sul problema di Deutsch-Jozsa, è utile iniziare pensando all'azione di un singolo strato di gate di Hadamard. Un'operazione di Hadamard può essere espressa come una matrice nel solito modo,
ma possiamo anche esprimere questa operazione in termini della sua azione sugli stati della base standard:
Queste due equazioni possono essere combinate in un'unica formula,
che vale per entrambe le scelte di
Supponiamo ora che invece di un singolo qubit ne abbiamo e che su ciascuno venga eseguita un'operazione di Hadamard. L'operazione combinata sugli qubit è descritta dal prodotto tensoriale ( volte), che scriviamo come per concisione e chiarezza. Usando la formula sopra, seguita dall'espansione e dalla semplificazione, possiamo esprimere l'azione di questa operazione combinata sugli stati della base standard di qubit così:
Qui, tra l'altro, stiamo scrivendo le stringhe binarie di lunghezza come e seguendo la convenzione di indicizzazione di Qiskit.
Questa formula ci fornisce uno strumento utile per analizzare il circuito quantistico sopra descritto. Dopo che viene eseguito il primo strato di gate di Hadamard, lo stato degli qubit (incluso il qubit più a sinistra/in basso, che viene trattato separatamente dagli altri) è