CA C1 AnálisisDeAlgoritmos PDF

Descargar como pdf o txt
Descargar como pdf o txt
Está en la página 1de 22

Complejidad y Análisis

de Algoritmos – P1

Curso: Complejidad Algorítmica

Programa de Ingeniería de Sistemas


Facultad de Ingeniería
Universidad El Bosque, Colombia
¿Qué es un Algoritmo?
 Conjunto de pasos necesarios para resolver un problema
 Ninguno de sus pasos debe dar pie a ambivalencias o aspectos de
“creatividad”…
 Debe terminar en un número finito de pasos…

 Formalmente hablando:
“Un algoritmo es un conjunto ordenado de
pasos, o instrucciones ejecutables, no ambiguos”
3. Algoritmo

Secuencia bien definida y finita de tareas


bien definidas, cada una de las cuales se
puede realizar con una cantidad de
recursos finitos.
Características de un Algoritmo
De finitud o
Precisión Finitud
Determinismo

Hay un orden Todas las veces que se El algoritmo


preciso en el realicen las tareas o debe terminar
cual deben pasos de un algoritmo, en algún mo-
ejecutarse las con las mismas condi- mento y debe
tareas que ciones iniciales, se de- usar una can-
conforman el ben obtener resultados tidad finita de
algoritmo. idénticos. recursos.
Estructura de un Algoritmo

Datos Instrucciones Estructuras de


control
Para almacenar Las acciones o Las que determinan
información: da- procesos que el el orden en que se
tos de entrada, algoritmo realiza ejecutarán las ins-
de salida o inter- sobre los datos. trucciones del algo-
medios. ritmo.
Ejemplo de algoritmo

Un estudiante se encuentra en su casa


(durmiendo) y debe ir a la universidad (a tomar
la clase de programación!!),
¿Que debe hacer el estudiante?
Programación de Computadores
Modulo 1. Introducción

Ejemplo de algoritmo
1. Dormir hasta que suene el
despertador (o lo llame la mamá).
2. Mirar la hora.
3. Hay tiempo suficiente?
3.1. Si, entonces
3.1.1. Bañarse.
3.1.2. Vestirse.
3.1.3. Desayunar.
3.2. No, entonces
3.2.1. Vestirse.

Facultad Ingeniería 2. Problemas


Departamento de Ingeniería de Sistemas e Industrial
Ejemplo de algoritmo
4. Lavarse la boca.
5. Despedirse de la mamá y el papá.
6. Hay tiempo suficiente?
6.1. Si, entonces
6.1.1. Caminar al paradero.
6.2. No, entonces
6.2.1. Correr al paradero.
7. Hasta que pase un bus para la universidad
hacer:
7.1. Esperar el bus
7.2. Ver a las demás personas que
esperan un bus.
Ejemplo de algoritmo
8. Tomar el bus.
9. Mientras que no llegue a la universidad
hacer:
9.1. Seguir en el bus.
9.2. Pelear mentalmente con el conductor.
10. Timbrar.
11. Bajarse.
12. Entrar a la universidad.
13. Caminar hasta llegar al salón donde se
dicta su curso de programación.
14. Ingresar al salón.
Propiedades de un Algoritmo
1. Especificación precisa de la Entrada → ¡Número y tipo de entradas!
2. Especificación precisa de cada Instrucción!!!
3. Exactitud y corrección → ¿Puede el algoritmo resolver el problema?
4. Etapas concretas → Cada etapa, en un tiempo finito determinado…
5. Número finito de pasos → Si no es finito, no se puede implementar!!!
6. Debe poder terminar → No debe caer en bucles infinitos!!!
7. Descripción del resultado o salida → El propósito del algoritmo debe
ser claro!!!
Bueno, ¿y qué es un Programa entonces?
 Un programa lo que definitivamente no es, es un algoritmo.

 Así como el Objeto representa concretamente a una Clase…

 Un Programa es una representación concreta de un


Algoritmo en un Lenguaje de Programación.
¡Recapitulemos!
1. Un problema es necesidad, que se resume en una
función o asociación con entradas y salidas.
2. Un algoritmo es una “receta”, con pasos concretos
y precisos, presentada para resolver un problema.
3. El algoritmo debe ser concreto y finito, y debe
terminar para todas y cada una de sus entradas.
4. Un programa es una ejecución o instanciación de
un algoritmo, haciendo uso de un Lenguaje de
Programación en particular.
¿Si la pillamos socios?
Eficiencia, Eficacia y Exactitud
 ¿Qué queremos decir, cuando nos referimos a una solución como
eficaz?
→ Que soluciona el problema!!!

 Para un sin número de soluciones posibles, ¿cómo escogemos la


mejor?
→ Un algoritmo…
-> Debe ser fácil de entender, codificar y depurar.
-> debe hacer uso eficiente de los recursos.
Eficiencia, Eficacia y Exactitud
 Ya sabemos qué es eficacia, ¿qué será eficiencia?
→ Entendemos como eficiencia, el alcance de una solución en el
mejor tiempo posible, haciendo uso de la menor cantidad de
recursos.
-> Relacionamos espacio vs tiempo

 Formato general de eficiencia → f(x) = eficiencia


-> Es decir, la eficiencia de un algoritmo, es una función
que se examina a partir del número de elementos a ser
procesados.
Eficiencia, Eficacia y Exactitud
Analicemos
 Primer algoritmo:  Segundo algoritmo:

¿Cuántas veces se repite el cuerpo del bucle en cada algoritmo?

f(n) = n f(n) = n/2


Eficiencia, Eficacia y Exactitud
Analicemos
 Tercer algoritmo:  Cuarto algoritmo:

¿Cuántas veces se repite el cuerpo del bucle en cada algoritmo?

𝑓 𝑛 = log 2 𝑛 𝑓 𝑛 = log 2 𝑛
Análisis de Rendimiento
 Complejidad de Espacio
→ Es el espacio que el programa consume en memoria.

 Complejidad de Tiempo
→ Es la cantidad de tiempo que se requiere para ejecutar un
programa.
→ Formalmente lo denotamos como T(n), dependiente del
número de entradas.
Principio de Invarianza Algorítmica
 Pensemos en un algoritmo cualquiera, concretizado en un programa,
ejecutado en dos máquinas distintas…

Se obtienen los siguientes tiempos en cada máquina, M1 y M2


𝑇 𝑛 1=5 𝑇 𝑛 2 = 10
Siendo el mismo algoritmo, sabemos que se comparte la función T(n)
Constante de proporcionalidad K = 2 → Considerando que
𝑇 𝑛 1 = 𝑘𝑇 𝑛 2
Dejemos hasta aquí…
Tarea No 1 – Notación O-Grande
1. Llevar a cabo la lectura del capítulo 1.5 del texto guía [1].
Referencias Bibliográficas
1. Luis, Zahonero, Aguilar, J., & Ignacio. (2013). Estructuras datos en
java. ES: McGraw-Hill Interamericana - M.U.A. Disponible en: Libro.

También podría gustarte