Articulo de referencia

Evaluación polinómica

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 ...

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 polinomioPAG(incógnita1,incógnita2)=2incógnita1incógnita2+incógnita13+4{\displaystyle P(x_{1},x_{2})=2x_{1}x_{2}+x_{1}^{3}+4}enincógnita1=2,incógnita2=3{\displaystyle x_{1}=2,x_{2}=3}consiste en computaciónPAG(2,3)=223+23+4=24.{\displaystyle P(2,3)=2\cdot 2\cdot 3+2^{3}+4=24.}Véase también Anillo de polinomios §  Evaluación de polinomios

Para evaluar el polinomio univariadoanorteincógnitanorte+anorte1incógnitanorte1++a0,{\displaystyle a_{n}x^{n}+a_{n-1}x^{n-1}+\cdots +a_{0},}El método más ingenuo sería utilizarnorte{\displaystyle n}multiplicaciones para calcularanorteincógnitanorte{\displaystyle a_{n}x^{n}}, usarnorte1{\displaystyle n-1}multiplicaciones para calcularanorte1incógnitanorte1{\displaystyle a_{n-1}x^{n-1}}y así sucesivamente para un total denorte(norte+1)2{\displaystyle {\tfrac {n(n+1)}{2}}}multiplicaciones ynorte{\displaystyle n}adiciones. Utilizando mejores métodos, como la regla de Horner , esto se puede reducir anorte{\displaystyle n}multiplicaciones ynorte{\displaystyle n}adiciones. 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: a0+a1incógnita+a2incógnita2+a3incógnita3++anorteincógnitanorte=a0+incógnita(a1+incógnita(a2+incógnita(a3++incógnita(anorte1+incógnitaanorte)))).{\displaystyle {\begin{aligned}a_{0}+&a_{1}x+a_{2}x^{2}+a_{3}x^{3}+\cdots +a_{n}x^{n}\\&=a_{0}+x{\bigg (}a_{1}+x{\Big (}a_{2}+x{\big (}a_{3}+\cdots +x(a_{n-1}+x\,a_{n})\cdots {\big )}{\Big )}{\bigg )}.\end{aligned}}} Este método reduce el número de multiplicaciones y sumas a solonorte{\displaystyle n}

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:

PAG(incógnita,y)=4+incógnita+2incógnitay+2incógnita2y+incógnita2y2{\displaystyle P(x,y)=4+x+2xy+2x^{2}y+x^{2}y^{2}}

se puede escribir como

PAG(incógnita,y)=4+incógnita(1+y(2)+incógnita(y(2+y)))oPAG(incógnita,y)=4+incógnita+y(incógnita(2+incógnita(2))+y(incógnita2)).{\displaystyle {\begin{aligned}P(x,y)&=4+x(1+y(2)+x(y(2+y)))\quad {\text{o}}\\P(x,y)&=4+x+y(x(2+x(2))+y(x^{2})).\end{aligned}}}

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:

PAG(incógnita)=(a0+a1incógnita)+(a2+a3incógnita)incógnita2+((a4+a5incógnita)+(a6+a7incógnita)incógnita2)incógnita4.{\displaystyle {\begin{aligned}P(x)=(a_{0}+a_{1}x)+(a_{2}+a_{3}x)x^{2}+((a_{4}+a_{5}x)+(a_{6}+a_{7}x)x^{2})x^{4}.\end{aligned}}}

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.anorte,,a0{\displaystyle a_{n},\dots ,a_{0}}.

Un ejemplo fue dado por primera vez por Motzkin [ 3 ] quien señaló que

PAG(incógnita)=incógnita4+a3incógnita3+a2incógnita2+a1incógnita+a0{\displaystyle P(x)=x^{4}+a_{3}x^{3}+a_{2}x^{2}+a_{1}x+a_{0}}

se puede escribir como

y=(incógnita+β0)incógnita+β1,PAG(incógnita)=(y+incógnita+β2)y+β3,{\displaystyle y=(x+\beta _{0})x+\beta _{1},\quad P(x)=(y+x+\beta _{2})y+\beta _{3},}

donde los valoresβ0,,β3{\displaystyle \beta _{0},\dots ,\beta _{3}}se calculan por adelantado, en función dea0,,a3{\displaystyle a_{0},\dots ,a_{3}}El método de Motzkin utiliza solo 3 multiplicaciones en comparación con las 4 de Horner.

Los valores para cadaβi{\displaystyle \beta _{i}}se puede calcular fácilmente expandiendoPAG(incógnita){\displaystyle P(x)}y igualando los coeficientes:

β0=12(a31),z=a2β0(β0+1),β1=a1β0z,β2=z2β1,β3=a0β1(β1+β2).{\displaystyle {\begin{aligned}\beta _{0}&={\tfrac {1}{2}}(a_{3}-1),\quad &z&=a_{2}-\beta _{0}(\beta _{0}+1),\quad &\beta _{1}&=a_{1}-\beta _{0}z,\\\beta _{2}&=z-2\beta _{1},\quad &\beta _{3}&=a_{0}-\beta _{1}(\beta _{1}+\beta _{2}).\end{aligned}}}

Ejemplo

Para calcular la expansión de Taylorexp(incógnita)1+incógnita+incógnita2/2+incógnita3/6+incógnita4/24{\displaystyle \exp(x)\approx 1+x+x^{2}/2+x^{3}/6+x^{4}/24}, 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.

y=(incógnita+1.5)incógnita+11.625,PAG(incógnita)=(y+incógnita15)y/24+2.63477.{\displaystyle y=(x+1.5)x+11.625,\quad P(x)=(y+x-15)y/24+2.63477.}

Mejorando la forma equivalente de Horner (es decir,PAG(incógnita)=1+incógnita(1+incógnita(1/2+incógnita(1/6+incógnita/24))){\displaystyle P(x)=1+x(1+x(1/2+x(1/6+x/24)))}) 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 nPAG(incógnita){\displaystyle P(x)}en múltiples puntosincógnita1,,incógnitametro{\displaystyle x_{1},\dots ,x_{m}}se puede hacer conmetronorte{\displaystyle mn}multiplicaciones utilizando el método de Hornermetro{\displaystyle m}veces. Utilizando el enfoque de preprocesamiento anterior, esto se puede reducir a la mitad; es decir, ametronorte/2{\displaystyle mn/2}multiplicaciones.

Sin embargo, es posible hacerlo mejor y reducir el tiempo requerido a soloO((norte+metro)registro2(norte+metro)){\displaystyle O{\big (}(n+m)\log ^{2}(n+m){\big )}}. [ 5 ] La idea es definir dos polinomios que sean cero en la primera y segunda mitad de los puntos respectivamente:metro0(incógnita)=(incógnitaincógnita1)(incógnitaincógnitanorte/2){\displaystyle m_{0}(x)=(x-x_{1})\cdots (x-x_{n/2})}ymetro1(incógnita)=(incógnitaincógnitanorte/2+1)(incógnitaincógnitanorte){\displaystyle m_{1}(x)=(x-x_{n/2+1})\cdots (x-x_{n})}Luego calculamosR0=PAGmodmetro0{\displaystyle R_{0}=P{\bmod {m}}_{0}}yR1=PAGmodmetro1{\displaystyle R_{1}=P{\bmod {m}}_{1}}utilizando el teorema del resto de polinomios , que se puede realizar enO(norteregistronorte){\displaystyle O(n\log n)}tiempo usando una transformada rápida de Fourier . Esto significaPAG(incógnita)=Q0(incógnita)metro0(incógnita)+R0(incógnita){\displaystyle P(x)=Q_{0}(x)m_{0}(x)+R_{0}(x)}yPAG(incógnita)=Q1(incógnita)metro1(incógnita)+R1(incógnita){\displaystyle P(x)=Q_{1}(x)m_{1}(x)+R_{1}(x)}por construcción, dondeR0{\displaystyle R_{0}}yR1{\displaystyle R_{1}}son polinomios de grado como máximonorte/2{\displaystyle n/2}. Debido a cómometro0{\displaystyle m_{0}}ymetro1{\displaystyle m_{1}}fueron definidos, tenemos

R0(incógnitai)=PAG(incógnitai)para inorte/2yR1(incógnitai)=PAG(incógnitai)para i>norte/2.{\displaystyle {\begin{aligned}R_{0}(x_{i})&=P(x_{i})\quad {\text{for }}i\leq n/2\quad {\text{and}}\\R_{1}(x_{i})&=P(x_{i})\quad {\text{for }}i>n/2.\end{aligned}}}

Por lo tanto, para calcularPAG{\displaystyle P}en todosnorte{\displaystyle n}delincógnitai{\displaystyle x_{i}}, basta con calcular los polinomios más pequeñosR0{\displaystyle R_{0}}yR1{\displaystyle R_{1}}en cada mitad de los puntos. Esto nos da un algoritmo de divide y vencerás conT(norte)=2T(norte/2)+norteregistronorte{\displaystyle T(n)=2T(n/2)+n\log n}, lo cual implicaT(norte)=O(norte(registronorte)2){\displaystyle T(n)=O(n(\log n)^{2})}por 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

PAG(incógnita0+h),PAG(incógnita0+2h),.{\displaystyle P(x_{0}+h),P(x_{0}+2h),\dots .}

Evaluación dinámica

