Introducción

24
ANÁLISIS DE ALGORITMOS Curso inter-semestral Presenta: Omar Yeladaqui Círigo

description

Análisis de algortimos

Transcript of Introducción

Page 1: Introducción

ANÁLISIS DE ALGORITMOS

Curso inter-semestralPresenta: Omar Yeladaqui Círigo

Page 2: Introducción

I. INTRODUCCIÓN

Cuando se dice que un problema tiene solución, significa que existe un algoritmo susceptible de implantarse en una computadora, capaz de producir la respuesta correcta para cualquier instancia del problema en cuestión.

En la mayoría de los casos existen más de una solución; existen algunos criterios para elegir la mejor.

Page 3: Introducción

Criterios para seleccionar solución:a) Criterios orientados a minimizar el costo de

desarrollo: claridad, sencillez y facilidad de implantación, depuración y mantenimiento.

b) Criterios orientados a disminuir el costo de ejecución: tiempo de procesador y cantidad de memoria utilizados.

1. INTRODUCCIÓN

Page 4: Introducción

Los recursos que consume un algoritmo pueden estimarse mediante herramientas teóricas y constituyen, por lo tanto, una base confiable para laelección de un algoritmo. La actividad dedicada a determinar la cantidad de recursos que consumen los algoritmos se le denomina análisis de algoritmos

1. INTRODUCCIÓN

Page 5: Introducción

I.I.I DEFINICIÓN DE ALGORITMO

“Un algoritmo es un conjunto finito de instrucciones no ambiguas y efectivas que indican cómo resolver un problema, producen al menos una salida, reciben cero o más entradas y, para ejecutarse, necesitan una cantidad finita de recursos.”

1.1 Conceptos básicos

Page 6: Introducción

• Si un conjunto de instrucciones tiene todas las características de un algoritmo, excepto ser finito en tiempo se le denomina proceso computacional*.

• Se asume que un problema tiene solución algorítmica si además de que el algoritmo existe, su tiempo de ejecución es razonablemente corto.

1.1. Conceptos básicos

Page 7: Introducción

La función complejidad, f(n); donde n es el tamaño del problema, da una medida de la cantidad de recursos que un algoritmo necesitará al implantarse y ejecutarse en alguna computadora.

La función complejidad es monótona creciente: (f(n) > f(m) n > m)

1.2. Complejidad de algoritmos

Page 8: Introducción

1.2. Complejidad de algoritmos

Page 9: Introducción

1.2. Complejidad de algoritmos

La memoria y el tiempo de procesador son los recursos sobre los cuales se concentra todo el interés en el análisis de un algoritmo, así pues distinguiremos dos clases de función complejidad:

a) Función complejidad espacial. Mide la cantidad de memoria que necesitará un algoritmo para resolver un problema de tamaño n.

Page 10: Introducción

1.2. Complejidad de algoritmos

b) Función complejidad temporal. Indica la cantidad de tiempo que requiere un algoritmo para resolver un problema de tamaño n; viene aser una medida de la cantidad de CPU que requiere el algoritmo.

Page 11: Introducción

1.2. Complejidad de algoritmos

La cantidad de memoria que utiliza un algoritmo depende de la implantación, no obstante, es posible obtener una medida del espacio necesario con la sola inspección del algoritmo. Para obtener esta cantidad es necesario sumar todas las celdas de memoria que utiliza. En general se requerirán dos tipos de celdas de memoria:

Page 12: Introducción

1.2. Complejidad de algoritmosa) Celdas estáticas. Son las que se utilizan en todo el tiempo que dura la ejecución del programa, por ejemplo, las variables globales.

b) Celdas dinámicas. Se emplean sólo durante un momento de la ejecución, y por tanto pueden ser asignadas y devueltas conforme se ejecuta el algoritmo, por ejemplo, el espacio de la pila utilizado por las llamadas recursivas.

Page 13: Introducción

1.2. Complejidad de algoritmosEjemplo 1: El Algoritmo 1, que realiza búsqueda lineal sobre un arreglo A con n elementos, y devuelve la posición en la que se encuentra el elemento Valor; si Valor no se encuentra devuelve n+1: El algoritmo realiza sumas (+), asignaciones (), comparaciones (<= y <> ) y operaciones lógicas (^).

Page 14: Introducción

1.2. Complejidad de algoritmos

Page 15: Introducción

1.2. Complejidad de algoritmos

Para hacer una estimación de la cantidad de tiempo que tarda un algoritmo en ejecutarse, no es necesario contar el número total de operaciones que realiza. Se puede elegir alguna, a la que se identificará como operación básica que observe un comportamiento parecido al del número total de operaciones realizadas y que, por lo tanto, será proporcional al tiempo

Page 16: Introducción

1.2. Complejidad de algoritmos

Ejemplo 2 El Algoritmo 2 obtiene el producto de los dos valores más grandes contenidos en un arreglo A de n enteros.

Page 17: Introducción

1.2. Complejidad de algoritmos

Page 18: Introducción

1.2. Complejidad de algoritmos

En este algoritmo se realizan las siguientes operaciones:

a) Comparación entre mayor1; mayor2 y los elementos del arreglo.b) Asignaciones a mayor1 y mayor2c) Asignación al índice id) Asignación a la funcióne) Producto de los mayoresf) Incremento al índice ig) Comparación entre el índice i y la longitud del arreglo n

Page 19: Introducción

1.2. Complejidad de algoritmos

Page 20: Introducción

1.2. Complejidad de algoritmos

En resumen, el análisis de un algoritmo se puede hacer considerando sólo aquella operación que cumpla los siguientes criterios:a) Debe estar relacionada con el tipo de problema que se resuelve.b) Debe ejecutarse un número de veces cuyo modelo de crecimiento sea similar al del número total de operaciones que efectúa el algoritmo.

Page 21: Introducción

1.2. Complejidad de algoritmos

Calculando la función complejidad temporal:Ejemplo 3 Considérese el Algoritmo 1, para hacer el análisis de su comportamiento tomemos como operación básica las comparaciones con elementos del arreglo y como caso muestra: A = [2; 7; 4; 1; 3] y n = 5:• Si Valor = 2, se hace una comparación, ft(5) = 1• Si Valor = 4, se hacen tres comparaciones, ft(5) = 3• Si Valor = 8, se hacen cinco comparaciones, y ft(5) = 5

Page 22: Introducción

1.2. Complejidad de algoritmos

Se distinguen tres casos en el valor de la función complejidad temporal:

Page 23: Introducción

1.2. Complejidad de algoritmos

Ejemplo 4 Algoritmo de búsqueda lineal.Problema: Búsqueda lineal de un valor en un arreglo de tamaño n:Tamaño del Problema: n = número de elementos en el arreglo.Operación básica: Comparación del valor con los elementos del arreglo.

Page 24: Introducción

1.2. Complejidad de algoritmos

Análisis Temporali) Mejor caso: ocurre cuando el valor es el primer elemento del arreglo. ft(n) = 1ii) Peor caso: sucede cuando el valor no se encuentra en el arreglo. ft(n) = n + 1iii) Caso medio: ft(n) = 1P(1) + 2P(2) + 3P(3) + 4P(4) + ::: + nP(n) + nP(n + 1)