Professional Documents
Culture Documents
algoritmos
Profra. Consuelo Varinia Garca Mendoza
Introduccin
Qu es un algoritmo?
Por qu elaboramos algoritmos
computacionales?
Qu algoritmos conoces?
Has comparado los algoritmos que elaboras
con otros que resuelvan el mismo problema?
Qu metodologa, tcnica o estratgica
utilizas cuando diseas un algoritmo?
Qu estudiaremos en Anlisis de
Algoritmos?
Temario
I. Tcnicas de anlisis
II. Estrategias de diseo
III. Completitud NP
Bibliografa recomendada
Baase, S. Van Gelder, A. (2001). Algoritmos Computacionales
Evaluacin
30% Examen
30% Participaciones, tareas, actividades en
clase y practicas
30% Practicas
Tarea
La complejidad de
los algoritmos
Anlisis de Algoritmos
Profra. Consuelo Varinia Garca Mendoza
El mejor algoritmo
Diferentes algoritmos pueden resolver el
Criterios de eleccin
De acuerdo a los recursos
Buscar el algoritmo ms adecuado al
dispositivo del que disponemos (ancho de
banda, espacio en memoria, batera, cmputo
paralelo (cluster), acceso a internet).
Eficiencia
El que tarde el menor tiempo en ejecutarse
ejecucin de un algoritmo?,
este tiempo ser igual en todos los
dispositivos ?
de qu factores va a depender?,
De que depende el TE de un
algoritmo?
Tamao de entrada (dimensin del vector que
Medida Real
Ejecutado los algoritmo con valores de entrada
Medida Terica
Encontrando T(n)
En un ordenador idealizado para una
entrada de tamao n
Considerando el tamao de la entrada ,
pero no su naturaleza.
Donde cada operacin elemental tomar
el mismo tiempo en ejecutarse
independientemente del ordenador o
dispositivo en que se ejecute
T(n)
T(n)
(OE).
Operaciones aritmticas bsicas
Asignaciones a variables
Llamadas a funciones y procedimientos
Comparaciones lgicas
Acceso estructuras indexadas bsicas (vectores y
matrices)
Recomendaciones al realizar la
medida terica
Realizar el estudio base al conjunto de
Ejemplo
Encontrar la posicin de un entero dado c
Identificar OE
// una asignacin 1
1. i=1
n)
// un incremento y una asignacin 2
3. j=j+1;
//un acceso a vector y una asignacin 2
4. if (a[j])==c)
5.
6. else
7.
return j;
return 0;
Casos de estudio
Caso mejor
Caso peor
Caso medio
Mejor caso
1. i=1
n)
3.
j=j+1;
4. if (a[j])==c)
5.
return j;
6. else
7.
return 0;
->2
x
2
1
1
T(n)=1+2+2+1=6
Peor caso
1. i=0
4
2. while (a[i] < c && j < n)
3.
j=j+1;
4. if (a[j])==c)
5.
return j;
6. else
7.
return 0;
2
1
1
Caso medio
1. i=1
4
2
< n)
3.
j=j+1;
4. if (a[j])==c)
5.
return j;
6. else
7.
return 0;
2
1
1
(n-1) / 2
Ejercicios
Algoritmo 1 (Hacer como ejemplo)
Algoritmo 2
Algoritmo 3
ordenamiento