Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Algoritmos y Tiempos de Ejecución PDF
Algoritmos y Tiempos de Ejecución PDF
Tiempos de
Ejecución
Algoritmos y
Estructura de
Datos I
1
Algoritmos y tiempos de
ejecución
En esta lectura, se desarrollarán conceptos teóricos tales como algoritmo y
problema. Es importantes entenderlos, para poder abordar temas más
complejos, como los que siguen a continuación de esta lectura.
Algoritmos
Se comenzará por lo primero: ¿qué es un algoritmo?
2
2) agregar el agua (agregarAgua);
3) agregar sal (agregarSal);
4) amasar la masa (amasar);
5) dejar reposar la masa por 20 minutos (reposarMasa);
6) hornear por 40 minutos (hornear).
Diseño de algoritmos
3
sus salidas. Esto es de gran importancia. De hecho, algunos autores definen
a los algoritmos como procedimientos computacionales que se encargan de
tomar las entradas, de procesarlas y generar una o varias salidas.
Análisis de algoritmos
Dado un problema a resolver, se sabe que muchas veces se puede hacerlo
de más de una forma y que algunas de estas serán más eficientes que otras.
Es decir, ya sea en el tiempo de ejecución, en el uso de los recursos como la
memoria, el disco, la red e, incluso, el tiempo que le lleva a un desarrollador
escribir el algoritmo.
Por ejemplo, si estás desarrollando una aplicación que esperas que pueda
ser ejecutada en las computadoras hogareñas típicas, tendrás que tener en
cuenta que los algoritmos que implementes cumplan con los tiempos que
un usuario doméstico puede soportar en la respuesta de una aplicación y
que el poder de procesamiento será el de una computadora doméstica.
4
de los datos de entrada que deben procesar. A mayor cantidad de datos,
mayor será el tiempo de ejecución, por lo que se utilizan funciones
matemáticas para caracterizar la eficiencia de los algoritmos.
5
los menos eficientes, ya que ante pequeños incrementos en el tamaño de
los datos, el tiempo de ejecución del algoritmo crece rápidamente.
Pueden darse casos en que, por las constantes implicadas, una función
N*Log(N) sea más eficiente que una lineal. Sin embargo, ante una misma
complejidad, las lineales son más eficientes.
6
Figura 2: Tiempos de ejecución para entradas de tamaño moderado
7
código. La optimización debe realizarse primeramente sobre el algoritmo,
porque es él quien define la eficiencia en la ejecución.
Una vez que se hayan recorrido todos los elementos de la matriz, la variable
contendrá el valor mínimo de esta. Este es el caso de un algoritmo lineal, ya
que se deben recorrer los elementos de toda la matriz y se posee un tiempo
de ejecución fijo para cada elemento.
8
es igual a:
𝑁(𝑁 − 1)
2
𝑁2 − 𝑁 1 2 1
= 𝑁 − 𝑁
2 2 2
𝑁(𝑁 − 1)(𝑁 − 2)
6
1 3 1 2 1
𝑁 − 𝑁 − 𝑁
6 2 3
Al igual que en el caso anterior, existe una forma de resolver este problema
de una manera más eficiente, mediante el uso de un algoritmo cuadrático.
Sin embargo, esto excede el alcance de esta materia.
9
Referencias
Cormen, T., Leiserson, C., Rivest, R., y Stein, C. (2009). Getting Started. En Autores,
Introduction to Algorithms (pp. 16-29). Massachusetts, USA: The MIT Press.
10