Diseño y análisis de algoritmos

Slides:



Advertisements
Presentaciones similares
Complejidad Computacional
Advertisements

Diseño y análisis de algoritmos
Diseño y análisis de algoritmos
Diseño y análisis de algoritmos
Funciones En nuestra vida cotidiana tenemos experiencia con relación o correspondencias de magnitudes . Ejemplos : En un almacén , a cada producto le corresponde.
Recursión y Relaciones de Recurrencia
LA TRANSFORMADA Z Y SUS APLICACIONES
Introducción a los Algoritmos
¿ Que es la complejidad de un algoritmo ?
Resolución de Problemas Algoritmos y Programación
Tipos de funciones Por: Carlos Alberto García Acosta
ECUACIONES DE 2º GRADO.
Técnico en programación de Software
Relaciones y Funciones
Unidad académica: Ingenierías
CÁLCULO DIFERENCIAL.
ALGORITMOS 2 DIGITALES II
Ecuaciones diferenciales de 1er orden :
Guías Modulares de Estudio Matemáticas IV Parte A
FUNCIONES MATEMATICAS
Funciones Como calculadora, Notación f(x), dominio restringido y recorrido o rango.
Unidad 8 Funciones.
Prof. Esteban Hernández
Estadística Descriptiva: 4. Correlación y Regresión Lineal
Tema 2: Métodos de ajuste
Introducción a las Funciones Prof. Evelyn Dávila
Programación de Computadores
EXPONENTES Y RADICALES
Exponentes y Logaritmos.
Resolución de Problemas Método Simplex
DÍA 05 * 1º BAD CT SUCESIONES Y LÍMITES
TIPOS DE MODELOS DE REGRESIÓN Y SUPUESTOS PARA EL MODELO A
A TRAVÉS DE LOS ESTÁNDARES DE EXCELENCIA EN MATEMÁTICAS Estándar 2:
Análisis de Algoritmos
Análisis de Algoritmos
Introducción a las Funciones Prof. Evelyn Dávila
Introducción al análisis de algoritmos

Representación de Señales y Ruido por medio de Series Ortogonales
Descomposición Factorial Unidad 5
Guías Modulares de Estudio Matemáticas IV – Parte B
Ecuaciones Algebraicas
4.  Métodos matemáticos.
Unidad 1: FUNDAMENTOS DE COMPUTACIÓN Y PSEUDOLENGUAJE
Análisis de algoritmos Generalidades
Ecuaciones Algebraicas
1.Función y ecuación polinomial
Límites y continuidad Podríamos empezar diciendo que los límites son importantes en el cálculo, pero afirmar tal cosa sería infravalorar largamente su.
Seguridad Informática y Criptografía Material Docente de Libre Distribución Ultima actualización: 03/03/03 Archivo con 28 diapositivas Jorge Ramió Aguirre.
Diseño y análisis de algoritmos Análisis de Algoritmos II.
Elaboración de algoritmos usando lógica de programación
Escuela de Ciencias Basicas, Tecnología e Ingeniería
FUNCIONES LINEÁLES Y CUÁDRATICAS
Modelo matemático de las funciones poli nominales
QUE SON FUNCIONES MATEMATICAS CONCEPTOS BASICOS
Sesión 5 Tema: Operaciones en la recta real
La chispa de las funciones
Actualizado agosto 2010 por Guiomar Mora de Reyes
“CURSO PROPEDÉUTICO PARA EL MEJORAMIENTO DEL PENSAMIENTO MATEMÁTICO”
Logaritmos.
QUINTA CONFERENCIA Lugar: Oficinas Generales Fecha: 15 de Diciembre de 2007 Conferencista: Prof. Carlos Betancourt Monroy Centro de Estudios Científicos.
75.41 Algoritmos y Programación II Cátedra Ing. Patricia Calvo Complejidad algorítmica.
6. Sistemas de ecuaciones diferenciales lineales
Ecuación polinomial Ecuación de primer grado Ecuación de segundo grado.
Profesor: Jorge Pérez Cabrera
Tema 1 : Introducción y errores
Hernández Camacho Víctor Jesus Islas Sánchez Karla Vanessa
Ing. Haydeli del Rosario Roa Lopez
Cálculo Diferencial.
FUNCIONES EXPONENCIALES Y LOGARÍTMICAS. 1. Funciones exponenciales. Una función exponencial es una función cuya expresión es siendo la base a un número.
Transcripción de la presentación:

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

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

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)

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á.

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

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

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

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

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) = 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..... 64 casilleros- cuantos granos ??? n n - 1

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.

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.

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

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 , a2 + ...+ 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

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