Articulo de referencia

Algoritmo de Berlekamp-Rabin

Elwyn R. Berlekamp en una conferencia sobre teoría de juegos combinatorios en la Estación de Investigación Internacional de Banff Elwyn Berlekamp En teoría de números , el algor...

Elwyn R. Berlekamp en una conferencia sobre teoría de juegos combinatorios en la Estación de Investigación Internacional de Banff Elwyn Berlekamp

En teoría de números , el algoritmo de búsqueda de raíces de Berlekamp , ​​también llamado algoritmo de Berlekamp-Rabin , es el método probabilístico para encontrar raíces de polinomios sobre un cuerpo con elementos. El método fue descubierto por Elwyn Berlekamp en 1970 [1] como un auxiliar del algoritmo para la factorización de polinomios sobre cuerpos finitos. El algoritmo fue modificado posteriormente por Rabin para cuerpos finitos arbitrarios en 1979. [2] El método también fue descubierto independientemente antes de Berlekamp por otros investigadores. [3] F pag {\displaystyle \mathbb {F}_{p}} pag {\estilo de visualización p}

Historia

El método fue propuesto por Elwyn Berlekamp en su trabajo de 1970 [1] sobre factorización polinómica sobre cuerpos finitos. Su trabajo original carecía de una prueba de corrección formal [2] y luego fue refinado y modificado para cuerpos finitos arbitrarios por Michael Rabin . [2] En 1986 René Peralta propuso un algoritmo similar [4] para encontrar raíces cuadradas en . [5] En 2000, el método de Peralta se generalizó para ecuaciones cúbicas . [6] F pag {\displaystyle \mathbb {F}_{p}}

Planteamiento del problema

Sea un número primo impar. Consideremos el polinomio sobre el cuerpo de residuos módulo . El algoritmo debería encontrar todos los en tales que en . [2] [7] pag {\estilo de visualización p} F ( incógnita ) = a 0 + a 1 incógnita + + a norte incógnita norte {\textstyle f(x)=a_{0}+a_{1}x+\cdots +a_{n}x^{n}} F pag O / pag O {\displaystyle \mathbb {F} _{p}\simeq \mathbb {Z} /p\mathbb {Z} } pag {\estilo de visualización p} la {\estilo de visualización \lambda} F pag {\displaystyle \mathbb {F}_{p}} F ( la ) = 0 {\textstyle f(\lambda )=0} F pag {\displaystyle \mathbb {F}_{p}}

Algoritmo

Aleatorización

Sea . Encontrar todas las raíces de este polinomio es equivalente a encontrar su factorización en factores lineales. Para encontrar dicha factorización es suficiente dividir el polinomio en dos divisores no triviales y factorizarlos recursivamente. Para ello, considere el polinomio donde  es algún elemento de . Si uno puede representar este polinomio como el producto , entonces en términos del polinomio inicial significa que , lo que proporciona la factorización necesaria de . [1] [7] F ( incógnita ) = ( incógnita la 1 ) ( incógnita la 2 ) ( incógnita la norte ) {\textstyle f(x)=(x-\lambda _{1})(x-\lambda _{2})\cdots (x-\lambda _{n})} F el ( incógnita ) = F ( incógnita el ) = ( incógnita la 1 el ) ( incógnita la 2 el ) ( incógnita la norte el ) {\textstyle f_{z}(x)=f(xz)=(x-\lambda _{1}-z)(x-\lambda _{2}-z)\cdots (x-\lambda _{n}-z)} el {\estilo de visualización z} F pag {\displaystyle \mathbb {F}_{p}} F el ( incógnita ) = pag 0 ( incógnita ) pag 1 ( incógnita ) {\displaystyle f_{z}(x)=p_{0}(x)p_{1}(x)} F ( incógnita ) = pag 0 ( incógnita + el ) pag 1 ( incógnita + el ) {\displaystyle f(x)=p_{0}(x+z)p_{1}(x+z)} F ( incógnita ) {\estilo de visualización f(x)}

Clasificación de F pag {\displaystyle \mathbb {F}_{p}} elementos

