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

Documentos relacionados
Programación TADs Colecciones Conjuntos, Diccionarios y Tablas

ESTRUCTURAS DE DATOS Y ALGORITMOS

Estructura de datos y de la información Boletín de problemas - Tema 10

2. Con una lista ordenada, aunque la localización y eliminación es rápida el problema es en la inserción de datos pues puede ser del orden de O(n).

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

95.12 Algoritmos y Programación II Práctica 7: árboles

Colas deprioridad y heaps

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

Segundo parcial de Programación 2

ÍNDICE 1. Índice Listas ordenadas Operaciones permitidas Pilas Operaciones permitidas...

EDA. Tema 8 Colas de Prioridad: Heaps

Árboles Binarios Ordenados Árboles AVL

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.

Tema: Métodos de Ordenamiento. Parte 3.

Colas con prioridad, montículos y el heapsort. Lección 18

Introducción a los árboles. Lección 11

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

Estructuras de datos: Árboles binarios de

Algoritmos y Estructuras de Datos Curso 04/05. Ejercicios

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

ASIGNATURA: (TIS-106) Estructuras de Datos II DOCENTE: Ing. Freddy Melgar Algarañaz TEMA 4. Montículos binarios (heaps)

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

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

Examen de Estructuras de Datos y Algoritmos. (Modelo 2)

Examen de Estructuras de Datos y Algoritmos. (Modelo 1)

Árboles RN Montículos

Árboles AVL. Lección 14

Ejercicios del Tema 3 Estructuras jerárquicas: Árboles

Instituto de Computación. Facultad de Ingeniería. Universidad de la República Examen de Programación 2 03 de Agosto de 2006 Generalidades:

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

Tablas de dispersión

Programación de sistemas Árboles

Estructuras de Datos II

Tema: Métodos de Ordenamiento. Parte 3.

3.6. Árboles B DEFINICIONES

Aprender los conceptos, manejo, usos y aplicación de heaps a fin de utilizarlos para el desarrollo de aplicaciones

Tema: Arboles en C#. Objetivos Específicos. Materiales y Equipo. Introducción Teórica. Definición de Árbol Binario. Programación IV. Guía No.

localizar de un dato con un acceso directo y en una sola comparación de la llave. HASH

Árboles Binarios de Búsqueda. Lección 13

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

Análisis y Complejidad de Algoritmos. Arboles Binarios. Arturo Díaz Pérez

El TAD Árbol. El TAD Árbol

Diseño de Conjuntos y Diccionarios

3. COLA DE PRIORIDAD DEFINICION (I)

Estructura de Datos. Índice

Tablas (Diccionarios). Modelo matemático

EJERCICIO 2 (3 PUNTOS) A) Sea el árbol binario AVL de la figura siguiente: B) Dada la estructura de la figura siguiente:

FICHEROS Y BASES DE DATOS (E44) 3º INGENIERÍA EN INFORMÁTICA. Tema 4. Técnicas de Dispersión. Definición y Manejo.

Estructuras de Datos y Algoritmos

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

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

Lista Simple con Puntero al Principio y Puntero al Final

Programación con Estructuras de Datos

Árboles. Árboles. Árboles binarios de búsqueda. Árboles. Inserción en un árbol. Árbol binario de búsqueda

Estructura de Datos Tema 6. Árboles. Contenido 14/06/2018

Examen de Programación 2 Diciembre de 2012

PROGRAMA EDUCATIVO INFORMATICA ADMINISTRATIVA

75.04 Algoritmos y Programación II Práctica 6: árboles

Ampliación de Estructuras de Datos

UNIVERSIDAD NACIONAL AUTÓNOMA DE MÉXICO

Complejidad computacional. Algoritmos y Estructuras de Datos I. Complejidad computacional. Notación O grande

Estructuras de Datos

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

ESTRUCTURA DE DATOS. ABB Arboles de Búsqueda Binaria

Árboles B y B ) 20. Algoritmos y Estructuras de Datos II I.T. en Informática de Gestión/Sistemas Universidad de Huelva 63

Introducción a Árboles Árboles Binarios

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

1. Una pila funciona según el método LIFO (Last In First Out ). Se define la clase Pila de la siguiente forma:

Estructura de Datos. Temario Unidad VI. Árboles Árboles Binarios

