Eficiencia de un Algoritmo  El análisis de algoritmos estudia desde el punto de vista teórico los recursos computacionales que necesita un programa para.

Slides:



Advertisements
Presentaciones similares
Análisis y Diseño de Algoritmos. Propiedades : f ( n )  O ( f ( n ) ) a ) O ( f ( n ) )  O ( g ( n ) )  f ( n )  g ( n )
Advertisements

Departamento de Sistemas Informáticos y Programación Universidad Complutense de Madrid Bloque 1: Introduccion Unidad 2: Orden de algoritmos.
Tema 7: NOTACIONES ASINTÓTICAS
Análisis de algoritmos Generalidades
75.41 Algoritmos y Programación II Cátedra Ing. Patricia Calvo Complejidad algorítmica.
Análisis de los algoritmos Unidad 7. Análisis La resolución práctica de un problema – algoritmo o método de resolución – y por otra un programa o codificación.
Bloque IX - Estadística. Población vs muestra Medidas de dispersión Medidas de tendencia central.
ESTRUCTURAS DE DATOS Y ALGORITMOS Samuel Peñaló
Introducción a la estadística. ¿Qué es la estadística? La Estadística es la parte de las Matemáticas que se encarga del estudio de una determinada característica.
TEMA 5: PROBABILIDAD. 1. Experimentos aleatorios. 2. Sucesos. Tipos de sucesos Sucesos elementales Suceso seguro Suceso imposible. 3.
Unidad 4: Abstracciones de Datos y Algoritmia Concepto de Algoritmo. Recursos que requiere un algoritmo. Operación elemental. Principio de Invarianza.
¿Que es PHP? PHP Hypertext Preprocessor Y solo porque me quiero hacer el profesor cool y meter un chiste: PHP también significa: Para Hacer Páginas.
TUTORIA 1 Lógica para la Computación TUTORIA 1 Facultad de Ciencias Naturales y Matemáticas.
PROGRAMACIÓN ORIENTADA A OBJETOS SEGUNDA UNIDAD: “CLASES, OBJETOS Y MÉTODOS” IRVING YAIR SALAS CHÁVEZ ING. EN SISTEMAS COMPUTACIONALES - ITSLP.
Funciones.
Ingreso , proceso y salida de datos
FACULTAD DE EDUCACION A DISTANCIA Y VIRTUAL
Métodos de compresión sin pérdida de información
VENTAJAS DEL ALGORITMO LMS
Curso de Elaboración de Pruebas Prof. Gerardo A. Valderrama M
ESTRUCTURAS CONDICIONALES
PHP Hypertext Preprocessor
Programación 1 Curso: 5to. I TT
Ciclos condicionales y exactos Estructura de control de ciclos
En INCERTIDUMBRE No se conocen las probabilidades de ocurrencia de los estados naturales, por lo tanto, hay que recurrir a criterios empíricos para tomar.
El conjunto de los números naturales
TEMA 5: PROBABILIDAD. 1. Experimentos aleatorios.
con a, b y c constantes reales y a ≠ 0.
Complejidad Programación II de febrero de 2009.
FUNCIONES EN EXCEL 2007.
MATRICES.
¿Cuándo usar esta distribución?
Estructura de Datos Introducción a:.
Modelos de probabilidad Distribuciones continuas
CREAR DIAGRAMA DE FLUJO
MATEMÁTICA DISCRETA Y LÓGICA 1
CALCULO DE COSTOS POR MÉTODOS ESTADÍSTICOS:
ADMINISTRACION DE LA PRODUCCION II 2017
Continuación Unidad 4. Control de flujo
Qu é define el Plan Maestro de Producci ó n - MPS?
Estimación de parámetros: Estimación puntual y por intervalos
ALGORITMOS es un conjunto preescrito de instrucciones o reglas bien definidas, ordenadas y finitas que permite realizar una actividad mediante pasos.
Unidad 2. Algoritmos Unidad 4. Control de flujo
Continuación Unidad 4. Control de flujo
Algoritmo Capitulo Cinco.
Estructura de Datos Ingeniería en Informática. Universidad Carlos III de Madrid 1 Tema 3: Complejidad.
UNIDAD 0105: SUCESIONES Y SERIES
HERRAMIENTAS DE PROGRAMACIÓN
Estructuras de Repetición Pseudocodigo1 Estructuras de Repetición Algoritmos Mientras Hacer-Mientras Para.
ANALISIS DE VARIANZA
CURSO PROGRAMACIÓN BÁSICA SEMANA 3 ¿Qué es un programa?
Tema 9. Estructuras de repetición. Clase 3
DEL MANIPULADOR: PARTE 1 Roger Miranda Colorado
1 Números Índice del libro Los números reales
METODOLOGIA DE LA INVESTIGACION. OPERACIONALIZACION DE LAS VARIABLES.
Teoría Nº 3 Conceptos Básicos de Algoritmia Estructuras de Control
DEPARTAMENTO DE MATEMÁTICAS
MC Beatriz Beltrán Martínez Verano 2018
Informática Ingeniería en Electrónica y Automática Industrial
Recursividad 1 Análisis de algoritmos. Matrushka La Matrushka es una artesanía tradicional rusa. Es una muñeca de madera que contiene otra muñeca más.
Complejidad algorítmica
Estructuras de Repetición Algoritmos
Programación Modular Programación de Computadoras - Hugo Vega Grupo2: Reina Rodríguez Miriam Salluca.
Lenguaje de Programación II
UNIVERSIDAD JUÁREZ AUTÓNOMA DE TABASCO Nombres: Isaac Sánchez García Teofilo Martinez Garcia Ricardo Del Carmen Paz López Vanesa Anahí Pérez Lizárraga.
ALGORITMO FFT Ing. José Arturo Marín Thames 2018.
Objetivo Que el estudiante estructure soluciones mediante una representación grafica a través de diagramas de flujos aplicando diferentes estructuras.
UNIDAD V ESTRUCTURAS REPETITIVAS (Para)
Conjunto de programas contenidos en un núcleo o kernel que efectúan la gestión de los procesos básicos de un Sistema informático, y permite la normal.
Tema II “Cálculo Integral. Algunas Aplicaciones” Sumario: - Definición de función primitiva o antiderivada. - Definición de integral indefinida. - Propiedades.
Transcripción de la presentación:

