En matemáticas e informática , la evaluación de polinomios se refiere al cálculo del valor de un polinomio cuando sus indeterminadas se sustituyen por algunos valores. En otras palabras, evaluar el polinomioenconsiste en computaciónVéase también Anillo de polinomios § Evaluación de polinomios
Para evaluar el polinomio univariadoEl método más ingenuo sería utilizarmultiplicaciones para calcular, usarmultiplicaciones para calculary así sucesivamente para un total demultiplicaciones yadiciones. Utilizando mejores métodos, como la regla de Horner , esto se puede reducir amultiplicaciones yadiciones. Si se permite algún preprocesamiento, es posible obtener aún más ahorros.
Fondo
Este problema surge con frecuencia en la práctica. En geometría computacional , los polinomios se utilizan para calcular aproximaciones de funciones mediante polinomios de Taylor . En criptografía y tablas hash , los polinomios se utilizan para calcular funciones hash k -independientes .
En el primer caso, los polinomios se evalúan mediante aritmética de punto flotante , que no es exacta . Por lo tanto, diferentes métodos de evaluación generalmente darán resultados ligeramente distintos. En el segundo caso, los polinomios se evalúan habitualmente en un cuerpo finito , en cuyo caso los resultados son siempre exactos.
Métodos generales
La regla de Horner
El método de Horner evalúa un polinomio utilizando corchetes repetidos: Este método reduce el número de multiplicaciones y sumas a solo
El método de Horner es tan común que la " operación de multiplicación y acumulación " está incluida en el conjunto de instrucciones de muchos procesadores informáticos, lo que permite realizar las operaciones de suma y multiplicación en un solo paso combinado.
Multivariado
Si el polinomio es multivariable, la regla de Horner se puede aplicar recursivamente sobre algún ordenamiento de las variables. Por ejemplo:
se puede escribir como
Carnicer y Gasca describieron una versión eficiente de este enfoque. [ 1 ]
El plan de Estrin
Si bien no es posible realizar menos cálculos que con la regla de Horner (sin preprocesamiento), en las computadoras modernas el orden de evaluación puede ser crucial para la eficiencia computacional. Un método conocido como el esquema de Estrin calcula un polinomio (de una sola variable) siguiendo un patrón de árbol:
Combinado con la exponenciación por elevación al cuadrado , esto permite paralelizar el cálculo. Una idea similar [ 2 ] permite utilizar algoritmos rápidos de multiplicación de matrices para evaluar un polinomio en una serie de puntos.
Evaluación con preprocesamiento
Los polinomios arbitrarios pueden evaluarse con menos operaciones de las que requiere la regla de Horner si primero "preprocesamos" los coeficientes..
Un ejemplo fue dado por primera vez por Motzkin [ 3 ] quien señaló que
se puede escribir como
donde los valoresse calculan por adelantado, en función deEl método de Motzkin utiliza solo 3 multiplicaciones en comparación con las 4 de Horner.
Los valores para cadase puede calcular fácilmente expandiendoy igualando los coeficientes:
Ejemplo
Para calcular la expansión de Taylor, podemos aumentar la escala por un factor de 24, aplicar los pasos anteriores y volver a reducirla. Eso nos da el cálculo de tres multiplicaciones.
Mejorando la forma equivalente de Horner (es decir,) por 1 multiplicación.
Algunos métodos generales incluyen el algoritmo de Knuth-Eve y el algoritmo de Rabin-Winograd . [ 4 ]
Evaluación multipunto
Evaluación de un polinomio de grado nen múltiples puntosse puede hacer conmultiplicaciones utilizando el método de Hornerveces. Utilizando el enfoque de preprocesamiento anterior, esto se puede reducir a la mitad; es decir, amultiplicaciones.
Sin embargo, es posible hacerlo mejor y reducir el tiempo requerido a solo. [ 5 ] La idea es definir dos polinomios que sean cero en la primera y segunda mitad de los puntos respectivamente:yLuego calculamosyutilizando el teorema del resto de polinomios , que se puede realizar entiempo usando una transformada rápida de Fourier . Esto significaypor construcción, dondeyson polinomios de grado como máximo. Debido a cómoyfueron definidos, tenemos
Por lo tanto, para calcularen todosdel, basta con calcular los polinomios más pequeñosyen cada mitad de los puntos. Esto nos da un algoritmo de divide y vencerás con, lo cual implicapor el teorema maestro .
En el caso de que los puntos en los que deseamos evaluar los polinomios tengan alguna estructura, existen métodos más sencillos. Por ejemplo, Knuth [ 6 ] sección 4.6.4 proporciona un método para tabular valores polinómicos del tipo
Evaluación dinámica
En el caso dondeno se conocen de antemano, Kedlaya y Umans [ 7 ] dieron una estructura de datos para evaluar polinomios sobre un campo finito de tamañoa tiempopor evaluación después de un preprocesamiento inicial. Larsen [ 8 ] demostró que esto era esencialmente óptimo.
La idea es transformarde gradoen un polinomio multivariado, de tal manera quey los grados individuales dees como máximo. Dado que esto ha terminado, el mayor valorpuede tomar (más de) es. Utilizando el teorema chino del resto , basta con evaluarmódulo diferentes primoscon un producto al menosCada número primo puede considerarse aproximadamente igual a...y el número de primos necesarios,es aproximadamente lo mismo. Al realizar este proceso recursivamente, podemos obtener primos tan pequeños comoEso significa que podemos calcular y almacenaren todos los valores posibles entiempo y espacio. Si tomamos, obtenemos, por lo que el requisito de tiempo/espacio es
Kedlaya y Umans muestran además cómo combinar este preprocesamiento con una evaluación multipunto rápida mediante la transformada rápida de Fourier. Esto permite obtener algoritmos óptimos para muchos problemas algebraicos importantes, como la composición modular polinomial .
Polinomios específicos
Si bien los polinomios generales requierenoperaciones para evaluar, algunos polinomios se pueden calcular mucho más rápido. Por ejemplo, el polinomiose puede calcular usando solo una multiplicación y una suma ya que.
Evaluación de poderes
Un tipo de polinomio particularmente interesante son las potencias como. Dichos polinomios siempre se pueden calcular enoperaciones. Supongamos, por ejemplo, que necesitamos calcular; podríamos simplemente comenzar cony multiplicar porLlegar. Luego podemos multiplicarlo por sí mismo para obtenery así sucesivamente para obteneryen tan solo cuatro multiplicaciones. Otras potencias comoDe manera similar, se puede calcular de manera eficiente calculando primeropor 2 multiplicaciones y luego multiplicando por.
La forma más eficiente de calcular una potencia determinadase proporciona mediante la exponenciación en cadena de adición . Sin embargo, esto requiere diseñar un algoritmo específico para cada exponente, y el cálculo necesario para diseñar estos algoritmos es difícil ( NP-completo [ 9 ] ), por lo que la exponenciación por cuadrado se prefiere generalmente para cálculos efectivos.
Familias de polinomios
A menudo, los polinomios aparecen en una forma diferente a la bien conocida.Para polinomios en forma de Chebyshev podemos usar el algoritmo de Clenshaw . Para polinomios en forma de Bézier podemos usar el algoritmo de De Casteljau , y para B-splines existe el algoritmo de De Boor .
Polinomios difíciles
El hecho de que algunos polinomios se puedan calcular significativamente más rápido que los "polinomios generales" plantea la pregunta: ¿Podemos dar un ejemplo de un polinomio simple que no se pueda calcular en un tiempo mucho menor que su grado? Volker Strassen ha demostrado [ 10 ] que el polinomio
no se puede evaluar con menos demultiplicaciones yadiciones. Al menos este límite se cumple si solo se permiten operaciones de esos tipos, dando lugar a una llamada "cadena polinómica de longitud".
El polinomio dado por Strassen tiene coeficientes muy grandes, pero mediante métodos probabilísticos se puede demostrar que deben existir incluso polinomios con coeficientes solo 0 y 1 tales que la evaluación requiere al menosmultiplicaciones. [ 11 ]
Para otros polinomios simples, la complejidad es desconocida. El polinomioSe conjetura que no es computable en el tiempopara cualquierEsto se ve respaldado por el hecho de que, si se puede calcular rápidamente, la factorización de enteros se puede calcular en tiempo polinomial, rompiendo el criptosistema RSA . [ 12 ]
Polinomios matriciales
A veces el costo computacional de las multiplicaciones escalares (como) es menor que el costo computacional de las multiplicaciones "no escalares" (como). El ejemplo típico de esto son las matrices. Sies unmatriz, una multiplicación escalartoma aproximadamenteoperaciones aritméticas, mientras se realizan cálculostoma aproximadamente(outilizando la multiplicación rápida de matrices ).
Los polinomios matriciales se utilizan, por ejemplo, para calcular exponenciales matriciales .
Paterson y Stockmeyer [ 13 ] mostraron cómo calcular un gradopolinomio usando solomultiplicaciones no escalares ymultiplicaciones escalares. Por lo tanto, un polinomio matricial de grado n puede evaluarse entiempo, donde es el tiempo necesario para multiplicar dos matices. Siesto esdondeoDependiendo de si se utiliza la multiplicación de matrices usual o rápida. Esto debe compararse con el método de Horner usual , que daorespectivamente .
Este método funciona de la siguiente manera: Para un polinomio
Sea k el menor entero no menor que Los poderesse calculan conmultiplicaciones de matrices yluego se calculan mediante multiplicación repetida por Ahora,
- ,
dóndepara i ≥ n . Esto requiere simplementemás multiplicaciones no escalares.
La aplicación directa de este método utilizamultiplicaciones no escalares, pero combinándolo con Evaluación con preprocesamiento , Paterson y Stockmeyer muestran que se puede reducir a.
Se han propuesto métodos basados en multiplicaciones y sumas de polinomios matriciales que permiten ahorrar multiplicaciones de matrices no escalares con respecto al método de Paterson-Stockmeyer. [ 14 ]
Véase también
- El plan de Estrin para facilitar la paralelización en arquitecturas informáticas modernas.
- La teoría de la complejidad de los circuitos aritméticos estudia la complejidad computacional de evaluar diferentes polinomios.
Referencias
- ↑ Carnicer, J.; Gasca, M. (1990). "Evaluación de polinomios multivariados y sus derivadas" . Matemáticas de la computación . 54 (189): 231– 243. doi : 10.2307/2008692 . JSTOR 2008692 .
- ↑ Borodin, A.; Munro, I (1971). "Evaluación de polinomios en muchos puntos". Information Processing Letters . 1 (2): 66– 68. doi : 10.1016/0020-0190(71)90009-3 .
- ↑ Motzkin, TS (1955). "Evaluación de polinomios y evaluación de funciones racionales". Boletín de la Sociedad Matemática Americana . 61 (163): 10.
- ↑ Rabin, Michael O.; Winograd, Shmuel (julio de 1972). "Evaluación rápida de polinomios mediante preparación racional". Communications on Pure and Applied Mathematics . 25 (4): 433– 458. doi : 10.1002/cpa.3160250405 .
- ↑ Von Zur Gathen, Joaquín ; Jürgen, Gerhard (2013). Álgebra informática moderna . Prensa de la Universidad de Cambridge . Capítulo 10. ISBN 9781139856065.
- ↑ Knuth, Donald (2005). El arte de la programación informática . Vol. 2: Algoritmos seminuméricos. Addison-Wesley . ISBN 9780201853926.
- ↑ Kedlaya, Kiran S. ; Umans, Christopher (2011). "Fast Polynomial Factorization and Modular Composition" . SIAM Journal on Computing . 40 (6): 1767– 1802. doi : 10.1137/08073408x . hdl : 1721.1/71792 . S2CID 412751 .
- ↑ Larsen, KG (2012). "Higher Cell Probe Lower Bounds for Evaluating Polynomials". 2012 IEEE 53rd Annual Symposium on Foundations of Computer Science . Vol. 53. IEEE . pp. 293–301 . doi : 10.1109/FOCS.2012.21 . ISBN 978-0-7695-4874-6. S2CID 7906483 .
- ↑ Downey, Peter; Leong, Benton; Sethi, Ravi (1981). "Cálculo de secuencias con cadenas de adición" . SIAM Journal on Computing . 10 (3): 638– 646. doi : 10.1137/0210047 . Consultado el 27 de enero de 2024 .
- ↑ Strassen, Volker (1974). "Polinomios con coeficientes racionales difíciles de calcular". SIAM Journal on Computing . 3 (2): 128– 149. doi : 10.1137/0203010 .
- ↑ Schnorr, CP (1979), "Sobre la complejidad aditiva de los polinomios y algunas nuevas cotas inferiores", Theoretical Computer Science , Lecture Notes in Computer Science, vol. 67, Springer , pp. 286–297 , doi : 10.1007/3-540-09118-1_30 , ISBN 978-3-540-09118-9
{{citation}}: CS1 mantenimiento: parámetro de trabajo con ISBN ( enlace ) - ↑ Chen, Xi, Neeraj Kayal y Avi Wigderson. Derivadas parciales en complejidad aritmética y más allá. Now Publishers Inc, 2011.
- ↑ Paterson, Michael S. ; Stockmeyer, Larry J. (1973). "Sobre el número de multiplicaciones no escalares necesarias para evaluar polinomios". SIAM Journal on Computing . 2 (1): 60– 66. doi : 10.1137/0202007 .
- ↑ Fasi, Massimiliano (1 de agosto de 2019). "Optimalidad del método de Paterson-Stockmeyer para evaluar polinomios matriciales y funciones matriciales racionales" (PDF) . Álgebra lineal y sus aplicaciones . 574 : 185. doi : 10.1016/j.laa.2019.04.001 . ISSN 0024-3795 .
- Polinomios