En la teoría de la complejidad computacional y la computación cuántica , el problema de Simon es un problema computacional que se ha demostrado que se resuelve exponencialmente más rápido en una computadora cuántica que en una computadora clásica (es decir, tradicional). El algoritmo cuántico que resuelve el problema de Simon, generalmente llamado algoritmo de Simon , sirvió de inspiración para el algoritmo de Shor . [ 1 ] Ambos problemas son casos especiales del problema del subgrupo oculto abeliano , del cual ahora se sabe que existen algoritmos cuánticos eficientes.
El problema se plantea en el modelo de complejidad de árbol de decisión o complejidad de consulta y fue concebido por Daniel R. Simon en 1994. [ 2 ] Simon presentó un algoritmo cuántico que resuelve el problema de Simon exponencialmente más rápido con exponencialmente menos consultas que el mejor algoritmo clásico probabilístico (o determinista). En particular, el algoritmo de Simon utiliza un número lineal de consultas, mientras que cualquier algoritmo probabilístico clásico debe utilizar un número exponencial de consultas.
Este problema produce una separación de oráculo entre las clases de complejidad BPP (complejidad de consulta clásica con error acotado) y BQP (complejidad de consulta cuántica con error acotado). [ 3 ] Esta es la misma separación que logra el algoritmo de Bernstein-Vazirani , y diferente de la separación proporcionada por el algoritmo de Deutsch-Jozsa , que separa P y EQP . A diferencia del algoritmo de Bernstein-Vazirani, la separación del algoritmo de Simon es exponencial .
Debido a que este problema supone la existencia de un oráculo de "caja negra" altamente estructurado para lograr su aceleración, este problema tiene poco valor práctico. [ 4 ] Sin embargo, sin tal oráculo, las aceleraciones exponenciales no se pueden probar fácilmente, ya que esto probaría que P es diferente de PSPACE .
Descripción del problema
El problema de Simon considera el acceso a una función.tal como lo implementa una caja negra o un oráculo. Se promete que esta función será una función uno a uno o una función dos a uno; sies dos a uno, además se promete que dos entradasyevaluar al mismo valor si y solo siydifieren en un conjunto fijo de bits. Es decir,
- Sino es uno a uno, se promete que existe un valor distinto de cerode tal manera que, para todos,si y solo si
dóndedenota la operación OR exclusiva a nivel de bits . El problema de Simon pregunta, en su versión de decisión, sies uno a uno o dos a uno. En su versión sin decisión, el problema de Simon pregunta si¿es uno a uno o cuál es el valor de?(como se definió anteriormente). El objetivo es resolver esta tarea con el menor número de consultas (evaluaciones) de.
Tenga en cuenta que si, entoncesycon. Por otro lado (porque a pesar dey),Por lo tanto, el problema de Simon puede reformularse de la siguiente forma:
- Dado el acceso de caja negra u oráculo a, prometió satisfacer, para algunosy todo,si y solo sideterminar si(versión de decisión) o salida(versión sin decisión).
Tenga en cuenta también que la promesa enimplica que siSi la relación es de dos a uno, entonces es una función periódica:
Ejemplo
La siguiente función es un ejemplo de una función que satisface la propiedad requerida para:
En este caso,(es decir, la solución). Cada salida deocurre dos veces, y las dos cadenas de entrada correspondientes a cualquier salida dada tienen una operación XOR bit a bit igual a.
Por ejemplo, las cadenas de entradayambos están mapeados (por) a la misma cadena de salida. Eso es,y. Al aplicar XOR a 010 y 100 se obtiene 110, es decir
También se puede verificar usando las cadenas de entrada 001 y 111 que se asignan (por f) a la misma cadena de salida 010. Al aplicar XOR a 001 y 111 se obtiene 110, es decirEsto da la misma solución.como antes.
En este ejemplo la función f es de hecho una función dos a uno donde.
Dificultad del problema
Intuitivamente, este es un problema difícil de resolver de manera "clásica", incluso si se usa aleatoriedad y se acepta una pequeña probabilidad de error. La intuición detrás de la dificultad es razonablemente simple: si se quiere resolver el problema clásicamente, se necesitan encontrar dos entradas diferentes.ypara quéNo necesariamente hay ninguna estructura en la función.Eso nos ayudaría a encontrar dos entradas de ese tipo: más específicamente, podemos descubrir algo sobre(o lo que hace) solo cuando, para dos entradas diferentes, obtenemos la misma salida. En cualquier caso, tendríamos que adivinar.diferentes entradas antes de que sea probable encontrar un par en el quetoma la misma salida, como en el problema del cumpleaños . Dado que, clásicamente, para encontrar s con un 100% de certeza se requeriría comprobarEn cuanto a las entradas, el problema de Simon busca encontrar s utilizando menos consultas que este método clásico.
El algoritmo de Simon

