stringtranslate.com

Factorización de polinomios

En matemáticas y álgebra informática , la factorización de polinomios o factorización de polinomios expresa un polinomio con coeficientes en un campo determinado o en los números enteros como producto de factores irreducibles con coeficientes en el mismo dominio. La factorización polinomial es uno de los componentes fundamentales de los sistemas de álgebra informática .

El primer algoritmo de factorización polinómica fue publicado por Theodor von Schubert en 1793. [1] Leopold Kronecker redescubrió el algoritmo de Schubert en 1882 y lo amplió a polinomios y coeficientes multivariados en una extensión algebraica. Pero la mayor parte del conocimiento sobre este tema no es anterior a alrededor de 1965 y a los primeros sistemas de álgebra computacional: [2]

Cuando los conocidos algoritmos de pasos finitos se implementaron por primera vez en las computadoras, resultaron ser altamente ineficientes. El hecho de que casi cualquier polinomio uni o multivariado de grado hasta 100 y con coeficientes de tamaño moderado (hasta 100 bits) pueda ser factorizado por algoritmos modernos en unos pocos minutos de tiempo de computadora indica cuán exitosamente se ha atacado este problema durante los últimos quince años. (Erich Kaltofen, 1982)

Hoy en día, los algoritmos y las computadoras modernos pueden factorizar rápidamente polinomios univariados de grado superior a 1000 que tienen coeficientes con miles de dígitos. [3] Para este propósito, incluso para factorizar números racionales y cuerpos numéricos , un paso fundamental es la factorización de un polinomio sobre un cuerpo finito .

Formulación de la pregunta.

