TRABAJO PRÁCTICO N 7 Mapeos, diccionarios, arboles binarios de búsqueda y tablas de dispersión

Documentos relacionados
Árboles balanceados (AVL) Tablas de dispersión (Hash) Colas de prioridad (Heap)

ESCUELA SUPERIOR POLITECNICA DEL LITORAL PROGRAMA DE ESTUDIOS

GUÍA DOCENTE ABREVIADA DE LA ASIGNATURA

Estructuras de Datos Clase 14 Árboles binarios de búsqueda

GUÍA DOCENTE DE LA ASIGNATURA

Estructuras de Datos Clase 20 Árboles de búsqueda

Estructuras de Datos. Clase 20 Árboles de búsqueda. Dr. Sergio A. Gómez.

Algoritmos y Estructuras de Datos Curso 04/05. Ejercicios

TEMA 3. Árboles. Objetivos. Contenidos. Bibliografía. Básica

Estructuras de Datos y Algoritmos. Programa de la asignatura

Tema 05: Tablas hash. M. en C. Edgardo Adrián Franco Martínez edgardoadrianfrancom

Estructuras de Datos Clase 4 Pilas y colas

Estructura de Datos. Árboles Binarios de Búsqueda ABB. Primer Semestre, 2010

Segundo parcial de Programación 2

Algoritmos y Estructuras de Datos Ingeniería en Informática

Programa del Curso I Semestre, Algoritmos y Estructuras de Datos

EDA. Tema 8 Colas de Prioridad: Heaps

Programación 2 Práctico 9 - TADs Árbol Binario de Búsqueda, Árbol Finitario y Árbol n-ario

UNIVERSIDAD NACIONAL MAYOR DE SAN MARCOS (Universidad del Perú, DECANA DE AMÉRICA)

ORGANIZACIÓN DOCENTE del curso

Programación TADs Colecciones Conjuntos, Diccionarios y Tablas

A) PREORDEN B) INORDEN C) POSTORDEN D) NIVELES

UNIVERSIDAD NACIONAL MAYOR DE SAN MARCOS (Universidad del Perú, DECANA DE AMÉRICA)

Estructuras de Datos Clase 7 Listas e Iteradores (segunda parte)

A l g o r i t m o y E s t r u c t u r a d e D a t o s Ing. en Sistemas de Información - 1º año -

A l g o r i t m o y E s t r u c t u r a d e D a t o s Ing. en Sistemas de Información - 1º año -

Fecha de elaboración: Agosto de 2004 Fecha de última actualización: Julio de 2010

Estructuras de Datos

GUÍA DOCENTE DE LA ASIGNATURA

Estructuras de Datos Clase 1 - Introducción

Ejercicios del Tema 3 Estructuras jerárquicas: Árboles

Segundo Parcial de Programación 2 7 de junio de 2017

GUÍA DOCENTE DE LA ASIGNATURA

UNIVERSIDAD RICARDO PALMA FACULTAD DE INGENIERÍA ESCUELA DE INGENIERÍA INFORMÁTICA SÍLABO AÑO ACADÉMICO 2015-II PLAN DE SESIÓN DE APRENDIZAJE

Ejercicio 2 Considere la representación para Lista de Naturales y Árbol Binario de Naturales de la Figura 1.

Tablas de dispersión (hash tables)

UNIVERSIDAD RICARDO PALMA FACULTAD DE INGENIERÍA

Guía docente de la asignatura

PLAN DE ESTUDIOS 2006-II SÍLABO

Taller de Programación I. Tema 08: Estructuras Dinámicas de Datos en Java

Lista Simple con Puntero al Principio y Puntero al Final

ESTRUCTURAS DE DATOS II

UNIVERSIDAD NACIONAL AUTÓNOMA LICENCIADO EN CIENCIAS DE LA COMPUTACIÓN

Programa de la asignatura Curso: 2008 / 2009 ESTRUCTURAS DE DATOS (1292)

Hashing (Funciones de Dispersión)

Algoritmos y Estructuras de Datos I Ejercicios. Tema 3. Árboles

Procesadores de lenguaje Tema 6 La tabla de símbolos

PRÁCTICO N o 7. Lenguaje de Diseño (Tercera Parte): Modularización. Ejercicio 1: Teniendo en cuenta la resolución del ejercicio 7 del Práctico 6:

