La descarga está en progreso. Por favor, espere

La descarga está en progreso. Por favor, espere

Diseño y análisis de algoritmos

Presentaciones similares


Presentación del tema: "Diseño y análisis de algoritmos"— Transcripción de la presentación:

1 Diseño y análisis de algoritmos
Análisis de Algoritmos I

2 Introducción Análisis de Algoritmos I Complejidad Introducción
Métrica de complejidad: polinomio. Métrica de complejidad: exponencial. Análisis asintótico y gran O

3 Introducción Complejidad
Los computadoras no son los máquinas con recursos infinitos, y estimar cuánto tiempo toma para resolver un problema de un tamaño particular es, por consiguiente importante. Los recursos consumidos (principales) que son de interés medir, cuando se ejecuta un algoritmo son: Tiempo: complejidad temporal Cantidad de memoria requerida: complejidad espacial Intuición: la complejidad debe depender del “tamaño del problema” Ejemplo: Cantidad de datos de entrada, facturas a imprimir, cantidad de archivos a procesar, en análisis numérico se puede resolver un sistema de ecuaciones lineales, por ende, el tamaño sería la cantidad de ecuaciones del sistema (y sus variables)

4 Introducción Complejidad
Aunque los computadores de hoy en día son más baratos y eficientes, no debe cometerse el error de que por este hecho, no se debe preocuparse por los recursos, pues estos sigüien i seguirán siendo escasos. Ejemplo: Existen algunos algoritmos, que se verán en en el transcurso del ramo, para los cuales el tiempo requerido, independiente del poder computacional de la máquina, es extremadamente alto. Dada la naturaleza de estos problemas, incluso, no existe ningún algoritmo eficiente ni efectivo que logre llegar a una solución completa en un tiempo razonable. Def1: Un análisis de complejidad de tiempo (de un algoritmo), puede ser hecho independientemente de las características del computador en que éste se ejecutará.

5 Introducción Complejidad
Def2: Se requiere de una métrica para poder establecer este tipo de compeljidad a cualquier algoritmo. No es necesario que sea absolutamente precisa, basta con tener una cota aproximada que permita comprar dos o más soluciones (algoritmos) para el mismo problema. Por ejemplo, si se tiene un algoritmo para calcular para y se requiere una “función” o métrica dependiente de n que describa cuan rápido entrega el resultado un algoritmo dado. Esa métrica de complejidad debe permitir comparar dos algoritmos que resuelvan un mismo problema y determinar cual es “mejor” A continuación se verá una aproximación informal a esta o estas funciones de complejidad temporal

6 Métrica de complejidad: polinomio
Def3: Cualquier función de la siguiente forma siguiente se llama un polinomio: f(X) = aO + a1 X + a2 X an X, Si an es distinta de cero, entonces, se dice que, el polinomio es de grado n Para utilizar esta definición en complejidad computacional, son relevantes los polinomios de grado 3 o menos: Funciones constantes (f (X)) = polinomio de grado 0 Funciones lineales (f (X)) = polinomio de grado 1 Funciones cuadráticas (f (X)) = polinomio de grado 2 Funciones cúbicas (f (X)) = polinomio de grado 3 Def4: Si X correspondiera al “tamaño” del problema, entonces se podría asociar un polinomio a la forma en la cual el tiempo variaría en base a la cantidad de datos. Ejemplo: si el tiempo de ejecución se incrementa “proporcionalmente”, con respecto al tamaño del problema, entonces se llama a este algoritmo “complejidad lineal”, y se puede decir que el tiempo de resolución es corto. n 2 O 1 2 3

7 Métrica de complejidad: polinomio
Def5: De la misma manera se puede decir que un algoritmo tiene un “tiempo de resolución” cuadrático o cúbico. Todos estos son algoritmos “acotados” en cuanto a su tiempo de solución, por una función de tipo polinomio o polinomial. Ejemplos: Algoritmos lineales: cálculo de IVA para una factura. Fragmento de Pascal : lineal suma := 0; for i := 1 to n suma := suma + a[i] Algoritmos cuadráticos: la entrada consiste en una canitdad de números2n, ai, i = l..n y bi, i = l..n, el problema es evaluar el producto de ai*bj para todo i y j. Todos estos cálculos se pueden realizar en un doble loop, usando for, donde el total de operaciones necesarias es entonces n. Si n se considera como la “medida” de la dificultad o el “tamaño” del problema, entonces la complejidad temporal está dada por f (n) = n. Ejercicio, mostrar que la omplejidad temporal para multiplicar dos matrices cuadradas de nXn es n 2 2 3

