Un oracolo, , è un'operazione non esposta usata come input per un altro algoritmo.
Spesso tali operazioni vengono definite usando una funzione , che accetta un bit e produce un .
A tale scopo, prendere in considerazione un particolare input binario .
È possibile etichettare gli stati qubit come $\ket{\vec{x}}\ket{=x_{\ket{{0}}\otimesx_\otimes{1}}\otimes\ket{\cdotsx_{n-1.}}$
È possibile prima provare a definire in modo che , ma questo metodo presenta un paio di problemi.
In primo luogo, potrebbe avere una dimensione diversa di input e output (), in modo che l'applicazione cambierebbe il numero di qubit nel registro.
In secondo luogo, anche se n m, la funzione potrebbe non essere invertibile: se = per alcuni , allora ma $O^\dagger O x}\ne O\ket{^\dagger O\ket{y.}$$= òèadiacente O^\dagger$e gli oracle devono avere un adiacente definito per loro.
Definire un oracolo in base al relativo effetto sugli stati di base computazionale
È possibile gestire entrambi questi problemi introducendo un secondo registro di per contenere la risposta.
Definire quindi l'effetto dell'oracolo su tutti gli stati di calcolo: per tutti gli e ,
Ora per costruzione e hai risolto entrambi i problemi precedenti.
Suggerimento
Per vedere che , si noti che giacché per ogni .
Di conseguenza, .
È importante notare che la definizione di un oracolo in questo modo per ogni stato di base computazionale definisce anche il modo in cui agisce per qualsiasi altro stato.
Questo comportamento segue immediatamente dal fatto che , come tutte le operazioni quantistice, è lineare nello stato su cui agisce.
Si consideri l'operazione Hadamard, ad esempio, definita e
Se si desidera sapere in che modo agisce su , è possibile usare che è lineare,
Qui, rappresenta i coefficienti dello stato . Pertanto
$$\begin{\begin{align}O \ket{\psi}& = O \sum_{x \in \{0, 1\}^n, y \in \{0, 1\}^m\alpha}(x, y) \ket{x\ket{}y\&}amp; =\sum_{x \in \{0, 1\}^n, y \in \{0, 1\}^m}\alpha(x, y) O \ket{x}\ket{y\&}amp; =\sum_{x \in \{0, 1\}^n, y \in \{0, 1\}^m\alpha}(x, y) \ket{x}\ket{y \oplus f(x)}.
\end{align}
$$
Oracoli di fase
In alternativa, è possibile codificare O$ applicando una fase basata sull'input a èO$ in modo che\begin{$$\begin{align} O \ket{x=} (-1)^{f(x)}\ket{x.}
\end{align}
$$
Se un oracolo di fase agisce inizialmente su un registro in uno stato , questa fase è una fase globale e quindi non osservabile.
Ma tale oracolo può essere una risorsa potente se applicata a una sovrapposizione o come operazione controllata.
Si consideri, ad esempio, un oracolo di fase per una funzione a qubit singolo .
Quindi, $$\begin{align} O_f \ket{+}& = O_f (\ket{0} +{1}\ket{ ) /\&\sqrt{{2} amp; = ((-1)^{f(0)}\ket{0} + (-1)^{f(1)\ket{1}}) /&\sqrt{2}\ amp; = (-1)^{f(0)} ({0}\ket{ + (-1)^{f(1) - f(0){1}\ket{}) /\{2}&\sqrt{ amp; = (-1)^{f(0)} Z^{f(0) - f(1)}\ket{+.}
\end{align}
$$
Nota
Si noti che , pertanto
Più in generale, entrambe le visualizzazioni degli oracle possono essere ampliate per rappresentare le funzioni classiche, che restituiscono numeri reali anziché un solo bit.
La scelta del modo migliore per implementare un oracolo dipende principalmente dal modo in cui questo oracolo deve essere usato all'interno di un determinato algoritmo.
Ad esempio, l'algoritmo Deutsch-Jozsa si basa sull'oracolo implementato nel primo modo, mentre l'algoritmo di Grover si basa sull'oracolo implementato nel secondo modo.
Informazioni sulla teoria alla base dell'algoritmo Grover, un algoritmo quantistico che fornisce una velocità quadratica per la ricerca di database non interrotti.
Informazioni su come leggere un diagramma di circuito quantistico e come rappresentare operazioni quantistiche e misurazioni in un diagramma di circuito.
Informazioni sull'entanglement, un concetto fondamentale nel calcolo quantistico che consente di correlare i qubit in modi in cui i bit classici non possono essere correlati.
Questo articolo descrive la rappresentazione intermedia quantistica sviluppata dall'Alleanza QIR per il calcolo quantistico, la pertinenza e i casi d'uso.
Informazioni sulle regole usate per creare stati a più qubit da stati a qubit singolo. Informazioni anche sulle operazioni del gate necessarie per formare un computer quantistico a più qubit.