Universidad de los Andes Ingeniería de Sistemas y Computación. ISIS1205 Algorítmica y Programación 2. Hoja de trabajo teórica Nivel 7 (N7-EE)

INDICE 1.1. Información y Significado 1.2. Arreglos en C 1.3. Estructura en C 1.4. Clases en C++ 2. La Pila 2.1. Definición y Ejemplos

4.5 Árboles AVL (Adelson-Velskii y Landis) Inserción y extracción en árboles AVL

Árboles balanceados (AVL) Estructura de datos

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 -

Tema 14: ÁRBOLES Algoritmos y estructuras de datos I - Tema 14 1

Algoritmos y Programación II Curso 2006

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

Estructuras de Datos y Algoritmos Tema 3: Arrays y listas enlazadas

UNIVERSIDAD AUTONOMA DE MADRID ESCUELA POLITÉCNICA SUPERIOR ESTRUCTURAS DE DATOS Y ALGORITMOS

Estructura de Datos Unidad 6: ARBOLES

5 Métodos de Ordenamiento. 5.1 Métodos de Ordenamiento Internos Burbuja Quicksort Heapsort Inserción Simple 5.1.

Definición recursiva de los árboles

Análisis amortizado El plan:

12/08/2017 AVL. Especificación sobre árboles AVL. AVL: rotaciones

Eduardo Mosqueira Rey Bertha Guijarro Berdiñas Mariano Cabrero Canosa

Estructuras dinámicas lineales (i)

Un árbol binario T se define como un conjunto finito de elementos, llamados nodos, de forma que:

FUNDAMENTOS DE PROGRAMACIÓN Datos recursivos II

Tema 09: TAD Árbol binario

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

Bases de Datos Multimedia

Estructuras de datos Listas y árboles

Árboles. Alonso Ramírez Manzanares Computación y Algoritmos Friday, March 17, 17

SEMINARIO DE ESPECIFICACIONES ALGEBRAICAS

Ordenamiento en Tiempo Lineal - Medianas y Ordenes sticas

Árboles Binarios Ordenados Árboles AVL

INFORMATICA II PRIMER PARCIAL

Árbol ABB equilibrado. Lección: Árboles. Algorítmica II (Tema 4) Lenguajes y Sistemas Informáticos, Universidad Pablo de Olavide 1/ 58

Transcripción:

Práctico 4 Árboles balanceados (AVL) Tablas de dispersión (Hash) Colas de prioridad (Heap) Clasificación de ejercicios: (I) Imprescindibles (R) Recomendados (C) Complementarios Árboles balanceados (AVL) EJERCICIO 1 (I) 1. Definir qué es un árbol AVL. 2. Dibujar el peor árbol AVL de altura h, para h = 0,1,2,3,4. 3. Indicar en el caso general, cómo generar un peor árbol AVL para una altura h, con h 2. 4. Mostrar el AVL resultante de insertar en un árbol de enteros inicialmente vacío, los siguientes elementos en este orden: 3, 5, 16, 12, 8, 7, 9. Mostrar todos los pasos intermedios. EJERCICIO 2 (C) Muestre el resultado de insertar 2,1,4,5,9,3,6,7 en un árbol AVL inicialmente vacío. EJERCICIO 3 (I) Escriba en C las operaciones para realizar rotaciones simples y dobles sobre árboles AVL. Implemente las rotaciones dobles de dos formas: primero como dos rotaciones simples y luego directamente (sin utilizar funciones auxiliares). 1

Instituto de Computación Facultad de Ingeniería EJERCICIO 4 (I) Implemente en C el TAD AVL de enteros con las operaciones: EsVacio Borrar : AVL : AVL int AVL : AVL boolean : AVL int boolean : AVL int AVL Tablas de dispersión (Hash) EJERCICIO 5 (I) Implemente en C tablas de dispersión cerrada con operaciones: Borrar : entero-tamaño hash : hash entero hash : hash entero bool : hash entero hash 1. Con resolución lineal de colisiones. 2. Con resolución cuadrática de colisiones. 3. Impleméntelo ahora como una tabla de dispersión abierta. EJERCICIO 6 (I) Suponga que se tiene una tabla de dispersión abierta de 7 buckets, con la función de dispersión: h(i) = i % 7 1. Muestre la tabla de dispersión resultante de insertar los cubos perfectos 1, 8, 27, 64, 125, 216, 343. 2. Repita la parte anterior para una tabla de dispersión cerrada, usando resolución lineal de colisiones. 3. Ahora con resolución cuadrática de colisiones. EJERCICIO 7 (R) Dada la entrada 4371, 1323, 6173, 4199, 4344, 9679, 1989 y una función de dispersión: h(i) = i % 10 muestre las resultantes: 1. tabla de dispersión abierta 2. tabla de dispersión cerrado con resolución lineal de colisiones 3. tabla de dispersión cerrado con resolución cuadrática de colisiones 4. tabla de dispersión cerrado con una segunda función de dispersión h 2 (i) = 7 - (i % 7) 2

