En matemáticas , particularmente en álgebra computacional , el algoritmo de Berlekamp es un método bien conocido para factorizar polinomios sobre cuerpos finitos (también conocidos como cuerpos de Galois ). El algoritmo consiste principalmente en la reducción de matrices y el cálculo del máximo común divisor (MCD) de polinomios . Fue inventado por Elwyn Berlekamp en 1967. Fue el algoritmo dominante para resolver el problema hasta la aparición del algoritmo de Cantor-Zassenhaus en 1981. Actualmente se implementa en muchos sistemas de álgebra computacional conocidos .
Descripción general
El algoritmo de Berlekamp toma como entrada un polinomio libre de cuadrados.(es decir, uno sin factores repetidos) de gradocon coeficientes en un campo finitoy da como resultado un polinomiocon coeficientes en el mismo campo tales quedivide. El algoritmo puede aplicarse entonces recursivamente a estos y a los divisores subsiguientes, hasta que encontremos la descomposición deen potencias de polinomios irreducibles (recordando que el anillo de polinomios sobre un cuerpo finito es un dominio de factorización único ).
Todos los posibles factores deestán contenidos dentro del anillo de factores
El algoritmo se centra en polinomios.que satisfacen la congruencia:
Estos polinomios forman una subálgebra de R (que puede considerarse como unaespacio vectorial de dimensión sobre), llamada subálgebra de Berlekamp . La subálgebra de Berlekamp es de interés porque los polinomioscontiene satisfacción
En general, no todos los MCD del producto anterior serán un factor no trivial de, pero algunos sí lo son, proporcionando los factores que buscamos.
El algoritmo de Berlekamp encuentra polinomios.adecuado para su uso con el resultado anterior calculando una base para la subálgebra de Berlekamp. Esto se logra mediante la observación de que la subálgebra de Berlekamp es de hecho el núcleo de una determinadamatriz sobre, que se deriva de la llamada matriz de Berlekamp del polinomio, denotada. Sientonceses el coeficiente de latérmino de potencia -ésima en la reducción demódulo, es decir:
Con un cierto polinomio, decir:
Podemos asociar el vector fila:
Es relativamente sencillo ver que el vector filacorresponde, de la misma manera, a la reducción demódulo. En consecuencia, un polinomioestá en la subálgebra de Berlekamp si y solo si(dóndees elmatriz identidad ), es decir, si y solo si está en el espacio nulo de.
Al calcular la matrizy reduciéndola a la forma escalonada reducida por filas y luego leyendo fácilmente una base para el espacio nulo, podemos encontrar una base para la subálgebra de Berlekamp y por lo tanto construir polinomios.En él. Luego necesitamos calcular sucesivamente los MCD de la forma anterior hasta que encontremos un factor no trivial. Dado que el anillo de polinomios sobre un cuerpo es un dominio euclidiano , podemos calcular estos MCD utilizando el algoritmo euclidiano .
Explicación algebraica conceptual
Con algo de álgebra abstracta, la idea detrás del algoritmo de Berlekamp se vuelve conceptualmente clara. Representamos un campo finito., dóndepara algunos principiante, comoPodemos suponer quees libre de cuadrados, tomando todas las posibles raíces p-ésimas y luego calculando el mcd con su derivada.
Ahora, supongamos quees la factorización en irreducibles. Entonces tenemos un isomorfismo de anillos, :\mathbb {F} _{q}[x]/(f(x))\to \prod _{i}\mathbb {F} _{q}[x]/(f_{i}(x))} , dado por el teorema chino del resto . La observación crucial es que el automorfismo de Frobeniusse desplaza con, de modo que si denotamos, entoncesse restringe a un isomorfismo. Por teoría de campos finitos, es siempre el subcampo principal de esa extensión de campo. Por lo tanto,tiene elementos si y solo si es irreductible.
Además, podemos usar el hecho de que el automorfismo de Frobenius es-lineal para calcular el conjunto fijo. Es decir, observamos quees un-subespacio, y se puede calcular una base explícita para él en el anillo polinomialmediante computacióny estableciendo las ecuaciones lineales sobre los coeficientes depolinomios que se satisfacen si y solo si Frobenius los fija. Observamos que en este punto tenemos un criterio de irreducibilidad computable eficientemente, y el análisis restante muestra cómo usarlo para encontrar factores.
El algoritmo ahora se divide en dos casos:
- En el caso de pequeños podemos construir cualquier y luego observamos que para algunoshayde modo quey. Tal estiene un factor no trivial en común con, que se puede calcular mediante el mcd. Comoes pequeño, podemos recorrer todas las posibilidades.
- Para el caso de primos grandes, que son necesariamente impares, se puede aprovechar el hecho de que un elemento aleatorio distinto de cero dees un cuadrado con probabilidady que el mapamapea el conjunto de cuadrados no nulos ay el conjunto de no cuadrados paraPor lo tanto, si tomamos un elemento aleatorio, entonces con buena probabilidadtendrá un factor no trivial en común con.
Para obtener más detalles, puede consultar [ 1 ] .
Aplicaciones
Una aplicación importante del algoritmo de Berlekamp es el cálculo de logaritmos discretos sobre campos finitos., dóndees primordial yEl cálculo de logaritmos discretos es un problema importante en la criptografía de clave pública y la codificación de control de errores . Para un campo finito, el método más rápido conocido es el método del cálculo de índices , que implica la factorización de los elementos del campo. Si representamos el campode la forma habitual, es decir, como polinomios sobre el campo base., reducido módulo un polinomio irreducible de grado- entonces se trata simplemente de una factorización polinómica, tal como la proporciona el algoritmo de Berlekamp.
Implementación en sistemas de álgebra computacional
Se puede acceder al algoritmo de Berlekamp en el paquete PARI/GP usando el comando factormod y WolframAlpha.sitio web.
Véase también
Referencias
- ↑ Teoría de la Computación - Dexter Kozen . Saltador . Consultado el 19 de septiembre de 2020 .
- Berlekamp, Elwyn R. (1967). "Factoring Polynomials Over Finite Fields". Bell System Technical Journal . 46 (8): 1853– 1859. doi : 10.1002/j.1538-7305.1967.tb03174.x . MR 0219231 . BSTJ Posteriormente republicado en: Berlekamp, Elwyn R. (1968). Teoría de la codificación algebraica . McGraw Hill. ISBN 0-89412-063-8.
- Knuth, Donald E. (1997). «4.6.2 Factorización de polinomios». Algoritmos seminuméricos . El arte de la programación informática . Vol. 2 (Tercera ed.). Reading, Massachusetts: Addison-Wesley. pp. 439–461 , 678–691 . ISBN 0-201-89684-2.
- Álgebra computacional
- Campos finitos
- Algoritmos de factorización de polinomios