Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Costo Computacional PDF
Costo Computacional PDF
algoritmo
Significado de O(t)
La notación O(t) es de uso habitual en matemática y tiene un significado especı́fico dado por
la siguiente definición [1]:
Dadas dos funciones ϕ, ψ con valores reales, la igualdad
indica que existe una constante C tal que, para todo t suficientemente cercano a un valor lı́mite t0
(por ejemplo, t → 0, t → ∞, etc.), se tiene
Esta relación es váida siempre que |x| ≥ 1 y por lo tanto será válida en el lı́mite t → ∞. Por otra
parte
x2 + x 1
2
= 1 + → 1 cuando x → ∞, (5)
x x
1
1. 1.
jHtL, ΨHtL
sen2HtLt2
0.5
0.5
0.
0.
Π 0 Π
-
-2 Π -Π 0 Π 2Π 4 4
t t
Figura 1: (a) Gráfico de la función sen2 (t)/t2 . (b) Gráficos de la funciones ϕ(t) = sen2 (t) (lı́nea
azul) y ψ(t) = t2 (lı́nea verde).
Número de operaciones
Cuando contamos con un algoritmo que permite resolver algún problema de cálculo, es impor-
tante tener conocimiento de cual es su costo de cálculo, es decir, cual es el número de operaciones
que deberán realizarse para completarlo y obtener el resultado que estamos buscando. Esto permite
calificar el algoritmo y comparar su eficiencia con respecto a otro que resuelva el mismo problema.
En una computadora, todos los cálculos matemáticos se reducen a un conjunto de operaciones
aritméticas elementales denominadas operaciones de punto flotante1 , flops. Estas operaciones son
las de suma, resta, multiplicación y división.
Tomemos como ejemplo un polinomio genérico de grado 2
p(x) = a0 + a1 x + a2 x2 . (6)
Supongamos que queremos conocer el número de operaciones necesarias para evaluar dicho poli-
nomio en un valor x = x0 , esto es, cuántas operaciones elementales deben realizarce para conocer
el valor que toma p(x) cuando x = x0 :
2
último término se encuentra luego de realizar 2 productos, uno para hallar el valor de x20 = x0 . x0 ,
y luego uno más para hallar a2 x20 = a2 . x20 . Finalmente debemos sumar los tres términos, lo que
agrega dos operaciones de suma al cómputo. En resumen, tenemos 3 productos y 2 sumas, lo que
da un total de 5 flops para la evaluación del polinomio.
Pero la expresión (6) no es la única para el polinomio p(x). Por ejemplo, sacando factor común
x entre el segundo y tercer término, p(x) también puede ser escrito como
Finalmente, debemos sumar los n + 1 términos de la expresión (9), lo que implica realizar n sumas.
Entonces, el número de flops requeridas para evaluar un polinomio de grado n escrito en su forma
n n2 n2
canónica es ϕ(n) = 2 (n + 3) = 2 + 32 n ∼ 2 .
3
500
400
300
flops
200
100
0
0 5 10 15 20 25 30
n
ϕ(n)
O(n2 ). Más todavı́a, lı́mn→∞ n2 /2 = lı́mn→∞ 1 + n3 = 1 y ambas funciones tienden asintóticamente
al mismo valor, lo que justifica el no tener en cuenta el término 32 n para n grande.
Con esto en mente, diremos que todos los algoritmos que sean O(n) son comparables respecto
de su costo de cómputo; todos los que sean O(n2 ) son comparables entre sı́, y ası́ en general, todos
los algoritmos O(nk ) tendrán una eficiencia computacional similar.
Pasemos ahora al análisis para el mismo polinomio pero escrito como en (8)
A esta forma se la conoce como forma de Horner. Esta expresión requiere de n productos y n
sumas para su evaluación 2 . Entonces el número de operaciones requeridas es 2n. Este algoritmo
es O(n), un orden menor al caso anterior, y por lo tanto su costo computacional también lo es.
En la figura (2) se graficó, para ambos casos, la cantidad de flops necesarias en función del grado
del polinomio. Claramente podemos ver cuánto más eficiente es la forma de Horner al momento
de evaluar un polinomio. El programa de cálculo Matlab contiene los comandos tic y toc que
nos permiten comparar el costo de cómputo entre distintos algoritmos. Escribiendo la sentencia
tic al inicio del proceso y toc al final, obtendremos el tiempo empleado por la computadora para
completar el mismo. Como ejemplo de su utilización, en la figura (3) se muestra una secuencia de
sentencias para evaluar un polinomio de grado n = 108 en el valor x0 = 1, tanto para la forma
estándar como para la forma de Horner3 . Al finalizar el proceso, se obtiene en pantalla el tiempo
2 Le dejamos la demostración como ejercicio. No es difı́cil.
3 Vea por ejemplo, cómo van creciendo los tiempos de cómputo con el grado del polinomio
4
Figura 3:
Por último, aunque no nos enfoquemos en este punto, debemos tener presente que en el costo
computacional de un algoritmo hay mucho más que el número de operaciones que el mismo requi-
iere. Por ejemplo, en una computadora que cuente con un único procesador, el tiempo de ejecución
está afectado por el movimiento de los datos entre distintos componentes de la memoria y por otros
trabajos que estén ejecutándose al mismo tiempo. En una máquina con un procesador múltiple,
también hay que tener en cuenta el tiempo empleado en la comunicación entre procesadores. Por
el momento sólo nos enfocaremos en lo que respecta a la aritmética de un algoritmo.
5
Bibliografı́a
[1] Lloyd N. Trefethen and David Bau III, Numerical Linear Algebra (Society for Industrial and
Applied Mathematics, Philadelphia, UK, 1997).