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:
Combined by exponentiation by squaring, this allows parallelizing the computation. A similar idea[2] enables to involve fast matrix multiplication algorithms to evaluate a polynomial in a series of points.
Evaluation with preprocessing
Arbitrary polynomials can be evaluated with fewer operations than Horner's rule requires if we first "preprocess" the coefficients .
An example was first given by Motzkin[3] who noted that
can be written as
where the values are computed in advance, based on . Motzkin's method uses just 3 multiplications compared to Horner's 4.
The values for each can be easily computed by expanding and equating the coefficients:
Example
To compute the Taylor expansion, we can upscale by a factor 24, apply the above steps, and scale back down. That gives us the three multiplication computation
Improving over the equivalent Horner form (that is ) by 1 multiplication.
Some general methods include the Knuth–Eve algorithm and the Rabin–Winograd algorithm. [4]
Multipoint evaluation
Evaluation of a degree-n polynomial at multiple points can be done with multiplications by using Horner's method times. Using the above preprocessing approach, this can be reduced by a factor of two; that is, to multiplications.
However, it is possible to do better and reduce the time requirement to just .[5] The idea is to define two polynomials that are zero in respectively the first and second half of the points: and . We then compute and using the Polynomial remainder theorem, which can be done in time using a fast Fourier transform. This means and by construction, where and are polynomials of degree at most . Because of how and were defined, we have
Thus to compute on all of the , it suffices to compute the smaller polynomials and on each half of the points. This gives us a divide-and-conquer algorithm with , which implies by the master theorem.
In the case where the points in which we wish to evaluate the polynomials have some structure, simpler methods exist. For example, Knuth[6] section 4.6.4 gives a method for tabulating polynomial values of the type
Dynamic evaluation
In the case where are not known in advance, Kedlaya and Umans[7] gave a data structure for evaluating polynomials over a finite field of size in time por 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