Professional Documents
Culture Documents
on Definiciones y Conceptos B
asicos Funciones de Dispersi
on Resoluci
on de Colisiones Desbordamiento de la tabla
Estructura de Datos
Clase 19: Tablas de Hash
Carlos Contreras Bolton
Universidad Andr
es Bello
Facultad de Ingeniera
6 de Junio de 2014
1/65
Introducci
on Definiciones y Conceptos B
asicos Funciones de Dispersi
on Resoluci
on de Colisiones Desbordamiento de la tabla
Contenido
1 Introducci
on
2 Definiciones y Conceptos B
asicos
3 Funciones de Dispersi
on
4 Resoluci
on de Colisiones
5 Desbordamiento de la tabla
2/65
Introducci
on Definiciones y Conceptos B
asicos Funciones de Dispersi
on Resoluci
on de Colisiones Desbordamiento de la tabla
Introduccion
3/65
Introducci
on Definiciones y Conceptos B
asicos Funciones de Dispersi
on Resoluci
on de Colisiones Desbordamiento de la tabla
Introduccion
La clave de un elemento es un identificador que tiene
significado en el contexto del problema en el que
este siendo utilizada la tabla.
Al interior de la tabla las claves son unicas.
En una tabla de hashing no existe nocion de orden tanto
para los elementos como para sus respectivas claves.
Los elementos no tienen predecesores ni sucesores.
No es posible realizar recorrido alguno sobre las claves ni
elementos.
La unica forma de acceder a los elementos de la tabla es
mediante sus claves asociadas.
4/65
Introducci
on Definiciones y Conceptos B
asicos Funciones de Dispersi
on Resoluci
on de Colisiones Desbordamiento de la tabla
Introduccion
Problematica
Conjunto
Curso
Biblioteca
Banco
Elementos
Atributos de los elementos
Clave
Estudiantes Rut, Matrcula, apellido, nombre, ano que cursa
Rut
Libros
Codigo, titulo, autor, tema
Codigo
Clientes
Numero de cuenta corriente, apellido, nombre, saldo Numero de cuenta corriente
Problema
Dado una clave k y un conjunto A de elementos del mismo
tipo, verificar si existe algun elemento en A cuya clave sea k.
5/65
Introducci
on Definiciones y Conceptos B
asicos Funciones de Dispersi
on Resoluci
on de Colisiones Desbordamiento de la tabla
Introduccion
Soluci
on
6/65
Introducci
on Definiciones y Conceptos B
asicos Funciones de Dispersi
on Resoluci
on de Colisiones Desbordamiento de la tabla
Introduccion
Soluci
on
7/65
Introducci
on Definiciones y Conceptos B
asicos Funciones de Dispersi
on Resoluci
on de Colisiones Desbordamiento de la tabla
Introduccion
Soluci
on - Inconvenientes
8/65
Introducci
on Definiciones y Conceptos B
asicos Funciones de Dispersi
on Resoluci
on de Colisiones Desbordamiento de la tabla
Definiciones
Conceptos Basicos
9/65
Introducci
on Definiciones y Conceptos B
asicos Funciones de Dispersi
on Resoluci
on de Colisiones Desbordamiento de la tabla
Definiciones
Conceptos Basicos
10/65
Introducci
on Definiciones y Conceptos B
asicos Funciones de Dispersi
on Resoluci
on de Colisiones Desbordamiento de la tabla
Conceptos Basicos
Ejemplo
11/65
Introducci
on Definiciones y Conceptos B
asicos Funciones de Dispersi
on Resoluci
on de Colisiones Desbordamiento de la tabla
Conceptos Basicos
Ejemplo
Resultando el
siguiente arreglo T:
0
1
2
3
4
5
6
7
8
9
10
11
12
39, Mario, 1
79, Silvia, 4
54, Juan, 2
198, Carlos, 3
46, Mara, 1
22, Felipe, 1
La funci
on h se denomina funcion de
dispersi
on (funci
on hash).
El arreglo T es la tabla de hash o area
primaria y h(k) es la direccion o
posici
on en T de la clave k.
Una funci
on de dispersion transforma
el espacio de claves en un conjunto de
enteros de 0 a m 1, siendo m el
tama
no o capacidad de la tabla.
Si las claves son n
umeros enteros la
funci
on de dispersi
on mas simple es
h(k) = k %m.
12/65
Introducci
on Definiciones y Conceptos B
asicos Funciones de Dispersi
on Resoluci
on de Colisiones Desbordamiento de la tabla
13/65
Introducci
on Definiciones y Conceptos B
asicos Funciones de Dispersi
on Resoluci
on de Colisiones Desbordamiento de la tabla
Funciones perfectas
h3 (C 1) = 1 y h3 (C 2) = 0
h2 (C 1) = 0 y h2 (C 2) = 1
h4 (C 1) = 1 y h4 (C 2) = 1
14/65
Introducci
on Definiciones y Conceptos B
asicos Funciones de Dispersi
on Resoluci
on de Colisiones Desbordamiento de la tabla
Funciones perfectas
Hay cuatro funciones, de las cuales solo h2 y h3 son
perfectas.
Solo el 50 % de funciones perfectas.
Pero si consideramos n = m = 3, solo el 26 %.
En general puede demostrarse que la cantidad de
funciones es mn siendo a lo sumo m!/(m n)! la
cantidad de perfectas.
As n = 4 hay 9 % de funciones perfectas y para n = 5
solo un 3 %.
Para los valores de n que ocurren en la realidad (que
esta en los ordenes de cientos de miles o incluso millones)
la busqueda de funciones perfectas es imposible.
Carlos Contreras Bolton Estructura de Datos
15/65
Introducci
on Definiciones y Conceptos B
asicos Funciones de Dispersi
on Resoluci
on de Colisiones Desbordamiento de la tabla
Funciones perfectas
Tablas con mas Capacidad
k
753 546
h(k) 12
0
16/65
Introducci
on Definiciones y Conceptos B
asicos Funciones de Dispersi
on Resoluci
on de Colisiones Desbordamiento de la tabla
Funciones perfectas
Tablas con mas Capacidad
Si duplicamos el tama
no a m = 26 y por ende h(k) = k %26.
Obtenemos 2 colisiones pero un 57 % de lugar desperdiciado.
Para distintos valores de m:
m Colisiones
13
4
16
5
17
3
26
2
Lugares libres
13 %
50 %
41 %
57 %
17/65
Introducci
on Definiciones y Conceptos B
asicos Funciones de Dispersi
on Resoluci
on de Colisiones Desbordamiento de la tabla
Funciones de Dispersion
18/65
Introducci
on Definiciones y Conceptos B
asicos Funciones de Dispersi
on Resoluci
on de Colisiones Desbordamiento de la tabla
Funciones de Dispersion
19/65
Introducci
on Definiciones y Conceptos B
asicos Funciones de Dispersi
on Resoluci
on de Colisiones Desbordamiento de la tabla
Funciones de Dispersion
Ejemplos
20/65
Introducci
on Definiciones y Conceptos B
asicos Funciones de Dispersi
on Resoluci
on de Colisiones Desbordamiento de la tabla
Funciones de Dispersion
Ejemplos
21/65
Introducci
on Definiciones y Conceptos B
asicos Funciones de Dispersi
on Resoluci
on de Colisiones Desbordamiento de la tabla
22/65
Introducci
on Definiciones y Conceptos B
asicos Funciones de Dispersi
on Resoluci
on de Colisiones Desbordamiento de la tabla
23/65
Introducci
on Definiciones y Conceptos B
asicos Funciones de Dispersi
on Resoluci
on de Colisiones Desbordamiento de la tabla
24/65
Introducci
on Definiciones y Conceptos B
asicos Funciones de Dispersi
on Resoluci
on de Colisiones Desbordamiento de la tabla
largo1
X
!
ascii(ki ) peso i
%m
i=0
25/65
Introducci
on Definiciones y Conceptos B
asicos Funciones de Dispersi
on Resoluci
on de Colisiones Desbordamiento de la tabla
Resolucion de Colisiones
26/65
Introducci
on Definiciones y Conceptos B
asicos Funciones de Dispersi
on Resoluci
on de Colisiones Desbordamiento de la tabla
Resolucion de Colisiones
27/65
Introducci
on Definiciones y Conceptos B
asicos Funciones de Dispersi
on Resoluci
on de Colisiones Desbordamiento de la tabla
Resolucion de Colisiones
Dispersi
on abierta
28/65
Introducci
on Definiciones y Conceptos B
asicos Funciones de Dispersi
on Resoluci
on de Colisiones Desbordamiento de la tabla
Resolucion de Colisiones
Dispersi
on abierta
29/65
Introducci
on Definiciones y Conceptos B
asicos Funciones de Dispersi
on Resoluci
on de Colisiones Desbordamiento de la tabla
Resolucion de Colisiones
Dispersi
on abierta
C
omo elegir el tama
no m de la tabla?
La mayor virtud de la dispersi
on abierta es que esta decision
no es crtica: si hay mas claves de las esperadas, simplemente
las b
usquedas son un poco menos eficientes.
Deben ser un m suficientemente peque
no, para desperdiciar
gran cantidad de memoria contigua con punteros a vaco.
Pero lo suficientemente grande de modo que las b
usquedas
secuenciales sean eficientes.
Idealmente se debe elegir un m que sea aproximadamente
entre 1/5 y 1/10 mayor que la cantidad de claves que se
ingresen en la tabla.
Mientras que si se ingresan menos claves de las esperadas,
tendremos b
usqueda muy eficientes con tal vez cierto
desperdicio de espacio.
Carlos Contreras Bolton Estructura de Datos
30/65
Introducci
on Definiciones y Conceptos B
asicos Funciones de Dispersi
on Resoluci
on de Colisiones Desbordamiento de la tabla
Resolucion de Colisiones
Dispersi
on cerrada
31/65
Introducci
on Definiciones y Conceptos B
asicos Funciones de Dispersi
on Resoluci
on de Colisiones Desbordamiento de la tabla
Resolucion de Colisiones
Dispersi
on cerrada
32/65
Introducci
on Definiciones y Conceptos B
asicos Funciones de Dispersi
on Resoluci
on de Colisiones Desbordamiento de la tabla
Dispersion cerrada
Exploraci
on lineal
33/65
Introducci
on Definiciones y Conceptos B
asicos Funciones de Dispersi
on Resoluci
on de Colisiones Desbordamiento de la tabla
Dispersion cerrada
Exploraci
on lineal
34/65
Introducci
on Definiciones y Conceptos B
asicos Funciones de Dispersi
on Resoluci
on de Colisiones Desbordamiento de la tabla
Dispersion cerrada
Exploraci
on lineal
35/65
Introducci
on Definiciones y Conceptos B
asicos Funciones de Dispersi
on Resoluci
on de Colisiones Desbordamiento de la tabla
Dispersion cerrada
Exploraci
on lineal
36/65
Introducci
on Definiciones y Conceptos B
asicos Funciones de Dispersi
on Resoluci
on de Colisiones Desbordamiento de la tabla
Dispersion cerrada
Exploraci
on lineal
37/65
Introducci
on Definiciones y Conceptos B
asicos Funciones de Dispersi
on Resoluci
on de Colisiones Desbordamiento de la tabla
Dispersion cerrada
Exploraci
on cuadratica
38/65
Introducci
on Definiciones y Conceptos B
asicos Funciones de Dispersi
on Resoluci
on de Colisiones Desbordamiento de la tabla
Dispersion cerrada
C
omo borrar una clave de una tabla con exploraci
on
lineal o cuadr
atica?
39/65
Introducci
on Definiciones y Conceptos B
asicos Funciones de Dispersi
on Resoluci
on de Colisiones Desbordamiento de la tabla
Dispersion cerrada
C
omo borrar una clave de una tabla con exploraci
on
lineal o cuadr
atica?
Buscamos con exploraci
on lineal la
clave 32.
h(32) = 2 comparamos 32 con la
clave que esta en la posici
on 2, como
esta es 2, calculamos:
d1 (32) = 3, como este lugar
esta ocupado por la clave 21,
calculamos:
d2 (32) = 4, como este lugar esta libre
concluimos que la clave 32 no esta en
la tabla, lo que es correcto.
Supongamos, ahora que
eliminamos el 2.
Carlos Contreras Bolton Estructura de Datos
40/65
Introducci
on Definiciones y Conceptos B
asicos Funciones de Dispersi
on Resoluci
on de Colisiones Desbordamiento de la tabla
Dispersion cerrada
C
omo borrar una clave de una tabla con exploraci
on
lineal o cuadr
atica?
41/65
Introducci
on Definiciones y Conceptos B
asicos Funciones de Dispersi
on Resoluci
on de Colisiones Desbordamiento de la tabla
Dispersion cerrada
C
omo borrar una clave de una tabla con exploraci
on
lineal o cuadr
atica?
Hay que diferenciar una posicion que esta vaca porque
nunca fue ocupada.
Y otra que esta vaca pero alguna vez estuvo ocupada.
Se puede agregar a cada elemento una marca o centinela
cuyos posibles valores pueden ser:
Valor de marca
0
1
2
Significado
libre (nunca ocupado)
ocupado
libre (eliminado)
42/65
Introducci
on Definiciones y Conceptos B
asicos Funciones de Dispersi
on Resoluci
on de Colisiones Desbordamiento de la tabla
Dispersion cerrada
Dispersi
on doble
43/65
Introducci
on Definiciones y Conceptos B
asicos Funciones de Dispersi
on Resoluci
on de Colisiones Desbordamiento de la tabla
Dispersion cerrada
Dispersi
on coalescente
44/65
Introducci
on Definiciones y Conceptos B
asicos Funciones de Dispersi
on Resoluci
on de Colisiones Desbordamiento de la tabla
Dispersion coalescente
Ejemplo
45/65
Introducci
on Definiciones y Conceptos B
asicos Funciones de Dispersi
on Resoluci
on de Colisiones Desbordamiento de la tabla
Dispersion coalescente
Ejemplo
Insertar el 4, el 8 y el 9.
46/65
Introducci
on Definiciones y Conceptos B
asicos Funciones de Dispersi
on Resoluci
on de Colisiones Desbordamiento de la tabla
Dispersion coalescente
Ejemplo
47/65
Introducci
on Definiciones y Conceptos B
asicos Funciones de Dispersi
on Resoluci
on de Colisiones Desbordamiento de la tabla
Dispersion coalescente
Ejemplo
48/65
Introducci
on Definiciones y Conceptos B
asicos Funciones de Dispersi
on Resoluci
on de Colisiones Desbordamiento de la tabla
Dispersion coalescente
Ejemplo
49/65
Introducci
on Definiciones y Conceptos B
asicos Funciones de Dispersi
on Resoluci
on de Colisiones Desbordamiento de la tabla
Dispersion coalescente
Ejemplo
Buscar
clave
h(k) = k %7
h(6) = 6
15
h(15) = 1
20
h(20) = 6
6 es igual a 2? NO
6 es igual a 13? NO
6 es igual a 6? SI
15 es igual a 8? NO
20 es igual a 2? NO
20 es igual a 13? NO
20 es igual a 6? NO
prox. direccion: 5
prox. direccion: 3
BUSQUEDA
EXITOSA
prox. direccion: -1
BUSQUEDA
NO EXITOSA
prox. direccion: 5
prox. direccion: 3
BUSQUEDA
NO EXITOSA
50/65
Introducci
on Definiciones y Conceptos B
asicos Funciones de Dispersi
on Resoluci
on de Colisiones Desbordamiento de la tabla
Dispersion coalescente
Ejemplo
51/65
Introducci
on Definiciones y Conceptos B
asicos Funciones de Dispersi
on Resoluci
on de Colisiones Desbordamiento de la tabla
Dispersion coalescente
52/65
Introducci
on Definiciones y Conceptos B
asicos Funciones de Dispersi
on Resoluci
on de Colisiones Desbordamiento de la tabla
Desbordamiento de la tabla
Siempre hemos considerado que el tamano m de la tabla
de hash es suficientemente grande.
Que pasa si realizamos una insercion en una tabla llena?
Esto se denomina desbordamiento de la tabla.
Si es dispersion abierta, sabemos que nos es problema,
dado que el tamano total de las cadenas solo
esta limitado por la memoria disponible.
En la dispersion cerrada es un problema muy importante.
Consideraremos dos tecnicas que resuelven el problema del
desbordamiento de la tabla asignando memoria adicional.
Rehashing.
hashing Extensible.
Carlos Contreras Bolton Estructura de Datos
53/65
Introducci
on Definiciones y Conceptos B
asicos Funciones de Dispersi
on Resoluci
on de Colisiones Desbordamiento de la tabla
Desbordamiento de la tabla
Rehashing
54/65
Introducci
on Definiciones y Conceptos B
asicos Funciones de Dispersi
on Resoluci
on de Colisiones Desbordamiento de la tabla
Desbordamiento de la tabla
Rehashing
55/65
Introducci
on Definiciones y Conceptos B
asicos Funciones de Dispersi
on Resoluci
on de Colisiones Desbordamiento de la tabla
Desbordamiento de la tabla
Dispersi
on Extensible
56/65
Introducci
on Definiciones y Conceptos B
asicos Funciones de Dispersi
on Resoluci
on de Colisiones Desbordamiento de la tabla
Desbordamiento de la tabla
Dispersi
on Extensible
57/65
Introducci
on Definiciones y Conceptos B
asicos Funciones de Dispersi
on Resoluci
on de Colisiones Desbordamiento de la tabla
Desbordamiento de la tabla
Dispersi
on Extensible
Claves = {40, 11, 32, 4, 44, 57, 56, 8, 46, 20, 24, 10}
Como 40 en binario es 101000 le corresponde la entrada 10, y
como h(40) = 40 %11 = 7, ocupara la posici
on 7.
Realizando las mismas operaciones para los demas.
58/65
Introducci
on Definiciones y Conceptos B
asicos Funciones de Dispersi
on Resoluci
on de Colisiones Desbordamiento de la tabla
Desbordamiento de la tabla
Dispersi
on Extensible
59/65
Introducci
on Definiciones y Conceptos B
asicos Funciones de Dispersi
on Resoluci
on de Colisiones Desbordamiento de la tabla
Desbordamiento de la tabla
Dispersi
on Extensible
60/65
Introducci
on Definiciones y Conceptos B
asicos Funciones de Dispersi
on Resoluci
on de Colisiones Desbordamiento de la tabla
Desbordamiento de la tabla
Dispersi
on Extensible
61/65
Introducci
on Definiciones y Conceptos B
asicos Funciones de Dispersi
on Resoluci
on de Colisiones Desbordamiento de la tabla
Conclusion
Las tablas de hash se pueden usar para implantar las
operaciones insertar y buscar en tiempo medio constante.
Es de especial importancia cuidar detalles como el factor
de carga cuando se emplean tablas de dispersion, ya que
de otra forma las cotas de tiempo no son validas.
Tambien es importante escoger una buena la funcion de
dispersion.
Dispersion abierta:
El factor de carga debe ser cercano a 1, aunque el
rendimiento no se degrada significativamente a menos
que el factor de carga crezca mucho.
62/65
Introducci
on Definiciones y Conceptos B
asicos Funciones de Dispersi
on Resoluci
on de Colisiones Desbordamiento de la tabla
Conclusion
Dispersion cerrada
El factor de carga no debe exceder 0.5. Si se usa
exploracion lineal, el rendimiento se degenera con
rapidez conforme el factor de carga se acerca a 1.
63/65
Introducci
on Definiciones y Conceptos B
asicos Funciones de Dispersi
on Resoluci
on de Colisiones Desbordamiento de la tabla
Conclusion
Un ABB podra encontrar rapidamente todos los elementos
en un intervalo dado, no as las tablas de hash.
Ademas, la cota O(log n) no es mucho mas que O(1), pero si
la entrada de datos es mas o menos ordenada puede provocar
un rendimiento deficiente en los arboles.
Sabemos que los arboles balanceados son complejos de
implementar, as que si no se requiere informacion de
ordenamiento y hay alguna sospecha de que la entrada podra
estar ordenada. Por ende ocupar Tablas de hash.
Las aplicaciones de la dispersi
on son abundantes, como:
Los compiladores para seguir el rastro de las variables
declaradas en el c
odigo fuente,
Problemas de teora de grafos.
Programas de juegos.
Revisores de ortografa en lnea.
Carlos Contreras Bolton Estructura de Datos
64/65
Introducci
on Definiciones y Conceptos B
asicos Funciones de Dispersi
on Resoluci
on de Colisiones Desbordamiento de la tabla
Tarea
1
mod 10
65/65