Eficiencia de un Algoritmo  El análisis de algoritmos estudia desde el punto de vista teórico los recursos computacionales que necesita un programa para su ejecución, fundamentalmente:  Tiempo  Espacio

Análisis de Tiempos  Existe un análisis que proporciona una medida (a priori), que consiste en obtener una función que acote (por arriba o por abajo) el tiempo de ejecución del algoritmo para unos valores de entrada dados.  Y otro que ofrece una medida (a posteriori), consistente en medir el tiempo de ejecución del algoritmo para unos valores de entrada dados y en un computador concreto.

Tipos de Análisis  Peor Caso (usualmente) T(n)= Tiempo máximo necesario para solucionar un problema de tamaño n.  Caso Promedio (a veces) Tiempo esperado para un problema cualquiera de tamaño n. (Se requiere establecer una distribución estadística)  Mejor caso (engañoso)

Análisis del Peor Caso  Cuál es el tiempo que requiere un algoritmo concreto?  Varía en función del computador utilizado  También varía en función del compilador seleccionado y de la calidad de código que este genere  Depende también de la habilidad del programador  Los datos de entrada (su tamaño y naturaleza)

Análisis de Tiempos  La unidad de tiempo a la que debe hacer referencia estas medidas de eficiencia no puede ser expresada en segundos o en otra unidad de tiempo concreta, pues no existe un computador estándar al que puedan hacer referencia todas las medidas.  Se denota por T(n) el tiempo de ejecución de un algoritmo para una entrada de tamaño n

Análisis de Tiempos  Teóricamente T(n) debe indicar el número de instrucciones ejecutadas por un computador idealizado.

Análisis del Peor Caso  IDEA: Ignorar las constantes dependientes del contexto

Principio de Invarianza  Dado un algoritmo y dos implementaciones suyas I1 e I2, que tardan T1(n) y T2(n) segundos respectivamente, el Principio de Invarianza afirma que existe una constante real c > 0 y un número natural n0 tales que para todo n  n0 se verifica que T1(n)  cT2(n).

Principio de Invarianza  Es decir que el tiempo de ejecución de dos implementaciones distintas de un algoritmo dado (I1, I2), no va a diferir más que en una constante multiplicativa

Operaciones Elementales  A la hora de medir el tiempo, siempre se hace en función del número de operaciones elementales que realiza dicho algoritmo, entendiendo por operaciones elementales (en adelante OE) aquellas que el computador realiza en un tiempo acotado por una constante.

Operaciones Elementales  Así, se consideran OE las operaciones aritméticas básicas, asignaciones a variables de tipo predefinido por el compilador, los saltos (llamadas a funciones y procedimientos, retorno desde ellos, etc.), las comparaciones lógicas y el acceso a estructuras indexadas básicas, como son los vectores y matrices. Cada una de ellas contabilizará como 1 OE.

