



Prepara tus exámenes y mejora tus resultados gracias a la gran cantidad de recursos disponibles en Docsity
Gana puntos ayudando a otros estudiantes o consíguelos activando un Plan Premium
Prepara tus exámenes
Prepara tus exámenes y mejora tus resultados gracias a la gran cantidad de recursos disponibles en Docsity
Prepara tus exámenes con los documentos que comparten otros estudiantes como tú en Docsity
Encuentra los documentos específicos para los exámenes de tu universidad
Estudia con lecciones y exámenes resueltos basados en los programas académicos de las mejores universidades
Responde a preguntas de exámenes reales y pon a prueba tu preparación
Consigue puntos base para descargar
Gana puntos ayudando a otros estudiantes o consíguelos activando un Plan Premium
Comunidad
Pide ayuda a la comunidad y resuelve tus dudas de estudio
Ebooks gratuitos
Descarga nuestras guías gratuitas sobre técnicas de estudio, métodos para controlar la ansiedad y consejos para la tesis preparadas por los tutores de Docsity
costo computacional- algoritmos costo computacional- algoritmos costo computacional- algoritmos costo computacional- algoritmos
Tipo: Resúmenes
1 / 6
Esta página no es visible en la vista previa
¡No te pierdas las partes importantes!




La notaci´on O(t) es de uso habitual en matem´atica y tiene un significado espec´ıfico dado por la siguiente definici´on [1]: Dadas dos funciones ϕ, ψ con valores reales, la igualdad ϕ(t) = O(ψ(t)), (1)
indica que existe una constante C tal que, para todo t suficientemente cercano a un valor l´ımite t 0 (por ejemplo, t → 0 , t → ∞, etc.), se tiene
|ϕ(t)| ≤ Cψ(t). (2)
Como ejemplo, recordemos la relaci´on sent^22 (t) ≤ 1 que puede observarse de la Figura 1-(a). Esto nos permite afirmar que sen(t)^2 ≤ t^2 cuando t → 0. De esta manera,
|sen^2 (t)| = sen^2 (t) ≤ C t^2 con C = 1, (3)
y diremos que ϕ(t) = O(ψ(t)) cuando t → 0. Particularmente si ϕ(t)/ψ(t) = 1 para t → t 0 (como en el caso analizado), decimos que ϕ(t) tiende asint´oticamente a ψ(t), lo que significa que en ese l´ımite ambas funciones son practicamente indistinguiles (ver Figura 1-(b)). Como otro ejemplo, vemos que la funci´on ϕ(x) = x^2 + x es O(x^2 ) cuando t → ∞, ya que |x^2 + x| ≤ | x^2 | + | x | ≤ | x^2 | + | x^2 | para |x| ≥ 1 , → |x^2 + x| ≤ 2 | x^2 |= 2x^2. (4)
Esta relaci´on es v´aida siempre que |x| ≥ 1 y por lo tanto ser´a v´alida en el l´ımite t → ∞. Por otra parte x^2 + x x^2 = 1 +
x →^1 cuando^ x^ → ∞,^ (5)
2
Figura 1: (a) Gr´afico de la funci´on sen^2 (t)/t^2. (b) Gr´aficos de la funciones ϕ(t) = sen^2 (t) (l´ınea azul) y ψ(t) = t^2 (l´ınea verde).
y ϕ(x) tiende asint´oticamente a x^2.
N´umero de operaciones
Cuando contamos con un algoritmo que permite resolver alg´un problema de c´alculo, es impor- tante tener conocimiento de cual es su costo de c´alculo, es decir, cual es el n´umero de operaciones que deber´an 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´alculos matem´aticos se reducen a un conjunto de operaciones aritm´eticas elementales denominadas operaciones de punto flotante^1 , flops. Estas operaciones son las de suma, resta, multiplicaci´on y divisi´on. Tomemos como ejemplo un polinomio gen´erico de grado 2 p(x) = a 0 + a 1 x + a 2 x^2. (6)
Supongamos que queremos conocer el n´umero de operaciones necesarias para evaluar dicho poli- nomio en un valor x = x 0 , esto es, cu´antas operaciones elementales deben realizarce para conocer el valor que toma p(x) cuando x = x 0 :
p(x 0 ) = a 0 + a 1 x 0 + a 2 x^20. (7)
En el primer t´ermino no es necesaria ninguna operaci´on ya que a 0 es conocido; en el segundo t´ermino debemos resolver el producto a 1. x 0 lo que implica una operaci´on elemental; el valor del (^1) La aritm´etica de punto flotante est´a basada en una representaci´on de punto flotante del conjunto de n´umeros reales. En un sistema num´erico de punto flotante, la posici´on del punto decimal (o binario) se almacena separada- mente de los d´ıgitos, y la precisi´on con que puede representarse un n´umero es proporcional al valor del propio n´umero. Esto lo distingue de una representaci´on de punto fijo, donde la precisi´on es constante.
Figura 2: N´umero de operaciones empleadas en la evaluaci´on de un polinomio de grado n escrito en la forma can´onica (puntos azules) y en la forma de Horner (puntos rosas)
O(n^2 ). M´as todav´ıa, l´ımn→∞ ϕ n( 2 n/) 2 = l´ımn→∞ 1 + (^) n^3 = 1 y ambas funciones tienden asint´oticamente al mismo valor, lo que justifica el no tener en cuenta el t´ermino 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´omputo; todos los que sean O(n^2 ) son comparables entre s´ı, y as´ı en general, todos los algoritmos O(nk) tendr´an una eficiencia computacional similar. Pasemos ahora al an´alisis para el mismo polinomio pero escrito como en (8)
q(x) = (...((anx + an− 1 )x + an− 2 )x + ... + a 1 )x + a 0. (11)
A esta forma se la conoce como forma de Horner. Esta expresi´on requiere de n productos y n sumas para su evaluaci´on 2. Entonces el n´umero de operaciones requeridas es 2n. Este algoritmo es O(n), un orden menor al caso anterior, y por lo tanto su costo computacional tambi´en lo es. En la figura (2) se grafic´o, para ambos casos, la cantidad de flops necesarias en funci´on del grado del polinomio. Claramente podemos ver cu´anto m´as eficiente es la forma de Horner al momento de evaluar un polinomio. El programa de c´alculo Matlab contiene los comandos tic y toc que nos permiten comparar el costo de c´omputo 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´on, en la figura (3) se muestra una secuencia de sentencias para evaluar un polinomio de grado n = 10^8 en el valor x 0 = 1, tanto para la forma est´andar como para la forma de Horner^3. Al finalizar el proceso, se obtiene en pantalla el tiempo (^2) Le dejamos la demostraci´on como ejercicio. No es dif´ıcil. (^3) Vea por ejemplo, c´omo van creciendo los tiempos de c´omputo con el grado del polinomio
Figura 3:
empleado en cada caso:
Elapsed time is 7.134219 seconds. Elapsed time is 2.269280 seconds. Por ´ultimo, aunque no nos enfoquemos en este punto, debemos tener presente que en el costo computacional de un algoritmo hay mucho m´as que el n´umero de operaciones que el mismo requi- iere. Por ejemplo, en una computadora que cuente con un ´unico procesador, el tiempo de ejecuci´on est´a afectado por el movimiento de los datos entre distintos componentes de la memoria y por otros trabajos que est´en ejecut´andose al mismo tiempo. En una m´aquina con un procesador m´ultiple, tambi´en hay que tener en cuenta el tiempo empleado en la comunicaci´on entre procesadores. Por el momento s´olo nos enfocaremos en lo que respecta a la aritm´etica de un algoritmo.