En la teoría de polinomios multivariados , el algoritmo de Buchberger es un método para transformar un conjunto dado de polinomios en una base de Gröbner , que es otro conjunto de polinomios con raíces comunes y que resulta más conveniente para extraer información sobre dichas raíces. Fue introducido por Bruno Buchberger simultáneamente con la definición de las bases de Gröbner.
El algoritmo euclidiano para calcular el máximo común divisor de un polinomio es un caso especial del algoritmo de Buchberger, restringido a polinomios de una sola variable. La eliminación gaussiana de un sistema de ecuaciones lineales es otro caso especial donde el grado de todos los polinomios es igual a uno.
Para otros algoritmos de base de Gröbner, consulte Base de Gröbner § Algoritmos e implementaciones .
Algoritmo
Una versión rudimentaria de este algoritmo para encontrar una base para un ideal I de un anillo de polinomios R procede de la siguiente manera:
- Entrada Un conjunto de polinomios F que genera I
- Salida A Base de Gröbner G para I
- G := F
- Para cada f i , f j en G , denotemos por g i el término principal de f i con respecto al orden monomial dado , y por a ij el mínimo común múltiplo de g i y g j .
- Elija dos polinomios en G y sea S ij = a ij / g i f i − a ij / g j f j (Los términos principales aquí se cancelarán por construcción) .
- Reduzca S ij , con el algoritmo de división multivariada relativo al conjunto G hasta que el resultado no sea más reducible. Si el resultado es distinto de cero, agréguelo a G .
- Repita los pasos 2 a 4 hasta que se hayan considerado todos los pares posibles, incluidos aquellos que involucran los nuevos polinomios agregados en el paso 4.
- Salida G
El polinomio S ij se conoce comúnmente como el polinomio S , donde S se refiere a la resta (Buchberger) o a la sizigia (otros). El par de polinomios con los que se asocia se conoce comúnmente como par crítico .
Existen muchas maneras de mejorar este algoritmo más allá de lo ya mencionado. Por ejemplo, todos los nuevos elementos de F pueden reducirse entre sí antes de sumarlos. Si los términos principales de f i y f j no comparten variables, entonces S ij siempre se reducirá a 0 (si se utilizan únicamente f i y f j para la reducción), por lo que no es necesario calcularlo.
El algoritmo termina porque está aumentando constantemente el tamaño del ideal monomial generado por los términos principales de nuestro conjunto F , y el lema de Dickson (o el teorema de la base de Hilbert ) garantiza que cualquier cadena ascendente de este tipo debe eventualmente volverse constante.
Complejidad
La complejidad computacional del algoritmo de Buchberger es muy difícil de estimar, debido a la cantidad de opciones que pueden cambiar drásticamente el tiempo de cálculo. Sin embargo, TW Dubé ha demostrado [ 1 ] que los grados de los elementos de una base de Gröbner reducida siempre están acotados por
- ,
donde n es el número de variables y d el grado total máximo de los polinomios de entrada. Esto permite, en teoría, utilizar álgebra lineal sobre el espacio vectorial de los polinomios de grado acotado por este valor, para obtener un algoritmo de complejidad .
Por otro lado, hay ejemplos [ 2 ] donde la base de Gröbner contiene elementos de grado
- ,
y el límite superior de complejidad mencionado anteriormente es óptimo. Sin embargo, tales ejemplos son extremadamente raros.
Desde su descubrimiento, se han introducido muchas variantes del algoritmo de Buchberger para mejorar su eficiencia. Los algoritmos F4 y F5 de Faugère son actualmente los más eficientes para calcular bases de Gröbner y permiten calcular rutinariamente bases de Gröbner compuestas por varios cientos de polinomios, cada uno con varios cientos de términos y coeficientes de varios cientos de dígitos.
Implementaciones
Al menos una implementación del algoritmo de Buchberger ha sido demostrada como correcta dentro del asistente de pruebas Rocq (anteriormente llamado Coq). [ 3 ]
En la biblioteca SymPy para Python , el algoritmo de Buchberger (mejorado) se implementa como sympy.polys.polytools.groebner(). [ 4 ]
Véase también
- Algoritmo de completación de Knuth-Bendix
- Algoritmo de Quine-McCluskey : algoritmo análogo para el álgebra booleana.
Referencias
- ↑ Dubé, Thomas W. (1990). "La estructura de los ideales polinomiales y las bases de Gröbner". SIAM Journal on Computing . 19 (4): 750– 773. doi : 10.1137/0219053 .
- ↑ Mayr, Ernst W; Meyer, Albert R (1982). "La complejidad de los problemas de palabras para semigrupos conmutativos e ideales polinomiales" . Advances in Mathematics . 46 (3): 305– 329. doi : 10.1016/0001-8708(82)90048-2 . hdl : 1721.1/149010 .
- ↑ Théry, Laurent (2001). "Una implementación verificada por máquina del algoritmo de Buchberger". Journal of Automated Reasoning . 26 (2): 107– 137. doi : 10.1023/A:1026518331905 .
- ↑ "Referencia del módulo de manipulación de polinomios - Documentación de SymPy 1.14.0" . docs.sympy.org .
Lecturas adicionales
- Buchberger, B. (agosto de 1976). "Fundamentos teóricos para la reducción de polinomios a formas canónicas". Boletín ACM SIGSAM . 10 (3). ACM: 19– 29. doi : 10.1145/1088216.1088219 . MR 0463136. S2CID 15179417 .
- David Cox, John Little y Donald O'Shea (1997). Ideales, variedades y algoritmos: una introducción a la geometría algebraica computacional y al álgebra conmutativa , Springer. ISBN 0-387-94680-2.
- Vladimir P. Gerdt, Yuri A. Blinkov (1998). Bases involutivas de ideales polinomiales , Matemáticas y computadoras en simulación, 45:519 y ss.
Enlaces externos
- "Algoritmo de Buchberger" , Enciclopedia de Matemáticas , EMS Press, 2001 [1994]
- El algoritmo de Buchberger en Scholarpedia
- Weisstein, Eric W. "Algoritmo de Buchberger" . MundoMatemático .
- Álgebra computacional
- Sistemas de reescritura
- Geometría algebraica
- Álgebra conmutativa