Vous êtes sur la page 1sur 11

Complejidad Computacional

Anlisis Comparativo de la Evaluacin de Polinomios empleando el Mtodo de Horner vs. el Tradicional Mtodo de Potenciacin
Lic. Adriana Labra Barrios. M. en C. Eduardo Ren Rodrguez vila. Seccin de Estudios de Posgrado e Investigacin UPIICSA

Abstracto.
Este artculo presenta un anlisis comparativo entre dos mtodos de evaluacin de expresiones polinmicas. El primero corresponde a la forma tradicional (o directa) de evaluacin y que implica el clculo de las respectivas potencias de los trminos de la expresin. El segundo mtodo considerado es conocido como el Mtodo de Horner, en el que se reorganiza el polinomio a manera de una serie de multiplicaciones anidadas de forma que no puedan evaluarse potencias mayores a una. El objetivo del anlisis es presentar el costo computacional asociado a ambos mtodos para as determinar cul es ms eficiente bajo un criterio completamente cuantitativo. Una introduccin al tema de la complejidad computacional es presentado y conclusiones con respecto al uso de recursos de cmputo son incluidas.

Polinomios.
Un polinomio es una expresin formada por la suma de mltiplos de potencias de una variable independiente. Por ejemplo:

3x4+5x3+7x2-2x+5.

(1)

Cada una de los elementos unidos por operaciones de suma o resta son llamados trminos y el factor multiplicativo en cada trmino denominado coeficiente. El ltimo elemento del polinomio, que no incluye a una variable, recibe el nombre de trmino constante debido a que implica la multiplicacin de la variable independiente elevada a la potencia de cero. El grado del polinomio queda determinado por el trmino de potencia mayor. El nombre del polinomio queda determinado por la cantidad de trminos que lo forman. Un polinomio con un slo trmino se llama monomio, contando con dos trminos es un binomio, si cuenta con tres es un trinomio y as sucesivamente, aunque en la prctica se suele denominar polinomio a toda expresin de tres o ms trminos. De forma general, un polinomio P de grado n es expresado:
1

Pn(x)=anxn+an-1xn-1+an-2xn-2+...+a2x2+a1x+a0
y cuya evaluacin puede ser considerada como:
n

(2)

Pn ( x ) = ai x i
i= 0

(3)

Mtodo de evaluacin directa o tradicional.

La forma de evaluacin con la que seguramente estaremos ms familiarizados consiste en efectuar el clculo correspondiente a cada trmino y sumando resultados parciales, reproduciendo lo representado por la ecuacin 3. Si hemos de hablar del clculo de este tipo de expresiones empleando un dispositivo de cmputo, entonces debemos poder contar con la posibilidad de efectuar las operaciones aritmticas implicadas, incluyendo la potenciacin. Por supuesto, la mayora de los microprocesadores para computadores de escritorio y superiores incluyen dentro de su repertorio de instrucciones aquellas necesarias para efectuar las operaciones aritmticas bsicas incluyendo la potenciacin. Todas estas debidamente soportadas por circuitera dedicada, esto es, la lgica de cada instruccin se encuentra alambrada permitiendo que sea ejecutada lo ms rpidamente posible. El alambrar una instruccin implica un determinado costo, grado de complejidad y consumo de energa. Los primeros microprocesadores incluan slo instrucciones para las cuatro operaciones aritmticas elementales por lo que operaciones de potenciacin deban realizarse mediante una serie de multiplicaciones sucesivas. Esto mismo aplica hoy en da con microprocesadores baratos y de bajo consumo de energa destinados a dispositivos porttiles o que no estn pensados para la realizacin de complejos clculos matemticos. Recurriremos a esta idea para nuestro anlisis y retomaremos este punto ms adelante.

Mtodo de Horner.
El mtodo de Horner es uno de esos trucos aritmticos y algebraicos a los que frecuentemente recurran los programadores en las primeras dcadas de la computacin, y con los que buscaban hacer ms eficiente un programa reduciendo tiempo de procesamiento o espacio en memoria o disco. La utilizacin de este tipo de reorganizacin de expresiones algebraicas o manejo de operaciones aritmticas ha cado muy en desuso por las facilidades que brindan los modernos lenguajes o interfaces de programacin al permitir ingresar expresiones e ideas en la misma forma como estamos acostumbrados a verlas en materiales impresos o en nuestra vida cotidiana. El mtodo de Horner consiste en reexpresar un polinomio en forma de multiplicaciones anidadas, buscando (idealmente) que no haya trminos de potencias mayores a uno. As, la definicin dada en la ecuacin 2, quedara reorganizada mediante este mtodo como:

