¿Cómo funcionan los algoritmos de Shor y Grover?

Algoritmo de Grover

Primero haré Grover ya que es más simple. Comencemos con algunos antecedentes sobre lo que hace:

El algoritmo de Grover resuelve el problema de búsqueda . Un ejemplo concreto sería resolver la factorización; para factorizar un número entero n, buscando un par (a, b) con la propiedad que ab = n. (Esto no es tan rápido como usar el algoritmo de Shor para factorizar, pero sigue siendo un ejemplo conveniente).

Sin embargo, Grover’s es mucho más general. Podemos abstraerlo de la siguiente manera. Supongamos que tenemos N objetos para buscar, que etiquetaremos con los números 1, …, N, y una forma de verificar de manera eficiente si algún elemento dado es el elemento que estamos buscando. Es decir, tenemos una función f tal que f (i) siempre devuelve si i es “la respuesta correcta”. Con una computadora clásica, tenemos que verificar todos los N objetos individualmente para encontrar el que estamos buscando.

  para i en [1..N]:
     si f (i):
         regreso yo 

No podemos hacer nada mejor que esto sin explotar alguna estructura especial de f.

El algoritmo de Grover puede resolver este problema con solo [matemáticas] O (\ sqrt {N}) [/ matemáticas] “llamadas cuánticas” a f. Esto ha demostrado ser óptimo, de hecho.

Aquí está la idea básica. En el modelo de computación cuántica, podemos preparar un estado que es la superposición sobre todos los valores 1, …, N. Este estado se escribiría como

[matemáticas] \ vert x \ rangle = \ frac {1} {\ sqrt {N}} \ left (\ vert 1 \ rangle + \ dotsb + \ vert N \ rangle \ right) [/ math]

La [matemática] \ vert x \ rangle [/ matemática] se llama notación ket y es solo la forma en que escribimos estados cuánticos. La [matemática] 1 / \ sqrt {N} [/ matemática] significa que si tuviéramos que medir el estado, obtendríamos cualquiera de 1, …, N, cada uno con probabilidad [matemática] 1 / N [/ matemática ] Es tentador pensar en este estado como “está en todos los estados a la vez”. Sin embargo, esa no es una buena manera de verlo. No está en estado [matemática] \ vert 1 \ rangle [/ matemática] o [matemática] \ vert 2 \ rangle [/ matemática], etc. en absoluto. Es el estado [matemáticas] \ vert x \ rangle [/ matemáticas]. Cuando lo mides, se derrumba a uno de esos estados “puros”. La mejor manera de pensarlo como un vector N-dimensional, es decir, solo una secuencia de N números:

[matemáticas] (1 / \ sqrt {N}, \ cdots, 1 / \ sqrt {N}) [/ matemáticas].

Este estado por sí solo no es muy útil hasta que realmente hagamos algo con él. Realmente necesitamos hacer uso de f si queremos obtener algo útil.
Idealmente, tendríamos el estado puro [matemática] \ vert i \ rangle [/ matemática], donde i es la respuesta correcta, la mide y obtiene i. Entonces estaríamos listos. Desafortunadamente, la aplicación de f no nos permite saltar inmediatamente a este estado. Aquí hay una visualización de dónde estamos y dónde queremos estar, una porción bidimensional del gran espacio N-dimensional de estados cuánticos:


Estamos en [matemáticas] \ vert x \ rangle [/ matemáticas], pero queremos estar en [matemáticas] \ vert i \ rangle [/ matemáticas]. Desafortunadamente, [math] \ vert x \ rangle [/ math] está muy lejos de [math] \ vert i \ rangle [/ math]; son casi perpendiculares

Bien, ahora usemos nuestra función f. Sin ser demasiado técnico sobre lo que es realmente una “llamada cuántica” a f, solo diré que le permite negar la coordenada i , es decir, reflejar [matemáticas] \ vert x \ rangle [/ matemáticas] sobre la horizontal eje a un nuevo vector, [matemáticas] \ vert x ‘\ rangle [/ matemáticas].

A continuación, puede reflejar [matemáticas] \ vert x ‘\ rangle [/ matemáticas] acerca de [matemáticas] \ vert x [/ matemáticas] a [matemáticas] \ vert x’ ‘\ rangle [/ matemáticas]. Esta es una operación similar a la primera reflexión, aunque no requiere el uso de f.


entonces, ¿qué hicimos? ¡Rotamos [matemáticas] \ vert x \ rangle [/ matemáticas] más cerca de [matemáticas] \ vert i \ rangle [/ matemáticas]! De hecho, cada vez que hacemos esta operación, giraremos nuestro vector en un ángulo [matemático] \ theta [/ matemático] más cercano a [matemático] \ vert i \ rangle [/ matemático]. Entonces, si hacemos esto iterativamente, nuestro estado se acercará más y más a [math] \ vert i \ rangle [/ math]. Es posible que nunca lleguemos a [math] \ vert i \ rangle [/ math] exactamente , pero después de los pasos [math] O (\ sqrt {N}) [/ math], nos acercaremos lo suficiente para que cuando medimos, ‘ Mediremos el estado [matemáticas] \ vert i \ rangle [/ matemáticas] con buena probabilidad.

