Anda di halaman 1dari 20

Introduccin

Tcnicas Fundamentales de anlisis y diseo de

algoritmos.

ESTRUCTURAS DE DATOS

M.C. BLANCA IDALIA MARTNEZ CAVAZOS

Introduccin
Algoritmo:

Conjunto de reglas para resolver un problema. Su ejecucin requiere unos recursos.


Un algoritmo es mejor cuantos menos recursos

consuma, su facilidad de programarlo, corto, fcil de entender, robusto, etc.


Eficiencia: Relacin entre los recursos

consumidos y los productos conseguidos.


ESTRUCTURAS DE DATOS M.C. BLANCA IDALIA MARTNEZ CAVAZOS

Introduccin
Recursos consumidos:

Tiempo de ejecucin. Memoria principal: Entradas/salidas a disco. Comunicaciones, procesadores, etc.

Lo que se consigue: Resolver un problema de forma exacta, forma aproximada o algunos casos.

ESTRUCTURAS DE DATOS

M.C. BLANCA IDALIA MARTNEZ CAVAZOS

Introduccin
Recursos consumidos: Ejemplo. Cuntos recursos de tiempo y memoria consume el siguiente algoritmo sencillo? i:= 0 a[n+1]:= x repetir i:= i + 1 hasta a[i] = x Respuesta: Depende. De qu depende? De lo que valga n y x, de lo que haya en a, de los tipos de datos, de la mquina...

ESTRUCTURAS DE DATOS

M.C. BLANCA IDALIA MARTNEZ CAVAZOS

Introduccin
En general los recursos dependen de: Factores externos. El ordenador donde lo ejecutemos: 286, Pentium III, Cray,... El lenguaje de programacin y el compilador usado. La implementacin que haga el programador del algoritmo. En particular, de las estructuras de datos utilizadas. Tamao de los datos de entrada.

ESTRUCTURAS DE DATOS

M.C. BLANCA IDALIA MARTNEZ CAVAZOS

Introduccin
Ejemplo. Calcular la media de una matriz de NxM. Contenido de los datos de entrada. Mejor caso. El contenido favorece una rpida ejecucin. Peor caso. La ejecucin ms lenta posible. Caso promedio. Media de todos los posibles contenidos. Los factores externos no aportan informacin sobre el algoritmo. Conclusin: Estudiar la variacin del tiempo y la memoria necesitada por un algoritmo respecto al tamao de la entrada y a los posibles casos, de forma aproximada (y parametrizada) no aportan informacin sobre el algoritmo.
ESTRUCTURAS DE DATOS M.C. BLANCA IDALIA MARTNEZ CAVAZOS

Introduccin
Normalmente usaremos la notacin T(N)=..., pero qu significa

T(N)? Tiempo de ejecucin en segundos. T(N) = bN + c. Suponiendo que b y c son constantes, con los segundos que tardan las operaciones bsicas correspondientes. Instrucciones ejecutadas por el algoritmo. T(N) = 2N + 4. Tardarn todas lo mismo? Ejecuciones del bucle principal. T(N) = N+1. Cunto tiempo, cuntas instrucciones,...? Sabemos que cada ejecucin lleva un tiempo constante, luego se diferencia en una constante con los anteriores.

ESTRUCTURAS DE DATOS

M.C. BLANCA IDALIA MARTNEZ CAVAZOS

Introduccin
Asignacin de tiempos, para el conteo de instrucciones. Algunas reglas bsicas. Operaciones bsicas (+, -, *, :=,...): Una unidad de tiempo, o alguna constante. Operaciones de entrada salida: Otra unidad de tiempo, o una constante diferente. Bucles FOR: Se pueden expresar como una sumatoria, con los lmites del FOR. IF y CASE: Estudiar lo que puede ocurrir. Mejor caso y peor caso segn la condicin. Se puede predecir cundo se cumplirn las condiciones? Llamadas a procedimientos: Calcular primero los procedimientos que no llaman a otros. Bucles WHILE y REPEAT: Estudiar lo que puede ocurrir. Existe una cota inferior y superior del nmero de ejecuciones? Se puede convertir en un FOR?
ESTRUCTURAS DE DATOS M.C. BLANCA IDALIA MARTNEZ CAVAZOS

Tcnicas fundamentales de anlisis y diseo de algoritmos


El rendimiento o complejidad est ligado nicamente al algoritmo. En ningn momento con la velocidad del computador o con las facilidades de eficiencia que presenta un lenguaje de programacin, ni con el estilo hbil del programador.
Para calcular este rendimiento se tiene en cuenta dos pasos principales:

1. Caracterizar las operaciones bsicas del algoritmo. Operaciones bsicas constituyen el trabajo realizado para resolver el problema. 2. Debe considerarse sobre quien va a recaer la operacin. Se considera entonces los datos (tamao y configuracin).

9 ESTRUCTURAS DE DATOS M.C. BLANCA IDALIA MARTNEZ CAVAZOS

Tcnicas fundamentales de anlisis y diseo de algoritmos


El tamao, esto es el nmero de datos; sea Dn = {datos del tamao n}, para un algoritmo cualquiera.