Programación 3 Prácticos 2005 3 EJERCICIO 8 (C) Suponga que se utiliza una tabla de dispersión cerrada con 5 posiciones y la función de dispersión: h(i) = i % 5 Muestre la tabla que resulta si la secuencia 23, 48, 35, 4, 10 es insertada en una tabla inicialmente vacía. EJERCICIO 9 (I) Implemente las operaciones del TAD mapping, con dominio y codominio en los enteros, usando tablas de dispersión abierta y cerrada con resolución lineal de colisiones. Computar : entero-tamaño mapping : mapping entero entero mapping : mapping entero bool : mapping entero entero EJERCICIO 10 (I) i) Definir el TAD Diccionario. ii) Se tiene un universo de registros con claves entre 1 N, donde N es un entero fijo. Definir una estructura de datos que implemente eficientemente las operaciones del TAD Diccionario. Justificar la respuesta. iii) Se tiene un universo de registros con claves entre 1::M, donde M es un entero fijo, de los cuales solo se precisa trabajar con un conjunto de N registros con N = O(log M). Definir una estructura de datos que implemente eficientemente las operaciones del TAD Diccionario. Justificar la respuesta. EJERCICIO 11 (R) Dado un diccionario con N elementos, se proponen las siguientes 3 implementaciones: Un vector de N elementos. Un árbol binario de búsqueda balanceado (AVL) de N elementos. Una tabla de dispersión de N elementos con colisiones resueltas por encadenamiento. (a) Indicar una situación en la cual la mejor solución es usar el vector de N elementos, y justificar en una frase su respuesta. En dicho caso, indicar tiempo de ejecución promedio y peor caso para implementar las operaciones del TAD Diccionario. (b) Indicar una situación en la cual la mejor solución es usar el árbol binario de búsqueda balanceado de N elementos, y justificar en una frase su respuesta. En dicho caso, indicar tiempo de ejecución promedio y peor caso para implementar las operaciones del TAD Diccionario. (c) Indicar una situación en la cual la mejor solución es usar la tabla de dispersión de N elementos, y justificar en una frase su respuesta. En dicho caso, indicar tiempo de ejecución promedio y peor caso para implementar las operaciones del TAD Diccionario. 3

Instituto de Computación Facultad de Ingeniería EJERCICIO 12 (R) Dado el TAD Diccionario de enteros (acotados entre 1 y N) definido con las siguientes operaciones: Eliminar : Diccionario : Diccionario entero Diccionario : Diccionario entero bool : Diccionario entero Diccionario Suponga que no se van a ingresar al Diccionario más de (N/10) elementos. a) Proponga una implementación eficiente para este TAD. b) Utilizando las primitivas del TAD, implemente las siguiente operaciones: Intersección : Diccionario Diccionario Diccionario // Retorna el Diccionario con los elementos que pertenecen a los dos Diccionarios pasados como parámetro */ BorrarMinimo : Diccionario Diccionario /* Retorna el Diccionario resultante de eliminar al parámetro su menor elemento */ c) Ahora proponga una implementación eficiente para el TAD con las siguiente operaciones: : Diccionario : Diccionario entero Diccionario : Diccionario entero bool Eliminar : Diccionario entero Diccionario Intersección : Diccionario Diccionario Diccionario BorrarMinimo : Diccionario Diccionario d) Compare el tiempo de ejecución de las implementaciones propuestas en las partes a) y c), para cada una de las seis operaciones. Colas de prioridad (Heap) EJERCICIO 13 (I) 1. Muestre el árbol parcialmente ordenado que resulta si los enteros 5, 6, 4, 9, 3, 1, 7 son insertados en un árbol vacio. 2. Cual es el resultado de tres BorrarMin sucesivos en el árbol de la parte anterior. EJERCICIO 14 (I) Implemente en C el TAD cola de prioridad de enteros (de tamaño acotado) con las siguientes operaciones: Minimo BorrarMin : int colap : colap int colap : colap int : colap colap 4