El algoritmo en su conjunto utiliza una subrutina para ejecutar los dos pasos siguientes:
- Ejecutar la subrutina cuántica según lo esperadoveces para obtener una lista de cadenas de bits linealmente independientes.
- CadaSatisface, así que podemos resolver el sistema de ecuaciones que esto produce para obtener.
subrutina cuántica
El circuito cuántico (véase la imagen) es la implementación de la parte cuántica del algoritmo de Simon. La subrutina cuántica del algoritmo utiliza la transformada de Hadamard.dónde, dóndedenota XOR.
Primero, el algoritmo comienza con dos registros, inicializados a. Luego, aplicamos la transformada de Hadamard al primer registro, lo que da como resultado el estado
Consulta el oráculopara obtener el estado
- .
Aplique otra transformación de Hadamard al primer registro. Esto producirá el estado
Finalmente, medimos el primer registro (el algoritmo también funciona si el segundo registro se mide antes que el primero, pero esto no es necesario). La probabilidad de medir un estadoesEsto se debe a que tomar la magnitud de este vector y elevarla al cuadrado suma todas las probabilidades de todas las posibles mediciones del segundo registro que deben tener el primer registro comoExisten dos casos para nuestra medición:
- yes uno a uno.
- yes dos a uno.
Para el primer caso,puesto que en este caso,es uno a uno, lo que implica que el rango dees, lo que significa que la suma es sobre cada vector base. Para el segundo caso, observe que existen dos cadenas,y, de tal manera que, dónde. De este modo,Además, dado que,, y entoncesEsta expresión ahora es fácil de evaluar. Recordemos que estamos midiendo. Cuando, entonces esta expresión se evaluará ay cuando, entonces esta expresión será.
Por lo tanto, ambos cuandoy cuando, nuestra medidaSatisface.
Procesamiento posterior clásico
Ejecutamos la parte cuántica del algoritmo hasta obtener una lista de cadenas de bits linealmente independientes.y cada unoSatisfacePor lo tanto, podemos resolver eficientemente este sistema de ecuaciones de forma clásica para encontrar.
La probabilidad de queson linealmente independientes es al menosUna vez que resolvemos el sistema de ecuaciones y obtenemos una solución, podemos probar siSi esto es cierto, entonces lo sabemos., desde. Si es el caso que, entonces eso significa que, ydesdees uno a uno.
Podemos repetir el algoritmo de Simon un número constante de veces para aumentar arbitrariamente la probabilidad de éxito, manteniendo la misma complejidad temporal.
Ejemplos explícitos del algoritmo de Simon para pocos cúbits.
Un cúbit
Consideremos la instancia más simple del algoritmo, conEn este caso, al evolucionar el estado de entrada a través de una puerta Hadamard y el oráculo se obtiene el estado (salvo renormalización):
Si, eso es,, entonces medir el segundo registro siempre da el resultadoy siempre resulta en que el primer registro colapse al estado (salvo renormalización):
Por lo tanto, al aplicar un Hadamard y medir el primer registro siempre se obtiene el resultado.. Por otro lado, sies uno a uno, es decir,, entonces medir el primer registro después del segundo Hadamard puede resultar en ambosy, con igual probabilidad.
Nos recuperamosa partir de los resultados de la medición al observar si medimos siempre, en cuyo casoo medimos ambosycon igual probabilidad, en cuyo caso inferimos queEste plan fracasará sipero, a pesar de todo, siempre encontramos el resultado., pero la probabilidad de este evento esconel número de mediciones realizadas, y por lo tanto se puede hacer exponencialmente pequeño aumentando las estadísticas.
Dos cúbits
Consideremos ahora el caso con. La parte inicial del algoritmo da como resultado el estado (hasta la renormalización):Si, significadoes inyectivo, entonces encontraren el segundo registro siempre colapsa el primer registro a, para todosEn otras palabras, aplicando las compuertas de Hadamard y midiendo el primer registro los cuatro resultadosPor lo tanto, se encuentran con igual probabilidad.
Supongamos por otro lado, Por ejemplo,Luego midiendoen el segundo registro colapsa el primer registro al estadoY, en términos más generales, la medición.daen el primer registro. Aplicar las compuertas de Hadamard y medir en el primer registro puede dar como resultado los siguientes resultados:ycon igual probabilidad.
Un razonamiento similar se aplica a los demás casos: siEntonces, los posibles resultados son:y, mientras que siLos posibles resultados sony, compatible con elregla analizada en el caso general.
Para recuperarsePor lo tanto, solo necesitamos distinguir entre estos cuatro casos, recopilando suficientes estadísticas para asegurar que la probabilidad de confundir una distribución de probabilidad de resultado con otra sea suficientemente pequeña.
Complejidad
El algoritmo de Simon requiereconsultas a la caja negra, mientras que un algoritmo clásico necesitaría al menosconsultas. También se sabe que el algoritmo de Simon es óptimo en el sentido de que cualquier algoritmo cuántico para resolver este problema requiereconsultas. [ 5 ] [ 6 ]
Implementación del algoritmo de Simon en Qiskit
El circuito cuántico que se muestra aquí es un ejemplo sencillo de cómo se puede implementar el algoritmo de Simon en Python utilizando Qiskit , un marco de desarrollo de software de computación cuántica de código abierto de IBM.