Esquema básico de una Tabla de Dispersión

Tema 03: TAD Cola. M. en C. Edgardo Adrián Franco Martínez edgardoadrianfrancom

División Académica de Informática y Sistemas

FUNDAMENTOS DE PROGRAMACIÓN TALLER No. 1 Profesor: Alvaro Ospina Sanjuan

Almacenamiento y Recuperación de la Información

ESTRUCTURA DE DATOS Y ALGORITMOS Titulación: Ingeniero Técnico en Informática de Gestión Curso: 2º Nombre y apellidos: Nota:

PROGRAMA EDUCATIVO INFORMATICA ADMINISTRATIVA

GUÍA DE APRENDIZAJE ESTRUCTURA DE DATOS

Programa Analítico Asignatura: ESTRUCTURAS DE DATOS Y ALGORITMOS

Alonso Ramirez Manzanares Computación y Algoritmos 03.05

Estructuras de Datos II

UNIVERSIDAD AUTÓNOMA DE YUCATÁN FACULTAD DE MATEMÁTICAS MISIÓN

BENÉMERITA UNIVERSIDAD AUTÓNOMA DE PUEBLA VICERRECTORÍA DE DOCENCIA DIRECCIÓN GENERALDE EDUCACIÓN SUPERIOR FACULTAD DE CIENCIAS DE LA COMPUTACIÓN

INSTITUTO POLITÉCNICO NACIONAL SECRETARÍA ACADÉMICA DIRECCIÓN DE ESTUDIOS PROFESIONALES EN INGENIERÍA Y CIENCIAS FÍSICO MATEMÁTICAS PROGRAMA SINTÉTICO

Benemérita Universidad Autónoma de Puebla Facultad de Ciencias de la Computación Área de Programación

Nombre del Documento: Formato de Planeación e Instrumentación Didáctica

Examen No. 3 Valor: 50 Puntos (25% de la Nota Final) Tiempo Máximo 2 Horas Fecha: 9 de Diciembre del 2016

ESTRUCTURA DE DATOS Y ALGORITMOS Titulación: Ingeniero Técnico en Informática de Gestión Curso: 2º Nombre y apellidos: Nota:

Francisco J. Hernández López

Tema 4- Representación Enlazada

1. Cuál es el número total máximo de nodos que tiene un árbol binario de N niveles? a. N 2-1 b. 2 N+1-1 c. 2 N d. 2 N+1 i.

Algoritmos y Estructuras de Datos

Listas, Pilas y Colas

GUÍA DOCENTE. Ingeniería Informática en Sistemas de Información Doble Grado:

Práctica 2 - Manejo de estructuras de datos y punteros

Mar Mie

UNIVERSIDAD CATÓLICA DEL NORTE PROGRAMA DE ESTUDIOS IDENTIFICACIÓN DE LA ASIGNATURA. Nombre: Estructuras de Datos y Archivos

Pontificia Universidad Católica del Ecuador

Estructuras de datos: Tablas de dispersión

Guía docente de la asignatura

GUÍA DOCENTE Estructuras de Datos

Gloria Guadalupe González Flores, José Hernández Torruco Fecha de elaboración: 28 de Mayo de 2010 Fecha de última actualización:

Estructura de datos y Algoritmos. Tema III Clasificación en memoria secundaria

Archivos Indice. Indexación y. Asociación. Conceptos Básicos Indices Ordenados Arboles. Asociación. Docente: Albert A.

Procesadores de lenguaje Tema 6 La tabla de símbolos

Benemérita Universidad Autónoma de Puebla Vicerrectoría de Docencia Dirección General de Educación Superior Facultad de Ciencias de la Computación

Carrera: IFM Participantes. Representantes de la academia de sistemas y computación de los Institutos Tecnológicos.

GUÍA DOCENTE Estructuras de Datos

Algoritmos y Programación II Curso 2006

Asignaturas antecedentes y subsecuentes Programación II, Programación IV

PRÁCTICA #6 TIPOS DE DATOS ESTRUCTURADOS: Arreglos, Registros y Archivos

Ingeniera de Sistemas: Luz Esperanza Espitia Tutora de Estructura de datos.

Solución práctico 6 Tipos Abstractos de Datos Lista, Pila y Cola

