Articulo de referencia

El problema de Simon

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 ...

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.F:{0,1}norte{0,1}metro,metronorte{\displaystyle f:\{0,1\}^{n}\to \{0,1\}^{m},\;m\geq 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; siF{\displaystyle f}es dos a uno, además se promete que dos entradasincógnita{\displaystyle x}yincógnita{\displaystyle x'}evaluar al mismo valor si y solo siincógnita{\displaystyle x}yincógnita{\displaystyle x'}difieren en un conjunto fijo de bits. Es decir,

SiF{\displaystyle f}no es uno a uno, se promete que existe un valor distinto de ceros{\displaystyle s}de tal manera que, para todosincógnitaincógnita{\displaystyle x\neq x'},F(incógnita)=F(incógnita){\displaystyle f(x)=f(x')}si y solo siincógnita=incógnitas{\displaystyle x'=x\oplus s}

dónde{\displaystyle \oplus }denota la operación OR exclusiva a nivel de bits . El problema de Simon pregunta, en su versión de decisión, siF{\displaystyle f}es uno a uno o dos a uno. En su versión sin decisión, el problema de Simon pregunta siF{\displaystyle f}¿es uno a uno o cuál es el valor de?s{\displaystyle s}(como se definió anteriormente). El objetivo es resolver esta tarea con el menor número de consultas (evaluaciones) deF{\displaystyle f}.

Tenga en cuenta que siincógnita=incógnita{\displaystyle x'=x}, entoncesF(incógnita)=F(incógnita){\displaystyle f(x')=f(x)}yincógnita=incógnitas{\displaystyle x'=x\oplus s}cons=0{\displaystyle s=0}. Por otro lado (porqueabb=a{\displaystyle a\oplus b\oplus b=a} a pesar dea{\displaystyle a}yb{\displaystyle b}),incógnita=incógnitasincógnitaincógnita=s{\displaystyle x'=x\oplus s\iff x'\oplus x=s}Por lo tanto, el problema de Simon puede reformularse de la siguiente forma:

Dado el acceso de caja negra u oráculo aF{\displaystyle f}, prometió satisfacer, para algunoss{\displaystyle s}y todoincógnita,incógnita{\displaystyle x,x'},F(incógnita)=F(incógnita){\displaystyle f(x)=f(x')}si y solo siincógnitaincógnita{0,s}{\displaystyle x'\oplus x\in \{0,s\}}determinar sis0{\displaystyle s\neq 0}(versión de decisión) o salidas{\displaystyle s}(versión sin decisión).

Tenga en cuenta también que la promesa enF{\displaystyle f}implica que siF{\displaystyle f}Si la relación es de dos a uno, entonces es una función periódica: F(incógnita)=F(incógnitas).{\displaystyle f(x)=f(x\oplus s).}

Ejemplo

La siguiente función es un ejemplo de una función que satisface la propiedad requerida paranorte=3{\displaystyle n=3}:

En este caso,s=110{\displaystyle s=110}(es decir, la solución). Cada salida deF{\displaystyle f}ocurre dos veces, y las dos cadenas de entrada correspondientes a cualquier salida dada tienen una operación XOR bit a bit igual as=110{\displaystyle s=110}.

Por ejemplo, las cadenas de entrada010{\displaystyle 010}y100{\displaystyle 100}ambos están mapeados (porF{\displaystyle f}) a la misma cadena de salida000{\displaystyle 000}. Eso es,F(010)=000{\displaystyle {\displaystyle f(010)=000}}yF(100)=000{\displaystyle {\displaystyle f(100)=000}}. Al aplicar XOR a 010 y 100 se obtiene 110, es decir010100=110=s.{\displaystyle {\displaystyle 010\oplus 100=110=s}.}

s=110{\displaystyle s=110}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 decir001111=110=s{\displaystyle 001\oplus 111=110=s}Esto da la misma solución.s=110{\displaystyle s=110}como antes.

En este ejemplo la función f es de hecho una función dos a uno dondes0norte{\displaystyle {\displaystyle s\neq 0^{n}}}.

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.incógnita{\displaystyle x}yy{\displaystyle y}para quéF(incógnita)=F(y){\displaystyle f(x)=f(y)}No necesariamente hay ninguna estructura en la función.F{\displaystyle f}Eso nos ayudaría a encontrar dos entradas de ese tipo: más específicamente, podemos descubrir algo sobreF{\displaystyle f}(o lo que hace) solo cuando, para dos entradas diferentes, obtenemos la misma salida. En cualquier caso, tendríamos que adivinar.Ω(2norte){\displaystyle {\displaystyle \Omega ({\sqrt {2^{n}}})}}diferentes entradas antes de que sea probable encontrar un par en el queF{\displaystyle f}toma 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 comprobarΘ(2norte){\displaystyle {\displaystyle \Theta ({\sqrt {2^{n}}})}}En cuanto a las entradas, el problema de Simon busca encontrar s utilizando menos consultas que este método clásico.

El algoritmo de Simon

Circuito cuántico que representa/implementa el algoritmo de Simon.

El algoritmo en su conjunto utiliza una subrutina para ejecutar los dos pasos siguientes:

  1. Ejecutar la subrutina cuántica según lo esperadoO(norte){\displaystyle O(n)}veces para obtener una lista de cadenas de bits linealmente independientesy1,...,ynorte1{\displaystyle y_{1},...,y_{n-1}}.
  2. Cadayk{\displaystyle y_{k}}Satisfaceyks=0{\displaystyle y_{k}\cdot s=0}, así que podemos resolver el sistema de ecuaciones que esto produce para obteners{\displaystyle s}.

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.Hnorte|k=12nortej=02norte1(1)kj|j{\displaystyle H^{\otimes n}|k\rangle ={\frac {1}{\sqrt {2^{n}}}}\sum _{j=0}^{2^{n}-1}(-1)^{k\cdot j}|j\rangle }dóndekj=k1j1knortejnorte{\displaystyle k\cdot j=k_{1}j_{1}\oplus \ldots \oplus k_{n}j_{n}}, dónde{\displaystyle \oplus }denota XOR.

Primero, el algoritmo comienza con dos registros, inicializados a|0norte|0norte{\displaystyle |0\rangle ^{\otimes n}|0\rangle ^{\otimes n}}. Luego, aplicamos la transformada de Hadamard al primer registro, lo que da como resultado el estado

12nortek=02norte1|k|0norte.{\displaystyle {\frac {1}{\sqrt {2^{n}}}}\sum _ {k=0}^{2^{n}-1}|k\rangle |0\rangle ^{\otimes n}.}

Consulta el oráculoUF{\displaystyle U_{f}}para obtener el estado

12nortek=02norte1|k|F(k){\displaystyle {\frac {1}{\sqrt {2^{n}}}}\sum _{k=0}^{2^{n}-1}|k\rangle |f(k)\rangle }.

Aplique otra transformación de Hadamard al primer registro. Esto producirá el estado

12nortek=02norte1[12nortej=02norte1(1)jk|j]|F(k)=j=02norte1|j[12nortek=02norte1(1)jk|F(k)].{\displaystyle {\frac {1}{\sqrt {2^{n}}}}\sum _{k=0}^{2^{n}-1}\left[{\frac {1}{\sqrt {2^{n}}}}\sum _{j=0}^{2^{n}-1}(-1)^{j\cdot k}|j\rangle \right]|f(k)\rangle =\sum _{j=0}^{2^{n}-1}|j\rangle \left[{\frac {1}{2^{n}}}\sum _{k=0}^{2^{n}-1}(-1)^{j\cdot k}|f(k)\rangle \right].}

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 estado|j{\displaystyle |j\rangle }es||12nortek=02norte1(1)jk|F(k)||2{\displaystyle \left|\left|{\frac {1}{2^{n}}}\sum _{k=0}^{2^{n}-1}(-1)^{j\cdot k}|f(k)\rangle \right|\right|^{2}}Esto 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 como|j{\displaystyle |j\rangle }Existen dos casos para nuestra medición:

  1. s=0norte{\displaystyle s=0^{n}}yF{\displaystyle f}es uno a uno.
  2. s0norte{\displaystyle s\neq 0^{n}}yF{\displaystyle f}es dos a uno.

Para el primer caso,||12nortek=02norte1(1)jk|F(k)||2=12norte{\displaystyle \left|\left|{\frac {1}{2^{n}}}\sum _{k=0}^{2^{n}-1}(-1)^{j\cdot k}|f(k)\rangle \right|\right|^{2}={\frac {1}{2^{n}}}}puesto que en este caso,F{\displaystyle f}es uno a uno, lo que implica que el rango deF{\displaystyle f}es{0,1}norte{\displaystyle \{0,1\}^{n}}, lo que significa que la suma es sobre cada vector base. Para el segundo caso, observe que existen dos cadenas,incógnita1{\displaystyle x_{1}}yincógnita2{\displaystyle x_{2}}, de tal manera queF(incógnita1)=F(incógnita2)=z{\displaystyle f(x_{1})=f(x_{2})=z}, dóndezranortegramomi(F){\displaystyle z\in \mathrm {range} (f)}. De este modo,||12nortek=02norte1(1)jk|F(k)||2=||12nortezranortegramomi(F)((1)jincógnita1+(1)jincógnita2)|z||2{\displaystyle \left|\left|{\frac {1}{2^{n}}}\sum _{k=0}^{2^{n}-1}(-1)^{j\cdot k}|f(k)\rangle \right|\right|^{2}=\left|\left|{\frac {1}{2^{n}}}\sum _{z\,\in \,\mathrm {range} (f)}((-1)^{j\cdot x_{1}}+(-1)^{j\cdot x_{2}})|z\rangle \right|\right|^{2}}Además, dado queincógnita1incógnita2=s{\displaystyle x_{1}\oplus x_{2}=s},incógnita2=incógnita1s{\displaystyle x_{2}=x_{1}\oplus s}, y entonces||12nortezranortegramomi(F)((1)jincógnita1+(1)jincógnita2)|z||2=||12nortezranortegramomi(F)((1)jincógnita1+(1)j(incógnita1s))|z||2=||12nortezranortegramomi(F)((1)jincógnita1+(1)jincógnita1js)|z||2=||12nortezranortegramomi(F)(1)jincógnita1(1+(1)js)|z||2{\displaystyle {\begin{aligned}\left|\left|{\frac {1}{2^{n}}}\sum _{z\,\in \,\mathrm {range} (f)}((-1)^{j\cdot x_{1}}+(-1)^{j\cdot x_{2}})|z\rangle \right|\right|^{2}&=\left|\left|{\frac {1}{2^{n}}}\sum _{z\,\in \,\mathrm {range} (f)}((-1)^{j\cdot x_{1}}+(-1)^{j\cdot (x_{1}\oplus s)})|z\rangle \right|\right|^{2}\\&=\left|\left|{\frac {1}{2^{n}}}\sum _{z\,\in \,\mathrm {range} (f)}((-1)^{j\cdot x_{1}}+(-1)^{j\cdot x_{1}\oplus j\cdot s})|z\rangle \right|\right|^{2}\\&=\left|\left|{\frac {1}{2^{n}}}\sum _{z\,\in \,\mathrm {range} (f)}(-1)^{j\cdot x_{1}}(1+(-1)^{j\cdot s})|z\rangle \right|\right|^{2}\end{aligned}}}Esta expresión ahora es fácil de evaluar. Recordemos que estamos midiendoj{\displaystyle j}. Cuandojs=1{\displaystyle j\cdot s=1}, entonces esta expresión se evaluará a0{\displaystyle 0}y cuandojs=0{\displaystyle j\cdot s=0}, entonces esta expresión será2norte+1{\displaystyle 2^{-n+1}}.

Por lo tanto, ambos cuandos=0norte{\displaystyle s=0^{n}}y cuandos0norte{\displaystyle s\neq 0^{n}}, nuestra medidaj{\displaystyle j}Satisfacejs=0{\displaystyle j\cdot s=0}.

Procesamiento posterior clásico

Ejecutamos la parte cuántica del algoritmo hasta obtener una lista de cadenas de bits linealmente independientes.y1,,ynorte1{\displaystyle y_{1},\ldots ,y_{n-1}}y cada unoyk{\displaystyle y_{k}}Satisfaceyks=0{\displaystyle y_{k}\cdot s=0}Por lo tanto, podemos resolver eficientemente este sistema de ecuaciones de forma clásica para encontrars{\displaystyle s}.

La probabilidad de quey1,y2,,ynorte1{\displaystyle y_{1},y_{2},\dots ,y_{n-1}}son linealmente independientes es al menosk=1(112k)=0,288788{\displaystyle \prod _{k=1}^{\infty }\left(1-{\frac {1}{2^{k}}}\right)=0.288788\dots }Una vez que resolvemos el sistema de ecuaciones y obtenemos una solucións{\displaystyle s'}, podemos probar siF(0norte)=F(s){\displaystyle f(0^{n})=f(s')}Si esto es cierto, entonces lo sabemos.s=s{\displaystyle s'=s}, desdeF(0norte)=F(0nortes)=F(s){\displaystyle f(0^{n})=f(0^{n}\oplus s)=f(s)}. Si es el caso queF(0norte)F(s){\displaystyle f(0^{n})\neq f(s')}, entonces eso significa ques=0norte{\displaystyle s=0^{n}}, yF(0norte)F(s){\displaystyle f(0^{n})\neq f(s')}desdeF{\displaystyle f}es 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, connorte=1{\displaystyle n=1}En 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):

|0|F(0)+|1|F(1).{\displaystyle |0\rangle |f(0)\rangle +|1\rangle |f(1)\rangle .}

Sis=1{\displaystyle s=1}, eso es,F(0)=F(1){\displaystyle f(0)=f(1)}, entonces medir el segundo registro siempre da el resultado|F(0){\displaystyle |f(0)\rangle }y siempre resulta en que el primer registro colapse al estado (salvo renormalización):

|0+|1.{\displaystyle |0\rangle +|1\rangle .}

Por lo tanto, al aplicar un Hadamard y medir el primer registro siempre se obtiene el resultado.|0{\displaystyle |0\rangle }. Por otro lado, siF{\displaystyle f}es uno a uno, es decir,s=0{\displaystyle s=0}, entonces medir el primer registro después del segundo Hadamard puede resultar en ambos|0{\displaystyle |0\rangle }y|1{\displaystyle |1\rangle }, con igual probabilidad.

Nos recuperamoss{\displaystyle s}a partir de los resultados de la medición al observar si medimos siempre|0{\displaystyle |0\rangle }, en cuyo casos=1{\displaystyle s=1}o medimos ambos|0{\displaystyle |0\rangle }y|1{\displaystyle |1\rangle }con igual probabilidad, en cuyo caso inferimos ques=0{\displaystyle s=0}Este plan fracasará sis=0{\displaystyle s=0}pero, a pesar de todo, siempre encontramos el resultado.|0{\displaystyle |0\rangle }, pero la probabilidad de este evento es2norte{\displaystyle 2^{-N}}connorte{\displaystyle N}el 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 connorte=2{\displaystyle n=2}. La parte inicial del algoritmo da como resultado el estado (hasta la renormalización):|00|F(00)+|01|F(01)+|10|F(10)+|11|F(11).{\displaystyle |00\rangle |f(00)\rangle +|01\rangle |f(01)\rangle +|10\rangle |f(10)\rangle +|11\rangle |f(11)\rangle .}Sis=(00){\displaystyle s=(00)}, significadoF{\displaystyle f}es inyectivo, entonces encontrar|F(incógnita){\displaystyle |f(x)\rangle }en el segundo registro siempre colapsa el primer registro a|incógnita{\displaystyle |x\rangle }, para todosincógnita{0,1}2{\displaystyle x\in \{0,1\}^{2}}En otras palabras, aplicando las compuertas de Hadamard y midiendo el primer registro los cuatro resultados00,01,10,11{\displaystyle 00,01,10,11}Por lo tanto, se encuentran con igual probabilidad.

Supongamos por otro lados(00){\displaystyle s\neq (00)}, Por ejemplo,s=(01){\displaystyle s=(01)}Luego midiendo|F(00){\displaystyle |f(00)\rangle }en el segundo registro colapsa el primer registro al estado|00+|10{\displaystyle |00\rangle +|10\rangle }Y, en términos más generales, la medición.|F(incógnitay){\displaystyle |f(xy)\rangle }da|incógnita,y+|incógnita,y1=|incógnita(|0+|1){\displaystyle |x,y\rangle +|x,y\oplus 1\rangle =|x\rangle (|0\rangle +|1\rangle )}en el primer registro. Aplicar las compuertas de Hadamard y medir en el primer registro puede dar como resultado los siguientes resultados:00{\displaystyle 00}y10{\displaystyle 10}con igual probabilidad.

Un razonamiento similar se aplica a los demás casos: sis=(10){\displaystyle s=(10)}Entonces, los posibles resultados son:00{\displaystyle 00}y01{\displaystyle 01}, mientras que sis=(11){\displaystyle s=(11)}Los posibles resultados son00{\displaystyle 00}y11{\displaystyle 11}, compatible con eljs=0{\displaystyle j\cdot s=0}regla analizada en el caso general.

Para recuperarses{\displaystyle s}Por 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 requiereO(norte){\displaystyle O(n)}consultas a la caja negra, mientras que un algoritmo clásico necesitaría al menosΩ(2norte/2){\displaystyle \Omega (2^{n/2})}consultas. También se sabe que el algoritmo de Simon es óptimo en el sentido de que cualquier algoritmo cuántico para resolver este problema requiereΩ(norte){\displaystyle \Omega (n)}consultas. [ 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.

Circuito cuántico del algoritmo de Simon.

Véase también

Referencias

  1. 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 . 
  2. 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 . 
  3. Preskill, John (1998). Apuntes de clase para Física 229: Información cuántica y computación . págs. 273–275 . 
  4. Aaronson, Scott (2018). Introducción a la ciencia de la información cuántica: apuntes de clase (PDF) . págs. 144–151 . 
  5. 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
  6. 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