Algoritmo de Shor

El algoritmo de Shor es mucho más difícil de explicar en términos simples, especialmente porque los detalles de la pregunta me prohíben decir “Transformación cuántica de Fourier”, ya que es esencial aquí, pero lo intentaré.

Probablemente todos conozcan el algoritmo de Shor como un algoritmo para factorizar un número entero n. Tenga en cuenta que Shor’s proporciona un algoritmo de tiempo polinómico, mientras que el uso del algoritmo de Grover para la factorización todavía daría un algoritmo de tiempo exponencial. A Shor le va mejor porque explota una estructura especial de teoría de números.

Ahora, el algoritmo de Shor en realidad resuelve algo un poco más general que solo factorizar: resuelve el problema de búsqueda de períodos . Esto a su vez se usa como una subrutina para factorizar. Usar el hallazgo de períodos para factorizar solo involucra alguna teoría de números elemental. Me saltearé eso, ya que si conoces la teoría de números, puedes leerla en wikipedia.

Este problema de búsqueda de período es: dada una secuencia repetitiva, como

1, 10, 3, 7, 1, 10, 3, 7, 1, 10, 3, 7, 1, 10, 3, 7, 1, 10, 3, 7, …

encuentre el período (en el ejemplo, 4). Asumimos que tenemos acceso a alguna función [matemática] f (i) [/ matemática] que devuelve el elemento i-ésimo de la secuencia.

Como arriba, podemos hacer que el estado sea uniforme

[matemáticas] \ frac {1} {\ sqrt {N}} \ left (\ vert 1 \ rangle + \ dotsb + \ vert N \ rangle \ right) [/ math]

Ahora aplicamos f a este estado, almacenando el resultado en otro registro cuántico. En la notación ket, el resultado se escribiría:

[matemáticas] \ frac {1} {\ sqrt {N}} \ left (\ vert 1 \ rangle \ vert f (1) \ rangle + \ dotsb + \ vert N \ rangle \ vert f (N) \ rangle \ right )[/mates]

Básicamente, lo que esto significa es que si lo medimos, obtendremos un par al azar (i, f (i)), por ejemplo, uno de (1, 1), (2, 10), (3, 3), (4, 7), etc. utilizando el ejemplo anterior. Medirlo directamente no es muy útil. Entonces, en cambio, midamos el segundo registro, el que contiene f (i). Esto devolverá algún valor específico de f (i).

¡Sin embargo, el primer registro seguirá estando en alguna superposición! Estará en una superposición de todo i con el mismo valor de f (i): valores [matemática] a, a + r, a + 2r, … [/ matemática] para alguna a, donde r es el período de f.

[matemáticas] \ frac {1} {M} \ izquierda (\ vert a \ rangle + \ vert a + r \ rangle + \ vert a + 2r \ rangle + \ dotsb \ right) [/ math].

(No te preocupes por el valor de M.)

Este es un estado muy bueno para tener! La función específica f ahora está completamente fuera de la imagen, pero este estado todavía codifica el valor r. Todavía no es obvio cómo podríamos obtener el valor r, ya que cuando medimos este estado, obtendremos un valor aleatorio y perderemos nuestro estado.

El resto se vuelve técnico, pero la idea es usar, sí, la Transformada Cuántica de Fourier para estudiar este estado. Creo que voy a cortar mi explicación aquí; De nuevo, si quieres ver cómo funciona la Transformación Cuántica de Fourier y estás dispuesto a hacer algunos cálculos, puedes leer más en profundidad.

More Interesting

¿Dónde puedo ir para usar una computadora cuántica?

¿Qué es el índice de pobreza multidimensional?

¿Cómo podemos contar el número de modos en la radiación de la cavidad?

¿Por qué las computadoras cuánticas se consideran "límites de la tecnología humana"?

¿Qué tan rápido podría una computadora cuántica piratear / fuerza bruta a través de los mejores sistemas de encriptación de hoy?

¿Es posible simular el gran colisionador de Hadrones con Quantum Computing?

¿Qué es un enfriamiento cuántico?

¿Cuáles son las ventajas de usar la computación cuántica en el procesamiento del lenguaje natural?

¿La mecánica cuántica requiere no localidad?

¿Cómo la descripción cuántica de la realidad, como la superposición y el colapso de la función de onda, da lugar a la realidad que percibimos?

¿Qué tipos de problemas resolvería una computadora cuántica de lógica difusa que el sistema actual basado en lógica binaria no lo hace?

¿Cómo se inicializan las computadoras cuánticas en el contexto de ser como una GPU? ¿Cómo se convierte la electricidad en energía cuántica?

¿Alguna vez se han conectado 2 supercomputadoras o 2 computadoras cuánticas?

¿Qué área es más prometedora, la computación cuántica o la inteligencia artificial?

Si la computación cuántica un día reemplaza la computación binaria tradicional, ¿cómo afectará la forma en que programamos y qué tipo de problemas nuevos para los desarrolladores surgirían de esto?