RESOLUCIÓN Nº 07. SANTA ROSA, 10 de Marzo de

UNIVERSIDAD DEL VALLE DE MÉXICO PROGRAMA DE ESTUDIO DE LICENCIATURA PRAXIS MES XXI

UNIVERSIDAD AUTONOMA DE BAJA CALIFORNIA

ESTRUCTURAS DE DATOS Y ALGORITMOS

Estructuras de Datos. 8.6 Árboles B. Supongamos que los nodos de un árbol deben ser guardados en un medio de almacenamiento secundario (disco).

Estructuras de Datos Clase 1 -Introducción

Transcripción:

ESTRUCTURAS DE DATOS TRABAJO PRÁCTICO N 7 Mapeos, diccionarios, arboles binarios de búsqueda y tablas de dispersión Departamento de Ciencias e Ingeniería de la Computación - U.N.S. Segundo cuatrimestre de 2018 Bibliografía: [GT] Michael Goodrich & Roberto Tamassia. Data Structures and Algorithms in Java. Fourth Edition. John Wiley and Sons. 2006. [W12] Mark A. Weiss. Data Structures and Algorithm Anlysis in Java. Third Edition. Addison-Wesley Pearson Education, Inc. 2012. Mapeos implementados con estructuras de datos lineales: Ejercicio 1: a) Defina el TDA Mapeo como se propone en [GT] documentando apropiadamente las operaciones. b) Implemente el TDA Mapeo utilizando una lista enlazada. Analice el orden del tiempo de ejecución de las operaciones implementadas. Justifique la elección del tipo de lista elegido. c) Si el tipo de las entradas del mapeo posee una operación para compararlas por menor, proponga dos implementaciones para el mapeo, una con una lista enlazada y ordenada y otra con un arreglo ordenado en forma ascendente. Analice el orden del tiempo de ejecución de ambas implementaciones. Ejercicio 2 Se poseen dos correspondencias (mapeos) M1 y M2 cuyas entradas tienen por dominio un número de libreta, y por imagen la nota de una materia (0..10). Ambos mapeos están implementados con una lista simplemente enlazada y sin celda de encabezamiento a) Escriba en Java todas las clases para implementar dichos mapeos. b) Realice un comando que reciba los dos mapeos M1 y M2 y devuelva una lista L con TODOS aquellos elementos E1 de M1 y E2 de M2 que coincidan en el valor del dominio pero tengan una imagen diferente. Por ejemplo si E1= (LU: 29303, Nota: 8) pertenece a M1 y E2= (LU:29303, Nota: 7) pertenece a M2, entonces E1 y E2 serán puestos en L. c) Calcule el orden del tiempo de ejecución del procedimiento implementado. Justifique su respuesta. Mapeos implementados con tablas de dispersión (hash) Ejercicio 3 Suponga que posee una tabla de dispersión abierta (hash externo o, tabla de buckets de acuerdo a [GT] 1 ) con 6 cubetas (buckets), para almacenar números enteros. Además posee la 1 La tabla de dispersión abierta correspode a un arreglo de listas de buckets, donde la entrada i-ésima del arreglo contiene una lista con todos los elementos que poseen el mismo valor de "hash" (es decir, las colisiones). 1

