En matemáticas y álgebra computacional , la factorización de polinomios o factorización polinómica expresa un polinomio con coeficientes en un campo dado o en los números enteros como el producto de factores irreducibles con coeficientes en el mismo dominio. La factorización polinómica es uno de los componentes fundamentales de los sistemas de álgebra computacional .
El primer algoritmo de factorización de polinomios fue publicado por Theodor von Schubert en 1793. [1] Leopold Kronecker redescubrió el algoritmo de Schubert en 1882 y lo extendió a polinomios multivariados y coeficientes en una extensión algebraica. Pero la mayor parte del conocimiento sobre este tema no es anterior a alrededor de 1965 y los primeros sistemas de álgebra computacional: [2]
Cuando los algoritmos de pasos finitos, conocidos desde hace mucho tiempo, se introdujeron por primera vez en los ordenadores, resultaron ser muy ineficientes. El hecho de que casi cualquier polinomio univariable o multivariable de grado hasta 100 y con coeficientes de tamaño moderado (hasta 100 bits) pueda factorizarse mediante algoritmos modernos en unos pocos minutos de tiempo de ordenador indica el éxito con el que se ha abordado este problema durante los últimos quince años. (Erich Kaltofen, 1982)
Los algoritmos y las computadoras modernas pueden factorizar rápidamente polinomios univariados de grado superior a 1000 que tengan coeficientes con miles de dígitos. [3] Para este propósito, incluso para factorizar sobre números racionales y cuerpos numéricos , un paso fundamental es la factorización de un polinomio sobre un cuerpo finito .
Los anillos polinómicos sobre los números enteros o sobre un cuerpo son dominios de factorización únicos . Esto significa que cada elemento de estos anillos es un producto de una constante y un producto de polinomios irreducibles (aquellos que no son el producto de dos polinomios no constantes). Además, esta descomposición es única hasta la multiplicación de los factores por constantes invertibles.
La factorización depende del cuerpo base. Por ejemplo, el teorema fundamental del álgebra , que establece que todo polinomio con coeficientes complejos tiene raíces complejas, implica que un polinomio con coeficientes enteros puede factorizarse (con algoritmos de búsqueda de raíces ) en factores lineales sobre el cuerpo complejo C. De manera similar, sobre el cuerpo de los números reales , los factores irreducibles tienen grado como máximo dos, mientras que hay polinomios de cualquier grado que son irreducibles sobre el cuerpo de los racionales Q.
La cuestión de la factorización de polinomios sólo tiene sentido para los coeficientes de un cuerpo computable cuyos elementos pueden representarse en un ordenador y para el que existen algoritmos para las operaciones aritméticas. Sin embargo, esto no es una condición suficiente: Fröhlich y Shepherdson dan ejemplos de tales cuerpos para los que no puede existir ningún algoritmo de factorización. [4]
Los campos de coeficientes para los que se conocen algoritmos de factorización incluyen campos primos (es decir, el campo del número racional y los campos de los enteros módulo un número primo ) y sus extensiones de campo finitamente generadas . Los coeficientes enteros también son manejables. El método clásico de Kronecker es interesante sólo desde un punto de vista histórico; los algoritmos modernos proceden por una sucesión de:
y reducciones:
En esta sección, mostramos que factorizar sobre Q (los números racionales) y sobre Z (los enteros) es esencialmente el mismo problema.
El contenido de un polinomio p ∈ Z [ X ], denotado "cont( p )", es, hasta su signo, el máximo común divisor de sus coeficientes. La parte primitiva de p es primpart( p ) = p /cont( p ), que es un polinomio primitivo con coeficientes enteros. Esto define una factorización de p en el producto de un entero y un polinomio primitivo. Esta factorización es única hasta el signo del contenido. Es una convención habitual elegir el signo del contenido de modo que el coeficiente principal de la parte primitiva sea positivo.
Por ejemplo,
es una factorización en contenido y parte primitiva.
Todo polinomio q con coeficientes racionales puede escribirse
donde p ∈ Z [ X ] y c ∈ Z : basta tomar para c un múltiplo de todos los denominadores de los coeficientes de q (por ejemplo su producto) y p = cq . El contenido de q se define como:
y la parte primitiva de q es la de p . En cuanto a los polinomios con coeficientes enteros, esto define una factorización en un número racional y un polinomio primitivo con coeficientes enteros. Esta factorización también es única hasta la elección de un signo.
Por ejemplo,
es una factorización en contenido y parte primitiva.
Gauss demostró que el producto de dos polinomios primitivos también es primitivo ( lema de Gauss ). Esto implica que un polinomio primitivo es irreducible sobre los racionales si y sólo si es irreducible sobre los enteros. Esto implica también que la factorización sobre los racionales de un polinomio con coeficientes racionales es la misma que la factorización sobre los enteros de su parte primitiva. De manera similar, la factorización sobre los enteros de un polinomio con coeficientes enteros es el producto de la factorización de su parte primitiva por la factorización de su contenido.
En otras palabras, un cálculo de MCD entero reduce la factorización de un polinomio sobre los racionales a la factorización de un polinomio primitivo con coeficientes enteros, y la factorización sobre los enteros a la factorización de un entero y un polinomio primitivo.
Todo lo anterior sigue siendo cierto si se reemplaza Z por un anillo de polinomios sobre un cuerpo F y Q por un cuerpo de funciones racionales sobre F en las mismas variables, con la única diferencia de que "hasta un signo" debe reemplazarse por "hasta la multiplicación por una constante invertible en F ". Esto reduce la factorización sobre una extensión de cuerpo puramente trascendental de F a la factorización de polinomios multivariados sobre F .
Si dos o más factores de un polinomio son idénticos, entonces el polinomio es un múltiplo del cuadrado de este factor. El factor múltiplo es también un factor de la derivada del polinomio (con respecto a cualquiera de las variables, si son varias).
Para polinomios univariados, múltiples factores son equivalentes a múltiples raíces (sobre un cuerpo de extensión adecuado). Para polinomios univariados sobre los racionales (o más generalmente sobre un cuerpo de característica cero), el algoritmo de Yun explota esto para factorizar eficientemente el polinomio en factores libres de cuadrados, es decir, factores que no son múltiplos de un cuadrado, realizando una secuencia de cálculos de MCD comenzando con mcd( f ( x ), f '( x )). Para factorizar el polinomio inicial, basta con factorizar cada factor libre de cuadrados. La factorización libre de cuadrados es, por lo tanto, el primer paso en la mayoría de los algoritmos de factorización de polinomios.
El algoritmo de Yun extiende esto al caso multivariado al considerar un polinomio multivariado como un polinomio univariante sobre un anillo polinomial.
En el caso de un polinomio sobre un cuerpo finito, el algoritmo de Yun se aplica sólo si el grado es menor que la característica, porque, de lo contrario, la derivada de un polinomio distinto de cero puede ser cero (sobre el cuerpo con p elementos, la derivada de un polinomio en x p es siempre cero). Sin embargo, una sucesión de cálculos de MCD, a partir del polinomio y su derivada, permite calcular la descomposición libre de cuadrados; véase Factorización de polinomios sobre cuerpos finitos#Factorización libre de cuadrados .
En esta sección se describen los métodos de los libros de texto que pueden resultar prácticos cuando se realizan cálculos a mano. Estos métodos no se utilizan para los cálculos informáticos porque utilizan la factorización de números enteros , que actualmente es más lenta que la factorización de polinomios.
Los dos métodos que siguen parten de un polinomio univariante con coeficientes enteros para encontrar factores que también sean polinomios con coeficientes enteros.
Todos los factores lineales con coeficientes racionales se pueden encontrar utilizando la prueba de la raíz racional . Si el polinomio que se va a factorizar es , entonces todos los factores lineales posibles tienen la forma , donde es un factor entero de y es un factor entero de . Se puede probar la validez de todas las combinaciones posibles de factores enteros, y cada una válida se puede factorizar utilizando la división larga de polinomios . Si el polinomio original es el producto de factores de los cuales al menos dos son de grado 2 o superior, esta técnica solo proporciona una factorización parcial; de lo contrario, la factorización es completa. En particular, si hay exactamente un factor no lineal, será el polinomio que quede después de que se hayan factorizado todos los factores lineales. En el caso de un polinomio cúbico , si el cúbico es factorizable, la prueba de la raíz racional proporciona una factorización completa, ya sea en un factor lineal y un factor cuadrático irreducible, o en tres factores lineales.
El método de Kronecker tiene como objetivo factorizar polinomios univariados con coeficientes enteros en polinomios con coeficientes enteros.
El método utiliza el hecho de que la evaluación de polinomios enteros con valores enteros debe producir números enteros. Es decir, si es un polinomio con coeficientes enteros, entonces es un número entero siempre que a sea un número entero. Solo hay un número finito de posibles valores enteros para un factor de a . Por lo tanto, si es un factor del valor de debe ser uno de los factores de
Si uno busca todos los factores de un grado dado d , se pueden considerar valores, para a , que den un número finito de posibilidades para la tupla Cada uno tiene un número finito de divisores , y, cada -tupla donde la entrada es un divisor de , es decir, una tupla de la forma , produce un polinomio único de grado como máximo , que se puede calcular por interpolación polinómica . Cada uno de estos polinomios se puede probar para ser un factor por división polinómica . Dado que había un número finito y cada uno tiene un número finito de divisores, hay un número finito de tales tuplas. Por lo tanto, una búsqueda exhaustiva permite encontrar todos los factores de grado como máximo d .
Por ejemplo, considere
Si este polinomio se factoriza sobre Z , entonces al menos uno de sus factores debe ser de grado dos o menor, por lo que está determinado de forma única por tres valores . Por lo tanto, calculamos tres valores , y . Si uno de estos valores es 0, tenemos un factor lineal. Si los valores no son cero, podemos enumerar las posibles factorizaciones para cada uno. Ahora, 2 solo se puede factorizar como
Por lo tanto, si existe un factor polinomial entero de segundo grado, debe tomar uno de los valores
y lo mismo para p (1). Hay ocho factorizaciones de 6 (cuatro para 1×6 y 2×3), lo que da un total de 4×4×8 = 128 triples posibles ( p (0), p (1), p (−1)), de los cuales la mitad se puede descartar como los negativos de la otra mitad. Por lo tanto, debemos comprobar 64 polinomios enteros explícitos como posibles factores de . Al probarlos exhaustivamente se revela que
construido a partir de ( g (0), g (1), g (−1)) = (1,3,1) factores .
Dividiendo f ( x ) por p ( x ) se obtiene el otro factor , de modo que . Ahora se puede hacer una prueba recursiva para encontrar los factores de p ( x ) y q ( x ), en este caso utilizando la prueba de la raíz racional. Resulta que ambos son irreducibles, por lo que la factorización irreducible de f ( x ) es: [5]
Si es un polinomio univariado sobre los números enteros, que se supone que no tienen contenido ni cuadrados, se comienza calculando un límite tal que cualquier factor tenga coeficientes de valor absoluto acotados por . De esta manera, si es un número entero mayor que , y si se conoce módulo , entonces se puede reconstruir a partir de su imagen mod .
El algoritmo de Zassenhaus procede de la siguiente manera. Primero, elija un número primo tal que la imagen de permanezca libre de cuadrados y del mismo grado que . Luego factorice . Esto produce polinomios enteros cuyo producto coincide con . A continuación, aplique el levantamiento de Hensel ; esto actualiza el de tal manera que su producto coincida con , donde es lo suficientemente grande como para exceder : por lo tanto, cada uno corresponde a un polinomio entero bien definido. Módulo , el polinomio tiene factores (hasta unidades): los productos de todos los subconjuntos de . Estos factores módulo no necesitan corresponder a factores "verdaderos" de en , pero podemos probarlos fácilmente dividiendo en . De esta manera, todos los factores verdaderos irreducibles se pueden encontrar verificando en la mayoría de los casos, reducidos a casos omitiendo complementos. Si es reducible, el número de casos se reduce aún más eliminando aquellos que aparecen en un factor verdadero ya encontrado. El algoritmo de Zassenhaus procesa cada caso (cada subconjunto) rápidamente, sin embargo, en el peor de los casos, considera un número exponencial de casos.
El primer algoritmo de tiempo polinomial para factorizar polinomios racionales fue descubierto por Lenstra, Lenstra y Lovász y es una aplicación del algoritmo de reducción de base reticular (LLL) de Lenstra–Lenstra–Lovász (Lenstra, Lenstra y Lovász 1982). Una versión simplificada del algoritmo de factorización LLL es la siguiente: calcule una raíz compleja (o p -ádica) α del polinomio con alta precisión, luego use el algoritmo de reducción de base reticular de Lenstra–Lenstra–Lovász para encontrar una relación lineal aproximada entre 1, α , α 2 , α 3 , . . . con coeficientes enteros, que podría ser una relación lineal exacta y un factor polinomial de . Se puede determinar un límite para la precisión que garantiza que este método produzca un factor o una prueba de irreducibilidad. Aunque este método termina en tiempo polinomial, no se utiliza en la práctica porque la red tiene gran dimensión y entradas enormes, lo que hace que el cálculo sea lento.
La complejidad exponencial del algoritmo de Zassenhaus proviene de un problema combinatorio: cómo seleccionar los subconjuntos correctos de . Las implementaciones de factorización de última generación funcionan de manera similar a Zassenhaus, excepto que el problema combinatorio se traduce a un problema de red que luego se resuelve mediante LLL. [6] En este enfoque, LLL no se utiliza para calcular coeficientes de factores, sino para calcular vectores con entradas en {0,1} que codifican los subconjuntos de correspondientes a los factores verdaderos irreducibles.
Podemos factorizar un polinomio , donde el cuerpo es una extensión finita de . Primero, usando factorización libre de cuadrados, podemos suponer que el polinomio es libre de cuadrados. A continuación definimos el anillo cociente de grado ; este no es un cuerpo a menos que sea irreducible, pero es un anillo reducido ya que es libre de cuadrados. De hecho, si
es la factorización deseada de p ( x ), el anillo se descompone únicamente en campos como:
Encontraremos esta descomposición sin conocer la factorización. Primero, escribimos L explícitamente como un álgebra sobre : elegimos un elemento aleatorio , que genera sobre con alta probabilidad por el teorema del elemento primitivo . Si este es el caso, podemos calcular el polinomio mínimo de sobre , al encontrar una relación -lineal entre 1, α , . . . , α n . Usando un algoritmo de factorización para poliomios racionales, factorizamos en irreducibles en :
Así que tenemos:
donde corresponde a . Esto debe ser isomorfo a la descomposición anterior de .
Los generadores de L son x junto con los generadores de sobre ; escribiéndolos como polinomios en , podemos determinar las incrustaciones de y en cada componente . Al encontrar el polinomio mínimo de en , calculamos , y por lo tanto factorizamos sobre
"Factorización numérica" se refiere comúnmente a la factorización de polinomios con coeficientes reales o complejos, cuyos coeficientes sólo se conocen aproximadamente, generalmente porque se representan como números de punto flotante .
Para polinomios univariados con coeficientes complejos, la factorización puede reducirse fácilmente al cálculo numérico de raíces y multiplicidades polinómicas .
En el caso multivariante, una perturbación infinitesimal aleatoria de los coeficientes produce con probabilidad uno un polinomio irreducible , incluso cuando se parte de un polinomio con muchos factores. Por lo tanto, es necesario aclarar con precisión el significado mismo de la factorización numérica .
Sea un polinomio con coeficientes complejos con una factorización irreducible
donde y los factores son polinomios irreducibles con coeficientes complejos. Supongamos que se aproxima a través de un polinomio cuyos coeficientes son cercanos a los de . La factorización exacta de no tiene sentido, ya que generalmente es irreducible. Hay varias definiciones posibles de lo que se puede llamar una factorización numérica de
Si se conocen y , una factorización aproximada consiste en encontrar un polinomio cercano a esos factores como se indicó anteriormente. Si no se conoce el esquema de factorización, se hace necesario identificarlo. Por ejemplo, el número de factores irreducibles de un polinomio es la nulidad de su matriz de Ruppert. [7] Por lo tanto, las multiplicidades se pueden identificar mediante factorización libre de cuadrados a través del cálculo numérico del MCD y la revelación de rangos en matrices de Ruppert.
Se han desarrollado e implementado varios algoritmos para la factorización numérica como tema de investigación en curso. [8] [9]
Shaker, H. (2009). "Topología y factorización de polinomios". Math. Scand . 104 : 51–59. arXiv : 0704.3363 . doi :10.7146/math.scand.a-15084. S2CID : 14121840.
{{cite journal}}
: CS1 maint: multiple names: authors list (link){{cite journal}}
: CS1 maint: multiple names: authors list (link)(accesible para lectores con conocimientos universitarios de matemáticas)