Triggezxcasdfasd

You might also like

You are on page 1of 40
Capitulo [5 Analisis de algoritmos En a primera parte hemos examinado cémo nos puede ayudar la programacién orientada a objetos durante el disefo y la implementacion de sistemas de gran tamaiio, No nos hemos Ajado en las uestiones de rendimiento, Generalmente, si utilizamos una computadora es porque necesitamos procesar una gran cantidad de dates. Y cuando ejecutamos un programa con una gran cantidad datos, tenemos que estar seguras de que el programa termine su tarea en un tlempo razonable, ‘Aunque el tiempo total de ejecucién depende en algura medida del lenguaje de programacion que empleemos y en menor medida de la metodologia utilizeda (como por ejemplo programacion procedimenial en lugar de orientada a objetes), a menudo esos factores son constantes del disefio queno se pueden modificar. Aunasi, de lo que més depende el tiempo de ejecuciénes de la eleccion & los algoritmos, Un algoritmo es un conjunto claramente especificado de instrucciones que la computadora seguird para resolver un problema, Una ver. que se proporciona un algoritmo para un problema y se verifica que es correcto, el siguiente paso consiste en determinar la cantidad de recursos, como por ejemplo tiempo y espacio de memoria, que el algoritmo requerird, Este paso se denomina andilisis de algoritmas. Un algoritmo que requiera varios cientos de gigabytes de memoria principal no sera itl para la mayorfa de las miquinas actuales, incluso aunque sea completamente correcto, En este capitulo, vamos a abordar las siguientes curstiones: ‘= Cémo estimar el tiempo requerido por un algoritmo, = Como utilizar téenicas que reduzcan dristicamente el tiempo de ejecucién de un algoritmo, ‘= Cémo emplear un marco de andlisis matematico que describa con el mayor rigor posible el ‘tiempo de ejecucion de un algoritmo, = Como describir ura rutina simple de busqueda binarta, 5.1 ~Qué es el andlisis de algoritmos? La cantidad de tiempo que cualquier algoritmo tarda en ejecutarse depende casi siempre de la cantidad de entrada que deba procesar. Cabe esperar, por See . ejemplo, que ordenar 10,000 elementos requiera més tiempo que ordenar 10 fgywantceinat elementos, El tiempo de ejecucién de un algoritmo es, por tanto, una funclin _tergode ean del tamafio de la entrada. El valor exacto de la funcion dependera de nuchS 186 Capitulo § Analisis de algoritmos factores, como por ejemplo de la velocidad do la méquina utilzada, de la calidad del compiladar y, en algunos casos, de la calidad del programa. Para un determinado programa en una determinada computadora, podemos dibujar en una grafica la funcion que expresa el tiempo de ejecucion La Figura 5.1 flustra una de esas grdficas para cuatro programas distinios, Las curvas representan cuatro funciones cominmente encontradas en el andlisis de algoritmos: lineal, OWlog N), cuadratica y ibica, El tamafo de la entrada /Vvaria de 1 a 100 elementos y los tiempos de ejecucion varian entre Oy 10 microsegundas, Un rapido vistazo a Ta Figura 5.1, y a su compafiera, la Figura 5.2, suglere he las curvas lineal, O(Wlog 4), cuadratica y cibica representan distintos tiempos de ejecucién, en orden de preferencia decreciente Un ejemplo seria el problema de descargar un archivo de Intemet. a Suponga que hay un retardo inicial de 2 segundos (para establecer una feurtaredaskis, _conexidn), después de lo cual la descarga se produce una velocidad de 160 eagatmes usiossks Kiseg, Entonces, si el archivo tiene W’kilobytes, el tiempo para la descarga oceans etd dado por Ja formula 7(4) = M160 + 2. Esta es una fincién lineal. semen: Descargar un archivo de 8.000K requiere aproximadamente 52 segundos, mientras que descargar un archivo dos veces mayor (16,000K) requiere unos 102 segundas, lo que aproximadamente es el doble de tempo. Esta propiedad en la que el tlempo és, en esencia, directamente proporcional al tamafio de la entrada, es la caracteristica fundamental de un algoritmo lineal, que es el tipo de algoritmo mas eficiente, Por contraste, como muestran estas ds primeras graficas, algunos de los algoritmos no lineales requieren tiempos de ejecucion muy sgandes. Porejemplo, el algoritmo lineal es mucho mis eficiente que el algoritmo cibico, Eh este capitulo, vamos a considerar varias cuestiones importantes: = 2£s importante disponer stempre de la curva mds eficiente? ‘=

You might also like