función de dispersión h(i) = i mod 6. Muestre la tabla de dispersión resultante de insertar la siguiente secuencia de elementos en una tabla vacía: (i) 13, 5, 30, 10, 7, 21, 9 (ii) 26, 8, 62, 14, 38, 50 Cómo podría redefinir la función de dispersión para evitar el problema que presenta la secuencia (ii) sabiendo que todos los números a insertar serán de la forma N = ( 6 K ) +2? Ejercicio 4 a) Implemente un mapeo de acuerdo a la interfaz Mapeo de [GT] en términos de una tabla de dispersión abierta (en [GT], este tipo de estructura de datos se menciona como arreglo de buckets). b) Analice el orden del tiempo de ejecución de la implementación dada en el inciso (a). c) Utilice el mapeo definido en (a) para implementar una función que hace corresponder el número de legajo de un alumno con los datos completos de un alumno. Para ello, suponga que posee una clase Alumno como la definida en el Ejercicio 6 del Práctico 6. d) Considere cómo implementar el mapeo del inciso (c) sin usar genericidad. Ejercicio 5 Agregue una operación a la clase programada en el ejercicio (4.a) que convierta a la tabla de dispersión T1 con B cubetas (buckets) en otra tabla de dispersión T2 con 2.B cubetas, que contenga todos los elementos de la tabla T1. Ejercicio 6 Implementar el TDA mapeo (correspondencia) utilizando una tabla de dispersión cerrada (en [GT] esta estructura de datos es llamada direccionamiento abierto). Utilizar una estrategia de resolución lineal de colisiones. 2 Ejercicio 7 a) Escriba un método ACOMODAR(D) que recibe un mapeo D, y que para cada elemento del mapeo con imagen I elimine de D todos los demás elementos que tengan imagen I. De esta manera, luego de utilizar el procedimiento, no habrá en el mapeo elementos con imágenes iguales. b) Justificando su respuesta, indique el orden del tiempo de ejecución del método ACOMODAR asumiendo que: el mapeo está implementado con una lista enlazada. el mapeo está implementado con una tabla de dispersión abierta el mapeo está implementado con un árbol binario de búsqueda c) Escriba una función CREAR-MAPEO-INVERSO(D) que reciba un mapeo D cuyo modelo sea el de función biyectiva, y retorne un mapeo inverso M, donde estén todos las entradas de D pero invertidos, esto es, la correspondencia es de TB a TA. Ej. Si en D está el par (A,B) entonces en M deberá estar el par (B,A). d) Justificando su respuesta, indique el orden del tiempo de ejecución del método CREAR- MAPEO-INVERSO asumiendo que: el mapeo está implementado con una lista enlazada. el mapeo está implementado con una tabla de dispersión abierta el mapeo está implementado con un árbol binario de búsqueda 2 El hash cerrado corresponde a un arreglo de buckets donde en cada bucket se almacena un único elemento y las colisiones se almacenan en otro bucket de acuerdo a una estrategia en particular (linear probing, quadratic probing, etc). 2

Ejercicio 8 Escriba en Java la estructura de datos que a su juicio se debería utilizar para implementar de la mejor manera los siguientes mapeos. Justifique su elección. Indique el espacio en memoria usado y el orden del tiempo de ejecución de las operaciones: Get y Put. a) números de libreta de los alumnos en la materia estructura de datos sus nombres b) números de libreta de los alumnos del curso de redes que fue limitado a 200 inscriptos sus nombres c) códigos de artículos del 20.000 al 20.100 sus precios d) nombre de mis amigos sus números de teléfono e) los nombres de los 20 mejores promedios de la UNS sus notas f) materias de la licenciatura que un alumno tiene aprobadas sus notas g) días de la semana que salgo a correr la hora h) días que llovió en Bahía Blanca desde el año 1950 cantidad de mm. i) días que nevó en Bahía Blanca desde el año 1950 cantidad de cm. Ejercicio 9 a) Escriba en Java un procedimiento que dados dos mapeos: M1 y M2 determine si todas los claves de M1 están contenidas en M2. b) Indique el orden del tiempo de ejecución del procedimiento implementado. Justifique Diccionarios Ejercicio 10 Qué estructura de datos o TDA estructural pueden utilizarse para implementar un TDA diccionario? Indique ventajas y desventajas de cada una de ellas. a) Implemente el TDA diccionario utilizando una tabla de dispersión abierta (arreglo de buckets). b) Compare la implementación de (b) con la de la correspondencia implementada con arreglo de buckets. Árboles binarios de búsqueda: Ejercicio 11 a) Defina un árbol binario de búsqueda (ABB) b) Cuál es el objetivo de este tipo de estructuras de datos? c) Existe alguna forma de recorrer el árbol tal que obtenga todos los elementos ordenados de menor a mayor? Y si desea obtenerlos ordenandos en forma decreciente? d) Dibuje todos los ABB que se pueden obtener para representar el conjunto C = {2, 4, 8, 10}. Cuál de los ABB anteriores es mejor en función del objetivo expuesto en el inciso b? e) Implemente un TDA correspondencia utilizando un ABB. Implemente además la operación MIN que retorna la mínima clave del ABB. f) Implemente un TDA diccionario utilizando un ABB. g) Compare los tiempos de ejecución de la operación find (Pertenece) implementada con una tabla de dispersión y con un ABB en el mejor y peor caso. h) Muestre el ABB resultante de ingresar los elementos (números enteros) 7, 2, 9, 0, 5, 6, 8, 1, en ese orden con la operación insertar, partiendo de un árbol vacío. Luego muestre el árbol resultante de eliminar los enteros 7 y 2, en ese orden y en orden inverso (ie, 2 y 7). El árbol resultante es el mismo? 3

