Análisis de algoritmos Generalidades

Slides:



Advertisements
Presentaciones similares
Complejidad Computacional
Advertisements

Complejidad Computacional
Complejidad Computacional
Diseño y análisis de algoritmos
Diseño y análisis de algoritmos
Estructura de Datos Unidad 4. Recursividad Dra. María Lucía Barrón Estrada Enero-Junio 2007.
Clase 2 Tipos de datos Asignación de valores Estructura IF Ejercicios
Estructura de Datos Hugo Araya Carrasco Hugo Araya Carrasco.
Introducción a los Algoritmos
¿ Que es la complejidad de un algoritmo ?
Unidad 4: Análisis de algoritmos (parte II)
UNIVERSIDAD LATINA (UNILA) II.- ANALISIS DE ALGORITMOS
ALGORITMOS 2 DIGITALES II
¿Qué es un algoritmo? “(del árabe al-Khowârizmî, sobrenombre del célebre matemático árabe Mohámed ben Musa). Conjunto ordenado y finito de operaciones.
Estructuras de Repetición
Tema 3. Optimización de Código
Medición y rendimientos de Algoritmos
ESTRUCTURAS DE CONTROL
1 Algoritmos Elementales de Grafos Agustín J. González ELO-320: Estructura de Datos Y Algoritmos 1er.Sem
Material de apoyo Unidad 1 Estructura de datos
Fundamentos de Programación Fundamentos de Procesamiento de Datos
Definiciones: conjuntos, grafos, y árboles
Análisis de Algoritmos
Ordenamiento, Heapsort y Colas de prioridad
Análisis de Algoritmos
Análisis y Diseño de Algoritmos. Propiedades : f ( n )  O ( f ( n ) ) a ) O ( f ( n ) )  O ( g ( n ) )  f ( n )  g ( n )
Análisis de Algoritmos
Introducción al análisis de algoritmos
Pertinencia de la enseñanza del cómputo paralelo en el currículo de las ingenierías. Proyecto PAPIME PE
M.S.C. Ivette Hernández Dávila
METODOLOGÍA DE LA PROGRAMACIÓN
Teoría – Alejandro Gonzalez
Figure: Algoritmos Conceptos básicos. Programación: 1.Establecer una secuencia de acciones que: puedan ser ejecutadas por el procesador realicen una.
4.  Métodos matemáticos.
Agustín J. González ELO320: Estructura de Datos y Algoritmos
1 Algoritmos Avaros (Greedy Algorithms) Agustín J. González ELO-320: Estructura de Datos y Algoritmos 1er. Sem
Medianas y Estadísticas de Orden
Agustín J. González ELO320: Estructura de Datos y Algoritmos
Experimentación Numérica
1 Ordenamiento y estadísticas de orden Agustín J. González ELO 320: Estructura de Datos y Algoritmos.
Análisis y Diseño de Algoritmos
Unidad 1: FUNDAMENTOS DE COMPUTACIÓN Y PSEUDOLENGUAJE
1 Ordenamiento en tiempo lineal y Estadísticas de orden Agustín J. González ELO320: Estructura de Datos y Algoritmos 1er. Sem 2002.
Algoritmos de Ordenamiento y Complejidad
Departamento de Sistemas Informáticos y Programación Universidad Complutense de Madrid Bloque 1: Introduccion Unidad 2: Orden de algoritmos.
1 Tablas HASH Agustín J. González ELO320: Estructura de Datos y Algoritmos.
1 Análisis de algoritmos Generalidades Agustín J. González 1er. Sem
Parte I. Estructuras de Datos.
Análisis de Algoritmos
Estructuras de control Resolución de problemas y algoritmos.
Definiciones: conjuntos, grafos, y árboles
1 Flujo Máximo Agustín J. González ELO320: Estructura de Datos y Algoritmos.
Agustín J. González ELO-320: Estructura de Datos Y Algoritmos
Agustín J. González ELO320: Estructura de Datos y Algoritmos
Estructuras de Repetición (Hacer-Mientras)
Oscar F. Bedoya L. Fundamentos de análisis y diseño de algoritmos.
Aproximaciones y Errores
Rendimiento de la CPU y sus factores
Algoritmo. Algoritmo Algoritmo Al-Khowarizmi nunca pensó que su nombre, seria el origen de palabras mas importantes que el mismo: Álgebra. Logaritmo.
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.
Escuela de Ciencias Basicas, Tecnología e Ingeniería
Carolina Galaviz Inzunza CBTIS No. 37.  Este ciclo se repite durante una cantidad definida de iteraciones, por lo que no depende de las acciones.
Introducción a los TADs
Tema 3: Complejidad Estructura de Datos
75.41 Algoritmos y Programación II Cátedra Ing. Patricia Calvo Complejidad algorítmica.
ESTE TERMINO SE DEFINE COMO : UN PROCESO EN EL CUAL SE NOS DESCRIBE UN PROBLEMA (EN LENGUAJE NATURAL), LUEGO DE ESTO SE PLANTEAN POSIBLES RESOLUCIONES.
UNIVERSIDAD TECNOLÓGICA DE PANAMÁ Facultad de Ingeniería de Sistemas Computacionales Programa de Lic. en Informática Educativa Computación.
Ciclos de Repeticion Yoel Gutierrez Unidad 6. Contenido DefinicionExplicacionEjemplosReferencias.
Transcripción de la presentación:

