Sunteți pe pagina 1din 16

UNIDAD 5

Unidad 5: Algoritmos fundamentales


Algoritmos de bsqueda: lineal y binaria. Algoritmos de ordenacin: mtodos de seleccin, intercambio, insercin. Ordenacin por ndices. Mtodos de ordenacin eficientes. Anlisis de eficiencia: peor caso y mejor caso.

Anlisis de eficiencia de un algoritmo


Un algoritmo es eficiente si realiza una administracin correcta de los recursos del sistema en el cual se ejecuta.

Anlisis de eficiencia de algoritmos


Tiempo de ejecucin: mas eficiente cuando cumplen con la especificacin del problema en el menor tiempo de ejecucin.

Administracin de uso de memoria: utilizacin de estructuras de datos adecuadas de manera de minimizar la memoria ocupada.

Anlisis de eficiencia de un algoritmo


Anlisis de algoritmos segn su tiempo de ejecucin
Se toman bsicamente las comparaciones y las asignaciones y se les asigna una unidad de medida a cada una. Hay dos formas de estimar el tiempo de ejecucin de un algoritmo. a) Realizar un anlisis terico, calculando el nmero de asignaciones y de comparaciones que realiza. b) Realizar un anlisis emprico, aplicando distintos juegos de datos a la implementacin del algoritmo, midiendo su tiempo de respuesta. Este anlisis es fcil de implementar pero es afectado por algunos factores como: c) La velocidad de la mquina. d) Los datos empleados en la ejecucin Es importante poder realizar un anlisis terico

Anlisis de eficiencia de un algoritmo


Es importante poder realizar un anlisis terico respecto al tiempo de ejecucin para poder realizar una comparacin relativa entre las diferentes soluciones algortmicas, sin depender de los datos de comparacin.
Definicin: El tiempo de ejecucin T(n) de un algoritmo se dice de orden de f(n) cuando existe una funcin matemtica f(n) que acota a T(n). T(n)=O(f(n)) si existe una constante c y n0 tales que T(n) > c f(n) cuando n > n0

Anlisis de eficiencia de un algoritmo


T(n)=O(f(n)) si existe una constante c y n0 tales que T(n) > c f(n) cuando n > n0
Ejemplo: T(n) = 1000*n

f(n)=n2 para c=1; n>1000 T(n)=O(n2)


Eficiencia

T(n)=1000*n f(n)=n*n

10 0

20 0

30 0

40 0

50 0

60 0

70 0

80 0

90 0

10 00 11 00 12 00 13 00 14 00 15 00

Anlisis de eficiencia de un algoritmo Reglas generales


Regla1: para lazos incondicionales. El tiempo de ejecucin de una lazo incondicional es, a lo sumo, el tiempo de ejecucin de las sentencias que estn dentro del lazo, multiplicada por la cantidad de iteraciones que se realizan. Regla2: para lazos incondicionados anidados. Se realiza el anlisis desde adentro hacia fuera. El tiempo de ejecucin de un bloque dentro de lazos anidados es el tiempo de ejecucin del bloque multiplicado por el producto de los tamaos de todos los lazos incondicionados.
Regla 3: para bloques de la forma If condicion s1 else s2 . El tiempo de ejecucin no es mayor al max(t1,t2) donde t1 es el tiempo de ejecucin de s1 y t2 el tiempo de ejecucin de s2. Regla 4: para sentencias consecutivas. Un fragmento de cdigo formado por dos bloques consecutivos, uno con tiempo T1(n) y otro con tiempo T2(n), el tiempo total es del orden del max entre el orden de T1 y T2.

Algoritmos de bsqueda secuencial


Mejor caso (cuando es el primero): Se realiza una sola inspeccin.

Peor caso (cuando no est): Se realizan n inspecciones. El algoritmo es de orden n.

Algoritmos de bsqueda binaria


Mejor caso

Se realiza una sola inspeccin.

Algoritmos de bsqueda binaria

Peor caso
Cant de elementos a encontrar Cantidad Total de elementos en la lista

Cant de iteraciones

1
2 3 4 m

1 item
2 items 4 items 8 items 2 m-1

1
3 7 15 2m - 1
2 3 4

1
1 2 3 2 3 4 1 2 4 3 3 2 3 4 1 4 3 4 2 4 3 4

Con m comparaciones se puede encontrar a lo sumo n elementos, donde n < 2m 1. Entonces m > log2 (n+1). En el peor de los casos, la cantidad de iteraciones es del orden del log2 (n).

Anlisis de diversos mtodos de ordenamiento


A continuacin se realizar el anlisis de los siguientes mtodos de ordenamiento: Seleccin Directa Seleccin Intercambio Insercin

Para realizar este anlisis se tomar como base la cantidad accesos y de comparaciones en el vector. El mejor caso ser cuando el vector ya se encuentre ordenado. El peor caso ser cuando el vector se encuentro ordenado a la inversa.

Mtodo de seleccin directa

Peor caso:
Cantidad de comparaciones C=n-1 + n-2 + n-3 + + 1 = n ( n-1)/2

Cantidad de intercambios I= 3C = 3/2 n ( n-1)

Mejor caso: es igual al peor de los casos.

Mtodo de seleccin

Peor caso:
Cantidad de comparaciones C=n-1 + n-2 + n-3 + + 1 = n ( n-1)/2

a[j]<a[p]

Cantidad de intercambios I= 3 ( n-1)

Mejor caso: es igual al peor de los casos.

Mtodo de intercambio (Burbuja)

Peor caso:

Cantidad de comparaciones
C= (n-1)+(n-2)+1=n(n-1)/2

Cantidad de intercambios
I= 3/2 n(n-1)

Mejor caso: La cantidad de comparaciones es igual al del peor caso, sin embargo, no se realizan intercambios.

Mtodo de insercin (Baraja)

Peor caso:
Cantidad de comparaciones C= 1+2+3++(n-1)=n(n-1)/2 Cantidad de accesos al vector: en cada iteracin de i se realizan (2 + j) intercambios. I= 2(n-1)+n(n-1)/2 = (n-1)(n+4)/2

Mejor caso:

Cantidad de comparaciones: Se realiza una comparacin por cada valor de i


C=n-1

Cantidad de accesos al vector: no se realizan intercambios pero si se realizan dos accesos al vector por cada valor de i
I=2(n-1)

Comparacin entre mtodos de ordenamiento

Mtodo

Seleccin

Intercambio

Insercin

Mejor caso

C=n(n-1)/2 I=3(n-1)

C=n(n-1)/2 I=0
C=n(n-1)/2 I=3n(n-1)/2

C=(n-1) I=2(n-1)
C=n(n-1)/2 I=(n-1)(n+4)/2

Peor caso C=n(n-1)/2 I=3(n-1)

Existen otros mtodos de ordenacin mas eficientes como lo son: M-Sort Q-Sort Shell Estos mtodos sern analizados mas adelante.

Ordenacin por ndices


Cuando se deben ordenar informacin que est compuesta por datos heterogneos, algunos de los cuales pueden servir como criterio para ordenar los elementos, se puede utilizar uno o mas ndices que permitirn el acceso a la informacin.
ndice por Apellido 5 2 1 4 3 ndice por Cdigo 3 2 5 1 4

321 129 56 345 154

Gutirrez, Mara lvarez, Jos Rivera, Lucas Prez, Pa lvarez, Ana

San Juan 123 Lerma 23 Corrientes 120 Santa Fe 123 Alvarado 1234

El ndice indicar el orden en que se mostrarn los datos segn el criterio seleccionado para ordenar los datos.

S-ar putea să vă placă și