En informática , el algoritmo de Knuth-Eve es un algoritmo para la evaluación de polinomios . Preprocesa los coeficientes del polinomio para reducir el número de multiplicaciones necesarias en tiempo de ejecución .
Las ideas empleadas en el algoritmo fueron propuestas originalmente por Donald Knuth en 1962. Su procedimiento aprovecha de manera oportunista la estructura del polinomio que se está evaluando. [ 1 ] En 1964, James Eve determinó para qué polinomios existe esta estructura y proporcionó un método sencillo de "preacondicionamiento" de polinomios (explicado más adelante) para dotarlos de dicha estructura. [ 2 ] [ nota 1 ]
Algoritmo
Preliminares
Consideremos un polinomio arbitrariode grado. Supongamos que. Definirtal que: sientonces es extrañoy sies incluso entonces. [ 2 ]
Salvo que se indique lo contrario, todas las variables de este artículo representan números reales o polinomios univariados con coeficientes reales. [ 1 ] [ 2 ] Todas las operaciones de este artículo se realizan sobre. [ 2 ]
Nuevamente, el objetivo es crear un algoritmo que devuelvadado cualquier. El algoritmo puede depender del polinomioen sí misma, ya que sus coeficientes se conocen de antemano. [ 1 ]
Descripción general
Idea clave
Usando la división larga de polinomios , podemos escribir
dóndees el divisor. Elegir un valor paracorrige ambos cocientesy los coeficientes en el restoyLa idea clave es elegir inteligentementede tal manera que, de modo que
[ 4 ] De esta manera, no se necesitan operaciones para calcular el polinomio restante, ya que es simplemente una constante. Aplicamos este procedimientorecursivamentea, expresando
Despuésllamadas recursivas, el cocientees un polinomio lineal o cuadrático . En este caso base, el polinomio se puede evaluar con (por ejemplo) el método de Horner . [ 1 ] [ 4 ] [ 5 ]
"Preacondicionamiento"
Para arbitrario, puede que no sea posible forzaren cada paso de la recursión. [ 1 ] Consideremos los polinomiosycon coeficientes tomados de los términos pares e impares derespectivamente, de modo que
Si cada raíz dees real, entonces es posible escribiren el formato dado anteriormente. Cadaes una raíz diferente de, contando las raíces múltiples como distintas. [ 4 ] Además, si al menosraíces desi se encuentran en la mitad del plano complejo , entonces cada raíz dees real. [ 2 ]
En última instancia, puede ser necesario "preacondicionar".al cambiarlo , al configurarlopara algunos— para dotarlo de la estructura de que la mayoría de sus raíces se encuentran en una mitad del plano complejo. En tiempo de ejecución, este cambio debe "deshacerse" estableciendo primero. [ 2 ]
Paso de preprocesamiento
El siguiente algoritmo se ejecuta una vez para un polinomio dado.. [ 1 ] [ 4 ] En este punto, los valores deesose evaluarán en función de que no se conocen. [ 1 ]
- Dejarser las raíces complejas deordenados en orden descendente por parte real
- Elige cualquiera
- Colocar
- Dejarysean los polinomios tales que
- Dejarser las raíces deTodas sus raíces serán reales.
- Inicializar
- Para:
- Dividirporpara obtener cocientey el resto. El resto será un polinomio constante, es decir, un número.
- Colocar
- Salida: Los valores derivados,, y; así como el polinomio del caso base
Mejor elección de t
Mientras que cualquierpuede funcionar, es posible eliminar una adición durante la evaluación sitambién se elige de tal manera que dos raíces deson simétricas respecto al origen. En ese caso,se puede elegir de tal manera que el polinomio desplazado tenga un factor de, entoncesSiempre es posible encontrar tal cosa.. [ 2 ]
Un posible algoritmo para elegires:
- Si:
- Si:
- Demás:
- Demás:
Paso de evaluación
El siguiente algoritmo evalúaen algún punto, ahora conocido. [ 1 ] [ 2 ] [ 4 ] [ 5 ]
- Colocar
- DejarCalcula esto una sola vez para que pueda reutilizarse.
- Calcularutilizando el método de Horner
- Para:
- Dejar
- Producción:
Arrogantese elige de forma óptima,. Por lo tanto, la iteración final del bucle puede ejecutarse en su lugar.
ahorrar una adición. [ 2 ]
Análisis
En total, evaluación utilizando el algoritmo de Knuth-Eve para un polinomio de gradorequiereadiciones ymultiplicaciones, suponiendose elige de forma óptima. [ 2 ]
No existe ningún algoritmo para evaluar un polinomio dado de gradopuede utilizar menos deadiciones o menos demultiplicaciones durante la evaluación. Este resultado supone que solo se permiten sumas y multiplicaciones durante el preprocesamiento y la evaluación. [ 6 ]
El algoritmo de Knuth-Eve no está bien condicionado . [ 7 ]
Notas a pie de página
Referencias
- 1 2 3 4 5 6 7 8 Knuth, Donald (diciembre de 1962). "Evaluación de polinomios por computadora" . Communications of the ACM . 5 (12): 595– 599. doi : 10.1145/355580.369074 . Recuperado el 25 de julio de 2025 .
- 1 2 3 4 5 6 7 8 9 10 Eve, James (diciembre de 1964). "La evaluación de polinomios" . Numerische Mathematik . 6 (1): 17– 21. doi : 10.1007/BF01386049 . Recuperado el 25 de julio de 2025 .
- ↑ "James Eve (Universidad de Newcastle)" . Serie DO del autor . Biblioteca digital de ACM. doi : 10.1145/contrib-81100250587/abs (inactivo el 31 de julio de 2025) . Recuperado el 30 de julio de 2025 .
{{cite web}}: CS1 maint: DOI inactivo desde julio de 2025 ( enlace ) - 1 2 3 4 5 Overill, Richard (12 de junio de 1997). "Evaluación paralela de datos de polinomios univariados mediante el algoritmo de Knuth-Eve" . Computación paralela . 23 (13): 2115–2127 . doi : 10.1016/S0167-8191(97)00096-3 . Recuperado el 25 de julio de 2025 .
- 1 2 Muller, Jean-Michel (17 de noviembre de 2016). Funciones elementales: algoritmos e implementación . Boston, MA: Birkhäuser Boston. págs. 82–84 . doi : 10.1007/978-1-4899-7983-4_5 . ISBN 978-1-4899-7983-4Consultado el 25 de julio de 2025 .
- ↑ Erickson, Jeff (10 de marzo de 2003). "Evaluación de polinomios" (PDF) . CS 497: Modelos concretos de computación . Universidad de Illinois Urbana-Champaign . Consultado el 25 de julio de 2025 .
- ↑ Mesztenyi, Charles (enero de 1967). "Evaluación estable de polinomios" . Journal of Research of the National Bureau of Standards, Section B. 71B ( 1): 11– 17. doi : 10.6028/jres.071B.003 . Consultado el 25 de julio de 2025 .
- Algoritmos
- Polinomios
- Algoritmos y estructuras de datos