En el caso dondeincógnita1,,incógnitametro{\displaystyle x_{1},\dots ,x_{m}}no se conocen de antemano, Kedlaya y Umans [ 7 ] dieron una estructura de datos para evaluar polinomios sobre un campo finito de tamañoFq{\displaystyle F_{q}}a tiempo(registronorte)O(1)(registro2q)1+o(1){\displaystyle (\log n)^{O(1)}(\log _{2}q)^{1+o(1)}}por evaluación después de un preprocesamiento inicial. Larsen [ 8 ] demostró que esto era esencialmente óptimo.

La idea es transformarPAG(incógnita){\displaystyle P(x)}de gradonorte{\displaystyle n}en un polinomio multivariadoF(incógnita1,incógnita2,,incógnitametro){\displaystyle f(x_{1},x_{2},\dots ,x_{m})}, de tal manera quePAG(incógnita)=F(incógnita,incógnitad,incógnitad2,,incógnitadmetro){\displaystyle P(x)=f(x,x^{d},x^{d^{2}},\dots ,x^{d^{m}})}y los grados individuales deF{\displaystyle f}es como máximod{\displaystyle d}. Dado que esto ha terminadomodq{\displaystyle {\bmod {q}}}, el mayor valorF{\displaystyle f}puede tomar (más deZ{\displaystyle \mathbb {Z} }) esMETRO=dmetro(q1)dmetro{\displaystyle M=d^{m}(q-1)^{dm}}. Utilizando el teorema chino del resto , basta con evaluarF{\displaystyle f}módulo diferentes primospag1,,pag{\displaystyle p_{1},\dots ,p_{\ell }}con un producto al menosMETRO{\displaystyle M}Cada número primo puede considerarse aproximadamente igual a...registroMETRO=O(dmetroregistroq){\displaystyle \log M=O(dm\log q)}y el número de primos necesarios,{\displaystyle \ell }es aproximadamente lo mismo. Al realizar este proceso recursivamente, podemos obtener primos tan pequeños comoregistroregistroq{\displaystyle \log \log q}Eso significa que podemos calcular y almacenarF{\displaystyle f}en todos los valores posibles enT=(registroregistroq)metro{\displaystyle T=(\log \log q)^{m}}tiempo y espacio. Si tomamosd=registroq{\displaystyle d=\log q}, obtenemosmetro=registronorteregistroregistroq{\displaystyle m={\tfrac {\log n}{\log \log q}}}, por lo que el requisito de tiempo/espacio esnorteregistroregistroqregistroregistroregistroq.{\displaystyle n^{\frac {\log \log q}{\log \log \log q}}.}

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 requierenΩ(norte){\displaystyle \Omega (n)}operaciones para evaluar, algunos polinomios se pueden calcular mucho más rápido. Por ejemplo, el polinomioPAG(incógnita)=incógnita2+2incógnita+1{\displaystyle P(x)=x^{2}+2x+1}se puede calcular usando solo una multiplicación y una suma ya quePAG(incógnita)=(incógnita+1)2{\displaystyle P(x)=(x+1)^{2}}.

Evaluación de poderes

Un tipo de polinomio particularmente interesante son las potencias comoincógnitanorte{\displaystyle x^{n}}. Dichos polinomios siempre se pueden calcular enO(registronorte){\displaystyle O(\log n)}operaciones. Supongamos, por ejemplo, que necesitamos calcularincógnita16{\displaystyle x^{16}}; podríamos simplemente comenzar conincógnita{\displaystyle x}y multiplicar porincógnita{\displaystyle x}Llegarincógnita2{\displaystyle x^{2}}. Luego podemos multiplicarlo por sí mismo para obtenerincógnita4{\displaystyle x^{4}}y así sucesivamente para obtenerincógnita8{\displaystyle x^{8}}yincógnita16{\displaystyle x^{16}}en tan solo cuatro multiplicaciones. Otras potencias comoincógnita5{\displaystyle x^{5}}De manera similar, se puede calcular de manera eficiente calculando primeroincógnita4{\displaystyle x^{4}}por 2 multiplicaciones y luego multiplicando porincógnita{\displaystyle x}.

La forma más eficiente de calcular una potencia determinadaincógnitanorte{\displaystyle x^{n}}se 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.anorteincógnitanorte++a1incógnita+a0{\displaystyle a_{n}x^{n}+\dots +a_{1}x+a_{0}}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

PAG(incógnita)=k=0norte22knorte3incógnitak{\displaystyle P(x)=\sum _{k=0}^{n}2^{2^{kn^{3}}}x^{k}}

no se puede evaluar con menos de12norte2{\displaystyle {\tfrac {1}{2}}n-2}multiplicaciones ynorte4{\displaystyle n-4}adiciones. 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<norte2/registronorte{\displaystyle <n^{2}/\log n}".

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 menosΩ(norte/registronorte){\displaystyle \Omega (n/\log n)}multiplicaciones. [ 11 ]