Debido al criterio de Euler , para cada monomio se cumple exactamente una de las siguientes propiedades: [1] ( incógnita la ) {\estilo de visualización (x-\lambda)}

  1. El monomio es igual a si , incógnita {\estilo de visualización x} la = 0 {\displaystyle \lambda = 0}
  2. El monomio se divide si  es residuo cuadrático módulo , gramo 0 ( incógnita ) = ( incógnita ( pag 1 ) / 2 1 ) {\textstyle g_{0}(x)=(x^{(p-1)/2}-1)} la {\estilo de visualización \lambda} pag {\estilo de visualización p}
  3. El monomio se divide si  es cuadrático no residual módulo . gramo 1 ( incógnita ) = ( incógnita ( pag 1 ) / 2 + 1 ) {\textstyle g_{1}(x)=(x^{(p-1)/2}+1)} la {\estilo de visualización \lambda} pag {\estilo de visualización p}

Por lo tanto, si no es divisible por , lo que se puede comprobar por separado, entonces es igual al producto de los máximos comunes divisores y . [7] F el ( incógnita ) Estilo de visualización f_ {z}(x)} incógnita {\estilo de visualización x} F el ( incógnita ) Estilo de visualización f_ {z}(x)} MCD ( F el ( incógnita ) ; gramo 0 ( incógnita ) ) {\displaystyle \mcd(f_{z}(x);g_{0}(x))} MCD ( F el ( incógnita ) ; gramo 1 ( incógnita ) ) {\displaystyle \mcd(f_{z}(x);g_{1}(x))}

El método de Berlekamp

La propiedad anterior conduce al siguiente algoritmo: [1]

  1. Calcular explícitamente los coeficientes de , F el ( incógnita ) = F ( incógnita el ) {\displaystyle f_{z}(x)=f(xz)}
  2. Calcular los residuos del módulo elevando al cuadrado el polinomio actual y tomando el residuo módulo , incógnita , incógnita 2 , incógnita 2 2 , incógnita 2 3 , incógnita 2 4 , , incógnita 2 registro 2 pag {\textstyle x,x^{2},x^{2^{2}},x^{2^{3}},x^{2^{4}},\ldots ,x^{2^{\lfloor \log _{2}p\rfloor }}} F el ( incógnita ) Estilo de visualización f_ {z}(x)} F el ( incógnita ) Estilo de visualización f_ {z}(x)}
  3. Usando la exponenciación por cuadrado y los polinomios calculados en los pasos anteriores, calcule el resto del módulo , incógnita ( pag 1 ) / 2 {\textstyle x^{(p-1)/2}} F el ( incógnita ) {\textstyle f_{z}(x)}
  4. Si a continuación se menciona una factorización no trivial de , incógnita ( pag 1 ) / 2 ± 1 ( modificación F el ( incógnita ) ) {\textstyle x^{(p-1)/2}\no \equiv \pm 1{\pmod {f_{z}(x)}}} MCD {\displaystyle \mcd} F el ( incógnita ) Estilo de visualización f_ {z}(x)}
  5. De lo contrario, todas las raíces de son residuos o no residuos simultáneamente y uno tiene que elegir otro . F el ( incógnita ) Estilo de visualización f_ {z}(x)} el {\estilo de visualización z}

Si es divisible por algún polinomio primitivo no lineal sobre entonces al calcular con y se obtendrá una factorización no trivial de , por lo que el algoritmo permite encontrar todas las raíces de polinomios arbitrarios sobre . F ( incógnita ) {\estilo de visualización f(x)} gramo ( incógnita ) {\estilo de visualización g(x)} F pag {\displaystyle \mathbb {F}_{p}} MCD {\displaystyle \mcd} gramo 0 ( incógnita ) Estilo de visualización g_{0}(x)} gramo 1 ( incógnita ) Estilo de visualización g_{1}(x)} F el ( incógnita ) / gramo el ( incógnita ) {\displaystyle f_{z}(x)/g_{z}(x)} F pag {\displaystyle \mathbb {F}_{p}}

Raíz cuadrada modular

Consideremos una ecuación que tiene como raíces los elementos y . La solución de esta ecuación es equivalente a la factorización del polinomio sobre . En este caso particular, basta con calcular solo . Para este polinomio se cumplirá exactamente una de las siguientes propiedades: incógnita 2 a ( modificación pag ) {\textstyle x^{2}\equiv a{\pmod {p}}} β {\estilo de visualización \beta} β {\estilo de visualización -\beta} F ( incógnita ) = incógnita 2 a = ( incógnita β ) ( incógnita + β ) {\textstyle f(x)=x^{2}-a=(x-\beta )(x+\beta )} F pag {\displaystyle \mathbb {F}_{p}} MCD ( F el ( incógnita ) ; gramo 0 ( incógnita ) ) {\displaystyle \mcd(f_{z}(x);g_{0}(x))}

  1. MCD es igual a lo que significa que y son ambos residuos cuadráticos no válidos. 1 {\estilo de visualización 1} el + β {\estilo de visualización z+\beta} el β {\displaystyle z-\beta}
  2. MCD es igual a lo que significa que ambos números son residuos cuadráticos, F el ( incógnita ) Estilo de visualización f_ {z}(x)}
  3. MCD es igual a lo que significa que exactamente uno de estos números es residuo cuadrático. ( incógnita a ) {\estilo de visualización (xt)}

