Estructura de Datos Hugo Araya Carrasco Hugo Araya Carrasco.

Slides:



Advertisements
Presentaciones similares
Arreglos Unidimensionales y Bidimensionales ESTRUCTURAS DE DATOS I
Advertisements

Complejidad Computacional
Complejidad Computacional
Diseño y análisis de algoritmos
También conocido como Diseño Lógico Rodrigo Salvatierra Alberú.
Planificación de Monoprocesadores
Métodos Cuantitativos Aplicados a Los Negocios.
3.4.- Administración de Memoria Virtual.
Introducción a los Algoritmos
¿ Que es la complejidad de un algoritmo ?
Resolución de Problemas Algoritmos y Programación
Introducción a la Programación
COMPONENTIZACIÓN DE ALGORITMOS GENETICOS Y SU IMPLEMENTACIÓN EN UNA PLATAFORMA ABIERTA PARA APRENDIZAJE COMPUTACIONAL.
Departamento de Sistemas Informáticos y Programación Universidad Complutense de Madrid Bloque 1: Introduccion Unidad 1: Consideraciones acerca de la eficiencia.
Representación en espacio de estado
UNIVERSIDAD LATINA (UNILA) IV. IMPLANTACION DE ALGORITMOS.
Programación 1 Introducción
Evaluacion de algoritmos
¿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.
Arreglos: Vectores en JAVA
Ciclo de formulación del proyecto.
Medición y rendimientos de Algoritmos
Academia de Informática
TEORÍA DE ERRORES SESIÓN Nº 01.
Índice. Revisando conceptos acerca de la memoria.
DISTRIBUCIÓN DE MEDICAMENTOS
LENGUAJES DE PROGRAMACIÓN
Introducción al análisis de algoritmos
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.
Programación dinámica: Introducción
PUNTO DE EQUILIBRIO Lic. Délfido Morales
PROPUESTA DE INTERVENCIÓN EN EL AULA PARA RESOLVER PROBLEMAS DE OPTIMIZACIÓN RELACIONADOS CON LA MINIMIZACIÓN DE COSTOS, IMPLEMENTANDO COMO APOYO EL SOFTWARE.
(Organización y Manejo de Archivos)
ELO3201 Contenedores Biblioteca Estándar de Templates Agustín J. González ELO320 Contenido Contenedores: Vector, List, Deque, Stack, Queue, Priority Queue,
Diseño de algoritmos La computadora puede realizar procesos y darnos resultados, sin que tengamos la noción exacta de las operaciones que realiza. Con.
Fundamentos de programación Organización de una computadora.
UNIVERSIDAD COOPERATIVA DE COLOMBIA FACULTAD DE INGENIERIA ELECTRONICA
Programación Lineal Entera Antonio H. Escobar Z Universidad Tecnológica de Pereira – Colombia Posgrado en Ingeniería Maestría en Ingeniería Eléctrica.
PENSAMIENTO ANALÍTICO SISTÉMICO DAISY KATERINE RODRÍGUEZ DURÁN
Análisis y Diseño de Algoritmos
Lenguajes de programación. Lenguaje máquina El ordenador sólo sabe hacer un número limitado de tareas (muy pocas) definidas electrónicamente en su procesador.
Unidad 1: FUNDAMENTOS DE COMPUTACIÓN Y PSEUDOLENGUAJE
Introducción a la tecnología Realizado por: Miguel Ángel Arias.
Sistemas de numeración
Oscar F. Bedoya L. Fundamentos de análisis y diseño de algoritmos.
Diseño de Combinacionales. Diseño Combinacional El diseño consiste en crear un sistema que cumpla con unos requerimientos establecidos, siempre tratando.
ELEMENTOS DE COMPUTACIÓN Profesor: Guillermo Figueroa
COSTO DIRECTO Y DECISIONES DE CAPACIDAD
Tiempos de viaje y demora
Escuela de Ciencias Basicas, Tecnología e Ingeniería
Presente un cuestionario con los aspectos mas importantes sobre los
ESTRUCTURA DE DATOS. Evaluación Exámenes 70% Acumulativo 30% Total 100% Acumulativos 1.T. Investigación.
 La capacidad para tomar decisiones de negocio precisas y de forma rápida se ha convertido en una de las claves para que una empresa llegue al éxito.