Pn(x)=(...(((anx+an-1) x+an-2) x+...+a2) x+a1) x+a0

(4)
2

y cuya evaluacin puede conceptualizarse como:

Pn ( x ) = ai+1 x + ai , "i = n -1,n - 2,...,1,0

(5)

Modelo.
Ciertamente los modernos lenguajes de programacin y microprocesadores nos permiten llevar a cabo una operacin de potenciacin con tan solo expresarla a sabiendas que circuitos dedicados en el interior del computador cumplirn su cometido. Recurrir a tal facilidad para este anlisis nos presenta una dificultad de medicin, por lo que primero hemos de homogenizar criterios de medicin.
Como se mencion anteriormente la realizacin de una operacin de potenciacin puede verse como una serie de multiplicaciones sucesivas. Por lo que cada trmino puede ser considerado como un elemento que requiere de i multiplicaciones (si incluye un coeficiente). Bajo este punto de vista, el mtodo de Horner slo altera la cantidad de multiplicaciones a realizar. La cantidad de operaciones de suma de trminos no se altera. Debe considerarse que, independientemente del soporte por circuitera dedicada, la realizacin de una operacin de multiplicacin es ms rpida que una de potenciacin. Para efectos del presente anlisis se considerar al peor de los casos, aquel donde se requerira del mayor nmero de operaciones para la evaluacin del polinomio, i.e. cada trmino cuenta con un coeficiente y estn presentes todos los trminos (con potencias desde n hasta 1).

As, se plantean dos algoritmos, cada uno representando la implementacin de los mtodos ya descritos y que nos permitirn contabilizar las multiplicaciones involucradas en cada caso. El primer algoritmo corresponde a la evaluacin de un polinomio empleando multiplicaciones sucesivas para la evaluacin de las respectivas potencias; este algoritmo implica dos ciclos, uno por los trminos (con n como el grado del polinomio) y otro por la potencia de cada trmino, quedando de la siguiente manera: Algoritmo 1: Evaluacin Polinomial por Multiplicaciones Sucesivas. A0. [INICIALIZAR] Resultado 0 A1. [CICLO EN i] Ejecutar los pasos A2 hasta A5 para i = n hasta 1 con decrementos en 1. Al finalizar el ciclo ir a A6. A2. [INICIALIZAR] Trmino variable A3. [CICLO EN j] Ejecutar paso A4 para j = 2 hasta i con incrementos en 1. Ejecutar A5 al terminar ciclo j. A4. [CALCULAR] Trmino variable * Trmino A5. [ASIGNAR] Resultado Resultado + (Coeficientei * Trmino) A6. [FINALIZAR] Desplegar Resultado El segundo algoritmo que presentamos corresponde a la implementacin del mtodo de Horner. Una forma sencilla de entender cmo funciona este mtodo es considerar que las multiplicaciones son

distribuidas de manera que cada producto, resultado de una multiplicacin previa, se aprovechar implcitamente en las siguientes multiplicaciones, por ejemplo:

a2x2 + a1x a3x3 + a2x2 + a1x

= =

x (a2x + a1) x (a1 + x (a2 + a3x)) a1x + x2 (a2 + a3x) a1x + a2x2 + a3x3.

(6)

(7)

La implementacin del mtodo de Horner queda como sigue: Algoritmo 2: Mtodo de Horner. A0. [INICIALIZAR] Resultado Coeficienten A1. [CICLO EN i] Ejecuta paso A2 para i = n-1 hasta 0 con decrementos en 1. Al finalizar el ciclo ir a A3. A2. [ASIGNAR] Resultado Resultado * x + Coeficientei A3. [FINALIZAR] Desplegar Resultado

Anlisis.
Se presenta ahora el anlisis de los algoritmos presentados. Primero bajo un enfoque analtico y posteriormente haciendo uso de tcnicas de ajuste y regresin. Enfoque analtico. Como podr observarse, la estructura del primer algoritmo contiene un ciclo externo que corre de 1 a n veces. Cuenta tambin con un ciclo interno de 2 a i veces, que implica i-1 multiplicaciones, lo que significa que podemos considerar de 1 a i veces por la multiplicacin requerida por el coeficiente; concluyendo que, por cada trmino, se requieren i multiplicaciones. El ciclo externo en este algoritmo implica que se ejecuten

