Algoritmo de Deutsch-Jozsa

De Wikipedia, la enciclopedia libre
Saltar a: navegación, búsqueda

En computación cuántica, el algoritmo de Deutsch-Jozsa es un algoritmo cuántico, propuesto por David Deutsch y Richard Jozsa en 1992. Fue uno de los primeros algoritmos diseñados para ejecutar sobre un computador cuántico y que tiene el potencial de ser más eficiente que los algoritmos clásicos al aprovechar el paralelismo inherente de los estados de superposición cuánticos.

En el problema de Deutsch-Jozsa nos dan una función cuántica (que para nosotros es una caja negra) f(x1, x2,..., xn) que toma n bits de entrada x1, x2,..., xn y devuelve un valor binario f(x1, x2,..., xn). Sabemos que la función es constante (0 en todas las entradas o 1 en todas las entradas) o balanceada (devuelve 1 para la mitad de las entradas y 0 para la otra mitad); el problema es entonces determinar cómo es la función (constante o balanceada) aplicando entradas a la caja negra y observando su salida.

Algoritmo de Deutsch[editar]

Circuito cuántico que implementa el algoritmo de Deutsch.

Esta es una versión del algoritmo para una función f(x) de una sola entrada. Se utilizan dos qubits auxiliares en los cálculos. El algoritmo se ilustra en la figura de la derecha.

El bloque H es una puerta Hadamard cuya operación es la siguiente:

H(|0\rangle )=\frac{1}{\sqrt{2}}(|0\rangle +|1\rangle)

H(|1\rangle )=\frac{1}{\sqrt{2}}(|0\rangle -|1\rangle)

El bloque Uf realiza la operación siguiente:

U_f(|0\rangle |0\rangle )=|0\rangle |0\oplus f(0)\rangle =|0\rangle |f(0)\rangle

U_f(|0\rangle |1\rangle )=|0\rangle |1\oplus f(0)\rangle =|0\rangle |\overline{f(0)}\rangle

U_f(|1\rangle |0\rangle )=|1\rangle |0\oplus f(1)\rangle =|1\rangle |f(1)\rangle

U_f(|1\rangle |1\rangle )=|1\rangle |1\oplus f(1)\rangle =|1\rangle |\overline{f(1)}\rangle

Además,

U_f(|0\rangle (|0\rangle -|1\rangle ))=|0\rangle |f(0)-\overline{f(0)}\rangle =|0\rangle |(-1)^{f(0)}(|0\rangle -|1\rangle )

U_f(|1\rangle (|0\rangle -|1\rangle ))=|1\rangle |f(1)-\overline{f(1)}\rangle =|1\rangle |(-1)^{f(1)}(|0\rangle -|1\rangle )

U_f(|x\rangle (|0\rangle -|1\rangle ))=|x\rangle |(-1)^{f(x)}(|0\rangle -|1\rangle )

La entrada al circuito es: |a\rangle=|0\rangle|1 \rangle, que atraviesa dos puestas Hardamard (véase la figura) obteniéndose |b\rangle=(1/2)(|0\rangle+|1 \rangle)(|0\rangle-|1 \rangle). Esto atraviesa el bloque Uf obteneniéndose

|c\rangle=(1/2)\{|0\rangle |(-1)^{f(0)}(|0\rangle -|1\rangle )+|1\rangle |(-1)^{f(1)}(|0\rangle -|1\rangle)\}

Esta expresión puede escribirse:

|c\rangle= \left\{\begin{array}{ll}
\pm(|0\rangle +|1\rangle )|(|0\rangle -|1\rangle )& \mbox{si } ~ f(0)=f(1) \\ 
\pm(|0\rangle -|1\rangle )|(|0\rangle -|1\rangle ) & \mbox{si } ~ f(0)\neq f(1) \end{array}\right .

Al atravesar la última puerta de Hadamard obtenemos:

|d\rangle= \left\{\begin{array}{ll}
\pm\frac{1}{\sqrt{2}}|0\rangle (|0\rangle -|1\rangle )& \mbox{si } ~ f(0)=f(1) \\ 
\pm\frac{1}{\sqrt{2}}|1\rangle (|0\rangle -|1\rangle ) & \mbox{si } ~  f(0)\neq f(1) \end{array}\right .

Puesto que si f(0)=f(1), f(0)\oplus f(1)=0 y si f(0)\neq f(1), f(0)\oplus f(1)=1, podemos escribir

\pm\frac{1}{\sqrt{2}}|f(0)\oplus f(1)\rangle (|0\rangle -|1\rangle )

Este es el resultado final: midiendo el primer qubit de la ecuación obtenemos f(0)\oplus f(1). Si resulta el valor 0, entonces la función f(x) es constante, mientras que si resulta 1, la función es balanceada.

Algoritmo de Deutsch-Jozsa[editar]

Circuito cuántico que implementa el algoritmo de Deutsch-Jozsa.

Esta es la versión general del algoritmo para funciones f(x) de n entradas.

En este caso, la entrada al circuito es:

|a\rangle=|0\rangle^{\oplus n}|1\rangle

A continuación de las puertas Hadamard se obtiene:

|b\rangle=\frac{1}{\sqrt{2^n}} \sum_{x=0}^{2^n-1} |x\rangle
\frac{|0\rangle-|1\rangle}{\sqrt{2}}

A la salida del bloque Uf se tiene:

|c\rangle=\sum_{x=0}^{2^n-1} (-1)^{f(x)}|x\rangle
\frac{|0\rangle-|1\rangle}{\sqrt{2}}

La última puerta Hadamard produce la siguiente salida

|d\rangle=\sum_{z=0}^{2^n-1}\sum_{x=0}^{2^n-1} (-1)^{x\cdot z +f(x)}|z\rangle
\frac{|0\rangle-|1\rangle}{\sqrt{2}}

Y por último, realizando la medición, se obtiene z. En el caso en que la función f(x) sea balanceda, las contribuciones para (0,\ldots,0) se cancelan y la medida de z debe dar una combinación distinta. Por el contrario, si f(x) es constante se obtiene (0,\ldots,0) en la medida, pues el resto de las contribuciones se cancelan en este caso. Por consiguiente, comprobando si z es cero o distinto de cero se sabe que la función es, respectivamente, constante o balanceada.

Referencias[editar]

  • Michael A. Nielsen e Isaac L. Chuang, Quantum Computation and Quantum Information, Cambridge University Press, Reino Unido, 2000, ISBN:0-521-63503-9.