Sunteți pe pagina 1din 1

Estructuras de Datos

Tablas hash

1. Dados los valores {2341, 4234, 2839, 430, 22, 397, 3920}, una tabla hash de tamaño 7 y h(k) = k mod 7, muestre el resultado de insertar en la
tabla los valores en el orden dado.

2. Se desea crear una tabla de acceso directo para almacenar códigos de tres símbolos. Cada código inicia con dos símbolos en el conjunto {‘A’,
‘B’, ‘C’, ‘D’} y termina con un símbolo en {‘x’, ‘y’, ‘z’}, e.g. “ABx” y “CDy”.
a. ¿De qué tamaño debe ser la tabla (m)?
b. Proponga una función biyectiva del conjunto de códigos al conjunto {0, 1, 2, …, m-1}.
c. Implemente la tabla en java.

3. Una tabla hash usa como función de hash h(k) = (1027*k mod 2 10)/25. Si usted quisiera que esta tabla tuviera un comportamiento poco
eficiente, ¿con qué operaciones la probaría?

4. ¿Cómo se implementa una tabla hash en Java? ¿Cuál es el propósito del método hashCode de Object?

5. Un objeto FechaHora representa una fecha y hora válidas en el rango 1/1/2001 00:00:00 - 31/12/2100 23:59:59. Implemente la función
hashCode de FechaHora de forma que para cualquier pareja de FechaHora s y t, hashCode(s) ≠ hashCode(t).

public class FechaHora {


private int dia, mes, anho, hora, min, seg;

...

public int hashCode(){


//Implementación

}
}

6. Escriba un programa que dados dos conjuntos de enteros S = {s 1, s2, …, sm} y T = {t1, t2, …, tn}, decida si S ⊆ T en tiempo
esperado O(m + n).

7. ¿En qué consiste un ataque de denegación de servicio (DOS)? ¿En qué forma son vulnerables las tablas hash a ataques DOS? Dé un ejemplo
usando la clase String.

8. ¿Qué es hashing universal? Dé un ejemplo de una familia de funciones hash universal.

9. ¿De qué forma el hashing universal resuelve el problema de vulnerabilidad a ataques DOS en las tablas hash?

10. Una compañía de internet tiene actualmente 5040 clientes, y espera crecer hasta los 100000 clientes en los próximos cinco años. Sobre cada
usuario, la compañía tiene la siguiente información básica: nombre, edad, país de residencia y profesión. Se desea almacenar la información de
los clientes en una tabla hash.

a. ¿Cuál de los atributos de los clientes debe ser usado como llave?
b. Proponga una función de hash y un tamaño adecuado para la tabla.
c. Implemente la tabla e inserte en ella un conjunto de datos artificial de 100000 clientes (los datos deben parecer reales, e.g. ningún cliente
debería llamarse XYZ).
d. Para cada n en {1000, 5000, 10000, 20000, 50000, 100000} conteste las siguientes preguntas:
i. ¿Cuántas colisiones se presentaron hasta la inserción del elemento n-ésimo?
ii. ¿Cuál es el máximo tamaño de una lista en la tabla después de insertar el elemento n-ésimo?
iii. ¿Cuál es el tamaño en bytes de la tabla?

11. Resuelva los siguientes problemas:


● https://uva.onlinejudge.org/external/103/p10391.pdf
● https://uva.onlinejudge.org/external/108/p10887.pdf
● https://uva.onlinejudge.org/external/113/p11386.pdf
● https://uva.onlinejudge.org/external/1/p188.pdf

12. (CLRS, 2da ed., Ej 11.3.3) Se desea almacenar en una tabla hash un conjunto de cadenas. Suponga que cada cadena es interpretada como un
número en base 256 y sobre este número es aplicada la función h(x) = x mod 255.
a. Demuestre que si dos cadenas s y t son anagramas, entonces s y t son proyectadas por h a una misma posición.
b. Dé un ejemplo de aplicación en que la propiedad de la función h demostrada en (a) no es deseable.

S-ar putea să vă placă și