n + n-1 + n-2 + ... + 2 + 1 multiplicaciones


lo que es equivalente a:

(8)

n(n+1)/2.
Por su parte, el segundo algoritmo contiene un ciclo de 0 a n-1 veces implicando:

(9)

n multiplicaciones.
Enfoque estadstico.

(10)

El anlisis de algoritmos tiene mucho de arte. Requiere un conocimiento profundo del problema, dominio de herramientas analticas, habilidad y experiencia para identificar lo que realmente se debe medir. El empleo de las matemticas resulta indispensable, sobre todo cuando buscamos una expresin
4

que explique el comportamiento del algoritmo en estudio. El enfoque anterior es un ejemplo de esto, aunque claro, bastante sencillo. La mayora de las ocasiones el problema requerir un mayor grado de anlisis y manipulaciones algebraicas. Afortunadamente, es posible recurrir a tcnicas estadsticas que slo requieren de una muestra de datos para derivar de sta una ecuacin que explique en forma aproximada la relacin entre stos. Complementariamente, el enfoque estadstico puede considerarse una forma de validacin de los resultados del mtodo analtico. La implementacin de los algoritmos descritos a travs de un pequeo programa permiti generar el siguiente conjunto de datos:

Grado del polinomio

Algoritmo 1

Algoritmo 2

1 1 1 2 3 2 3 6 3 4 10 4 5 15 5 6 21 6 7 28 7 8 36 8 9 45 9 10 55 10 11 66 11 12 78 12 13 91 13 14 105 14 15 120 15 16 136 16 17 153 17 18 171 18 19 190 19 20 210 20 21 231 21 22 253 22 23 276 23 24 300 24 25 325 25 26 351 26 27 378 27 28 406 28 29 435 29 30 465 30 Tabla 1.- Nmero de multiplicaciones requeridas por los algoritmos. La realizacin de los clculos necesarios en la aplicacin del mtodo de mnimos cuadrados para el clculo de las diferentes curvas de ajuste que podran probarse estn fuera del alcance del presente
5

artculo. Por otra parte, existen muchsimas herramientas para realizar dichos clculos, una de ellas es la hoja de clculo Microsoft Excel. Presentamos las grficas correspondientes al conjunto de datos junto con varias curvas de ajuste. Cada grfica muestra la ecuacin correspondiente a la curva calculada y su factor de correlacin.

Algoritmo 1
500 400

Multiplicaciones

300 200 100 0

y = 16x - 82.667 R = 0.9449


2

Operaciones

11

13

25

27

17

15

-100 Grado del polinomio

(a)

Algoritmo 1
500 450 400 y = 0.5x + 0.5x + 5E-13 R =1
2 2

Multiplicaciones

350 300 250 200 150 100 50 0

19

21

23

29

Recta ajustada

Operaciones Curva 2do grado

17

25

15

11

13

23

Grado del polinomio

(b)
6

19

21

27

29

Algoritmo 1
500 450 400 y = 0.812x
2 1.8511

Multiplicaciones

R = 0.9988

350 300 250 200 150 100 50 0 Operaciones Curva potencial

13

25

15

17

19

21

11

23

Grado del polinomio

(c)

Algoritmo 1
1000 900 800 y = 6.1286e
2 0.1668x

27

29

Multiplicaciones

R = 0.8691

700 600 500 400 300 200 100 0 Operaciones Curva exponencial

19

11

13

15

17

21

25

27

Grado del polinomio

(d)

23

29

Algoritmo 2
35 30 y=x R =1
2

Multiplicaciones

25 20 15 10 5 0 Operaciones Recta ajustada

11

13

25

27

15

17

19

21

Grado del polinomio

(e)

Algoritmo 2
35 30 25 y = 9.5302Ln(x) - 8.2169 R = 0.8476
2

Multiplicaciones

20 15 10 5 0

23

17

11

13

15

19

21

23

25

-5 -10 -15

27

29

29

Operaciones Curva logaritmica Grado del polinomio

(f)

Algoritmo 2
35 30 y = 1E-14x + x + 2E-12 R =1
2 2

Multiplicaciones

25 20 15 10 5 0 Operaciones Curva 2do grado

15

17

19

27

11

13

21

23

Grado del polinomio

(g)

