2. Complejidad
• Un algoritmo será mas eficiente comparado con otro, siempre que consuma menos recursos,
como el tiempo y espacio de memoria necesarios para ejecutarlo.
• Saber cuánto cuesta resolver un problema
• Nos limitamos a los problemas solubles
• Veremos que existen problemas solubles teóricamente, pero insolubles en la práctica
(consumo de recursos excesivo)
3. Complejidad Asintótica
• Consiste en el cálculo de la complejidad temporal a priori de un algoritmo en función del tamaño del
problema, n, prescindiendo de factores constantes multiplicativos y suponiendo valores de n muy grandes
• No sirve para establecer el tiempo exacto de ejecución, sino que permite especificar una cota (inferior,
superior o ambas) para el tiempo de ejecución de un algoritmo
4. • El tiempo de Ejecución de un programa se mide en función de N, lo que designaremos como
T(N).
• Esta función se puede calcular físicamente ejecutando el programa acompañados de un
contador, o calcularse directamente sobre el código, contando las instrucciones a ser
ejecutadas y multiplicando por el tiempo requerido por cada instrucción.
5. Notación O:
Cambios en el entorno HW o SW afectan a factores constantes pero no al orden de complejidad O(f(n))
Hay que buscar algoritmos con el menor orden de complejidad
La eficiencia es un término relativo que depende del problema
El análisis de la eficiencia es asintótico sólo es válido para tamaños de problema suficientemente
grandes