Véase también
Referencias
- ↑ Shor, Peter W. (1999-01-01). "Algoritmos de tiempo polinomial para factorización prima y logaritmos discretos en una computadora cuántica" . SIAM Review . 41 (2): 303– 332. arXiv : quant-ph/9508027 . doi : 10.1137/S0036144598347011 . ISSN 0036-1445 .
- ↑ Simon, Daniel R. (1997-10-01). "Sobre el poder de la computación cuántica" . SIAM Journal on Computing . 26 (5): 1474– 1483. doi : 10.1137/S0097539796298637 . ISSN 0097-5397 .
- ↑ Preskill, John (1998). Apuntes de clase para Física 229: Información cuántica y computación . págs. 273–275 .
- ↑ Aaronson, Scott (2018). Introducción a la ciencia de la información cuántica: apuntes de clase (PDF) . págs. 144–151 .
- ↑ Koiran, P.; Nesme, V.; Portier, N. (2007), "La complejidad de consulta cuántica del problema del subgrupo oculto abeliano" , Theoretical Computer Science , 380 ( 1–2 ): 115–126 , doi : 10.1016/j.tcs.2007.02.057 , consultado el 6 de junio de 2011
- ↑ Koiran, P.; Nesme, V.; Portier, N. (2005), "Un límite inferior cuántico para la complejidad de consulta del problema de Simon" , Proc. ICALP , 3580 : 1287–1298 , arXiv : quant-ph/0501060 , Bibcode : 2005quant.ph..1060K , consultado el 6 de junio de 2011
- Algoritmos cuánticos