Ejemplo: Establecer si un elemento Q pertenece a un vector (lista), depende del nmero de elementos del vector. Para un Dn conocido existirn mltiples instancias posibles.

10 ESTRUCTURAS DE DATOS M.C. BLANCA IDALIA MARTNEZ CAVAZOS

Tcnicas fundamentales de anlisis y diseo de algoritmos


El anlisis computacional de un problema requiere: a) Una medida de esfuerzo (operaciones bsicas) b) Una medida del tamao ( sobre quien va a recaer el esfuerzo)

En base a esto, se pueden clasificar los problemas que se someten al computador para ser solucionados desde el punto de vista del tamao y del esfuerzo.

11 ESTRUCTURAS DE DATOS M.C. BLANCA IDALIA MARTNEZ CAVAZOS

Tcnicas fundamentales de anlisis y diseo de algoritmos


Clasificacin segn el tamao: a. bsqueda, hallar un valor X en una entrada, tal que X satisface la condicin Y; b. Estructuracin, transformar la entrada para que satisfaga la propiedad Y; c. Construccin, construir X para que satisfaga la propiedad Y; d. optimizacin, encontrar XC que satisfaga la mejor propiedad Y; e. Decisin, decidir si la entrada satisface la propiedad Y; f. Adaptativos, mantener la propiedad Y a travs del tiempo.

12 ESTRUCTURAS DE DATOS M.C. BLANCA IDALIA MARTNEZ CAVAZOS

Tcnicas fundamentales de anlisis y diseo de algoritmos


Clasificacin segn el esfuerzo: a. Conceptualmente difciles, no hay algoritmo asociado por que no se comprende el problema cabalmente; b. Analticamente difciles, existe algoritmo para resolver el problema pero no se sabe analizar cuanto tiempo tomar solucionar cada instancia; c. Computacionalmente difciles, hay algoritmos y se sabe analizar, pero el anlisis indica que instancia relativamente pequeas tomarn millones de aos resolverla; d. Computacionalmente imposible, se ha demostrado que no existe algoritmo alguno para hallar la solucin del problema.

13 ESTRUCTURAS DE DATOS M.C. BLANCA IDALIA MARTNEZ CAVAZOS

Anlisis asinttico de algoritmos


Anlisis de Algoritmos
Intento de caracterizar el algoritmo en

trminos de la cantidad de computacin y memoria que se necesita para resolver un problema.

La moneda tiene dos caras: La dificultad del problema y la eficiencia del algoritmo en resolverlo.

14 ESTRUCTURAS DE DATOS M.C. BLANCA IDALIA MARTNEZ CAVAZOS

Anlisis asinttico de algoritmos


Algoritmos y problemas
Cada algoritmo resuelve a un problema particular.

Hay varias maneras de resolver un problema.


Algunas maneras son buenas y otras son malas. El propsito del anlisis de algoritmos es identificar los algoritmos buenos.

15 ESTRUCTURAS DE DATOS M.C. BLANCA IDALIA MARTNEZ CAVAZOS

Anlisis asinttico de algoritmos


Calidad de algoritmos
Tiempo total de computacin

Nmero de operaciones realizadas por el algoritmo. Nmero de transiciones tomadas por la mquina turing que ejecuta el algoritmo. Cantidad de memoria utilizada Nmero y tamao de las variables Posicin extrema a la derecha que se llega a visitar en la cinta de la Mquina Turing durante la ejecucin.

16 ESTRUCTURAS DE DATOS M.C. BLANCA IDALIA MARTNEZ CAVAZOS

Anlisis asinttico de algoritmos


Operaciones bsicas
Cuando el algoritmo est expresado en pseudocdigo, no lo vamos a convertir en una mquina Turing.

Aritmtica simple Lgica simple Comparaciones simples Asignaciones simples Saltos

Buscamos contar la cantidad de las operaciones bsicas que contiene el algoritmo.

17 ESTRUCTURAS DE DATOS M.C. BLANCA IDALIA MARTNEZ CAVAZOS

Anlisis asinttico de algoritmos


Instancias

Entrada

Salida

Para cada problema, hay varias instancias que son los datos particulares de entrada del problema.
18 ESTRUCTURAS DE DATOS M.C. BLANCA IDALIA MARTNEZ CAVAZOS

Anlisis asinttico de algoritmos


Dificultad de instancias

No todas las instancias son iguales en trminos de dificultad de resolucin. Por ejemplo, la Mquina Turing de incremento unitario toma una cantidad diferente de transiciones cuando est presentando con entradas diferentes. El tamao de la entrada evidentemente afecta, pero tambin afecta su estructura. La teora clsica de complejidad computacional se formula en trminos del tamao de la instancia.
19 ESTRUCTURAS DE DATOS M.C. BLANCA IDALIA MARTNEZ CAVAZOS

Anlisis asinttico de algoritmos


Tamao de la instancia

Para llegar a la comparabilidad, uno busca siempre calcular el tamao de instancia en los mismos trminos.
La manera ms confiable es convertir todo en binario y luego contar los bits. La manera ms fcil depende del problema, pero es tpicamente natural y evidente.
20 ESTRUCTURAS DE DATOS M.C. BLANCA IDALIA MARTNEZ CAVAZOS