Simón Esneider Herrera Álvarez Media Técnica Casd 10-2
Introducción a los TADs
MIA - Grupo 5 Unidad 2.
Análisis y Diseño de Algoritmos Programa #1 Samuel Garrido Daniel.
Lenguaje estructurado
75.41 Algoritmos y Programación II Cátedra Ing. Patricia Calvo Complejidad algorítmica.
Programación de Sistemas
FUNDAMENTOS DE PROGRAMACIÓN
Marco de Trabajo para Indexación, Clasificación y Recopilación Automática de Documentos Digitales Javier Caicedo Espinoza Gonzalo Parra Chico.
PROGRAMACION DE APLICACIONES EN MEMORIA DEL COMPUTADOR = ALGORITMOS Y ESTRUCTURAS DE DATOS.
Software Comprado vs Software a Medida Software Comprado: son software con un comportamiento definido, que resuelven un problema determinado de una forma.
METODOS NUMERICOS TEORIA DE ERRORES. Cuando se mide una cantidad, ya directa, ya indirectamente, la medida que se obtiene no es necesariamente el valor.
La programación modular es un paradigma de programación que consiste en dividir un programa en módulos o subprogramas con el fin de hacerlo más legible.
UNIVERSIDAD TECNOLÓGICA DE PANAMÁ Facultad de Ingeniería de Sistemas Computacionales Programa de Lic. en Informática Educativa Computación.
LE, EI, Profesor Ramón Castro Liceaga UNIVERSIDAD LATINA (UNILA) IV. IMPLANTACION DE ALGORITMOS.
Transcripción de la presentación:

Estructura de Datos Hugo Araya Carrasco Hugo Araya Carrasco

Datos: Información que se utiliza y se almacena en cualquier programa. Algoritmos: Secuencia, proceso o manera de manejar los datos. Hugo Araya Carrasco

Estructura de Datos Se trata de un conjunto de variables de un determinado tipo agrupadas y organizadas de alguna manera para representar un comportamiento. Lo que se pretende con las estructuras de datos es facilitar un esquema lógico para manipular los datos en función del problema que haya que tratar y el algoritmo para resolverlo. En algunos casos la dificultad para resolver un problema radica en escoger la estructura de datos adecuada. Y, en general, la elección del algoritmo y de las estructuras de datos que manipulará estarán muy relacionadas. . Hugo Araya Carrasco

Análisis de Algoritmos Es una herramienta para hacer la evaluación de un diseño. Permite establecer la calidad de un programa y compararlo con otros programas que resuelven un mismo problema. Suponga que existen dos programas P1 y P2 para resolver el mismo problema. ¿Cuál de los dos es mejor?. Hugo Araya Carrasco

Análisis de Algoritmos Solución: Desarrollar (Implementar) ambos programas y medir el tiempo que cada uno de ellos consume para resolver el problema. Modificar los datos de entrada, promediar al final su desempeño para establecer su comportamiento en el caso promedio. Hugo Araya Carrasco

Análisis de Algoritmos Problemas: Pueden existir muchos algoritmos para resolver el problema. Costoso y casi imposible implementar todos los programas. Modificación de los datos puede ser una labor sin sentido. Hugo Araya Carrasco

Análisis de Algoritmos Objetivo: “Establecer una medida de la calidad de los algoritmos, que permita compararlos sin la necesidad de implementarlos” Esto implica asociar a cada algoritmo una función matemática que mida su eficiencia. Además del tiempo de ejecución, para medir la eficiencia se debe considerar la cantidad de memoria utilizada por el programa. Hugo Araya Carrasco

Tiempo de ejecución de un algoritmos Para tener una medida del tiempo de ejecución de un programa, se debe pensar en los factores que tienen influencia en dicho valor. Velocidad de procesamiento. El compilador utilizado (calidad del código generado). La estructura del algoritmo. ¿Cuáles de estos factores no son inherentes a la solución?. Hugo Araya Carrasco

