Práctica 1 Heaps

Anuncio
Facultad de Ciencias Exactas, Ingenierı́a y Agrimensura
Escuela de Ciencias Exactas y Naturales
Departamento de Ciencias de la Computación
Estructuras de Datos
Práctica 1
Heaps
1. Elimine la recursión de la función max-heapify vista en clase.
2. Muestre que el peor caso de la función max-heapify es Ω(lg n)
3. Argumente la correctitud del algoritmo heapsort usando el siguiente invariante:
Al principio de cada iteración del ciclo for, el subarreglo A[1..i] es un max-heap que
contiene los i menores elementos de A[1..n], y el subarreglo A[i + 1..n] contiene los n − i
mayores elementos de A[1..n], ordenados.
Puede asumir que la función max-heapify es correcta.
4. Un Young Tableau es una tabla de tamaño m × n tal que:
Cada fila está ordenada en forma ascendente de izquierda a derecha
Cada columna está ordenada en forma ascendente de arriba hacia abajo
Algunas entradas de la tabla pueden tener el valor ∞, lo que significa que no hay un elemento
en esa posición. Por consiguiente, un Young Tableau puede utilizarse para almacenar r ≤ nm
elementos.
(a) Dibuje un Young Tableau que contenga los elementos {9, 16, 3, 2, 4, 8, 5, 14, 12}
(b) Muestre que un Young Tableau Y es vacı́o si Y [1, 1] = ∞. Muestre que un Y está lleno
(contiene nm elementos) si Y [m, n] < ∞
(c) Construya un algoritmo que, dado un Young Tableau no vacı́o, elimine y devuelva el elemento
mı́nimo. Su algoritmo debe correr en tiempo O(m + n). Sugerencia: Piense en max-heapify.
(d) Muestre cómo insertar un elemento en un m × n-Young Tableau que no se encuentra lleno en
tiempo O(n + m)
(e) Sin utilizar otro método de ordenación, muestre cómo puede utilizarse un n×n-Young Tableau
para ordenar un arreglo de n2 números en tiempo O(n3 ).
5. Dado el tipo
data Tree = Leaf |
Node (Tree Int) Int (Tree Int)
1. Implemente una función short que calcule la longitud del camino más corto de la raı́z a una
hoja en un árbol.
2. Implemente una función isBalanced que determine si un árbol es balanceado. Diremos que
un árbol de altura h es balanceado si cualquier camino desde la raı́z a una hoja tiene longitud
h o h − 1.
3. Escriba un procedimiento isHeap que determine si un árbol binario es o no un max–heap.
En este caso no es importante si las hojas en el último nivel están agrupadas a la izquierda
del árbol o no.
Práctica 1
Heaps
Página 1
Descargar