Algoritmo de Shor

Ajustar Compartir Imprimir Citar
algoritmo cuántico para la factorización entero

Algoritmo de Shor es un algoritmo de computadora cuántica para encontrar los factores primos de un número entero. Fue desarrollado en 1994 por el matemático estadounidense Peter Shor.

En una computadora cuántica, para factorizar un entero N{displaystyle N}, el algoritmo de Shor funciona en tiempo polinomio, lo que significa que el tiempo tomado es polinomio en log⁡ ⁡ N{displaystyle log N}, el tamaño del entero dado como entrada. Específicamente, toma puertas cuánticas de orden O()()log⁡ ⁡ N)2()log⁡ ⁡ log⁡ ⁡ N)()log⁡ ⁡ log⁡ ⁡ log⁡ ⁡ N)){displaystyle O!left(log N)^{2}(log log N)(log log log N)right)} usando la multiplicación rápida, o incluso O()()log⁡ ⁡ N)2()log⁡ ⁡ log⁡ ⁡ N)){displaystyle O!left(log N)^{2}(log log N)right)} utilizando el algoritmo de multiplicación asintomáticamente más rápido que se conoce actualmente debido a Harvey y Van Der Hoven, demostrando así que el problema de factorización entero puede ser resuelto eficientemente en un equipo cuántico y es consecuente en la clase de complejidad BQP. Esto es casi exponencialmente más rápido que el algoritmo de factorización clásica más eficiente, el sieve de campo de número general, que funciona en tiempo sub-exponencial: O()e1.9()log⁡ ⁡ N)1/3()log⁡ ⁡ log⁡ ⁡ N)2/3){displaystyle O!left(e^{1.9(log N)^{1/3}(log log N)^{2/3}right)}. La eficiencia del algoritmo de Shor se debe a la eficiencia de la transformación quantum Fourier, y a la exponencia modular por repetidos escuadrones.

Si una computadora cuántica con una cantidad suficiente de qubits pudiera operar sin sucumbir al ruido cuántico y otros fenómenos de decoherencia cuántica, entonces el algoritmo de Shor podría usarse para romper esquemas criptográficos de clave pública, como

RSA se basa en la suposición de que la factorización de números enteros grandes es computacionalmente intratable. Por lo que se sabe, esta suposición es válida para las computadoras clásicas (no cuánticas); no se conoce ningún algoritmo clásico que pueda factorizar números enteros en tiempo polinomial. Sin embargo, el algoritmo de Shor muestra que la factorización de números enteros es eficiente en una computadora cuántica ideal, por lo que puede ser factible vencer a RSA construyendo una computadora cuántica grande. También fue un poderoso motivador para el diseño y la construcción de computadoras cuánticas y para el estudio de nuevos algoritmos de computadoras cuánticas. También ha facilitado la investigación sobre nuevos criptosistemas que son seguros desde las computadoras cuánticas, denominados colectivamente criptografía poscuántica.

En 2001, un grupo de IBM demostró el algoritmo de Shor. 15{displaystyle 15} en 3× × 5{displaystyle 3times 5}, utilizando una aplicación NMR de un equipo cuántico con 7{displaystyle 7} Cubitos. Después de la implementación de IBM, dos grupos independientes implementaron el algoritmo de Shor usando qubits fotonicos, enfatizando que se observó un enredo multi-qubit al ejecutar los circuitos de algoritmos de Shor. En 2012, la factorización 15{displaystyle 15} se realizó con codos de estado sólido. Más tarde, en 2012, la factorización 21{displaystyle 21} se logró. En 2019 se intentó determinar el número 35{displaystyle 35} usando el algoritmo de Shor en un sistema Q IBM One, pero el algoritmo falló debido a errores acumulativos. Aunque los números más grandes han sido factorizados por ordenadores cuánticos usando otros algoritmos, estos algoritmos son similares a la comprobación clásica de la fuerza bruta de factores, por lo que a diferencia del algoritmo de Shor, no se espera que puedan realizar mejor que los algoritmos de factorización clásica.

Procedimiento

El problema que estamos tratando de resolver es, dado un número compuesto N{displaystyle N}, para encontrar un divisor no-trivial N{displaystyle N} (un divisor estrictamente entre 1{displaystyle 1} y N{displaystyle N}). Antes de intentar encontrar tal divisor, si hay alguna duda de si N{displaystyle N} es compuesto o primo, uno puede utilizar algoritmos de prueba de primalidad relativamente rápido para verificar que N{displaystyle N} es de hecho compuesto, aunque esto no es parte del algoritmo de Shor.

El algoritmo de Shor consta de dos partes:

  1. Una reducción, que puede hacerse en una computadora clásica, del problema de factorización al problema de la determinación del orden.
  2. Un algoritmo cuántico para resolver el problema de determinación de pedidos.

El objetivo del algoritmo es encontrar una raíz cuadrada no-trivial b{displaystyle b} de 1{displaystyle 1} modulo N{displaystyle N} que es diferente de 1{displaystyle 1} y − − 1{displaystyle -1}, porque entonces

b2− − 1=()b+1)()b− − 1)=mN{displaystyle b^{2}-1=(b+1)(b-1)=mN}