Tiempo de ejecución de un algoritmos Además de la estructura del algoritmo, se debe tener en cuenta que el numero de datos con los cuales trabaja un programa influye en su tiempo de ejecución. Un programa de ordenamiento de un arreglo, se demora menos en ordenar 100 elementos que 500. “El tiempo de ejecución de un algoritmo debe medirse en función del tamaño de los datos de entrada que debe procesar”. Hugo Araya Carrasco

Tiempo de ejecución de un algoritmos Se define como el tiempo empleado por el algoritmo A en procesar una entrada de tamaño n y producir una solución al problema. El ideal es encontrar una función matemática que describiera de manera exacta TA(n). Sin embargo, en muchos casos, el calculo de esta función no se puede realizar, ya que depende de otro factor no considerado y que es casi imposible de medir: la calidad de la entrada. Hugo Araya Carrasco

Tiempo de ejecución de un algoritmos Ejemplo: Consideremos el algoritmo utilizado para determinar si un determinado elemento se encuentra en un vector de n posiciones. // elem: es el elemento buscado i=0; while ((i<N) && (vec[i] != elem)) i++; Hugo Araya Carrasco

Tiempo de ejecución de un algoritmos Análisis puramente teórico. Verificar la influencia que tienen los datos específicos de la entrada (no solamente su cantidad). Supongamos que fijamos N = 6 y que la evaluación de cada línea del programa toma t microsegundos. Consideremos el vector siguiente: Hugo Araya Carrasco

Tiempo de ejecución de un algoritmos Si elem = 5, cuantos microsegundos consume i = 0; t ms. ((0<6) && (vec[0] != 5)) i++ ; ---- Total 2 t ms. Hugo Araya Carrasco

Tiempo de ejecución de un algoritmos Si elem = 9, cuantos microsegundos consume i = 0; t ms. ((0<6) && (vec[0] != 9)) i++ ; ((1<6) && (vec[1] != 9)) ((2<6) && (vec[2] != 9)) ((3<6) && (vec[3] != 9)) ((4<6) && (vec[4] != 9)) Total 10 t ms. Hugo Araya Carrasco

Tiempo de ejecución de un algoritmos Aunque se conozca el tamaño de los datos de entrada, es imposible para muchos problemas determinar el tiempo de ejecución para cada una de las posibles entradas. Por esta razón se debe trabajar con el tiempo utilizado por el algoritmo en el peor de los caos ya que es mucho más fácil definir este pero caso. Con este antecedente se redefine TA(n). TA(n) = Tiempo que se demora el algoritmo A en el peor de los caos, para encontrar una solución a un problema de tamaño n. Hugo Araya Carrasco

Tiempo de ejecución de un algoritmos ¿Para el ejemplo anterior cual es el pero caso? Concepto de Complejidad. Hugo Araya Carrasco

Complejidad La idea detrás del concepto de complejidad es tratar de encontrar una función f(n), fácil de calcular y conocida, que acote el crecimiento de la función de tiempo, para poder decir “TA(n) crece aproximadamente como f ” o, más exacto “En ningún caso TA(n) se comportará peor que f al aumentar el tamaño del problema”. Hugo Araya Carrasco

¿Cuál es la gráfica de cada una de ellas? Complejidad A modo de ejemplo se pueden mencionar algunas funciones típicas de complejidad de algoritmos (dicho de otra forma que acotan superiormente el comportamiento del tiempo de ejecución). 2n, n3, n2, nlog(n), n ¿Cuál es la gráfica de cada una de ellas? Hugo Araya Carrasco

Complejidad Hugo Araya Carrasco

Complejidad Hugo Araya Carrasco

Complejidad Un problema se denomina Tratable si existe un algoritmo de complejidad polinomial para resolverlo. En caso contrario se denomina Intratable. Esta clasificación es importante porque, cuando el tamaño del problema aumenta, los algoritmos de complejidad polinomial dejan de ser utilizables de manera gradual. Hugo Araya Carrasco