Operaciones Elementales  El tiempo de ejecución de un algoritmo va a ser una función que mide el número de operaciones elementales que realiza el algoritmo para un tamaño de entrada dado.  Durante el curso se asumirá que todas las operaciones elementales tienen igual tiempo de ejecución

Reglas Generales para el Cálculo del número de OE 1. Se considerará que el tiempo de una OE es, por definición, de orden 1. La constante c que menciona el Principio de Invarianza dependerá de la implementación particular, pero se supondrá que vale El tiempo de ejecución de una secuencia de instrucciones se calcula sumando los tiempos de ejecución de cada una de la instrucciones

Reglas Generales para el Cálculo del número de OE  El tiempo de ejecución de la sentencia: if (C) S1; else S2; es T= T(C) + max{T(S1),T(S2)}.

Reglas Generales para el Cálculo del número de OE  El tiempo de ejecución de una repetición de sentencias: while (C) S; es: T= T(C) + (nº iteraciones)*(T(S) + T(C)). Obsérvese que tanto T(S) como T(C) pueden variar en cada iteración, y por tanto habrá que tenerlo en cuenta para su cálculo.

Reglas Generales para el Cálculo del número de OE  El tiempo de ejecución de una repetición de sentencias for se puede calcular utilizando el mismo principio utilizado en una instrucción while.

Reglas Generales para el Cálculo del número de OE  El tiempo de ejecución de una llamada a una función f(p1,p2,...,pn) es 1 (por la llamada), más el tiempo de evaluación de los parámetros p1, p2,..., pn, más el tiempo que tarde en ejecutarse f, esto es, T= 1 + T(p1) + T(p2) T(pn) + T(f).

Reglas Generales para el Cálculo del número de OE  No se contabilizan la copia de los argumentos a la pila de ejecución, salvo que se trate de estructuras complejas (registros o vectores) que se pasan por valor. En este caso se contabilizán tantas OE como valores simples contenga la estructura. El paso de parámetros por referencia, por tratarse simplemente de punteros, no contabiliza tampoco.

Reglas Generales para el Cálculo del número de OE  El tiempo de ejecución de funciones recursivas, da lugar a ecuaciones de recurrencia, que serán tratadas más adelante, con algún detalle.

Cotas de Complejidad Medidas Asintóticas  Una vez vista la forma de calcular el tiempo de ejecución T de un algoritmo, el propósito es intentar clasificar dichas funciones de forma que se pueda compararlas. Para ello, se van a definir clases de equivalencia, correspondientes a las funciones que “crecen de la misma forma”.

Cota Superior. Notación O  Dada una función f, se desea estudiar aquellas funciones g que a lo sumo crecen tan deprisa como f. Al conjunto de tales funciones se le llama cota superior de f y se denominan O(f). Conociendo la cota superior de un algoritmo se puede asegurar que, en ningún caso, el tiempo empleado será de un orden superior al de la cota.

Cota Superior. Notación O  Definición  Sea f: N--- >[ 0,. ). Se define el conjunto de funciones de orden O (Omicron) de f como:  O(f) = {g: N--- >[0,.)|  c  R, c> 0,  n0  N g(n)  cf(n)  n  n0}.  Se dice que una función t: N --- >[0,.) es de orden O de f si t  O(f).

Cota Superior. Notación O  Intuitivamente, t  O(f) indica que t está acotada superiormente por algún múltiplo de f.  Normalmente se está interesado en la menor función f tal que t pertenezca a O(f).

Propiedades de O  Propiedades de la cota superior. La demostración de todas ellas se obtiene aplicando la definición.  1. Para cualquier función f se tiene que f  O(f).  2. f  O(g) => O(f)  O(g).  3. O(f) = O(g) f  O(g) y g  O(f).

Propiedades de O  4. Si f  O(g) y g  O(h) => f  O(h).  5. Si f  O(g) y f  O(h) => f  O(min(g,h)).  6. Regla de la suma: Si f1  O(g) y f2  O(h) => f1 + f2  O(max(g,h)).  7. Regla del producto Si f1  O(g) y f2  O(h) => f1·f2  O(g·h).

Propiedades de O

 Para simplificar, dado un algoritmo diremos que su orden de complejidad es O(f) si su tiempo de ejecución para el peor caso es de orden O de f, es decir, T(n) es de orden O(f).

Algunas de las funciones de dominación más comunes  n lg n domina a lg n  n! domina a b n  b n domina a c n si b >= c  b n domina a n a si a >= 0  n k domina a n m si k >= m  n domina a log a n si a >= 1  log a n domina a log b n si b >= a >= 1  log a n domina a 1 si a >= 1