para un entero no cero m{displaystyle m} que nos da dos divisores distintos gcd()N,b+1){displaystyle gcd(N,b+1)} y gcd()N,b− − 1){displaystyle gcd(N,b-1)} de N{displaystyle N}. Esta idea es similar a otros algoritmos de factorización, como el tamiz cuadrático, y una explicación más detallada se puede encontrar en la sección Explicación a continuación. Antes de comenzar el algoritmo, es imperativo comprobar N{displaystyle N} para ser extraño (otros 2{displaystyle 2} es un divisor) y no ser cualquier poder de un entero (otros que el entero es un divisor), para garantizar la existencia de una raíz cuadrada no-trivial b{displaystyle b} de 1{displaystyle 1} modulo N{displaystyle N}.

A su vez, encontrar tal b{displaystyle b} se reduce a encontrar un elemento a{displaystyle a} como parámetro en una función de entero, tal que la función tiene un período uniforme con una determinada propiedad adicional (como se explica a continuación, se requiere que la condición del Paso 6 de la parte clásica no se mantenga). El algoritmo cuántico se utiliza para encontrar el período de elementos elegidos aleatoriamente a{displaystyle a}, como este es un problema difícil en un ordenador clásico.

Parte clásica

  1. Elija un número aleatorio <math alttext="{displaystyle 1<a1.a.N{displaystyle 1 se hizo realidad<img alt="{displaystyle 1<a.
  2. Computación K=gcd()a,N){displaystyle K=gcd(a,N)}, el mayor divisor común a{displaystyle a} y N{displaystyle N}. Esto puede hacerse usando el algoritmo de Euclidean.
  3. Si Kل ل 1{displaystyle Kneq 1}, entonces K{displaystyle K} es un factor notrivial N{displaystyle N}Así que hemos terminado.
  4. De lo contrario, utilice la subrutina de determinación del período cuántico (bajo) para encontrar r{displaystyle r}, que denota el período de la siguiente función:
    f()x)=ax()modN).{displaystyle f(x)=a^{x}({bmod {N}}}
    Equivalentemente, r{displaystyle r} es el entero positivo más pequeño que satisfice ar↑ ↑ 1()modN{fnMicrosoft Sans Serif} {fn}}).
  5. Si r{displaystyle r} es extraño, luego vuelve al paso 1.
  6. Si ar/2=− − 1modN{displaystyle a^{r/2}=-1{bmod {N}Luego vuelve al paso 1.
  7. De lo contrario, ambos gcd()ar/2+1,N){displaystyle gcd(a^{r/2}+1,N)} o gcd()ar/2− − 1,N){displaystyle gcd(a^{r/2}-1,N)} son factores notriviales N{displaystyle N}Así que hemos terminado.

Por ejemplo: Dado N=15{displaystyle N=15}, a=7{displaystyle a=7}, y r=4{displaystyle r=4}, es decir,mod()1,15)=mod()74,15)=mod()78,15),{bmod {bmod {}1,15)={bmod {}7^{4},15)={bmod {}7^{8},15),} tenemos gcd()72± ± 1,15)=gcd()49± ± 1,15){displaystyle gcd(7^{2}pm 1,15)=gcd(49pm 1,15)}, donde gcd()48,15)=3{displaystyle gcd(48,15)=3} y gcd()50,15)=5{displaystyle gcd(50,15)=5}. Para N{displaystyle N} que es un producto de dos primos distintos, p{displaystyle p} y q{displaystyle q}, φ φ ()N)=()p− − 1)()q− − 1){displaystyle varphi (N)=(p-1)(q-1)}, que para N=15{displaystyle N=15} es 8{displaystyle 8}, y r{displaystyle r} divideciones 8{displaystyle 8}.

Parte cuántica: subrutina de búsqueda de período

Subroutina cuántica en el algoritmo de Shor