Complejidad Los algoritmos para resolver problemas intratables, explotan de un momento a otro, volviéndose completamente incapaces para llegar a una respuesta al problema planteado. El caso limite de los problemas Intratables son los problemas Indecibles, son problemas para los cuales no existen algoritmos que los resuelvan. Hugo Araya Carrasco

Complejidad 20 50 100 200 500 1000 1000n 1000n*log(n) 100n2 10n3 0.02 s. 0.05 s. 0.1 s. 0.2 s. 0.5 s. 1 s. 1000n*log(n) 0.09 s. 0.3 s. 0.6 s. 1.5 s. 4.5 s. 10 s. 100n2 0.04 s. 0.25 s. 4 s. 25 s. 2 m. 10n3 1 m. 21 m. 2.7 h. nlog(n) 0.4 s. 1.1 h. 220 días 125 Siglos XXX 2n/3 0.001 s. 3*104 Siglos 2n 35 Años 3n 58 m. 2*109 siglos Hugo Araya Carrasco

Notación Asintótica Operación elemental: es aquella operación cuyo tiempo de ejecución se puede acotar superiormente por una constante que solamente dependerá de la implementación particular usada: de la maquina, del lenguaje, del compilador, etc. Ejemplo de estas operaciones son: suma, resta, multiplicación, asignación, acceso a arreglos, etc. Aunque en rigor el tiempo de una multiplicación no es el mismo que el tiempo de la suma, pero difieren en una constante multiplicativa. Hugo Araya Carrasco

Notación Asintótica La eficiencia de un algoritmo se mide mediante las operaciones elementales, más específicamente del número de operaciones elementales que se deben ejecutar. Análisis del Peor Caso: se define como el máximo costo (operaciones elementales) de aplicar el algoritmo a un problema de tamaño n. Este análisis se suele aplicar para casos extremos en los que interesa saber cuanto, como máximo, va a costar la aplicación del algoritmo. Hugo Araya Carrasco

Notación Asintótica Algunas reglas básicas para realizar dicho conteo: Operaciones básicas (+, -, *, =, …): Una unidad de tiempo, o alguna constante. Operaciones de entrada / salida: Otra unidad de tiempo, o una constante diferente. Ciclos Para (for): Se pueden expresar como la sumatoria, con los límites del ciclo. Si y Case: Estudiar lo que puede ocurrir. Mejor caso y peor caso según la condición. Llamadas a procedimientos: Una constante de la llamada más el tiempo del procedimiento. Hugo Araya Carrasco

Notación Asintótica La notación asintótica nos permite realizar simplificaciones sustanciales aun cuando estemos interesados en medir algo más tangible que el tiempo de ejecución, tal como es el número de veces que se ejecuta una instrucción dentro del programa. Se denomina notación asintótica porque trata acerca del comportamiento de funciones en el límite, esto quiere decir, para valores suficientemente grandes de su parámetro. Esto hace que los valores pequeños de las entradas no sean interesantes. Dicho de otra manera, estamos interesados en las tasas de crecimientos en lugar de los valores concretos. Hugo Araya Carrasco

Notación Asintótica La notación (o grande) o cota superior es la encargada de dar una cota para el peor caso y determinar las acotaciones superiores lo más exactamente posible para valores crecientes de la entrada. Por lo tanto se puede asegurar que conociendo la cota superior, ningún tiempo empleado en resolver el problema dado será de un orden superior al de la cota. Se conoce como el orden del peor caso. La notación asintótica clasifica las funciones de tiempo de los algoritmos para que puedan ser comparadas. Hugo Araya Carrasco

Notación Asintótica Hugo Araya Carrasco

Notación Asintótica Hugo Araya Carrasco

Notación Asintótica Hugo Araya Carrasco

Notación Asintótica Que puede decir de las funciones. Hugo Araya Carrasco

Notación Asintótica Hugo Araya Carrasco

Notación Asintótica Hugo Araya Carrasco

Notación Asintótica Hugo Araya Carrasco

Notación Asintótica Hugo Araya Carrasco

Hugo Araya Carrasco