Algoritmos y Estructuras de Datos – Tema 2 Nombre del alumno

Anuncio
Algoritmos y Estructuras de Datos – Tema 2
Hoja 1/5
Nombre del alumno:............................................................
Sólo se tendrán en cuenta las respuestas de la tabla de respuestas (última hoja).
Donde se pida uso de memoria, se supondrá que los punteros ocupan 8 bytes y los enteros 4 bytes.
1.
En una tabla de dispersión abierta se usa la siguiente estrategia de reestructuración de la
tabla: cuando el número de elementos insertados es igual que el número cubetas, se crea otra
tabla con el doble de tamaño. Inicialmente la tabla tiene B = 2 cubetas. Usamos la función
de dispersión: h(x) = (x + x div 10) mod B; donde div es la división entera. Insertamos los
siguientes elementos en la tabla, en el orden dado: 273, 182, 862, 651, 987, 521. Escribir la
tabla de dispersión abierta resultante.
2.
Selecciona la opción más adecuada (sólo una) en relación al problema del agrupamiento:
a) Se debe a la redispersión, y se resolvería siempre usando redispersión cuadrática.
b) Se produce en dispersión abierta y se resuelve incrementando el tamaño de la tabla.
c) Se produce en dispersión cerrada cuando hay muchos sinónimos y se resuelve
simplemente aumentando al doble el tamaño de la tabla.
d) Se produce sólo en dispersión cerrada y se puede resolver con redispersión doble.
3.
Suponer una tabla de dispersión cerrada, donde la función de dispersión es de la forma:
h(x)= B·π·x mod B, con B = 20, y se utiliza redispersión cuadrática. Se insertan los
elementos: 6, 84, 34, 1, 20, 11, 0, 60, 92. Mostrar la tabla resultante. Tomar π = 3,14159265.
4.
La tabla de dispersión cerrada de abajo se ha construido usando la función de dispersión:
h(x) = x mod 10; y la redispersión: hi(x) = (h(x) + i) mod 10. Se decide no usar marcas en la
operación de eliminación, sino mover los elementos que sea necesario. Mostrar la tabla
resultante después de eliminar las claves 75 y 11.
0
1
2
3
68
11
42
21
4
5
6
7
8
9
75
36
85
78
46
Tabla resultante:.....................................................................
5.
Estimar cuánta memoria utilizará la tabla de dispersión cerrada del ejercicio 3. Estimar
también la memoria que se necesitaría con dispersión abierta.
Disp. cerrada. Memoria: … Fórmula: …
6.
Disp. abierta: ………
En dispersión abierta, el proceso de búsqueda de un elemento parará cuando (señala todas
las que sean correctas):
a) Se encuentre el elemento.
b) Si la lista es no ordenada, cuando se encuentre un elemento distinto al buscado.
c) Llegue a una cubeta vacía.
d) Llegue al fin de lista.
e) Haya recorrido toda la tabla completamente.
Algoritmos y Estructuras de Datos – Tema 2
Hoja 2/5
Nombre del alumno:............................................................
7.
La eficiencia de las tablas de dispersión se suele medir en proporción a la longitud de las
secuencias de búsqueda. Pero también debe tenerse en cuenta el tiempo en cada paso de esa
secuencia (es decir, el tiempo sería: longitud de la secuencia*tiempo de cada paso).
Suponiendo que en dispersión abierta el tiempo de cada paso es el doble que en dispersión
cerrada, calcular en qué porcentaje de llenado (es decir n/B) el tiempo sería el mismo en
dispersión abierta y en cerrada.
Son iguales cuando n/B = …
8.
Fórmula: …………
En cierta aplicación queremos representar relaciones muchos a muchos entre futbolistas y
equipos en los que han jugado. Cada relación de un futbolista con un equipo ocupa 50 bytes.
Queremos saber si es mejor usar la estructura de listas múltiples o es mejor tener
simplemente dos listas (con los datos duplicados, una para futbolistas y otra para equipos).
Nuestra base de datos almacena 2000 futbolistas, 300 equipos y cada futbolista ha estado de
media en 10 equipos. Calcular cuánta memoria usa la estructura de listas múltiples y cuánta
se usaría con dos listas (con información duplicada).
Listas múltiples. Memoria: … fórmula: …
9.
Dos listas. Memoria: … Fórmula: …
Un programador está escribiendo una librería para manejar tablas de dispersión. Se define
las cuatro siguientes funciones de dispersión. Las claves, s, son cadenas de caracteres.
a) h1(s) = longitud(s) mod B
(siendo longitud(s) la longitud de la cadena)
b) h2(s) = 375·longitud(s)3 mod B
c) h3(s) = (i=1…longitud(s) s[i-1]) mod B
(es decir, suma de códigos ASCII)
i
d) h4(s) = (i=1…longitud(s) s[i-1]·30 ) mod B
No todas estas funciones de dispersión son igual de buenas, algunas son buenas y otras
malas o muy malas. Ordenar las funciones anteriores de peor a mejor, suponiendo un caso
promedio. Es decir, indicar primero la más mala, luego la siguiente mejor, etc.
10. En las anteriores funciones de dispersión, suponemos que las cadenas tienen como máximo
longitud 20 y existen 30 caracteres diferentes. Calcular cuántos valores diferentes puede
devolver cada función, para un B arbitrariamente grande.
h1) Valores: … Fórmula: …
h2) …
h3) …
h4) …
Algoritmos y Estructuras de Datos – Tema 3
1.
Hoja 3/5
En el árbol AVL de abajo se insertan los siguientes elementos, en el orden indicado:
31, 25, 32.
20
15
6
33
22
17
40
En las inserciones donde se haya requerido aplicar rebalanceos, indicar el caso que ha
ocurrido y las rotaciones que se han aplicado.
Después de insertar: …… caso: …… y se aplica: …… ; después de……………
2.
En el siguiente árbol AVL se eliminan los elementos: 23 y 1, de forma sucesiva. ¿Qué
rotación (o rotaciones) se aplican y sobre qué nodos?
20
10
30
5
23
13
1
6
16
35
25
7
Rotaciones. Después de eliminar: …… se aplica: …… ; después de ……………
3.
Tenemos la siguiente relación de equivalencia con punteros al padre (usando balanceo de
árboles y compresión de caminos) de tamaño 12.
1
2
3
4
5
6
7
8
9
10
11
12
8
4
4
-2
-1
1
9
9
-3
2
5
0
Sobre ella se aplican: Encuentra(6) y Unir(4, 9). Mostrar el estado de la tabla después de
cada operación.
4.
Indicar cuáles de las siguientes afirmaciones son falsas:
a) En un AVL, la inserción tiene en el peor caso un orden de O(n), pero el caso promedio
es O(log n), siendo n el número de elementos del árbol.
b) El resultado de eliminar un elemento en un AVL es siempre único.
c) En la inserción se aplicará como mucho una rotación, pero en la eliminación se pueden
hacer varias rotaciones en diversos nodos del árbol.
d) En términos de eficiencia de las operaciones de inserción y consulta, es preferible un
árbol perfectamente balanceado a un AVL.
e) En la inserción en un AVL, si el elemento a insertar ya está en el árbol, no se modifica
el árbol.
Algoritmos y Estructuras de Datos – Tema 3
Hoja 4/5
5.
Suponer la estructura para representar relaciones de equivalencia con compresión de
caminos y balanceo de árboles (recordar que, en caso de empate, se pone el primer elemento
como hijo del segundo). Partiendo de una relación vacía sobre un conjunto de tamaño 10,
mostrar una secuencia de 3 operaciones que dé lugar a que el nodo 5 sea una raíz de altura 2.
6.
Un árbol AVL almacena exactamente 143 elementos. ¿Qué podemos decir en relación a su
altura? (Recuerda que un árbol con un solo nodo se considera como altura 0.)
a) La altura mínima que puede tener es 6 y la máxima es 12.
b) El árbol tendrá siempre altura 10.
c) La altura mínima es 6 y la máxima es 9.
d) La altura mínima es 7 y la máxima es 10.
e) Ninguna de las anteriores respuestas es cierta, pues depende mucho de los elementos.
7.
En un árbol trie se almacenan las palabras: mes, mesa, meseta, mesilla, mesana. Suponer que
los nodos del trie se representan con listas. El tamaño del alfabeto (sin incluir la marca de
fin) es de 26 letras y cada letra ocupa 1 byte. Estimar cuánta memoria utiliza el trie para ese
ejemplo. Incluir la fórmula por la que se llega a ella.
Memoria:...................
8.
Fórmula por la que se llega a esa cantidad:..............................
Suponer la siguiente operación recursiva sobre árboles trie, donde Consulta(n, c) es la
operación para consultar una letra c dentro de un nodo n del trie. La llamada inicial es con:
Maneja(raiz, “”, palabra, 0), siendo raiz la raíz del trie, y palabra es una palabra cualquiera.
operación Maneja(t: trie; p: cadena; q: cadena; i: entero)
para cada carácter c hijo del nodo t hacer
si (c==q[i]) Y (i<longitud(q)) entonces
Maneja(Consulta(t, c), p+c, q, i+1) // p+c es una concatenación de cadenas
finpara
si Consulta(t, $) entonces Escribir(p)
Describir (de forma muy breve) el resultado que produce este procedimiento, es decir, lo que
escribe.
9.
En un árbol B de orden p = 5 se insertan los siguientes elementos en el orden dado: 1, 2, 3,
4, 5, 6, 7, 8, 9, 10, 11, 12, 13. Muestra el árbol B resultante.
10. Suponer un árbol B de orden p = 401. Señalar las afirmaciones que pueden ser ciertas en
relación a la eliminación de un elemento de dicho árbol:
a) Si un nodo se queda con menos de 400 elementos, se debe reestructurar el árbol.
b) Si un nodo se queda con menos de 200 elementos y su hermano izquierdo o derecho
tienen más de 200, se produce el proceso de préstamo de elementos.
c) Lo anterior es cierto, pero no sólo se produce con los hermanos izquierdo y derecho,
sino con cualquier nodo hermano del nodo donde se ha hecho la eliminación.
d) La respuesta b) es correcta, pero hay que tener en cuenta que el nodo raíz sí puede
quedar con menos de 200 elementos.
Algoritmos y Estructuras de Datos
Hoja de Respuestas
Hoja 5/5
Tema 2
Respuestas:
1
2
3
4
5
6
7
8
9
10
Tema 3
Respuestas:
1
2
3
4
5
6
7
8
9
10
Algoritmos y Estructuras de Datos
Hoja de Respuestas
Hoja 6/5
Documentos relacionados
Descargar