Los circuitos cuánticos utilizados para este algoritmo son personalizados diseñados para cada elección de N{displaystyle N} y cada elección del azar a{displaystyle a} que tienen la relación f()x)=axmodN{displaystyle f(x)=a^{x}{bmod {N}}. Valor dado N{displaystyle N}, un valor Q=2q{displaystyle Q=2^{q} es elegido tal que <math alttext="{displaystyle N^{2}leq QN2≤ ≤ Q.2N2{displaystyle N^{2}leq Qse2N^{2}<img alt="{displaystyle N^{2}leq Q. Tal valor Q{displaystyle Q} implica que N}" xmlns="http://www.w3.org/1998/Math/MathML">Qr■N{displaystyle {dfrac {} {}} {fn}}} {fn}} {fn}} {fn}}} {fn}}}}}}} {fnK}}}} {fn}}}}}}}} {fn}}}}}}}}}}N}" aria-hidden="true" class="mwe-math-fallback-image-inline" src="https://wikimedia.org/api/rest_v1/media/math/render/svg/4f4e972c4f4ec458f417429d60174678f0218040" style="vertical-align: -1.838ex; width:7.837ex; height:5.343ex;"/>. Los registros de bits de entrada y salida almacenarán superposiciones de valores de 0{displaystyle 0} a Q− − 1{displaystyle Q-1. Por lo tanto, estos registros tienen q{displaystyle q} cada uno. Usando lo que podría parecer ser el doble de cubitos como garantías necesarias que hay al menos N{displaystyle N} diferentes valores de x{displaystyle x} que producen lo mismo f()x){displaystyle f(x)}, incluso como el período r{displaystyle r} enfoques N2{displaystyle {dfrac {N}{2}}. A continuación se utiliza la notación de punta de sujetador para denotar estados cuánticos.

Proceda de la siguiente manera:

  1. Initialize the registers to
    1 Q ∑ x = 0 Q − 1 | x ⟩ = ( 1 2 ∑ x 1 = 0 1 | x 1 ⟩ ) ⊗ ⋯ ⊗ ( 1 2 ∑ x q = 0 1 | x q ⟩ ) . {displaystyle {frac {1}{sqrt {Q}}}sum _{x=0}^{Q-1}|xrangle =left({frac {1}{sqrt {2}}}sum _{x_{1}=0}^{1}|x_{1}rangle right)otimes cdots otimes left({frac {1}{sqrt {2}}}sum _{x_{q}=0}^{1}|x_{q}rangle right).}

    where ⊗ {displaystyle otimes } denotes the tensor product.

    This initial state is a superposition of Q {displaystyle Q} states, and is obtained by generating q {displaystyle q} independent qubits, each an equal superposition of 0 {displaystyle 0} and 1 {displaystyle 1} states. We can accomplish this by initializing the qubits to the zero-position, and then applying a Hadamard gate to each of the q {displaystyle q} qubits, where 2 q = Q {displaystyle 2^{q}=Q} . This process is called the Hadamard transform.
  2. Construct f ( x ) {displaystyle f(x)} as a quantum function and apply it to the above state, to obtain
    U f | x , 0 n ⟩ = | x , f ( x ) ⟩ {displaystyle U_{f}|x,0^{n}rangle =|x,f(x)rangle }
    U f 1 Q ∑ x = 0 Q − 1 | x , 0 n ⟩ = 1 Q ∑ x = 0 Q − 1 | x , f ( x ) ⟩ {displaystyle U_{f}{frac {1}{sqrt {Q}}}sum _{x=0}^{Q-1}|x,0^{n}rangle ={frac {1}{sqrt {Q}}}sum _{x=0}^{Q-1}|x,f(x)rangle }
    Note: f ( x ) = a x mod N {displaystyle f(x)=a^{x}{bmod {N}}} . This is still a superposition of Q {displaystyle Q} states. However, the q + n {displaystyle q+n} qubits, i.e, the q {displaystyle q} input qubits and n {displaystyle n} ( > log 2 ( N ) {displaystyle >{log _{2}}(N)} ) output qubits, are now entangled or not separable, as the state cannot be written as a tensor product of states of individual qubits. Importantly, the value containing the r {displaystyle r} we are looking for is now stored in the phase of the input qubits x {displaystyle x} as a result of "phase kickback", where using qubits as control inputs to unitary gates alters the relative phase of the control qubits.
  3. Apply the inverse quantum Fourier transform to the input register. This transform (operating on a superposition of Q = 2 q {displaystyle Q=2^{q}} states) uses a Q {displaystyle Q} -th root of unity such as ω = e 2 π i Q {displaystyle omega =e^{frac {2pi i}{Q}}} to distribute the amplitude of any given | x ⟩ {displaystyle |xrangle } state equally among all Q {displaystyle Q} of the | y ⟩ {displaystyle |yrangle } states, and to do so in a different way for each different x {displaystyle x} . We thus obtain
    U QFT ( | x ⟩ ) = 1 Q ∑ y = 0 Q − 1 ω x y | y ⟩ . {displaystyle {U_{operatorname {QFT} }}(|xrangle)={frac {1}{sqrt {Q}}}sum _{y=0}^{Q-1}omega ^{xy}|yrangle.}
    This leads to the final state
    1 Q ∑ x = 0 Q − 1 ∑ y = 0 Q − 1 ω x y | y , f ( x ) ⟩ . {displaystyle {frac {1}{Q}}sum _{x=0}^{Q-1}sum _{y=0}^{Q-1}omega ^{xy}|y,f(x)rangle.}
    Now, we reorder this sum as
    1 Q ∑ z = 0 N − 1 ∑ y = 0 Q − 1 [ ∑ x ∈ { 0 , … , Q − 1 } ; f ( x ) = z ω x y ] | y , z ⟩ . {displaystyle {frac {1}{Q}}sum _{z=0}^{N-1}sum _{y=0}^{Q-1}left[sum _{xin {0,ldotsQ-1};~f(x)=z}omega ^{xy}right]|y,zrangle.}
    This is a superposition of many more than Q {displaystyle Q} states, but many fewer than Q 2 {displaystyle Q^{2}} states, as there are fewer than Q {displaystyle Q} distinct values of z = f ( x ) {displaystyle z=f(x)} . Let
    • ω = e 2 π i Q {displaystyle omega =e^{frac {2pi i}{Q}}} be a Q {displaystyle Q} -th root of unity,
    • r {displaystyle r} be the period of f {displaystyle f} ,
    • x 0 {displaystyle x_{0}} be the smallest of the x ∈ { 0 , … , Q − 1 } {displaystyle xin {0,ldotsQ-1}} for which f ( x ) = z {displaystyle f(x)=z} (we have x 0 < r {displaystyle x_{0}<r} ), and
    • write m − 1 = ⌊ Q − x 0 − 1 r ⌋ {displaystyle m-1=leftlfloor {frac {Q-x_{0}-1}{r}}rightrfloor }
    • b {displaystyle b} indexes these x {displaystyle x} , running from 0 {displaystyle 0} to m − 1 {displaystyle m-1} , so that x 0 + r b < Q {displaystyle x_{0}+rb<Q} .
    Then ω r y {displaystyle omega ^{ry}} is a unit vector in the complex plane ( ω {displaystyle omega } is a root of unity, and r {displaystyle r} and y {displaystyle y} are integers), and the coefficient of 1 Q | y , z ⟩ {displaystyle {dfrac {1}{Q}}left|y,zrightrangle } in the final state is
    ∑ x ∈ { 0 , … , Q − 1 } ; f ( x ) = z ω x y = ∑ b = 0 m − 1 ω ( x 0 + r b ) y = ω x 0 y ∑ b = 0 m − 1 ω r b y . {displaystyle sum _{xin {0,ldotsQ-1};~f(x)=z}omega ^{xy}=sum _{b=0}^{m-1}omega ^{(x_{0}+rb)y}=omega ^{x_{0}y}sum _{b=0}^{m-1}omega ^{rby}.}
    Each term in this sum represents a different path to the same result, and quantum interference occurs — constructive when the unit vectors ω r y b {displaystyle omega ^{ryb}} point in nearly the same direction in the complex plane, which requires that ω r y {displaystyle omega ^{ry}} point along the positive real axis.
  4. Perform a measurement. We obtain some outcome y {displaystyle y} in the input register and some outcome z {displaystyle z} in the output register. As f {displaystyle f} is periodic, the probability of measuring some state | y , z ⟩ {displaystyle |y,zrangle } is given by
    P r ( | y , z ⟩ ) = | 1 Q ∑ x ∈ { 0 , … , Q − 1 } ; f ( x ) = z ω x y | 2 = 1 Q 2 | ∑ b = 0 m − 1 ω ( x 0 + r b ) y | 2 = 1 Q 2 | ω x 0 y | 2 | ∑ b = 0 m − 1 ω b r y | 2 {displaystyle mathrm {Pr} (|y,zrangle)=left|{frac {1}{Q}}sum _{xin {0,ldotsQ-1};~f(x)=z}omega ^{xy}right|^{2}={frac {1}{Q^{2}}}left|sum _{b=0}^{m-1}omega ^{(x_{0}+rb)y}right|^{2}={frac {1}{Q^{2}}}|omega ^{x_{0}y}|^{2}left|sum _{b=0}^{m-1}omega ^{bry}right|^{2}}
    = 1 Q 2 | ∑ b = 0 m − 1 ω b r y | 2 = 1 Q 2 | ω m r y − 1 ω r y − 1 | 2 = 1 Q 2 sin 2 ⁡ ( π m r y Q ) sin 2 ⁡ ( π r y Q ) {displaystyle ={frac {1}{Q^{2}}}left|sum _{b=0}^{m-1}omega ^{bry}right|^{2}={frac {1}{Q^{2}}}left|{frac {omega ^{mry}-1}{omega ^{ry}-1}}right|^{2}={frac {1}{Q^{2}}}{frac {sin ^{2}({frac {pi mry}{Q}})}{sin ^{2}({frac {pi ry}{Q}})}}}
    Analysis now shows that this probability is higher the closer the unit vector ω r y {displaystyle omega ^{ry}} is to the positive real axis, or the closer y r Q {displaystyle {dfrac {yr}{Q}}} is to an integer. Unless r {displaystyle r} is a power of 2 {displaystyle 2} , it will not be a factor of Q {displaystyle Q} .
  5. Since y r Q {displaystyle {frac {yr}{Q}}} is close to some integer c {displaystyle c} , the known value y Q {displaystyle {dfrac {y}{Q}}} is close to the unknown value c r {displaystyle {dfrac {c}{r}}} . Performing [classical] continued fraction expansion on y Q {displaystyle {dfrac {y}{Q}}} allows us to find approximations d s {displaystyle {dfrac {d}{s}}} of it that satisfy two conditions:
    1. s < N {displaystyle s<N} .
    2. | y Q − d s | < 1 2 Q {displaystyle left|{dfrac {y}{Q}}-{dfrac {d}{s}}right|<{dfrac {1}{2Q}}} .
    Given these multiple conditions (and assuming d s {displaystyle {dfrac {d}{s}}} is irreducible), s {displaystyle s} is very likely to be the appropriate period r {displaystyle r} , or at least a factor of it.
  6. Check (classically) if f ( x ) = f ( x + s ) ⇔ a s ≡ 1 mod N {displaystyle f(x)=f(x+s)Leftrightarrow a^{s}equiv 1{bmod {N}}} . If so, then we are done.
  7. Otherwise, (classically) obtain more candidates for r {displaystyle r} by using multiples of s {displaystyle s} , or by using other s {displaystyle s} with d s {displaystyle {dfrac {d}{s}}} near y Q {displaystyle {dfrac {y}{Q}}} . If any candidate works, then we are done.
  8. Otherwise, try again starting from step 1 of this subroutine.

Explicación del algoritmo

El algoritmo se compone de dos partes. La primera parte del algoritmo convierte el problema de factorización en el problema de encontrar el período de una función y puede implementarse de manera clásica. La segunda parte encuentra el período utilizando la transformada cuántica de Fourier y es responsable de la aceleración cuántica.

Raíz cuadrada no trivial de [1 módulo N]

El algoritmo de Shor se acerca a encontrar una raíz cuadrada no-trivial 1{displaystyle 1} modulo N{displaystyle N}; Es decir, una solución

b2↑ ↑ 1modN{displaystyle b^{2}equiv 1{bmod {N}}

Donde b≢± ± 1modN{displaystyle bnot equiv pm 1{bmod {N}}.

If such b{displaystyle b} existe, afirmamos que d=gcd()b− − 1,N){displaystyle d=gcd(b-1,N)} es un factor adecuado N{displaystyle N}, es decir, dل ل 1,N{displaystyle dneq 1,N}. De hecho, si

d=N{displaystyle D=N., entonces N{displaystyle N} divideciones b− − 1{displaystyle b-1}Así que b↑ ↑ 1modN{displaystyle bequiv 1{bmod {N}}, que va en contra de la construcción de b{displaystyle b}. Si, por otro lado, d=gcd()b− − 1,N)=1{displaystyle d=gcd(b-1,N)=1}, entonces por la identidad de Bézout, hay enteros u,v{displaystyle u,v} tales que

()b− − 1)u+Nv=1.{displaystyle (b-1)u+Nv=1.}

Multiplicar ambos lados por b+1{displaystyle b+1}, obtenemos

()b2− − 1)u+N()b+1)v=b+1.{displaystyle (b^{2}-1)u+N(b+1)v=b+1.}

As N{displaystyle N} divideciones b2− − 1{displaystyle b^{2}-1}, encontramos que N{displaystyle N} divideciones b+1{displaystyle b+1}Así que b↑ ↑ − − 1modN{displaystyle bequiv -1{bmod {N}}, nuevamente contradiciendo la construcción de b{displaystyle b}.

Por lo tanto, d{displaystyle d} es el factor adecuado requerido N{displaystyle N}. Del mismo modo, puede probarse que gcd()b+1,N){displaystyle gcd(b+1,N)} es también un factor adecuado N{displaystyle N}.

Para tal raíz cuadrada no-trivial 1{displaystyle 1} modulo N{displaystyle N} para existir, notar que − − 1↑ ↑ 1mod2{displaystyle -1equiv 1{bmod {2}}, y para cualquier poder de una prima extraña N=pn{displaystyle N=p^{n}, no hay raíz cuadrada no-trivial 1{displaystyle 1} modulo N{displaystyle N}Para cualquier ()b+1)()b− − 1)=mpn,{displaystyle (b+1)(b-1)=mp^{n} o b− − 1{displaystyle b-1} o b+1{displaystyle b+1} tiene que ser un múltiple de N=pn{displaystyle N=p^{n}.

Por lo tanto, para que el algoritmo de Shor funcione, necesitamos N{displaystyle N} para ser extraño (otros 2{displaystyle 2} es un divisor) y no ser cualquier poder de una prima extraña (otros que el primo es un divisor). Podemos comprobar que no hay raíces enteros Nk{displaystyle {sqrt} {fn}} {fn}} {fn}} {fn}} {fn}} {fn}}} {fn}} para 2≤ ≤ k≤ ≤ log3()N){displaystyle 2leq kleq {log}(N)}, y si N{displaystyle N} no es un poder de ningún entero, no es un poder de ninguna prima extraña. Aquí, el límite superior para el entero k{displaystyle k} que necesitamos comprobar es determinado por Nk≥ ≥ 3{displaystyle {sqrt} {fn}gn}fn}gq 3}, desde N{displaystyle N} para ser extraño, Nk{displaystyle {sqrt} {fn}} {fn}} {fn}} {fn}} {fn}} {fn}}} {fn}} no puede ser 2{displaystyle 2}. Este cheque, sin embargo, no puede descartar que N{displaystyle N} puede ser un principio extraño en sí mismo, que sólo puede ser descartado por algoritmos de prueba de primalidad.

