Sunteți pe pagina 1din 4
INDUSTRIAL DATA ANALISIS DE ALGORITMOS Ing. Edgar C. Ruiz Lizama Resumen Presenta ios lundamentos matertices para el andliss de aigortmos a fin de determinar su efeiencia, con el cudl se puede decidir ‘por uno entre varios algontes en pusna, Abstract ‘This article presents the matheratica foundations forthe analysis of algorithms in order to determine its effiiency, which one can be ‘chosen among several algoritums in confit Introduccién Se dice que puede existir mas de un camino para llegar a la solucién d= un problema; de ello se des- prende que podrd existir mas de un algoritmo para Fesover un problema, luego el punto es; cual de ‘estos algoritmos que conducen a la solucién es el més eficiente. Este erticulo intenta dar luces en un t6pico muy interesante en la ciencia de la compute- cién; el cual es, e! andlisis de fos algoritmos. Para realizar el anélisis de algoritmos se tienen ciertos supuestos: 1. No se tiene en cuenta una maquina © tipo es- pecrfico en particular. 2. Se asumen unidades de tiempo constantes. Esto es necesario puesto que, si una de las carac- teristicas de todo algoritmo es ser universal; enton- ces, es independiente del lenguaje y de la maquina donde se implementa. Ei mejor algoritmo es aque! que consume menos can- tidad de recursos sean estos memoria principal o se- ‘cundaria (espacio) y tiempo de ejecucién (velocidad). Definicién Un algoritmo es un conjunto de instrucciones senci- lias, claramente especificadas, que se debe seguir para resolver un problema Soporte matematico El andlisis requerido para estimar el uso de recur 508 de un algoritmo es una cuestion teérica y por lo tanto, necesita un marco formal. Para ello se pre~ sentan cuatro definiciones importantes. = Definicién 4: T(n) = O(fin)) si existen constan- tes cy Ms tales T(n) = ofin} cuando n> fo + _Definicién 2: T(n) = Q(g(n)) si existen constan- tes cy no tales T(n) > cg(n) cuando n= mo + Definicton 3: T(n) = (hin) sly soto si Tim (h(n) y Tin) = Q (h{n)). + Definicién 4: T(n) = o(2{(n)) si T(n) = O(pta)) y Ta) #9 (p(n). El objetivo de estas definiciones es establecer un ‘orden relativo entre funciones. En el andlisis de a gortmos se comparan sus “tasas de crecimiento ‘olativas". At respecto ver la tabla N° 4 Ejempio 1: Sean las funciones 1900n y n°: ‘Aunque 1000n,es mayor que 1? para valores pe; quefios de n, n” crece con una tasa mayor, y asi; 1 ‘inaimente sera fa funci6n mayor. El punto de cam- bio @s en este caso, n= 1000. La primera definicién dice que finaimente existe un punto ne pasado el cual c.f(n) es siempre al menos tan grande como T(n), de tal modo que si se igno- ran los factores constantes, f(n) es al menos tan grande como T(n}. En este caso se tiene T(n) = 1000n. fin) = n*, ro = 1000 y c= 1. Se podria usar tambien, no = 10 y c= 100. Asi se puede decir que 1000n = O(n"); es decir del orden n cuadrada, Esta notacién se conoce como © grande (Big-Oh). Con frecuencia en nuestro idio- ma se suele decit "O grande" ‘Expresion Matemética Tasas Relativas de Crecimiento T(n) = 0 (fm) TE) = 2 (fin) Crecimiento de Tin) es < crecimiento de fin) Crecimiento de T(n) es 2 crecimiento de f(n) Crecimiento de T(n) es = crecimiento de fin) Crecimiento de T(n) es < crecimiento de fin) Tn) = 8 (fm) Tin) = 0 fn) Tabla N° 1: Significado de las cuatro funciones de crecimiento. = INDUSTRIAL DATA Cuando se dice que T(n) = O{f(m)), se esta garanti- zando que la funcion T(n) crece a una velocidad no mayor que f(n); asi f(n) es una cota superior de T(n); como esto implica que fin) = 2(T(n)}, se dice T(n) es una cota inferior de fin). Algunas Reglas mportantes Respecto a las cuatro definiciones dadas, se pre- sentan tres reglas importantes a tener en cuenta: Regia 1: Si T1(n)}=O(f{n)) y Taln)=O(g(n)), entonces: (a) Tan) + Ta(n) = (maxim), (gin) (b) Tal) * Tn) = O(f{n) * gin)) Regla 2: i T(x) eS un polinomic de grado n, entonces T(x) = O(c") bes log’ n = O(n) para cuaquier k constante. Este indi- ca que os logaritmos crecen muy lentamente Prueba de la regia 1(a) Por definicién existen cuatro constantes o1, C2, Mm, na, tales que Ti(n) < 61 fin) para n= my Te (n) s e29(n) para n 2 m2. Sea nosmax(n, m2). Entonces, para m Mo, Ts(n) $ exfin) y Ta{n) < c2g(n), de mado que T(n} + Tx(n) <= cxf(a) + e29(n). Sea cs = max(or, c2). Entonoes: Ton) + Ten) s caf) + ¢3.9¢n) aff) * a(n)) 5 2e) maxifin) g(a) semax(fin).g(M)) para c= 2c3yN2Ny Tal) + Ton) = O(max{(A{n}), (ali) La figura N° 1 muestra los tieripos de ejecucién pa- a algunos algoritmos'. Figura N° 4; Tiempos de ejecucién para algunos algoritmos. " Tomada dea referencia btiogrtica nomero 1. La tabla N° 2 muestra las tesas de crecimiento ca- racteristicas en los tiempos de ejecucién. Funci6n ‘Nombre © Constante fogn | Logaritmica log? | Logaritmica cuadrada A Lineal njogn | Lineal - togaritmica ae Cuadratica v Ciibica 2 Exponencial Tabla N° 2: Tasas de crecimiento caracteristicas Reglas para el calculo de los tiempos de ejecucion A continuacién se presentan las raglas a tener en cuenta en el caiculo de los tiempos de ejecucion. Regia 1: Ciclos for El tiempo de ejecucién de un ciclo for es alo mas el tiempo de ejecucion de las instrucciones que es- tan en el interior del ciclo for ( incluyendo las cond ciones) por el numero de iteraciones. Regla 2: ciclos for anidados Analizarlos de adentro hacia fuera. El tiempo de ejecuci6n total de una proposicion dentro del grupo de ciclos for anidados es el tiempo de ejecucién de la proposicién multiplicade por e! producto de los tamafios de todos los ciclos for. Ejemplo 2: fori<-1tondo for) 1tondo keket Cloramente se ve que ei tiempo de ejecucion sera O(n") Regla 3: Proposiciones consecutivas ‘Simplemente se suman; 10 cual significa que el ‘maximo es ol nico que cuenta (Regla 1(a)). Ejemplo 3: . EI siguiente fragmento, tiene trabajo O(n), sequido de trabajo O(n") por lo que finalmente es O(0?).. forie 1 tondo alii < 441 fori ttondo for} 1 tondo a INDUSTRIAL DATA % alll — afi) + a + i+ j Regla 4: if ~ else En una proposicién if-then-else el tiempo de ejecu- cién nunea es mas grande que el tiempo de ejecu- cidn de ia condicién mas el mayor de los tiempos de ejecucién entre la parte then y la parte else. if then st else 82 Regla 5: Llamadas a funciones Si hay llamadas a funciones, estas deben analizar- se primero. Ejemplo 4: Sea el siguiente el algoritmo de ordenacion por se- leccién simple el cual utiliza la recursividad seleccionsimple (A,n) begin (1) ifn>1 then @) encontrar (A,n} (3) temp = Aln] (4) Ain} = Almax] (8) Almay] = temp (8) _seleccionsimpl(A, n-1) end selecionsimple donde el algoritmo para la funcién encontrar es: encontrar(A, n) begin 21) ie hn (2.2) forj=1 ton-+ 23) if (Ajl> Aft) then (2.4) retornari ‘end encontrar Se observa que el costo de encontrar(A,n} viene dado por el tamafio de n (linea (2.1) y (2.2)) por una constante @, mas una constante b; (lineas 2.3, y 24). Luego el proceso recursivo tiene un costo T(n), tal coma sigue’ ifa> 1 then costo an+ by //inea (2) costo be Mines 3,4 y 5 costo T(n-t) tinea (6) totalizando estos costos se tiene: Tin) san by + bp + Trt) an + (by + Bp) + T{net) sant ptT(rt), nt Obseérvese que b = b; + bp. Como T(1) es una Constante, su costo es ¢; entonces Ia relacion de recurrencia resultante es! ey me To sere cuya solucion es: no-(2e(S + Bhevtena-d) Luego aplicando fa Regia 1(a) se concluye que: Tea) = O(n?) Ejempto 5: El algoritmo para encontrar el factorial de un ndime- ro puede plantearse de manera iterativa o de ma- nera tecursiva. Veamos el pseudocédigo para el Planteamiento recursivo. int factorial (int n) begin a) itm <= 1 then (2) retormar 1 else 3) retomar n * factorial (n-1) ‘end factorial A priori podemos inferir que el tamafo apropiado para esta funcién es el valor de n. Sea T(n) el tiem- po de ejecucion para factorial(n). El tiempo de eje- ‘cucion para las lineas (1) y (2) es O(1); mientras ‘que, para la linea (3) es O(1) + T(n-t), tuego para ciertas constantes c y d, la relacion de recurrencia sera: nod nsi erT-D si Tin) {5 : En general se puede suponer que n > 2; por fo que al desarroliar (7-1) en la relacion de recurrencia se obtiene: Tin)=2c+T(n-2) sin >2 es decir T(n-1) = ¢ + T(n-2), al sustituir n por n= 1 en la relacién de recurrencia. Asi, es posible reem- plazar T(n — 1) con ¢ + T(n-2). De ello volviendo a usar dicha relacién para obtener T(n-2) se obtiene: T(m)=3c+T(n-3) si n>3 y asi sucesivamente. En general: Mn)=ictTn-) si n>i a Por titimo, cuando i = n— 1, se obtiene: T(n) = e(n-1) + Tl) =e(n- 1) +d En conclusién puede decirse que T(n) = O(n) para este algoritmo. Nota: Este algoritmo recursivo para los factoriales en términos practicos no es muy bueno puesto que para valores grandes de n el tamafio de los enteros que se van calculando exceden los limites de los enteros representables en el computador, Ejemplo 6: El algoritmo de Euclides para hallar el maximo comin divisor de dos numeros enteros med (mn) viene dado por el siguiente pseudocédigo: int med (int m, int n) begin int resto while n > 0 do { resto < m modn men ne resto } Mend while retornar m. end med El algoritmo supone que m > n. (Sin > m, la prime- ra iteracién del ciclo los intercambia). El algoritmo funciona a base de calcular continua- mente los restos hasta llegar a cero, La respuesta @8 el ultimo valor distinto de cero. Asi, sim = 3679 y n= 2970, la Secuencia de restos es 609, 534, 75, 9, 3y 0; por tanto med (3579, 2970) = 3. Como puede verse este algoritmo es muy rapido y eficiente. A decir verdad, el tiempo de ejecucién de este algo- ritmo depende de lo grande que sea la secuencia de residuos. Aunque log n parece ser una buena respuesta, no es en absoluto obvio que el valor del resto tenga que descender en un factor constante pues como se ve en la corrida el resto va de 609 a 534 entre la primera y segunda iteracion. Sin em argo después de dos iteraciones, el resto es a lo més la mitad de su valor original. Esto podria de- mostrar que el nimero de iteraciones es a lo mas 2log n = O(log n), y establecer asi el tiempo de eje- cucién T(n). A fin de demostrar que esto es cierto se presenta el siguiente teorema: Teorema Si m>n, entonces m mod n < mi2 Demostracion Existen dos casos a saber. Caso 1: Sin < m2, entonces obviamente, como el resto ‘es menor que n, el teorema se cumple. Caso 2: ‘Sin> mi2, entonces n cabe en m una vez con un resto m~n < m/2, demostrando asi el teorema. Conclusiones 4. El analisis de los algoritmos es una cuestion te6rice que nos permite decidir para fines prac- ‘cos de implementacién si un algoritmo es mas eficiente que otro. 2. Tal como se ha visto, un algoritmo es mas efi- ciente que otro cuando consume una menor cantidad de recursos ya sea espacio(memoria) ‘tiempo (velocidad de ejecucion), Bibliografia 1. Aho Alfred / Hoporoft Jhon / Ullman Jefrey, * Estructura de datos y algoritmos’. USA Addison — Wesley Iberoamericana S.A. 438 p (1988). Brassard Glen / Bratley Paul, “Fundamentos de Algoritmia’ Espafia, Prentice Hall International, 578 p (1997). 3. Parker Alan, "Algorithms and Data Structures in C+#" USA CRC Press: 257 p (1993). 4, Raffo Lecca Eduardo, “Algoritmos: Andlisis. y Disefio", Raffo Lecca Editores. Lima, 207p (1999), 8. Weiss Mark Allen., “Algoritmos y Estructuras de Datos USA. Addison Wesley Iberoamericana, -489p (1995), 6. Weiss Mark Allen, ‘Algorithms Data Structures and Problems Solving with C++". USA. Addison — Wesley Longman, Inc. 820 p (1997)

S-ar putea să vă placă și