8 Métrica de complejidad: exponencial
Def6: Cualquier función de la siguiente forma siguiente se llama una función exponencial: f(X) = Ca, a se llama la base y x es el exponente. Si n pert domm |N, la función f(X) = a, puede ser definida en forma recursiva, como siguie, a° = 1 a = a * a Esta expresión recursiva enfatiza el rasgo esencial de la función exponencial: su valor para n+1 es a veces su valor * n. Por ejemplo, el crecimiento de la población tiende a ser exponencial, porque el número de las personas en el año n + 1 tiende a ser un múltiplo del tamaño de la población presente. X X n+l n

9 Métrica de complejidad: exponencial
Es matemáticamente conveniente usar el número e como la base para la función exponencial dónde e se define: Cuando esta base es usada, se puede construir la exponencial como: Ejemplos: f(n) = , en un árbol completo, cada nodo de la rama tiene dos subárboles, y el número de nodos dobla en cada nivel, hay nodos terminales de dónde n es la altura del árbol. cuento del inventor de ajedrez, un grano de trigo en el pimer cuadrado, dos en el segundo, cuatro en el tercero, 8 en el cuarto casilleros- cuantos granos ??? n n - 1

10 Análisis asintótico y gran O
Complejidad Análisis asintótico y gran O Def7: Sea f,g Z R. Se dice que g domina f (o f es dominado por g) si existe constantes y tal que | f(n)| <= m|g(n)| para todo donde n >= k Note que como se consideran los valores de f(1), g(1), f(2),g(2),....., hay un punto (llamado k) después del cual el tamaño de f(n) esta acotado inferiormente por un múltiplo positivo (m) del tamaño de g(n). También cuando g domina f, entonces |f(n)/g(n)| <= m (esto es, el tamaño del cuociente f(n)/g(n) esta acotado por m) para aquellos donde n >=k y g(n) <> 0 Definición 8: Cuando f es dominado por g se dice que f es de orden (al menos) g y la notación de esta idea es lo que se llama gran-O. Formalmente , donde O(g) se lee “orden de g” o “gran-O” de g. Esta notación , O(g) representa el conjunto de todas las funciones con dominio Z+ y codominio R que son dominadas por g.

11 Análisis asintótico y gran O
Complejidad Análisis asintótico y gran O Ejemplo1: Sea f,g Z R, funciones , para Si se calcula f(n) y g(n) para encontramos f(1)=5, g(1)=1,......,f(4)=20, g(4)=16. Sin embargo a partir de ,por lo que encontramos que .Entonces con m=1 y k=5 , tenemos que para , . De acuerdo con la def. 7 , g domina a f y También para Las constantes k y m, no necesitan ser únicas. Se puede demostrar,el mismo problema para k=1 y m=5. Se tiene que Ejercicio: Generalie la demostración para f(n)=an y Ejemplo2: Para las mismas funciones del ejemplo 1, mostrar que Por contradicción, basta con probar que no existe m que acote a partir de un cierto k . Es claro que siempre va a existir un n para el cual , por lo que |g(n)/f(n)| no está acotada mor ningún m.

12 Análisis asintótico y gran O
Complejidad Análisis asintótico y gran O Ejemplo3: Sea f,g Z R, funciones Entonces para todo , así que con m= 16 y k=1, se demuestra que f es dominada por g , y , o Al contrario también es verdad, f domina a g , pues 7n – 4 > 0 para todo , se puede escribir para cualquier Entonces se puede escribir , por lo tanto En este caso

13 Análisis asintótico y gran O
Fundamentos (Parte 4) Análisis asintótico y gran O Generalización. Sea f:Z R una función polinomial donde f(n) es un polinomio ya definido. Para aO , a1 , a at, pert |R , at <> 0 , n pert |N, entonces | f(n) | = | aO + a1 n + a2 n at n, | <= | aO | + | a1 n | + | a2 n | | at n , | = | aO | + | a1 | n + | a2 | n | at | n , <= | aO | n + | a1 | n + | a2 | n | at | n , = (| aO | +| a1 | + | a2 | | at |) n Usando la def7 , sea m = (| aO | +| a1 | + | a2 | | at |) y k =1, y sea g: Z R dada por g(n) = n . Entonces |f(n)| <= m|g(n)| para todo n >= k, asi f es dominada por g, o 2 t 2 t 2 t n n n t t n

14 Análisis asintótico y gran O
Fundamentos (Parte 4) Análisis asintótico y gran O Aplicación de O en el analisis de algoritmos Lo que se busca es encontrar la mejor o más cercana cota Tabla de órdenes más comunes Forma O(x) Nombre O(1) Constante O(log x) Logarítmico O(x) Lineal O(xlog x) xLogarítmico O(x) Cuadrático O(x) Cúbico 2 2 2 3 O(x ), m=0,1,2,3 Polinomial m x O(C ), c>1 Exponencial O(n!) Factorial


Descargar ppt "Diseño y análisis de algoritmos"

Presentaciones similares


Anuncios Google