Algoritmo 2
50 45 40 y = 3.0346e0.0889x R2 = 0.8476

Multiplicaciones

35 30 25 20 15 10 5 0 1 3 5 7 9 11 13 15 17 19 21 23 25 27 29 Grado del polinomio Operaciones Curva exponencial

(h) Figura 1.- Grficas de datos y curvas de ajuste calculadas para el Algoritmo 1 (a, b, c, d) y el Algoritmo 2 (e, f, g, h).

25

29

Resultados.
Como puede verse, las curvas obtenidas por regresin confirman los resultados obtenidos analticamente. Para el conjunto de datos correspondiente al Algoritmo 2 dos curvas presentan un grado de correlacin igual a uno: la recta y la cuadrtica. Examinando de cerca la ecuacin correspondiente al polinomio de segundo grado puede verse que el coeficiente del trmino cuadrtico es muy pequeo, tendiente a cero, con lo que el trmino se anula y la ecuacin termina siendo lineal. Un resultado debido a errores de redondeo. Complejidad computacional es un rea de la ciencia de la computacin que abarca el estudio del comportamiento de los algoritmos. La forma como el comportamiento de un algoritmo se describe es a travs de una funcin de trabajo, una ecuacin que describe cuanto tiempo de procesamiento o espacio en disco o memoria utiliza el procedimiento para llegar a una solucin en funcin de los parmetros de entrada. Precisamente, el clculo de las funciones de trabajo es lo que acabamos de hacer. Tenemos que la funcin de trabajo del Algoritmo 1 es

y=n(n+1)/2
que podemos escribir como
y= n2 + n 2

(11)

(12)

y as ver que efectivamente se trata de una funcin cuadrtica, donde el parmetro de entrada es n, que es el grado del polinomio y en funcin del cual est la cantidad de trminos a calcular. Asociado al concepto de la funcin de trabajo est su orden, la forma en la que la funcin vara en magnitud a medida que sus parmetros tienden a un lmite. Este se denota por una O mayscula y es comnmente referida como O grande. Una forma rpida y prctica de identificacin del orden de una funcin es a travs del elemento de mayor exponente o que presente un crecimiento mayor, que finalmente ser el que fije la mayor magnitud en dicha funcin. Para el primer algoritmo tenemos O(n2) Para el Algoritmo 2 vemos que su funcin de trabajo es

y=n
y as su orden es O(n).

(13)

10

Conclusiones.
Asociada a la ejecucin de cada instruccin en un computador est un tiempo de realizacin. Un menor nmero de operaciones a realizar implica un menor tiempo del algoritmo para entregar resultados. Aqu se ha presentado, a travs de un razonamiento metdico, cmo puede cuantificarse este esfuerzo asociado a un procedimiento determinado. La idea puede ser usada en el anlisis de cualquier otro algoritmo. Incidentalmente se presenta tambin un criterio que puede ser de mucha ayuda en la labor de ciertos programas de cmputo. En la resolucin de muchos problemas de ingeniera y otras reas cientficas es muy comn recurrir al clculo de polinomios. Algunos de estos problemas requieren tiempo para ser resueltos. Con base en los resultados del presente artculo, podemos ver que una mejora sustancial en el tiempo de clculo puede ser obtenida mediante la aplicacin del mtodo de Horner. Los modernos lenguajes de programacin nos permiten expresar ideas como estamos acostumbrados a hacerlo. Esto no necesariamente implica que sea la mejor forma de presentarlos para obtener la mejor utilizacin de los recursos de un computador, adems de que no puede esperarse siempre que en todo compilador, intrprete o programa de aplicacin se implementen tcnicas de optimizacin como la aqu descrita. Es responsabilidad de todo programador profesional escribir programas de forma que garanticen el ms eficiente uso de los recursos del computador.

Referencias.
Valerie Illingworth, Gen. Ed.; Diccionario de Informtica; Ediciones Daz de Santos S.A.; Madrid, Espaa, 1993. ISBN 84-7978-068-1. Apuntes de curso; Arquitectura de Mquinas. Semestre de primavera, 2001; UPIICSA. Deitel y Deitel; C++. Cmo Programar; Prentice-Hall, 2da edicin, 1999. S. E. Goodman & S. T. Hedetniemi; Introduction to the Design and Analysis of Algorithm; 5th Ed., McGraw-Hill International Editions; Singapore, 1988. ISBN 0-07-Y66300-9.

11

Vous aimerez peut-être aussi