La descarga está en progreso. Por favor, espere

La descarga está en progreso. Por favor, espere

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

Presentaciones similares


Presentación del tema: "Diseño y análisis de algoritmos Análisis de Algoritmos I."— 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 –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 espacial –Cantidad de memoria requerida: complejidad espacial –Intuición: –Intuición: la complejidad debe depender del tamaño del problema –Ejemplo: –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) Complejidad

4 Introducción –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. extremadamente –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: –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á. Complejidad

5 Introducción –Def2: –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 dependiente de n 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 Complejidad

6 Métrica de complejidad: polinomio –Def3: –Def3: Cualquier función de la siguiente forma siguiente se llama un polinomio: f( X ) = a O + a 1 X + a 2 X a n X, n Si a n 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: –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. Complejidad 2 n O 1 2 3

7 Métrica de complejidad: polinomio –Def5: –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 n X n es n Complejidad 2 2 3

8 Métrica de complejidad: exponencial Complejidad –Def6: –Def6: Cualquier función de la siguiente forma siguiente se llama una función exponencial: f( X ) = C a, n pert domm 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 n+ln X

9 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) = 2, en un árbol completo, cada nodo de la rama tiene dos subárboles, y el número de nodos dobla en cada nivel, hay 2 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 ??? Métrica de complejidad: exponencial Complejidad n n - 1

10 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 acotado acotado por m)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)| =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 Esta notación, O(g) representa el conjunto de todas las funciones con dominio Z+ y codominio R que son dominadas por g. Análisis asintótico y gran O Complejidad

11 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. Análisis asintótico y gran O

12 Complejidad 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 Análisis asintótico y gran O

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

14 Aplicación de O en el analisis de algoritmos 1.Lo que se busca es encontrar la mejor o más cercana cota 2.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 Análisis asintótico y gran O Fundamentos (Parte 4) O(C ), c>1Exponencial x O(x ), m=0,1,2,3Polinomial m O(n!)Factorial


Descargar ppt "Diseño y análisis de algoritmos Análisis de Algoritmos I."

Presentaciones similares


Anuncios Google