Práctica 3 Tipos Abstractos de Datos

Anuncio
Facultad de Ciencias Exactas, Ingenierı́a y Agrimensura
Escuela de Ciencias Exactas y Naturales
Departamento de Computación
Estructuras de Datos
Práctica 3
Tipos Abstractos de Datos
1. Las listas finitas pueden especificarse como un TAD de la siguiente manera:
tad L i s t ( α : : Set )
introduces
nil : : L i s t α
n u l l : : L i s t α → Bool
cons : : α → L i s t α → L i s t α
head : : L i s t α → α
t a i l : : List α → List α
asserts
...
(a) Especifique las propiedades que debe satisfacer cualquier implementación de listas
(b) Asumiendo que α es un tipo con igualdad, especifique una función in :: List α → α → Bool
tal que in( ls ,x) = true si y sólo si x es un elemento de ls
(c) Especifique una función que elimina todas las ocurrencias de un elemento dado.
2. Especifique el TAD pila, con las siguientes operaciones:
empty: Construye una pila inicialmente vacı́a
push: Agrega un elemento a la pila
isEmpty: Devuelve verdadero si su argumento es una pila vacı́a, falso en caso contrario
top: Devuelve el elemento que se encuentra al tope de la pila
pop: Saca el elemento que se encuentra al topo de la pila
3. Asumiendo que α es un tipo con igualdad,.
(a) complete la especificación del TAD conjunto.
tad Conjunto ( α : : Set )
introduces
∅ : : Conjunto α
e s V a c i o : : Conjunto α → Bool
∈ : : α → Conjunto α → Bool
i n s e r t a r : : α → Conjunto α → Conjunto α
b o r r a r : : α → Conjunto α → Conjunto α
∪ : : Conjunto α → Conjunto α → Conjunto α
∩ : : Conjunto α → Conjunto α → Conjunto α
\ : : Conjunto α → Conjunto α → Conjunto α
asserts
i n s e r t a r x ( i n s e r t a r x A) = i n s e r t a r x A
i n s e r t a r x ( i n s e r t a r y A) = i n s e r t a r y ( i n s e r t a r x A)
...
Práctica 3
Tipos Abstractos de Datos
Página 1
Estructuras de Datos
(b) ¿Que pasarı́a si se agregase una función choose :: Conjunto α → α, tal que
c h o o s e ( i n s e r t a r x A) = x
?
4. Un TAD map se utiliza para almacenar una colección de entradas que constan de claves y sus
valores. Las claves son únicas, aunque no tienen por qué serlos los valores.
Las operaciones habituales en una estructura de este tipo son:
Comprobar si está o no vacı́a.
Comprobar si una clave está en la estructura map.
Obtener el número de pares clave/valor almacenados.
Obtener el valor asociado a una clave.
Añadir un nuevo par clave/valor a la estructura de datos.
Eliminar una clave dada y su valor asociado.
Construir una lista ordenada por la clave con los pares clave/valor almacenados en la estructura de datos.
Realizar una especificación del TAD map ası́ como de las operaciones mencionadas.
5. Especifique el tipo de los árboles binarios cuyos nodos internos almacenan valores de un tipo
α (las hojas no guardan información). Las funciones sobre árboles son las siguientes:
hoja : Construye un árbol vacı́o
nodo : Dados dos árboles t1 , t2 , y un elemento a : α, construye un árbol con raı́z a, hijo izquierdo
t1 e hijo derecho t2
raiz : Dado un árbol, devuelve el elemento almacenado en su raı́z
hijoIzq : Dado un árbol, devuelve el subárbol izquierdo
hijoDer : Dado un árbol, devuelve el subárbol derecho
altura : Devuelve la altura de un árbol
balanceado : Devuelve true si y sólo si el árbol está balanceado
6. Un red-black tree1 . es un árbol binario de búsqueda cuyos nodos internos están coloreados o
con rojo o con negro (las hojas no guardan información).
Además, este tipo de datos cumple con las siguientes reglas de balanceo:
Condición Roja: Todo nodo rojo tiene un padre negro.
Condición Negra: Todos los caminos desde de la raı́z del árbol hasta una hoja contienen
exactamente la misma cantidad de nodos negros.
Especificar el TAD Red-Black-Tree.
1 También
conocido como penguin tree
Práctica 3
Tipos Abstractos de Datos
Página 2
Descargar