¿Cómo funciona el algoritmo de Shor en términos simples?

Bueno, para empezar, el algoritmo de Shor es un algoritmo diseñado para ejecutarse en una computadora cuántica. El algoritmo toma un número [matemático] N [/ matemático] y genera sus factores. Por ejemplo, la entrada [matemática] N = 15 [/ matemática] daría como resultado la salida [matemática] 15 = 3 \ cdot 5 [/ matemática]. O como un ejemplo más difícil, la entrada [matemática] N = 694921 [/ matemática] daría como resultado la salida [matemática] 694921 = 787 \ cdot 883 [/ matemática].

El algoritmo más conocido para factorizar números primos en una computadora clásica (no cuántica) requiere una cantidad de tiempo que es básicamente exponencial con el tamaño de [matemáticas] N [/ matemáticas]. Esta es la razón por la cual el algoritmo de Shor se considera importante: una computadora cuántica que lo ejecuta solo requeriría un tiempo polinómico (en lugar de exponencial). Dado que la seguridad del popular sistema de cifrado RSA se basa en la dificultad de la factorización principal, el algoritmo de Shor ha atraído mucho interés de las comunidades de privacidad y seguridad de datos.

Ese es el contexto detrás del algoritmo de Shor. En cuanto a cómo funciona realmente, he tratado de hacer una lluvia de ideas sobre una analogía adecuada, pero ninguna es remotamente tan buena como la escrita por Scott Aaronson en Shor, lo haré, así que citaré la suya. La esencia básica del algoritmo de Shor es el proceso de búsqueda de períodos que se realiza mediante la Transformación Cuántica de Fourier (QFT) . El QFT toma alguna función [matemática] f (x) [/ matemática] y calcula el período de la función. Por ejemplo, si [math] f (x) = f (x + 10) [/ math] para todos [math] x [/ math], entonces la función se repite cada 10 valores, y podemos decir que tiene un período de 10.

Entonces, ¿cómo funciona realmente el QFT? Aquí es donde recurriré a la analogía de Aaronson. Por favor, léalo detenidamente, ¡prometo que será esclarecedor!

OK, déjame probar esto. Como muchos científicos informáticos, mantengo horas extremadamente extrañas. ¿Conoces el famoso experimento en el que pegan a las personas durante semanas en una habitación sellada sin relojes ni luz solar, y las personas cambian gradualmente de un día de 24 horas a un día de 25 o 26 o 28 horas? Bueno, eso es solo la vida ordinaria para mí. Un día me despertaré a las 9 a.m., al día siguiente a las 11 a.m., el día siguiente a la 1 p.m., etc. De hecho, felizmente ‘daré la vuelta’ si no intervienen clases o citas. (Solía ​​hacerlo todo el tiempo en Berkeley).

Ahora, aquí está mi pregunta: digamos que te digo que me desperté a las 5pm esta tarde. Solo por ese hecho, ¿qué puede concluir acerca de cuánto dura mi “día”: si tengo un horario de 25 horas, un horario de 26.3 horas, o lo que sea?

¡La respuesta, por supuesto, no es mucho! Quiero decir, es una apuesta bastante segura que no estoy en un horario de 24 horas, ya que de lo contrario me despertaría por la mañana, no a las 5 p.m. Pero casi cualquier otro horario (25 horas, 26 horas, 28 horas, etc.) necesariamente me hará “recorrer todo el día”, por lo que no sería una sorpresa verme levantarme a las 5 de la tarde en una tarde en particular .

Ahora, sin embargo, quiero que te imagines que la pared de mi habitación está cubierta de relojes analógicos. Estos son relojes muy extraños: uno de ellos hace una revolución completa cada 17 horas, uno de ellos cada 26 horas, uno de ellos cada 24.7 horas, y así sucesivamente durante casi todas las horas que puedas imaginar. (Para simplificar, cada reloj tiene solo una manecilla de hora, no manecilla de minutos). También quiero que te imagines que debajo de cada reloj hay una cartulina con una chincheta. Cuando me mudé a mi apartamento por primera vez, cada chincheta estaba en el medio de su tablero respectivo. Pero ahora, cada vez que me levanto por la “mañana”, lo primero que hago es dar la vuelta a mi habitación y mover cada chincheta exactamente una pulgada en la dirección que señala la manecilla del reloj que está encima.

Ahora, aquí está mi nueva pregunta: al examinar las chinchetas en mi habitación, ¿es posible averiguar qué tipo de horario estoy manteniendo? Afirmo que es posible. Como ejemplo, supongamos que mantenía un día de 26 horas. Entonces, ¿qué pasaría con la chincheta debajo del reloj de 24 horas? No es difícil ver que sufriría un movimiento periódico : claro, se desplazaría un poco, pero después de cada 12 días volvería al centro del tablero donde había comenzado. Una mañana movería la chincheta una pulgada en esta dirección, otra mañana una pulgada en eso, pero eventualmente todos estos movimientos en diferentes direcciones se cancelarían mutuamente.

Por otro lado, una vez más, suponiendo que tuviera un día de 26 horas, ¿qué pasaría con el pulgar debajo del reloj de 26 horas? Aquí la respuesta es diferente. En lo que respecta al reloj de 26 horas, ¡me he estado despertando exactamente a la misma hora cada “mañana”! Cada vez que me levanto, el reloj de 26 horas apunta en la misma dirección que la última vez que me desperté. ¡Así que seguiré moviendo la chincheta una pulgada más en la misma dirección, hasta que ni siquiera esté en el cartel!

Se deduce, entonces, que solo al ver qué chincheta viajó más lejos desde su punto de partida, podría averiguar en qué tipo de horario estaba. En otras palabras, podrías inferir el “período” de la secuencia periódica que es mi vida.