Los anillos polinomiales sobre números enteros o sobre un campo son dominios de factorización únicos . Esto significa que cada elemento de estos anillos es producto de una constante y producto de polinomios irreducibles (aquellos que no son 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 campo 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 se puede factorizar (con algoritmos de búsqueda de raíces ) en factores lineales sobre el campo complejo C. De manera similar, sobre el campo de los reales , los factores irreducibles tienen grado como máximo dos, mientras que hay polinomios de cualquier grado que son irreducibles sobre el campo de los racionales Q.

La cuestión de la factorización polinomial sólo tiene sentido para coeficientes en un campo computable cuyos elementos pueden representarse en una computadora y para los cuales existen algoritmos para las operaciones aritméticas. Sin embargo, esta no es una condición suficiente: Fröhlich y Shepherdson dan ejemplos de campos para los que no puede existir ningún algoritmo de factorización. [4]

Los campos de coeficientes para los cuales se conocen algoritmos de factorización incluyen campos primos (es decir, el campo del número racional y los campos de los números enteros módulo a número primo ) y sus extensiones de campo generadas de forma finita . Los coeficientes enteros también son manejables. El método clásico de Kronecker sólo es interesante desde un punto de vista histórico; Los algoritmos modernos proceden de una sucesión de:

y reducciones:

Parte primitiva: factorización de contenido

En esta sección, mostramos que factorizar Q (los números racionales) y Z (los enteros) es esencialmente el mismo problema.

El contenido de un polinomio pZ [ 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 número 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 pZ [ X ] y cZ : basta con 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 números 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 números enteros de su parte primitiva. De manera similar, la factorización sobre los números 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 del MCD de números enteros 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 números enteros a la factorización de un número entero y un polinomio primitivo.

Todo lo anterior sigue siendo cierto si Z se reemplaza por un anillo polinomial sobre un cuerpo F y Q se reemplaza 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 campo puramente trascendental de F a la factorización de polinomios multivariados sobre F .

Factorización sin cuadrados

Si dos o más factores de un polinomio son idénticos, entonces el polinomio es múltiplo del cuadrado de ese factor. El factor múltiple es también factor de la derivada del polinomio (respecto de cualquiera de las variables, si son varias).

Para polinomios univariados, múltiples factores equivalen a múltiples raíces (sobre un campo de extensión adecuado). Para polinomios univariados sobre los racionales (o más generalmente sobre un campo 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 que comienzan con mcd( f ( x ), f '( x )). Para factorizar el polinomio inicial, basta con factorizar cada factor libre de cuadrados. Por lo tanto, la factorización sin cuadrados es el primer paso en la mayoría de los algoritmos de factorización polinomial.

El algoritmo de Yun extiende esto al caso multivariado al considerar un polinomio multivariado como un polinomio univariado sobre un anillo polinómico.

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 campo con p elementos, la derivada de un polinomio en x p es siempre cero). Sin embargo, una sucesión de cálculos del MCD, a partir del polinomio y su derivada, permite calcular la descomposición libre de cuadrados; consulte Factorización polinomial sobre campos finitos # Factorización libre de cuadrados .

Métodos clásicos

Esta sección describe métodos de libros de texto que pueden resultar útiles al realizar cálculos manuales. Estos métodos no se utilizan para cálculos informáticos porque utilizan la factorización de números enteros , que actualmente es más lenta que la factorización polinomial.

Los dos métodos siguientes parten de un polinomio univariado con coeficientes enteros para encontrar factores que también sean polinomios con coeficientes enteros.

Obtención de factores lineales

Todos los factores lineales con coeficientes racionales se pueden encontrar utilizando la prueba de la raíz racional . Si el polinomio 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 de ellas válida se puede factorizar mediante división larga polinomial . Si el polinomio original es el producto de factores de los cuales al menos dos son de grado 2 o superior, esta técnica sólo proporciona una factorización parcial; de lo contrario, la factorización está completa. En particular, si hay exactamente un factor no lineal, será el polinomio que queda 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.

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 en valores enteros debe producir números enteros. Es decir, si es un polinomio con coeficientes enteros, entonces es un número entero tan pronto como a sea un número entero. Sólo hay un número finito de valores enteros posibles para un factor de a . Entonces, si es un factor del valor de debe ser uno de los factores de

Si se buscan todos los factores de un grado dado d , se pueden considerar valores, para a , que dan 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 puede calcularse mediante interpolación polinomial . Se puede comprobar que cada uno de estos polinomios es un factor mediante división polinomial . Como había un número finito y cada uno tiene un número finito de divisores, hay un número finito de tuplas de este tipo. Entonces, 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 menos, por lo que está determinado únicamente por tres valores . Por tanto, calculamos tres valores , y . Si uno de estos valores es 0, tenemos un factor lineal. Si los valores son distintos de cero, podemos enumerar las posibles factorizaciones para cada uno. Ahora, 2 sólo puede factorizarse como

1×2, 2×1, (−1)×(−2), o (−2)×(−1).

Por lo tanto, si existe un factor polinómico entero de segundo grado, debe tomar uno de los valores

pag (0) = 1, 2, −1 o −2

y lo mismo para p (1). Hay ocho factorizaciones de 6 (cuatro para 1×6 y cuatro para 2×3), haciendo un total de 4×4×8 = 128 tripletas 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 verificar 64 polinomios enteros explícitos como posibles factores de . Probarlos exhaustivamente 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 realizar una prueba recursiva para encontrar 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]

Métodos modernos

Factorizar sobre campos finitos

Factorizar polinomios univariados sobre números enteros

Si es un polinomio univariante sobre los números enteros, que se supone libre de contenido y de 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 el 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 factoriza . Esto produce polinomios enteros cuyo producto coincide . A continuación, aplique el lifting Hensel ; esto actualiza de tal manera que su producto coincida , 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 . No es necesario que el módulo de estos factores corresponda a factores "verdaderos" de in , pero podemos probarlos fácilmente dividiéndolos en . De esta manera, todos los factores verdaderos irreducibles se pueden encontrar comprobando 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 polinómico de . Se puede determinar un límite para la precisión que garantice que este método produzca un factor o una prueba de irreducibilidad. Aunque este método finaliza en tiempo polinomial, no se utiliza en la práctica porque la red tiene grandes dimensiones 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 en un problema de red que luego se resuelve mediante LLL. [6] En este enfoque, LLL no se utiliza para calcular coeficientes de factores, sino más bien para calcular vectores con entradas en {0,1} que codifican los subconjuntos de correspondientes a los factores verdaderos irreducibles.

Factorizar extensiones algebraicas (método de Trager)

Podemos factorizar un polinomio , donde el campo es una extensión finita de . Primero, usando la factorización sin cuadrados, podemos suponer que el polinomio no tiene cuadrados. A continuación definimos el anillo cociente de grado ; Este no es un campo a menos que sea irreducible, pero es un anillo reducido ya que no tiene cuadrados. De hecho, si

es la factorización deseada de p ( x ), el anillo se descompone únicamente en campos como:

Esta descomposición la encontraremos sin conocer la factorización. Primero, escribimos L explícitamente como un álgebra sobre : ​​elegimos un elemento aleatorio , que genera sobre con alta probabilidad según el teorema del elemento primitivo . Si este es el caso, podemos calcular el polinomio mínimo de over , encontrando una relación lineal entre 1, α , . . . , α norte . Usando un algoritmo de factorización para poliomios racionales, factorizamos irreducibles en :

Así tenemos:

donde corresponde a . Este debe ser isomorfo a la descomposición anterior de .

Los generadores de L son x junto con los generadores de over ; Al escribirlos como polinomios en , podemos determinar las incrustaciones de y en cada componente . Al encontrar el polinomio mínimo de in , calculamos y, por lo tanto, factorizamos

Factorización numérica

La "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 coma flotante .

Para polinomios univariados con coeficientes complejos, la factorización se puede reducir fácilmente al cálculo numérico de raíces y multiplicidades polinómicas .

En el caso multivariado, una perturbación aleatoria infinitesimal de los coeficientes produce con probabilidad uno un polinomio irreducible , incluso partiendo de un polinomio con muchos factores. Por 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 mediante 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 ese factor, como se indicó anteriormente. Si uno no 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 pueden identificarse mediante factorización libre de cuadrados mediante cálculo numérico MCD y 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]

Ver también

Bibliografía

  1. ^ FT Schubert: De Inventione Divisorum Nova Acta Academiae Scientiarum Petropolitanae v.11, págs. 172-182 (1793)
  2. ^ Kaltofen (1982)
  3. ^ Un ejemplo de grado 2401, que tarda 7,35 segundos, se encuentra en la Sección 4 en: Hart, van Hoeij, Novocin: Practical Polynomial Factoring in Polynomial Time ISSAC'2011 Proceedings, págs.
  4. ^ Fröhlich, A.; Shepherdson, JC (1955). "Sobre la factorización de polinomios en un número finito de pasos". Mathematische Zeitschrift . 62 (1): 331–334. doi :10.1007/bf01180640. ISSN  0025-5874. S2CID  119955899.
  5. ^ Van der Waerden , secciones 5.4 y 5.6
  6. ^ M. van Hoeij: Factorización de polinomios y el problema de la mochila. Revista de teoría de números, 95, 167–189, (2002).
  7. ^ Ruppert, W. (1999). "Reducibilidad de polinomios f (x, y)". J. Teoría de números . 77 : 62–70. arXiv : matemáticas/9808021 . doi :10.1006/junio.1999.2381. S2CID  14316123.

    Coctelera, H. (2009). "Topología y factorización de polinomios". Matemáticas. Escanear . 104 : 51–59. arXiv : 0704.3363 . doi : 10.7146/math.scand.a-15084. S2CID  14121840.

  8. ^ Por ejemplo: W. Wu y Z. Zeng (2017). "La factorización numérica de polinomios". Fundamentos de la Matemática Computacional . 17 : 259–286. arXiv : 2103.04888 . doi :10.1007/s10208-015-9289-1. S2CID  254171366.
  9. ^ E. Kaltofen, JP May, Z. Yang y L. Zhi (2008). "Factorización aproximada de polinomios multivariados mediante descomposición en valores singulares". J. Computación simbólica . 43 (5): 359–376. doi : 10.1016/j.jsc.2007.11.005 .{{cite journal}}: CS1 maint: multiple names: authors list (link)

Otras lecturas