01 estructura datos - javier8a.com · 2019-01-31 · tabla hash 0,01826 0,01649 0,00119 0,00058...
Post on 08-Jul-2020
0 Views
Preview:
TRANSCRIPT
Estructura de DatosJoaquín F Sánchez
Joaquin.sanchez@docentes.umb.edu.co
Programa de Ingeniería de SoftwareFacultad de Ingeniería
Universidad Manuela BeltránSede Bogotá- Cajica
Introducción a estructuras de datosIntroducción MotivaciónConceptos
IntroduccionIntroducción a las estructuras de datosMotivación Conceptos
“ I will, in fact, claim that the difference between abad programmer and a good one is whether
he considers his code or his data structures more important. Bad programmers worry about the code.
Good programmers worry about data structuresand their relationships. ”
Linus Torvalds (creador de Linux)
“ Algorithms + Data Structures = Programs. ” Niklaus Wirth
http://en.wikipedia.org/wiki/Niklaus_Wirth
Estructuras de Datos Introducción 3
http://en.wikipedia.org/wiki/Linus_Torvalds
¿Por qué son importantes las estructuras de datos?
Un ingeniero de sistemas y computación / ingenieromecatrónico / electrónico debe ser capaz de resolverproblemas del mundo real mediante el desarrollo desoftware.
Para ello, debe seleccionar apropiadamente lasestructuras de datos a utilizar, garantizando que esténdiseñadas a la medida del problema.
Estructuras de Datos Introducción 4
Introducción a las estructuras de datosMotivación Conceptos
¿Por qué son importantes las estructuras de datos?
Una de las principales razones por la que las estructuras dedatos son importantes es muy simple: tiempo.
Antes de saber siquiera ¿qué es una estructura de datos?,veamos un ejemplo…
Estructuras de Datos Introducción 5
Introducción a las estructuras de datosMotivación Conceptos
Ejemplo:
Supongamos que tenemos un programa que realiza losiguiente:
• Crear 5 contenedores de información diferentes.
• Insertar 100.000 elementos en cada contenedor, específicamentelos números pares entre 0 y 200.000.
• Realizar 50.000 búsquedas (enteros 0-50.000).
• Eliminar 20.000 elementos (enteros 0-20.000).
Estructuras de Datos Introducción 6
Introducción a las estructuras de datosMotivación Conceptos
Contenedores de información:
• Arreglo
• Arreglo ordenado
• Lista enlazada
Estructuras de Datos Introducción 7
Introducción a las estructuras de datosMotivación Conceptos
• Árbol binario
• Tabla Hash
Resultados
Procesador: 2.4GHz AMD Opteron 6278 Compilador: clang++
Flags: -O3 (fast)
Nota: estas estructuras no están optimizadas; las librerías estándar de C++ contienenversiones optimizadas que podrían comportarse de forma diferente.
Estructuras de Datos Introducción 8
Contenedor(Estructura)
Tiempo total (s)
Arreglo 9,80517
Lista enlazada 23,38263
Tabla Hash 0,01826
Árbol binario 0,06077
Arreglo ordenado 4,87678
Factor 537×
Factor1280×
Introducción a las estructuras de datosMotivación Conceptos
Resultados
¿Por qué tantas diferencias?
Estructuras de Datos Introducción 9
Contenedor(Estructura)
Tiempo total (s)
Insertar(s)
Buscar(s)
Eliminar(s)
Arreglo 9,80517 0,00171 6,97600 2,82746Lista enlazada 23,38263 0,00719 13,70261 9,67283Tabla Hash 0,01826 0,01649 0,00119 0,00058Árbol binario 0,06077 0,04424 0,00977 0,00675Arreglo ordenado 4,87678 3,79290 0,00734 1,07653
Introducción a las estructuras de datosMotivación Conceptos
Resultados
• Algunas estructuras almacenan mayor cantidad deinformación simplemente por su diseño.→ A nivel de hardware, la memoria está organizada como si
fuera un solo arreglo gigante.Estructuras de Datos Introducción 10
Contenedor(Estructura)
Tiempo total (s)
Insertar(s)
Buscar(s)
Eliminar(s)
Arreglo 9,80517 0,00171 6,97600 2,82746Lista enlazada 23,38263 0,00719 13,70261 9,67283Tabla Hash 0,01826 0,01649 0,00119 0,00058Árbol binario 0,06077 0,04424 0,00977 0,00675Arreglo ordenado 4,87678 3,79290 0,00734 1,07653
Introducción a las estructuras de datosMotivación Conceptos
Resultados
• Manipular las estructuras toma tiempo.→ Para conseguir la estructura de los datos de la forma que
queremos, necesitamos hacerlo nosotros mismos.
Estructuras de Datos Introducción 11
Contenedor(Estructura)
Tiempo total (s)
Insertar(s)
Buscar(s)
Eliminar(s)
Arreglo 9,80517 0,00171 6,97600 2,82746Lista enlazada 23,38263 0,00719 13,70261 9,67283Tabla Hash 0,01826 0,01649 0,00119 0,00058Árbol binario 0,06077 0,04424 0,00977 0,00675Arreglo ordenado 4,87678 3,79290 0,00734 1,07653
Introducción a las estructuras de datosMotivación Conceptos
Resultados
Realizar búsquedas en un arreglo ordenado es rápidoporque sabemos de antemano que hay una serie de“invariantes” que se cumplen.
Estructuras de Datos Introducción 12
Contenedor(Estructura)
Tiempo total (s)
Insertar(s)
Buscar(s)
Eliminar(s)
Arreglo 9,80517 0,00171 6,97600 2,82746
Lista enlazada 23,38263 0,00719 13,70261 9,67283Tabla Hash 0,01826 0,01649 0,00119 0,00058Árbol binario 0,06077 0,04424 0,00977 0,00675
Arreglo ordenado 4,87678 3,79290 0,00734 1,07653
Introducción a las estructuras de datosMotivación Conceptos
Resultados
Las eliminaciones son lentas en los arreglos porque nosólo se tiene que buscar el valor a eliminar, sino que sedebe ajustar la estructura posteriormente de una formapoco trivial (dependiendo del modelo).
Estructuras de Datos Introducción 13
Contenedor(Estructura)
Tiempo total (s)
Insertar(s)
Buscar(s)
Eliminar(s)
Arreglo 9,80517 0,00171 6,97600 2,82746Lista enlazada 23,38263 0,00719 13,70261 9,67283
Tabla Hash 0,01826 0,01649 0,00119 0,00058Árbol binario 0,06077 0,04424 0,00977 0,00675Arreglo ordenado 4,87678 3,79290 0,00734 1,07653
Introducción a las estructuras de datosMotivación Conceptos
Resultados
Siempre existen soluciones de compromiso cuando seseleccionan las estructuras, por ejemplo: insertar en unarreglo ordenado es 2000× más lento que en uno noordenado.
Estructuras de Datos Introducción 14
Contenedor(Estructura)
Tiempo total (s)
Insertar(s)
Buscar(s)
Eliminar(s)
Arreglo 9,80517 0,00171 6,97600 2,82746
Lista enlazada 23,38263 0,00719 13,70261 9,67283Tabla Hash 0,01826 0,01649 0,00119 0,00058Árbol binario 0,06077 0,04424 0,00977 0,00675
Arreglo ordenado 4,87678 3,79290 0,00734 1,07653
Introducción a las estructuras de datosMotivación Conceptos
Resultados
¿Por qué las eliminaciones tardan menos tiempo?• Se hacen 20.000 eliminaciones y 50.000 búsquedas.• Cada que se elimina un elemento, el tamaño del contenedor
disminuye y se facilita el trabajo para la próxima vez.
Estructuras de Datos Introducción 15
Contenedor(Estructura)
Tiempo total (s)
Insertar(s)
Buscar(s)
Eliminar(s)
Arreglo 9,80517 0,00171 6,97600 2,82746Lista enlazada 23,38263 0,00719 13,70261 9,67283Tabla Hash 0,01826 0,01649 0,00119 0,00058Árbol binario 0,06077 0,04424 0,00977 0,00675Arreglo ordenado 4,87678 3,79290 0,00734 1,07653
Introducción a las estructuras de datosMotivación Conceptos
¿Cuál es la mejor estructura de datos?
En este caso, la tabla Hash.En general, depende del problema que se quierasolucionar.
Estructuras de Datos Introducción 16
Contenedor(Estructura)
Tiempo total (s)
Insertar(s)
Buscar(s)
Eliminar(s)
Arreglo 9,80517 0,00171 6,97600 2,82746Lista enlazada 23,38263 0,00719 13,70261 9,67283Tabla Hash 0,01826 0,01649 0,00119 0,00058Árbol binario 0,06077 0,04424 0,00977 0,00675Arreglo ordenado 4,87678 3,79290 0,00734 1,07653
Introducción a las estructuras de datosMotivación Conceptos
Estructura de datos ideal• Rápida• Elegante• Manejo de memoria eficiente
Distintos niveles de compromiso a explorar:• Tiempo vs. Espacio• Desempeño vs. Elegancia• Generalidad vs. Simplicidad• El desempeño de una operación vs. el de otra.
Estructuras de Datos Introducción 17
Introducción a las estructuras de datosMotivación Conceptos
Tipos de problemas que podremos resolver
Ejemplo 1: un “diccionario” de datos
Como en el caso anterior, dada una gran cantidad de datos, cómo podemos organizarlos para poder (de forma eficiente):- Insertar un nuevo elemento- Buscar un elemento- Eliminar un elemento
Como vimos, algunas estructuras de datos proporcionan un mejor rendimiento que otras.
Estructuras de Datos Introducción 18
Introducción a las estructuras de datosMotivación Conceptos
Tipos de problemas que podremos resolver
Ejemplo 2:
Dada una serie de rutas para ir de un lugar a otro en una ciudad, determinar el camino más corto desde A hasta B.
Estructuras de Datos Introducción 19
Introducción a las estructuras de datosMotivación Conceptos
Conceptos vs. Mecanismos
Estructuras de Datos Introducción 21
AlgoritmoUna secuencia de pasos ordenados para alcanzar un objetivo, que se relaciona con una representación abstracta de los datos.
ProgramaUna secuencia de operaciones en un lenguaje de programación específico, que trabaja con datos reales en forma de números, imágenes, sonido, …
Introducción a las estructuras de datosMotivación Conceptos
Conceptos vs. Mecanismos
Estructuras de Datos Introducción 22
Tipo de Dato Abstracto Una descripción matemática de un objeto y sus operaciones.
Estructura de datosUna forma específica de representar los datos de un programa, que refleja las decisiones de diseño y los objetivos del programador.
Introducción a las estructuras de datosMotivación Conceptos
Tipo de dato abstracto (ADT)Es un modelo de una estructura de datos que especifica:- Las características de la colección de datos- Las operaciones que se pueden llevar a cabo en la
colección de datos
Estructura de datosImplementan tipos de datos abstractos (ADTs)
Estructuras de Datos Introducción 23
Introducción a las estructuras de datosMotivación Conceptos
Tipo de dato abstracto (ADT)
• Es abstracto porque no se especifica cómo será
implementado (sólo se especifica)
• Puede tener múltiples implementaciones
• También llamados TDA o TAD en español
• Se definen como cajas negras de entradas y salidas
• Las interfaces en JAVA son una forma de ADTs
• Varían en cuanto a complejidad:
9 Arreglos, listas, pilas, colas, árboles, montículos, tablas hash,
grafos, …
Estructuras de Datos Introducción 24
Introducción a las estructuras de datosMotivación Conceptos
Ejemplo: ADT Arreglo
• Es posible:o Insertar elementos en el arreglo por el índiceo Leer elementos por el índice
• Normalmente no nos preocupamos por cosas como:o ¿Dónde están los datos en la memoria?o ¿Cómo hace para encontrar el elemento i dentro del arreglo?
Estructuras de Datos Introducción 25
Introducción a las estructuras de datosMotivación Conceptos
Nuestra dualidad
• Como programadores, es una buena práctica tratar nuestras cajas negras como tal. ¾ Esto facilita el diseño y se obtienen programas más limpios.
• Como ingenieros, debemos entender la teoría detrás de las estructuras de datos.¾ Esto nos ayuda a inventar nuevas estructuras, y a entender
mejor cuando se debe usar que ADT o una implementación específica.
Estructuras de Datos Introducción 26
Introducción a las estructuras de datosMotivación Conceptos
Especificación de un ADT• Consiste en establecer las propiedades y operaciones
que lo definen• Debe ser:
o Precisa: sólo lo imprescindibleo General: adaptable a diferentes contextoso Legible: que sirva de comunicador entre quien especifica y
quien implementao No ambigua: evita problemas de interpretación
• Definición informal (lenguaje natural) o formal (algebraica)
Estructuras de Datos Introducción 27
Introducción a las estructuras de datosMotivación Conceptos
Implementación de un ADT• Consiste en determinar una representación para los
valores del tipo y en codificar sus operaciones a partir de esta representación
• Debe ser:• Estructurada: facilita su desarrollo• Eficiente: optimiza el uso de recursos Æ Evaluación de distintas soluciones mediante la complejidad (espacial y temporal)
• Legible: facilita su modificación y mantenimiento
Estructuras de Datos Introducción 28
Introducción a las estructuras de datosMotivación Conceptos
Preguntas
top related