En el tercer caso, el MCD es igual a o . Esto permite escribir la solución como . [1] ( incógnita el β ) {\estilo de visualización (xz-\beta )} ( incógnita el + β ) {\displaystyle (x-z+\beta )} β = ( a el ) ( modificación pag ) {\textstyle \beta =(tz){\pmod {p}}}

Ejemplo

Supongamos que necesitamos resolver la ecuación . Para ello, necesitamos factorizar . Consideremos algunos valores posibles de : incógnita 2 5 ( modificación 11 ) {\textstyle x^{2}\equiv 5{\pmod {11}}} F ( incógnita ) = incógnita 2 5 = ( incógnita β ) ( incógnita + β ) {\displaystyle f(x)=x^{2}-5=(x-\beta )(x+\beta )} el {\estilo de visualización z}

  1. Sea . Entonces , por lo tanto . Ambos números son residuos cuadráticos no válidos, por lo que necesitamos tomar algún otro . el = 3 {\displaystyle z=3} F el ( incógnita ) = ( incógnita 3 ) 2 5 = incógnita 2 6 incógnita + 4 {\displaystyle f_{z}(x)=(x-3)^{2}-5=x^{2}-6x+4} MCD ( incógnita 2 6 incógnita + 4 ; incógnita 5 1 ) = 1 {\displaystyle \mcd(x^{2}-6x+4;x^{5}-1)=1} 3 ± β {\displaystyle 3\pm\beta} el {\estilo de visualización z}
  1. Sea . Entonces , por lo tanto . De esto se sigue , por lo que y . el = 2 {\displaystyle z=2} F el ( incógnita ) = ( incógnita 2 ) 2 5 = incógnita 2 4 incógnita 1 {\displaystyle f_{z}(x)=(x-2)^{2}-5=x^{2}-4x-1} MCD ( incógnita 2 4 incógnita 1 ; incógnita 5 1 ) incógnita 9 ( modificación 11 ) {\textstyle \mcd(x^{2}-4x-1;x^{5}-1)\equiv x-9{\pmod {11}}} incógnita 9 = incógnita 2 β {\textstyle x-9=x-2-\beta } β 7 ( modificación 11 ) {\displaystyle \beta \equiv 7{\pmod {11}}} β 7 4 ( mod 11 ) {\textstyle -\beta \equiv -7\equiv 4{\pmod {11}}}

Una comprobación manual muestra que, efectivamente, y . 7 2 49 5 ( mod 11 ) {\textstyle 7^{2}\equiv 49\equiv 5{\pmod {11}}} 4 2 16 5 ( mod 11 ) {\textstyle 4^{2}\equiv 16\equiv 5{\pmod {11}}}

Prueba de corrección

El algoritmo encuentra la factorización de en todos los casos excepto en aquellos en los que todos los números son residuos cuadráticos o no residuos simultáneamente. Según la teoría de la ciclotomía, [8] la probabilidad de tal evento para el caso en el que son todos los residuos o no residuos simultáneamente (es decir, cuando fallaría) puede estimarse como donde  es el número de valores distintos en . [1] De esta manera, incluso para el peor caso de y , la probabilidad de error puede estimarse como y para el caso de raíz cuadrada modular la probabilidad de error es como máximo . f z ( x ) {\displaystyle f_{z}(x)} z + λ 1 , z + λ 2 , , z + λ n {\displaystyle z+\lambda _{1},z+\lambda _{2},\ldots ,z+\lambda _{n}} λ 1 , , λ n {\displaystyle \lambda _{1},\ldots ,\lambda _{n}} z = 0 {\displaystyle z=0} 2 k {\displaystyle 2^{-k}} k {\displaystyle k} λ 1 , , λ n {\displaystyle \lambda _{1},\ldots ,\lambda _{n}} k = 1 {\displaystyle k=1} f ( x ) = ( x λ ) n {\displaystyle f(x)=(x-\lambda )^{n}} 1 / 2 {\displaystyle 1/2} 1 / 4 {\displaystyle 1/4}