Dado que N{displaystyle N} es extraño y no cualquier poder de una prima extraña, basado en el teorema fundamental de la aritmética, podemos asumir que N{displaystyle N} es el producto de dos enteros coprime más grande que 2{displaystyle 2} ()N=n1n2{displaystyle N=n_{1}n_{2} y 2,,gcd(n_{1},n_{2})=1}" xmlns="http://www.w3.org/1998/Math/MathML">n1,n2■2,gcd()n1,n2)=1{displaystyle n_{1},n_{2}]2,,gcd(n_{1},n_{2})=1}2,,gcd(n_{1},n_{2})=1}" aria-hidden="true" class="mwe-math-fallback-image-inline" src="https://wikimedia.org/api/rest_v1/media/math/render/svg/9ace1c0f382cbb16276248de906f6e03640b48d2" style="vertical-align: -0.838ex; width:27.103ex; height:2.843ex;"/>). De las cuatro combinaciones de elegir más signo y signo menos en las ecuaciones enteros x=m1n1± ± 1=m2n2± ± 1{displaystyle x=m_{1}n_{1}pm 1=m_{2}n_{2}pm 1}, basado en el teorema restante chino y 2}" xmlns="http://www.w3.org/1998/Math/MathML">n1,n2■2{displaystyle No.2}" aria-hidden="true" class="mwe-math-fallback-image-inline" src="https://wikimedia.org/api/rest_v1/media/math/render/svg/f2438439d5af04ba5dca712ba3dc5c4964d28e31" style="vertical-align: -0.671ex; width:10.193ex; height:2.509ex;"/>, hay al menos cuatro raíces cuadradas distintas 1{displaystyle 1} modulo N{displaystyle N}, y por lo tanto existen al menos dos raíces cuadradas distintas no-triviales. De hecho, son las soluciones a b.=m1n1+1=m2n2− − 1{displaystyle b'=m_{1}n_{1}+1=m_{2}n_{2}-1} y b.=m1n1− − 1=m2n2+1{displaystyle b''=m_{1}n_{1}-1=m_{2}n_{2}+1}.