Programación 3 Prácticos 2005 3 EJERCICIO 15 (R) En ciertas aplicaciones de colas de prioridad, por ejemplo administración de tareas en un sistema operativo, se desea poder aumentar y disminuir la prioridad de un elemento, así como también borrar elementos arbitrarios. Para ello se extiende el TAD cola de prioridad con operaciones DecrementarLlave (x,d,m): reduce el valor de la clave en x una cantidad positiva d IncrementarLlave (x,d,m): aumenta el valor de la clave en x una cantidad positiva d Eliminar (x): se utiliza DecrementarLlave y luego BorrarMin. Para que la extensión del TAD con estas operaciones sea efectiva, se debe contar con una estructura adicional que permita dado un valor, determinar cual es su posición dentro del heap (en caso de que se utilice un heap para implementarlo). Diseñe estructuras de datos apropiadas que permitan extender el TAD cola de prioridad con estas operaciones. Implemente el TAD cola de prioridad extendido con las operaciones: : int colape : colape int colape Minimo : colape int BorrarMin : colape colape DecrementarLlave : colape int colape IncrementarLlave : colape int colape Eliminar : colape int colape EJERCICIO 16 (R) Indicar cuales de las siguientes secuencias de enteros se corresponden con la implementación de una cola de prioridad como un heap. En lo que sigue solo se muestran las prioridades de los elementos ordenadas de izquierda a derecha tal como están almacenadas en el arreglo (sin tener en cuenta la posición 0): a) 23, 45, 78, 12, 90, 3, 5 b) 9, 6, 7, 9, 3, 6, 6 c) 13, 13, 13, 13, 13, 13, 13, 11, 11 d) 1, 2, 3, 4, 5, 6, 7 e) 7, 6, 5, 4, 3, 2, 1 EJERCICIO 17 (C) La implementación de una cola de prioridad mediante un heap permite encontrar el elemento mínimo en tiempo constante y borrar e insertar un elemento en O(log(n)). Explicar como modificar la estructura de heap y las operaciones de cola de prioridad para proveer la implementación de una cola de prioridad que tiene las siguientes características: 1. Un elemento se puede insertar en tiempo O(log(n)). 2. El máximo y el mínimo se pueden borrar en tiempo O(log(n)). 3. El máximo o el mínimo se pueden encontrar en tiempo constante. Sugerencia: ordenar los elementos de modo que los nodos en los niveles pares tengan valor mayor que sus descendientes y los nodos en los niveles impares tengan valores menores que los de cualquiera de sus descendientes. Esta estructura se denomina comunmente min-max-heap. 5

Instituto de Computación Facultad de Ingeniería EJERCICIO 18 (C) Una variante de la estructura descripta en el ejercicio anterior, es la llamada "deap" (double ended heap). Un deap es como un heap, excepto que no hay ningún elemento en la raíz. El sub árbol izquierdo de la raíz es un heap ordenado con el mínimo elemento en la raíz y cada nodo tiene clave menor o igual que la de sus hijos. El sub árbol derecho de la raíz es un heap con el máximo elemento en la raíz y cada nodo tiene clave mayor o igual que la de sus hijos. Cada hoja del heap izquierdo es menor que la correspondiente hoja en el heap derecho, donde el "correspondiente" es el que está en la misma posición en el heap, si existe y sino su padre. Muestre que hay algoritmos para implementar las mismas operaciones que en el Ejercicio 17, con las mismas restricciones de tiempo. EJERCICIO 19 (C) Se pretende agregar a las operaciones de cola de prioridad del ejercicio 2, la siguiente: DecrementarTodas : colap int colap que disminuye en cierto valor las claves de todos los elementos del heap. Discuta si es posible implementar esta operación en O(1) peor caso y en caso afirmativo qué impacto tiene sobre el resto de las operaciones. 6