Análisis de algoritmos Generalidades Agustín J. González 1er. Sem. 2004

Definiciones Algoritmo: Es un procedimiento computacional bien definido que toma algunos valores, o un conjunto de valores, como entrada y produce algunos valores, o conjunto de valores, como salida. Así es como un algoritmo es una secuencia de pasos computacionales que transforma una entrada en una salida. Análisis de Algoritmo: Analizar un algoritmo es predecir los recursos que el algoritmo requiere. Ocasionalmente, recursos tales como memoria, ancho de banda de comunicación, o número de compuertas lógicas son de gran interés, pero más común se desea medir la cantidad de tiempo computacional. Tamaño de la entrada: Depende del problema en estudio. Puede ser número de datos a ser ordenados, número de bits a ser multiplicados, o el par número de nodos y arcos de un grafo. Tiempo de ejecución: Normalmente se mide como el número de operaciones primitivas o "pasos" ejecutados.

Análisis de Algoritmos Análisis de algoritmos consiste en predecir los recursos que el algoritmo requiere. Lo veremos con un ejemplo simple. InsertionSort(int A[], int n) { int j, i, key; for (j=1; j<n; j++) { key = A[j]; /* inserta A[j] en la secuencia ordenada A[0...j-1] */ i = j-1; while( 0 <= i && key < A[i] ){ A[i+1] = A[i]; i --; } A[i+1]=key;

Análisis de Algoritmos 1 n n-1 Costo c0 c1 c2 c4 c5 c6 c7 c8 Veces 1 n (hemos simplificado al mayor) n-1 Suma desde j=1 hasta n-1 de tj Suma desde j=1 hasta n-1 de (tj - 1) Suma desde j=1 hasta n-1 de (tj -1) Algoritmo InsertionSort(int A[], int n) { int j, i, key; for (j=1; j<n; j++) { key = A[j]; /* inserta A[j] en la secuencia ordenada A[0...j-1] */ i = j-1; while( 0<=i && key < A[i] ){ A[i+1] = A[i]; i --; } A[i+1]=key; tj es el número de iteraciones del while para cada j; 0<tj<=j

Costo de Insertion-Sort ¿Cuál es el mejor caso? El arreglo está ya ordenado. ¿cuánto tiempo toma? ¿Cuál es el peor caso? El arreglo está ordenado pero en orden inverso.

Casos: peor, promedio, mejor Peor caso de tiempo de ejecución es el límite superior para el tiempo de ejecución considerando cualquier entrada. El algoritmo no supera este valor en ningún caso. El mejor caso tiene definición análoga a la de peor caso. Caso promedio: la idea es obtener el valor esperado para el tiempo. Normalmente se obtiene suponiendo todas las entradas posibles con igual probabilidad.

Crecimiento de Funciones Normalmente estamos interesados en el comportamiento de los algoritmos para grandes entradas (muchos datos de entrada). Notación asintótica: para una función dada g(n), denotamos por (g(n)) al conjunto de funciones: Aún cuando (g(n)) es un conjunto, se acostumbra a notar f(n) = (g(n)) Queremos decir que f(n) pertenece a (g(n)) Ejemplo: demostrar que f(n)=an2+bn+c es (n2) con a,b,c>0

Notación Asintótica g(n) (g(n)) (g(n)) c2*g(n) c1*g(n) O(g(n)) (g(n)) es le conjunto de funciones en la zona amarilla g(n) (g(n)) (g(n)) c2*g(n) c1*g(n) O(g(n)) o(g(n)) no

Notación O, , o, 

Analogía que puede ayudar f(n) = (g(n)) ~ a > b f(n) = (g(n)) ~ a  b f(n) = (g(n)) ~ a = b f(n) = O(g(n)) ~ a  b f(n) = o(g(n)) ~ a < b (g(n)) (g(n)) (g(n)) g(n) O(g(n)) o(g(n))

Ejercicios Probar que: f(n)=(g(n)) y g(n)=(h(n))  f(n)=(h(n)) Si f(n)>0 y g(n)>0, probar que máx(f(n),g(n)) = (f(n)+g(n)) Ordenar las siguientes funciones por orden de crecimiento