Ejercicio 12 a) Realice un procedimiento que elimine los nodos de un ABB que no tienen rótulo R y que estén en el nivel 3. b) Realice un procedimiento para verificar si un árbol binario A es o no un ABB según la definición 11)a). c) Sea B un ABB y R1 y R2 rótulos de B. Realizar un procedimiento para eliminar de B el ancestro común de R1 y R2 más cercano. Ejercicio 13 a) Dados dos mapeos M1 y M2, M1 implementado con un árbol binario de búsqueda y M2 implementado con un tabla de dispersión abierta, se quiere determinar si todos los elementos de M1 están contenidos en M2. Analice variaciones de la solución si el método solución es: b) agregado como un método de la clase que implementa el mapeo M1 (esta operación sólo recibe un mapeo M2) c) agregado como un método de la clase que implementa el mapeo M2 (esta operación sólo recibe un mapeo M1) d) implementado por una clase de servicio que no tiene acceso ni a la estructura de datos de M1 ni a la de M2 (esta operación recibe un mapeo M1 y otro M2). Indique el orden del tiempo de ejecución de las soluciones implementadas. Justifique apropiadamente. Ejercicio 14 a) En un hospital donde hay 100 habitaciones hay un médico clínico encargado para cada habitación. Indique cuál es el TDA que mejor se adapta para mantener información sobre los encargados de cada habitación. Indique cuales son las estructuras de datos posibles para implementar el TDA elegido y escriba en Java la que considere más adecuada para este caso particular. b) Indique cuál es el TDA que mejor se adapta para mantener información sobre los enfermeros de un hospital que se dividen en tres turnos (Mañana, Tarde y Noche) y cada enfermero tiene asociado un grupo de habitaciones. Indique cuales son las estructuras de datos posibles para implementar el TDA elegido y escriba en Java la que considere más adecuada para este caso particular. c) Indique cuál es el TDA que mejor se adapta para mantener información sobre los pacientes que ingresan a la Guardia. Si se los quisiera organizar según el médico que los debería atender qué TDAs utilizaría? d) Asumiendo que los TDA de los incisos anteriores fueron implementados, y utilizando las operaciones vistas en clase para los TDA elegidos. Escriba en Java una operación que dado un enfermero devuelva que médicos encargados le asignan tareas para las habitaciones. e) Suponiendo que dispone del TDA lista y asumiendo que los TDA de los incisos anteriores fueron implementados. Utilizando las operaciones vistas en clase para los TDA elegidos, escriba en Java una operación que dada una lista de enfermeros devuelva todas las habitaciones en que trabajan. f) Se descubrió que un paciente tiene un virus peligroso y se desea rastrear un posible contagio. Escriba una operación que dada la habitación de un paciente, devuelva una lista de enfermeros que lo atendieron. g) Indique el orden del tiempo de ejecución de los procedimientos implementados. Justifique. 4

Ejercicio 15 Compare las operaciones del TDA diccionario implementado con: a) una tabla de dispersión b) un árbol binario de búsqueda c) una lista enlazada no ordenada d) una lista enlazada ordenada e) un arreglo Analice el orden del tiempo de ejecución de las operaciones y el espacio utilizado en memoria. Ejercicio 16 El tipo conjunto de elementos de tipo genérico E tiene las siguientes operaciones: insertar un elemento de tipo E, eliminar un elemento de tipo E, determinar si un elemento de tipo E pertenece al conjunto, realizar la unión con otro conjunto B actualizando el conjunto receptor del mensaje, realizar la intersección con otro conjunto B actualizando el conjunto receptor del mensaje. Plantee una interfaz acorde a la especificación dada y determine cómo implementar un conjunto de elementos de tipo E usando: a) una tabla de dispersión b) un árbol binario de búsqueda c) una lista enlazada no ordenada d) una lista enlazada ordenada e) un arreglo Analice el orden del tiempo de ejecución de las operaciones y el espacio utilizado en memoria. 5