Para otros polinomios simples, la complejidad es desconocida. El polinomio(incógnita+1)(incógnita+2)(incógnita+norte){\displaystyle (x+1)(x+2)\cdots (x+n)}Se conjetura que no es computable en el tiempo(registronorte)do{\displaystyle (\log n)^{c}}para cualquierdo{\displaystyle c}Esto 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 (comoaincógnita{\displaystyle ax}) es menor que el costo computacional de las multiplicaciones "no escalares" (comoincógnita2{\displaystyle x^{2}}). El ejemplo típico de esto son las matrices. SiMETRO{\displaystyle M}es unmetro×metro{\displaystyle m\times m}matriz, una multiplicación escalaraMETRO{\displaystyle aM}toma aproximadamentemetro2{\displaystyle m^{2}}operaciones aritméticas, mientras se realizan cálculosMETRO2{\displaystyle M^{2}}toma aproximadamentemetro3{\displaystyle m^{3}}(ometro2.3{\displaystyle m^{2.3}}utilizando 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 gradonorte{\displaystyle n}polinomio usando soloO(norte){\displaystyle O({\sqrt {n}})}multiplicaciones no escalares yO(norte){\displaystyle O(n)}multiplicaciones escalares. Por lo tanto, un polinomio matricial de grado n puede evaluarse enO(metroαnorte+metro2norte){\displaystyle O(m^{\alpha }{\sqrt {n}}+m^{2}n)}tiempo, dondemetroα{\displaystyle m^{\alpha }} es el tiempo necesario para multiplicar dosmetro×metro{\displaystyle m\times m} matices. Simetro=norte{\displaystyle m=n}esto esO(norteβ),{\displaystyle O(n^{\beta }),}dondeβ=3.5{\displaystyle \beta =3.5}oβ=3{\displaystyle \beta =3}Dependiendo de si se utiliza la multiplicación de matrices usual o rápida. Esto debe compararse con el método de Horner usual , que daβ=4{\displaystyle \beta =4}oβ=3.3{\displaystyle \beta =3.3}respectivamente .

Este método funciona de la siguiente manera: Para un polinomio

PAG(METRO)=anorte1METROnorte1++a1METRO+a0I,{\displaystyle P(M)=a_{n-1}M^{n-1}+\dots +a_{1}M+a_{0}I,}

Sea k el menor entero no menor quenorte.{\displaystyle {\sqrt {n}}.} Los poderesMETRO,METRO2,,METROk{\displaystyle M,M^{2},\dots ,M^{k}}se calculan conk{\displaystyle k}multiplicaciones de matrices yMETRO2k,METRO3k,,METROk2k{\displaystyle M^{2k},M^{3k},\dots ,M^{k^{2}-k}}luego se calculan mediante multiplicación repetida porMETROk.{\displaystyle M^{k}.} Ahora,

PAG(METRO)=(a0I+a1METRO++ak1METROk1)+(akI+ak+1METRO++a2k1METROk1)METROk++(anortekI+anortek+1METRO++anorte1METROk1)METROk2k,{\displaystyle {\begin{aligned}P(M)=&\,(a_{0}I+a_{1}M+\dots +a_{k-1}M^{k-1})\\+&\,(a_{k}I+a_{k+1}M+\dots +a_{2k-1}M^{k-1})M^{k}\\+&\,\dots \\+&\,(a_{n-k}I+a_{n-k+1}M+\dots +a_{n-1}M^{k-1})M^{k^{2}-k},\end{aligned}}},

dóndeai=0{\displaystyle a_{i}=0}para in . Esto requiere simplementek{\displaystyle k}más multiplicaciones no escalares.

La aplicación directa de este método utiliza2norte{\displaystyle 2{\sqrt {n}}}multiplicaciones no escalares, pero combinándolo con Evaluación con preprocesamiento , Paterson y Stockmeyer muestran que se puede reducir a2norte{\displaystyle {\sqrt {2n}}}.

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

Referencias

  1. 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 . 
  2. 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 .
  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.
  4. 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 .
  5. Von Zur Gathen, Joaquín ; Jürgen, Gerhard (2013). Álgebra informática moderna . Prensa de la Universidad de Cambridge . Capítulo 10. ISBN 9781139856065.
  6. Knuth, Donald (2005). El arte de la programación informática . Vol. 2: Algoritmos seminuméricos. Addison-Wesley . ISBN  9780201853926.
  7. 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 . 
  8. 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 . 
  9. 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 .
  10. Strassen, Volker (1974). "Polinomios con coeficientes racionales difíciles de calcular". SIAM Journal on Computing . 3 (2): 128– 149. doi : 10.1137/0203010 .
  11. 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 )
  12. Chen, Xi, Neeraj Kayal y Avi Wigderson. Derivadas parciales en complejidad aritmética y más allá. Now Publishers Inc, 2011.
  13. 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 .
  14. 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 .