Complejidad

Sea un polinomio de grado . Derivamos la complejidad del algoritmo de la siguiente manera: n {\displaystyle n}

  1. Debido al teorema binomial , podemos realizar la transición de a en el tiempo. ( x z ) k = i = 0 k ( k i ) ( z ) k i x i {\textstyle (x-z)^{k}=\sum \limits _{i=0}^{k}{\binom {k}{i}}(-z)^{k-i}x^{i}} f ( x ) {\displaystyle f(x)} f ( x z ) {\displaystyle f(x-z)} O ( n 2 ) {\displaystyle O(n^{2})}
  2. La multiplicación de polinomios y la toma del resto de un polinomio módulo otro se puede hacer en , por lo tanto, el cálculo de se realiza en . O ( n 2 ) {\textstyle O(n^{2})} x 2 k mod f z ( x ) {\textstyle x^{2^{k}}{\bmod {f}}_{z}(x)} O ( n 2 log p ) {\textstyle O(n^{2}\log p)}
  3. La exponenciación binaria funciona en . O ( n 2 log p ) {\displaystyle O(n^{2}\log p)}
  4. Tomando el de dos polinomios a través del algoritmo euclidiano funciona en . gcd {\displaystyle \gcd } O ( n 2 ) {\displaystyle O(n^{2})}

Por lo tanto, todo el procedimiento puede realizarse en . Utilizando la transformada rápida de Fourier y el algoritmo Half-GCD, [9] la complejidad del algoritmo puede mejorarse a . Para el caso de raíz cuadrada modular, el grado es , por lo que la complejidad total del algoritmo en tal caso está limitada por por iteración. [7] O ( n 2 log p ) {\displaystyle O(n^{2}\log p)} O ( n log n log p n ) {\displaystyle O(n\log n\log pn)} n = 2 {\displaystyle n=2} O ( log p ) {\displaystyle O(\log p)}

Referencias

  1. ^ abcdefg Berlekamp, ​​ER (1970). "Factorización de polinomios sobre grandes cuerpos finitos". Matemáticas de la computación . 24 (111): 713–735. doi : 10.1090/S0025-5718-1970-0276200-X . ISSN  0025-5718.
  2. ^ abcd M. Rabin (1980). "Algoritmos probabilísticos en campos finitos". Revista SIAM de informática . 9 (2): 273–280. CiteSeerX 10.1.1.17.5653 . doi :10.1137/0209024. ISSN  0097-5397. 
  3. ^ Donald E Knuth (1998). El arte de la programación informática. Vol. 2 Vol. 2 . ISBN 978-0201896848.OCLC 900627019  .
  4. ^ Tsz-Wo Sze (2011). "Sobre la toma de raíces cuadradas sin residuos cuadráticos no válidos sobre cuerpos finitos". Matemáticas de la computación . 80 (275): 1797–1811. arXiv : 0812.2591 . doi :10.1090/s0025-5718-2011-02419-1. ISSN  0025-5718. S2CID  10249895.
  5. ^ R. Peralta (noviembre de 1986). "Un algoritmo probabilístico simple y rápido para calcular raíces cuadradas módulo un número primo (Corresp.)". IEEE Transactions on Information Theory . 32 (6): 846–847. doi :10.1109/TIT.1986.1057236. ISSN  0018-9448.
  6. ^ C Padró, G Sáez (agosto de 2002). "Tomando raíces cúbicas en Zm". Applied Mathematics Letters . 15 (6): 703–708. doi :10.1016/s0893-9659(02)00031-9. ISSN  0893-9659.
  7. ^ abcd Alfred J. Menezes, Ian F. Blake, XuHong Gao, Ronald C. Mullin, Scott A. Vanstone (1993). Aplicaciones de campos finitos. Serie internacional de Springer en ingeniería y ciencias de la computación. Springer US. ISBN 9780792392828.{{cite book}}: CS1 maint: multiple names: authors list (link)
  8. ^ Marshall Hall (1998). Teoría combinatoria. John Wiley & Sons. ISBN 9780471315186.
  9. ^ Aho, Alfred V. (1974). El diseño y análisis de algoritmos informáticos . Addison-Wesley Pub. Co. ISBN 0201000296.
Retrieved from "https://en.wikipedia.org/w/index.php?title=Berlekamp–Rabin_algorithm&oldid=1241371442"