Obtención de factores del periodo

Los enteros menos que N{displaystyle N} y coprime con N{displaystyle N} la forma grupo multiplicativo de enteros modulo N{displaystyle N}, que es un grupo abeliano finito G{displaystyle G.. El tamaño de este grupo es dado por φ φ ()N){displaystyle varphi (N)}. Al final del paso 3, tenemos un entero a{displaystyle a} en este grupo. Como el grupo es finito, a{displaystyle a} debe tener una orden finita r{displaystyle r}, que es el más pequeño número positivo tal que

ar↑ ↑ 1modN.{displaystyle a^{r}equiv 1{bmod {N}}

Esta es la orden r{displaystyle r} del subgrupo cíclico finitoa. ()ZN)× × {fnMicrosoft Sans Serif}, que es el más pequeño número positivo r{displaystyle r} para la cual ax+rmodN↑ ↑ axmodN{fnK} {fnK}} {fnK}}}} {fn}}} {fn}}}. Desde a{displaystyle a} y N{displaystyle N} son coprime, por el teorema totiente de Euler, r{displaystyle r} debe existir, y dividir φ φ ()N){displaystyle varphi (N)}, donde φ φ {displaystyle varphi } denota la función totiente de Euler.

Por lo tanto, N{displaystyle N} divideciones ar− − 1{displaystyle a^{r}-1} (también escrito N▪ ▪ ar− − 1{displaystyle Nmid a^{r}-1}). Supongamos que somos capaces de obtener r{displaystyle r} y eso es incluso. (Si) r{displaystyle r} es extraño, entonces por paso 5, tenemos que reiniciar el algoritmo con un número aleatorio diferente a{displaystyle a}) Ahora b↑ ↑ ar/2modN{displaystyle bequiv a^{r/2}{bmod {N}} es una raíz cuadrada 1{displaystyle 1} modulo N{displaystyle N} que es diferente de 1{displaystyle 1}. Esto es porque r{displaystyle r} es el orden de a{displaystyle a} modulo N{displaystyle N}Así que ar/2≢1modN{displaystyle a^{r/2}not equiv 1{bmod {N}}, o el orden de a{displaystyle a} en este grupo sería r2{displaystyle {dfrac {} {}}}. Si ar/2↑ ↑ − − 1modN{displaystyle a^{r/2}equiv -1{bmod {N}}, entonces por paso 6, tenemos que reiniciar el algoritmo con un número aleatorio diferente a{displaystyle a}.

Finalmente, debemos golpear a un a{displaystyle a} de orden r{displaystyle r} dentro G{displaystyle G. tales que b↑ ↑ ar/2≢± ± 1modN{displaystyle bequiv a^{r/2}not equiv pm 1{bmod {N}}. Esto es porque tal b{displaystyle b} es una raíz cuadrada 1{displaystyle 1} modulo N{displaystyle N} de otros 1{displaystyle 1} y − − 1{displaystyle -1}, cuya existencia está garantizada por el teorema restante chino, como el número impar N{displaystyle N} no es un poder primario.

Encontrar el período

El algoritmo de búsqueda de períodos de Shor se basa en gran medida en la capacidad de una computadora cuántica para estar en muchos estados simultáneamente.

Los físicos llaman a este comportamiento una "superposición" de estados. Para calcular el período de una función f{displaystyle f}, evaluamos la función en todos los puntos simultáneamente.

La física cuántica no nos permite acceder directamente a toda esta información. Una medición sólo dará uno de todos los valores posibles, destruyendo a todos los demás. Si no fuera por el teorema de no cerrar, primero podríamos medir f()x){displaystyle f(x)} sin medición x{displaystyle x}, y luego hacer unas cuantas copias del estado resultante (que es una superposición de estados que todos tienen la misma f()x){displaystyle f(x)}). Medición x{displaystyle x} sobre estos estados proporcionaría diferentes x{displaystyle x} valores que dan el mismo f()x){displaystyle f(x)}, conduce al período. Debido a que no podemos hacer copias exactas de un estado cuántico, este método no funciona. Por lo tanto, tenemos que transformar cuidadosamente la superposición a otro estado que devolverá la respuesta correcta con alta probabilidad. Esto se logra por la transformación cuántica Fourier.

Shor tuvo que resolver tres problemas de "ejecución". Todos ellos tenían que ser implementados "rápido", lo que significa que pueden ser implementados con una serie de puertas cuánticas que es polinomio en log⁡ ⁡ N{displaystyle log N}.

  1. Crear una superposición de estados. Esto se puede hacer aplicando las puertas de Hadamard a todos los bits en el registro de entrada. Otro enfoque sería utilizar la transformación quantum Fourier (ver más abajo).
  2. Implementar la función f{displaystyle f} como una transformación cuántica. Para lograrlo, Shor usó repetidos escuadras para su transformación modular de exponentes. Es importante señalar que este paso es más difícil de implementar que la transformación quantum Fourier, ya que requiere qubits auxiliares y sustancialmente más puertas para lograr.
  3. Realizar un quantum Fourier transform. Mediante el uso de puertas de rotación controladas y puertas Hadamard, Shor diseñó un circuito para la transformación quantum Fourier (con Q=2q{displaystyle Q=2^{q}) que utiliza sólo q()q− − 1)2=O()()log⁡ ⁡ Q)2){displaystyle {dfrac {q(q-1)}{2}=O!left(log Q)^{2}right)} Puertas.

