Departamento de Sistemas Informáticos y Programación Universidad Complutense de Madrid Bloque 1: Introduccion Unidad 1: Consideraciones acerca de la eficiencia.

Slides:



Advertisements
Presentaciones similares
Capítulo 2 Algoritmos.
Advertisements

Complejidad Computacional
Diseño y análisis de algoritmos
Diseño y análisis de algoritmos
Diseño y análisis de algoritmos
Programación de Computadores
Programación de Computadores
Tema Algoritmos Universidad Politécnica de Nicaragua UPOLI.
Estructura de Datos Hugo Araya Carrasco Hugo Araya Carrasco.
Complejidad Algorítmica: Análisis de algoritmos
MÉTODOS Y ELEMENTOS DE PROGRAMACIÓN
Introducción a los Algoritmos
Lenguajes de programación
UNIDAD II: ALGORITMOS Y LENGUAJES
Iteración La iteración permite modelar problemas en los cuales una secuencia de instrucciones debe ejecutarse varias veces. La cantidad de iteraciones.
Resolución de Problemas Algoritmos y Programación
INFORMÁTICA II.
Curso de Programación 1 Plan 97
Bloque 2: Divide y Vencerás
Departamento de Sistemas Informáticos y Programación Universidad Complutense de Madrid Bloque 1: Introducción Unidad 5: Matemáticas necesarias.
Unidad 4: Análisis de algoritmos (parte II)
EXCEPCIÓN DE ERRORES.
Programación 1 Introducción
ALGORÍTMICA Dpto. Ingeniería de Sistemas y Automática
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.
PARADIGMA Es un esquema de pensamiento que nos lleva a concebir las cosas de una manera determinada. el término paradigma puede indicar el concepto de esquema.
Estructuras de Control
Programación en Matlab
Análisis de Algoritmos
COMPLEJIDAD COMPUTACIONAL Departamento de Educación Matemática Profesor: Carlos Aguilar Santana “La Matemática es el Alfabeto con el cual Dios ha Escrito.
LENGUAJES DE PROGRAMACIÓN
Introducción al análisis de algoritmos
Universidad Domingo Savio Facultad de Ciencias y Tecnología de la Información Carrera Ingeniería en Redes y Telecomunicaciones Materia : Programación I.
Pertinencia de la enseñanza del cómputo paralelo en el currículo de las ingenierías. Proyecto PAPIME PE
Capítulo 1 “Elementos de Programación”
1 LENGUAJES DE PROGRAMACIÓN Javier Martín Centro Asociado de Móstoles UNED.
COMPUTACION 2009 Clase 6 Clase 7.
Capítulo 2 – Estructuras de Control
Resolución de Problemas y Algoritmos Uso de iteración con secuencias
Sesión 5 Sentencias de Selección y repetición Prof:Eridan Otto Programación de Computadores Lenguaje Pascal.
75.40 Algoritmos y Programación I
Departamento de Sistemas Informáticos y Programación Universidad Complutense de Madrid Bloque 1: Introduccion Unidad 3: Análisis de algoritmos (parte I)
3º curso Ingeniería Técnica en Informática de Sistemas UNED
Teoría – Alejandro Gonzalez
CONCEPTOS BÁSICOS FUNDACIÓN UNIVERSITARIA LOS LIBERTADORES Fredys Alberto Simanca Herrera Programación Estructurada Semana Bogotá, D.C
Programación I Arreglos. Los elementos de un arreglo son todos del mismo tipo de dato (todos integer o real o char o registros o aún arreglos)
Tema 8: Tipos de Datos Estructurados I
Una introducción a la computación evolutiva
Unidad 1: FUNDAMENTOS DE COMPUTACIÓN Y PSEUDOLENGUAJE
Vectores y Matrices.
Departamento de Sistemas Informáticos y Programación Universidad Complutense de Madrid Bloque 1: Introduccion Unidad 2: Orden de algoritmos.
Recursividad Un objeto se dice que es recursivo si él mismo forma parte de su definición. Ejemplos de objetos recursivos: Una locomotora es un tren Un.
Departamento de Sistemas Informáticos y Programación Universidad Complutense de Madrid Bloque 2: Divide y Vencerás Unidad 1: Nociones básicas.
Sesión 12: Python (3) – Estructura Decisión. 2009/1 Circuitos Digitales III 2010/1 Circuitos Digitales III 2010/1 Circuitos Digitales III 2010/1 Informática.
Oscar F. Bedoya L. Fundamentos de análisis y diseño de algoritmos.
Elaboración de algoritmos usando lógica de programación
COMPLEJIDAD DE ALGORITMOS
La suma y la multiplicación
Introducción a los TADs
75.41 Algoritmos y Programación II Cátedra Ing. Patricia Calvo Complejidad algorítmica.
Métodos de recolección
David A Salamanca Díaz. DEFINICIÓN  Se define como una serie de pasos organizados que describen el proceso que se debe seguir, para dar solución a un.
Estructura de Datos PILA Universidad Hispanoamericana Prof. Ing. Erick López.
PROGRAMACION DE APLICACIONES EN MEMORIA DEL COMPUTADOR = ALGORITMOS Y ESTRUCTURAS DE DATOS.
ELEMENTOS BÁSICOS DE PROGRAMACIÓN EN C# Mtro. José David Uc Salas
Tema 8: Programación estructurada Introducción La importancia del conocimiento de programación es mucho mayor de lo que se piensa. Aprender a programar.
Prof. Jonathan Silva Ingeniería Civil – Informática I Ingeniería Civil Informática I Clase 3 – Diseño de Programas.
LE, EI, Profesor Ramón Castro Liceaga UNIVERSIDAD LATINA (UNILA) IV. IMPLANTACION DE ALGORITMOS.
Ciclos condicionales y exactos Estructura de control de ciclos
Transcripción de la presentación:

Departamento de Sistemas Informáticos y Programación Universidad Complutense de Madrid Bloque 1: Introduccion Unidad 1: Consideraciones acerca de la eficiencia de algoritmos

MTP: Metodología y Tecnología de la Programación 2 Noción de eficiencia Dados dos algoritmos distintos que solucionen en mismo problema, sus propiedades son probablemente distintas Tardan tiempos distintos en solucionar el problema (eficiencia temporal) Precisan de tamaños de almacenamiento distintos (eficiencia espacial) Una pregunta obvia que surge a la hora de considerar ambos algoritmos es ¿cuál de ambos es mejor? Lógicamente, el que menos tiempo emplee y menos espacio de almacenamiento necesite Habitualmente, nuestro objetivo principal será mejorar la eficiencia temporal Existen dos formas de valorar la eficiencia de los algortimos Empíricamente Analíticamente (de forma teórica)

MTP: Metodología y Tecnología de la Programación 3 Determinación empirica de la eficiencia Consiste en ejecutar cada algoritmo en una máquina real, para instancias de diferente tamaño del problema considerado, y obtener los resultados de tiempos consumidos y espacios utilizados Posee varios inconvenientes Requiere una adecuada selección de los datos de entrada, lo cual no es necesariamente fácil de realizar Requiere múltiples ejecuciones de un mismo algoritmo, y por lo tanto, mucho tiempo Está excesivamente ligado a una máquina concreta, por lo que en algunos casos los resultados no son extrapolables

MTP: Metodología y Tecnología de la Programación 4 Determinación teórica de la eficiencia Consiste en determinar matemáticamente la cantidad de recursos (tiempo, espacio) que consume un algoritmo en función del tamaño de las instancias de problemas que resuelve Por tamaño se pueen entender varias cosas: Número de items de entrada, valor(es) de los items, espacio de almacenamiento, etc. Escogeremos en cada caso, dependiendo cuánto de adecuadamente permita la entrada predecir la eficiencia del algoritmo La eficiencia se convierte en una función t n que permite calcular el tiempo/espacio requerido por el algoritmo para problemas de tamaño n

MTP: Metodología y Tecnología de la Programación 5 Determinación de la función t n La función t n se identifica a partir de una o un conjunto de operaciones básicas Una operación básica es aquella tal que el trabajo total realizado por el algoritmo (en tiempo o espacio) es proporcional al número de veces que se ejecuta dicha instrucción Ejemplo (temporal): t n = n function busquedaLineal(a:array[1..k] of integer; x:integer):integer; var i:integer; begin i := 1; while i x do i:= i+1; if i > k then busquedaLineal:= 0 else busquedaLineal:= i end; Posibles operaciones básicas

MTP: Metodología y Tecnología de la Programación 6 Determinación de la función t n Otro ejemplo (temporal): t n = log 2 n +1 function busquedaBinaria(a:array[1..k] of integer; x:integer):integer; var inf, med, sup, loc:integer; begin inf:= 1; sup:=k; loc:= 0; while inf <= sup and loc = 0 do begin med:= (inf+sup) DIV 2; if a[med] = x then loc:= med else if x < a[med] then sup:= med-1 else inf:= med+1 end; busquedaBinaria:= loc end; Posibles operaciones básicas

MTP: Metodología y Tecnología de la Programación 7 Determinación de la función t n La operación básica seleccionada sólo tiene que ser proporcional al trabajo que realiza el algoritmo Podemos obviar el tiempo exacto que tarda en ejecutarse Por ejemplo: El algoritmo de búsqueda binaria anterior realiza: log 2 n +1 operaciones med:= (inf+sup) DIV 2 log 2 n +1 operaciones a[med] = x Si suponemos que la primera operación emplea i segundos y la segunda j segundos de cada vez, el algoritmo tardará (( log 2 n +1)*i)+ (( log 2 n +1)*j) segundos O lo que es lo mismo, (i+j)*( log 2 n +1), esto es, t n predice el tiempo consumido por el algoritmo con la precisión de un multiplicador (i+j) t n determina la eficiencia temporal (o espacial) del algoritmo a coste unitario

MTP: Metodología y Tecnología de la Programación 8 Comparación de la eficiencia de algoritmos Dadas dos funciones t n y u n que representan la eficiencia temporal (o espacial) de dos algoritmos t y u, el mejor algoritmo será el que proporcione un menor valor de la función para un n dado Hablamos de una instancia concreta de un problema Es necesario tener en cuenta los multiplicadores ocultos En general, nos va a interesar el comportamiento asintótico, esto es, para valores de n muy grandes Se obvia el efecto de las constantes multiplicadoras Se pasa al límite

MTP: Metodología y Tecnología de la Programación 9 Notas finales Un problema de la función t n es predice la eficiencia con coste unitario Esto es, su precisión está limitada por un multiplicador constante Un análisis empírico podría determinar tiempos exactos para instancias concretas Ello proporcionaría (a priori) mejores resultados en la práctica La realidad es que, por el principio de invariancia, dos implementaciones t n y u n similares del mismo algoritmo, funcionado en máquinas distintas, pueden diferir en eficiencia en función de un multiplicador constante para n grandes Esto es, si c y d son constantes t n <= c u n u n <=d t n En consecuencia, la determinación empírica posee los mismos inconvenientes que la determinación teórica de t n