Así es como funciona el QFT. Un comentario que vale la pena agregar: el QFT se puede hacer de manera eficiente en una computadora cuántica, porque puede hacer que todos los “experimentos de reloj” se ejecuten a la vez en superposición , con los malos experimentos deteriorados por los efectos de interferencia destructiva y los buenos experimentos dominando por la interferencia constructiva efectos

¡Casi allí! El resto del algoritmo de Shor es completamente un algoritmo clásico. Una vez que tenemos el mecanismo de búsqueda de períodos de la Transformada Cuántica de Fourier, podemos explotarlo para encontrar patrones en la estructura matemática del número que estamos tratando de factorizar, [matemáticas] N [/ matemáticas]. En particular, encontramos el período de [math] a ^ x \ mod N [/ math], donde [math] a [/ math] es esencialmente un número aleatorio menor que [math] N [/ math]. Por cierto, en caso de que la palabra “mod” no sea familiar, solo significa resto. Para recapitular con un ejemplo específico, si [matemática] N = 77 [/ matemática] y [matemática] a = 22 [/ matemática], entonces la QFT nos dirá cuánto tiempo tenemos que continuar en la secuencia de [matemática] 22 ^ 1, 22 ^ 2, 22 ^ 3 \ mod 77, [/ math] y así sucesivamente hasta que lleguemos a 22 nuevamente.

A partir de ahí, solo tomamos prestado un resultado de la teoría de números que generalmente * produce un factor de [matemáticas] N [/ matemáticas]. El resultado es que el máximo común denominador de [matemáticas] N [/ matemáticas] y [matemáticas] a ^ {\ text {período} / 2} -1 [/ matemáticas] es un factor de [matemáticas] N [/ matemáticas] . ¡Hecho!

Pongo un * por ‘generalmente’ porque el algoritmo a menudo puede ser desafortunado por razones teóricas numéricas. Cuando eso sucede, la elección de [matemáticas] a [/ matemáticas] no dará lugar a factores de [matemáticas] N [/ matemáticas]. En ese caso, solo tenemos que repetir desde el paso 1, ¡eligiendo un nuevo valor para [math] a [/ math]! La probabilidad de que un [math] a [/ math] aleatorio funcione es lo suficientemente alta como para que el algoritmo pueda ejecutarse algunas veces antes de generar un factor exitoso.

Y ese es el algoritmo de Shor. Como punto final, vale la pena mencionar que para que el algoritmo sea realmente útil, ¡primero será necesario construir computadoras cuánticas escalables! Hasta ahora, lo mejor que una computadora cuántica ha hecho es factorizar 21 como [matemática] 3 \ cdot 7 [/ matemática] … y muchos en el campo agregarán en broma ” con alta probabilidad.

El algoritmo de Shor es un algoritmo cuántico para encontrar los factores primos de un número entero N (no debe ser una potencia prima / par / número entero de un número primo).
Por ejemplo, desea piratear un sistema criptográfico y tiene un conocimiento previo de un hecho relacionado con N (la clave pública RSA): que N tiene exactamente 1 factorización prima.
Entonces, para encontrar los factores de N para descifrar el cifrado RSA, debe calcular f (x) = (x ^ r) mod N.
Ahora, N es un número muy muy grande, y en lugar de adivinar los factores, ¿cuál es la forma más eficiente y precisa de encontrar ‘r’, considerando la sugerencia de que N es un factorizable primo y ‘r’ es periódico, es decir, f (x) = f (x + r).

Por lo tanto, debe encontrar ‘r’ para af (x) que tenga un patrón repetitivo agradable. Muy similar a las señales periódicas, ¿no? ¿Recuerdas algo sobre las transformaciones de Fourier en funciones periódicas?

Aquí es donde entra en juego el algoritmo de Shor. Utiliza un método llamado la transformación cuántica discreta de Fourier (QFT) para encontrar el período ‘r’.
Ahora, una transformada discreta de Fourier transforma un conjunto de números en un conjunto de senos y cosenos. Una QFT en su lugar genera una lista de la “amplitud de probabilidad” para la lista dada de estados qubit.

Una computadora Quantum se adapta perfectamente a esta tarea por las siguientes razones:
Una computadora cuántica puede ‘existir’ en muchos estados simultáneamente (¡sin duda es una computación rápida!), Lo que le permite evaluar la función periódica f (x) en todos los puntos simultáneamente.
Un QFT se calcula mediante un circuito cuántico que utiliza:
i) Transformada de Hadamard: una matriz cuadrada que consiste en +1 y -1, y las filas son ortogonales entre sí. La transformación de Hadamard es, en la mayoría de los casos, una especie de “paso de preprocesamiento” en la mayoría de los algoritmos cuánticos; asigna n qubits (0 o 1) a una superposición de 2 ^ n estados ortogonales.
ii) puertas cuánticas (circuitos cuánticos invertibles en el tiempo que funcionan en un conjunto de qubits (unidades de cálculo cuántico))

Ahora, para un valor ‘posible’ particular del período ‘r’, la computadora cuántica puede existir en diferentes estados y de alguna manera contribuir al valor de ‘r’. Al final, estos estados se cancelan mutuamente. Sin embargo, solo para el valor correcto de ‘r’ los estados se suman en la misma dirección.

El algoritmo de Shor es de naturaleza probabilística y su rendimiento mejora con las repeticiones.

Larga historia corta -> El algoritmo de Shor usa la computación cuántica (más rápido) para encontrar los factores primos de una clave pública RSA para piratear un sistema criptográfico.

Puede leer más sobre este algoritmo en detalle desde aquí:
www2.dgb.ch/users/le/arbtag11-08/shor.pdf
http://www.scottaaronson.com/blo