Después de todas estas transformaciones, una medición dará una aproximación al período r{displaystyle r}. Para la simplicidad asume que hay un Sí.{displaystyle y} tales que Sí.rQ{displaystyle {dfrac {fnK}}} {fnK}} {fnK}}} {fn}}}}}} es un entero. Entonces la probabilidad de medir Sí.{displaystyle y} es 1{displaystyle 1}. Para ver esto, notamos que entonces

e− − 2π π ibSí.rQ=1{displaystyle e^{-{frac {2pi - Sí.

para todos los enteros b{displaystyle b}. Por lo tanto, la suma cuyo cuadrado nos da la probabilidad de medir Sí.{displaystyle y} será Qr{displaystyle {dfrac {}{r}} {fn}} {fn}} {fn}} {fn}} {fn}}} {fn}}}}}} {fn}}}}}}}}}}, como b{displaystyle b} las tomas duramente Qr{displaystyle {dfrac {}{r}} {fn}} {fn}} {fn}} {fn}} {fn}}} {fn}}}}}} {fn}}}}}}}}}} valores y por lo tanto la probabilidad es 1r2{displaystyle {dfrac {}{2}}} {f}} {f}}} {f}}} {f}}} {f}}}}} {f}}}}. Hay r{displaystyle r} valores posibles Sí.{displaystyle y} tales que Sí.rQ{displaystyle {dfrac {fnK}}} {fnK}} {fnK}}} {fn}}}}}} es un entero, y también r{displaystyle r} posibilidades de f()x0){displaystyle f(x_{0}}, por lo que las probabilidades suma a 1{displaystyle 1}.

La rutina de determinación del período puede considerarse una variación del algoritmo de estimación de fase cuántica más general para determinar el valor eigenvalo de un unitario correspondiente a un eigenvector. En el caso de la rutina de determinación del período utilizada en el Algoritmo de Shor, el módulo en cuestión es la multiplicación modular por el mod base elegido N{displaystyle N}. Mientras que la base computacional Silencio1.. {displaystyle ← } no es un eigenvector de este unitario, es una superposición uniforme de su r{displaystyle r} eigenvectores y por lo tanto la medición dará la fase del eigenvalue para uno de los eigenvectores. Puesto que no todas esas fases pueden utilizarse para extraer el período, es posible que sean necesarias los registros de la subrutina.

El cuello de botella

El cuello de botella de Shor es una exponencia modular cuántica, que es mucho más lenta que la transformación quantum Fourier y el procesamiento previo/post clásico. Hay varios enfoques para construir y optimizar circuitos para la exponencia modular. El enfoque más simple y (actualmente) más práctico es imitar los circuitos aritméticos convencionales con puertas reversibles, empezando por los aditivos de carga madura. Conocer la base y el módulo de exponencia facilita nuevas optimizaciones. Los circuitos reversibles suelen utilizar en el orden n3{displaystyle n^{3} puertas para n{displaystyle n} Cubitos. Técnicas alternativas mejorar asintomáticamente los recuentos de las puertas mediante transformaciones quantum Fourier, pero no son competitivos con menos de 600 codos debido a altas constantes.

Logaritmos discretos

Dado un grupo G{displaystyle G. con orden p{displaystyle p} y generador g▪ ▪ G{displaystyle gin G}Supongo que sabemos que x=gr▪ ▪ G{displaystyle x=g^{r}in G., para algunos r▪ ▪ Zp{displaystyle rin mathbb {Z}, y queremos computar r{displaystyle r}, que es el logaritmo discreto: r=logg()x){displaystyle r={log}(x)}. Considere el grupo abeliano Zp× × Zp{displaystyle mathbb {Z} _{p}times mathbb {Z} _{p}, donde cada factor corresponde a la adición modular de valores. Ahora, considere la función

f:: Zp× × Zp→ → G;f()a,b)=gax− − b.{displaystyle fcolon mathbb {Z} _{p}times mathbb {Z}{p}to G;;;f(a,b)=g^{a}x^{-b}

Esto nos da un problema de subgrupo oculto abeliano, como f{displaystyle f} corresponde a un homomorfismo grupal. El núcleo corresponde a los múltiples ()r,1){displaystyle (r,1)}. Así que, si podemos encontrar el núcleo, podemos encontrar r{displaystyle r}. Existe un algoritmo cuántico para resolver este problema. Este algoritmo es, como el algoritmo de determinación de factores, debido a Peter Shor y ambos se implementan creando una superposición a través de las puertas de Hadamard, seguido de la implementación f{displaystyle f} como una transformación cuántica, seguida finalmente por una transformación quantum Fourier. Debido a esto, el algoritmo cuántico para computar el logaritmo discreto también se denomina ocasionalmente "Shor's Algorithm".

El problema de búsqueda de pedidos también se puede considerar como un problema de subgrupo oculto. Para ver esto, considere el grupo de enteros bajo adición, y para un dado a▪ ▪ Z{displaystyle ain mathbb {Z} tal que: ar=1{displaystyle a^{r}=1}, la función

f:: Z→ → Z;f()x)=ax,f()x+r)=f()x).{displaystyle fcolon mathbb {Z} to mathbb {Z} ;;f(x)=a^{x},;f(x+r)=f(x). }

Para cualquier grupo abeliano finito G, existe un algoritmo cuántico para resolver el subgrupo oculto para G en tiempo polinomial.