Hay una buena explicación por Craig Gidney aquí (también tiene otra gran contenido, incluyendo un simulador de circuitos, en su blog ).
Esencialmente, el algoritmo de Grover se aplica cuando tiene una función que regresa True
para una de sus posibles entradas y False
para todas las demás. El trabajo del algoritmo es encontrar el que regresa True
.
Para hacer esto, expresamos las entradas como cadenas de bits y las codificamos utilizando los estados y de una cadena de qubits. Por lo tanto, la cadena de bits se codificaría en el estado de cuatro qubits , por ejemplo.|0⟩|1⟩0011
|0011⟩
También necesitamos poder implementar la función usando puertas cuánticas. Específicamente, necesitamos encontrar una secuencia de puertas que implementen una unitaria tal queU
U|a⟩=−|a⟩,U|b⟩=|b⟩
donde es la cadena de bits para los que la función devolvería y es ninguna de las que volvería .aTrue
bFalse
Si comenzamos con una superposición de todas las cadenas de bits posibles, lo cual es bastante fácil de hacer simplemente Hadamarding todo, todas las entradas comienzan con la misma amplitud de (donde es la longitud de las cadenas de bits que estamos buscando y, por lo tanto, el número de qubits que estamos usando). Pero si luego aplicamos el oráculo , la amplitud del estado que estamos buscando cambiará a .12n√nU−12n√
Esta no es una diferencia fácilmente observable, por lo que debemos amplificarla. Para ello utilizamos el Grover Difusión del operador , . El efecto de este operador es esencialmente observar cómo cada amplitud es diferente de la amplitud media, y luego invertir esta diferencia. Entonces, si una cierta amplitud era una cierta cantidad mayor que la amplitud media, se convertirá en esa misma cantidad menor que la media, y viceversa.D
Específicamente, si tiene una superposición de cadenas de bits , el operador de difusión tiene el efectobj
D:∑jαj|bj⟩↦∑j(2μ−αj)|bj⟩
donde es la amplitud media. Entonces, cualquier amplitud se convierte en . Para ver por qué tiene este efecto y cómo implementarlo, vea estas notas de clase .μ=∑jαjμ+δμ−δ
La mayoría de las amplitudes serán un poco más grandes que la media (debido al efecto del single ), por lo que serán un poco menos que la media a través de esta operacion. No es un gran cambio.−12n√
El estado que estamos buscando se verá afectado más fuertemente. Su amplitud es mucho menor que la media, por lo que será mucho mayor que la media después de aplicar el operador de difusión. El efecto final del operador de difusión es, por lo tanto, causar un efecto de interferencia en los estados que roza una amplitud de de todas las respuestas incorrectas y las agrega a la correcta. Al repetir este proceso, podemos llegar rápidamente al punto en que nuestra solución se destaca tanto de la multitud que podemos identificarla.12n√
Por supuesto, todo esto demuestra que todo el trabajo lo realiza el operador de difusión. La búsqueda es solo una aplicación que podemos conectar a ella.
Consulte las respuestas a otras preguntas para obtener detalles sobre cómo se implementan las funciones y el operador de difusión .