Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
Equipo 7
Docente:
Ciencias de la Computación II
1
Tabla de contenido.
Introducción ……………………………………………………………………………………………..3
Objetivos
General ...………………………………………………………………………………………...3
Específicos………………………………………………………………………………………3
Marco Teórico
Búsquedas dinámicas…………………………………………………………………………3
Método de expansión total…………………………………………………………………...3
Método de expansión parcial………………………………………………………..……….4
Expansiones totales…………………………………………………………………………………….4
Reducciones totales…………………………………………………………………………………..10
Expansiones parciales………………………………………………………………………………..14
Reducciones parciales………………………………………………………………………………..21
Conclusiones …………………………………………………………………………………………..24
2
Introducción.
Objetivos.
General.
Explicar mediante un ejercicio el hash dinámico en la búsqueda de registros.
Específicos.
● insertar una cantidad dada de registros por medio de expansiones totales y
parciales dadas unas condiciones.
● eliminar algunos registros mediante reducciones totales y parciales cumpliendo
con unas condiciones.
Marco teórico.
Búsqueda dinámica.
Es el método más utilizado, consiste en duplicar el número de cubetas a medida que estas
superan el límite de densidad de ocupación previamente establecido. es decir si se tiene N
cubetas, al realizar la expansión total, el número de cubetas será 2N. este método también se da
en sentido contrario, es decir que a medida que la densidad de ocupación de cubetas disminuye,
estas también disminuyen en N/2.
3
Método de expansión parcial.
Consiste en incrementar en 50% el número de cubetas. haciendo que dos expansiones parciales
equivalgan a una total. es decir, que, si se tiene inicialmente N cubetas, al realizar una expansión
hay 1.5N cubetas, si se vuelve a realizar si se hace otra expansión 2N, y luego 3N tras otra
expansión parcial. también sucede que, si la densidad de ocupación es baja, se reduce
parcialmente el número de cubetas, cumpliendo la condición de que dos reducciones parciales
son igual a una reducción total.
1. dado un arreglo de dos cubetas y tres registros, y una densidad de ocupación para
expansión del 82%, insertar los siguientes registros:
115-96-48-26-57-81-70-64-107-45-62-98-33-28-38
48-35-81-70-45-33-38-115
mediante reducción total y parcial, teniendo en cuenta una densidad de ocupación para
reducción de 125%
Expansiones Totales
Insertar los elementos 115, 96, 48, 79, 35, 26, 57, 81, 70, 64, 107, 45, 62, 98, 33, 28, 38. Con N
inicial igual a 2 y con R igual a 3.
1. Se crea las estructuras.
D.O = 0/4 = 0%
0 1
r1
r2
r3
4
D.O = 1/6 = 16.67%
H(115)= 115 mod 2 = 1
0 1
r1 115
r2
r3
0 1
r1 96 115
r2
r3
0 1
r1 96 115
r2 48
r3
5
0 1
r1 96 115
r2 48 79
r3
0 1 2 3
r1 96 115
r2 48 79
r3 35
0 1 2 3
r1 96 26 115
r2 48 79
r3 35
6
9. Para ingresar el 57 se calcula la densidad de ocupación, como es menor al 82%
entonces se ingresa la clave
0 1 2 3
r1 96 57 26 115
r2 48 79
r3 35
0 1 2 3
r1 96 57 26 115
r2 48 81 79
r3 35
0 1 2 3
r1 96 57 26 115
r2 48 81 70 79
r3 35
7
12. Para ingresar el 64 se calcula la densidad de ocupación, como es mayor al 82%
entonces se tiene que hacer una expansión total y volver a recalcular los valores con la
función hash H(k) = K mod 8.
0 1 2 3 4 5 6 7
r1 96 57 26 115 70 79
r2 48 81 35
r3 64
13. Para ingresar el 107 se calcula la densidad de ocupación, como es menor al 82%
entonces se ingresa la clave
0 1 2 3 4 5 6 7
r1 96 57 26 115 70 79
r2 48 81 35
r3 64 107
8
H(45) = 45 mod 8 = 5
0 1 2 3 4 5 6 7
r1 96 57 26 115 45 70 79
r2 48 81 35
r3 64 107
0 1 2 3 4 5 6 7
r1 96 57 26 115 45 70 79
r2 48 81 35 62
r3 64 107
0 1 2 3 4 5 6 7
r1 96 57 26 115 45 70 79
r2 48 81 98 35 62
r3 64 107
9
0 1 2 3 4 5 6 7
r1 96 57 26 115 45 70 79
r2 48 81 98 35 62
r3 64 33 107
0 1 2 3 4 5 6 7
r1 96 57 26 115 28 45 70 79
r2 48 81 98 35 62
r3 64 33 107
0 1 2 3 4 5 6 7
r1 96 57 26 115 28 45 70 79
r2 48 81 98 35 62
r3 64 33 107 38
Reducciones Totales
Se debe eliminar 48, 35, 81, 70, 45, 33 38, 115.
10
0 1 2 3 4 5 6 7
r1 96 57 26 115 28 45 70 79
r2 48 81 98 35 62
r3 64 33 107 38
0 1 2 3 4 5 6 7
r1 96 57 26 115 28 45 70 79
r2 81 98 35 62
r3 64 33 107 38
0 1 2 3 4 5 6 7
r1 96 57 26 115 28 45 70 79
r2 81 98 62
r3 64 33 107 38
11
0 1 2 3 4 5 6 7
r1 96 57 26 115 28 45 70 79
r2 98 62
r3 64 33 107 38
0 1 2 3 4 5 6 7
r1 96 57 26 115 28 45 79
r2 98 62
r3 64 33 107 38
0 1 2 3 4 5 6 7
r1 96 57 26 115 28 79
r2 98 62
r3 64 33 107 38
12
0 1 2 3 4 5 6 7
r1 96 57 26 115 28 79
r2 98 62
r3 64 107 38
0 1 2 3 4 5 6 7
r1 96 57 26 115 28 79
r2 98 62
r3 64 107
10. Se hace la reducción y luego se reasignan las claves a la nueva estructura con 6
cubetas, finalmente se calcula el valor de densidad de ocupación para reducción de la
última clave.
13
0 1 2 3
r1 96 57 26 79
r2 64 62 107
r3 28 98
Expansiones Parciales
Insertar los elementos 115, 96, 48, 79, 35, 26, 57, 81, 70, 64, 107, 45, 62, 98, 33, 28, 38. Con N
inicial igual a 2 y con R igual a 3.
0 1
r1
r2
r3
0 1
r1 115
r2
r3
14
0 1
r1 96 115
r2
r3
0 1
r1 96 115
r2 48
r3
0 1
r1 96 115
r2 48 79
r3
15
H(115)=115 mod 3 = 1 -> D.O = 1/9 = 11,11%
H(96)=96 mod 3 = 0 -> D.O = 2/9 = 22,22%
H(48)=48 mod 3 = 0 -> D.O = 3/9 = 33,33%
H(79)=79 mod 3 = 1 -> D.O = 4/9 = 44,44%
H(35)=35 mod 3 = 2 -> D.O = 5/9 = 55,56 %
0 1 2
r1 96 115 35
r2 48 79
r3
0 1 2
r1 96 115 35
r2 48 79 26
r3
0 1 2
r1 96 115 35
r2 48 79 26
r3 57
16
10. Para ingresar el 81 se calcula la densidad de ocupación, como es mayor al 82%
entonces se tiene que hacer una expansión total y volver a recalcular los valores con la
función hash H(k) = K mod 4.
11. se recalculan los valores de las claves anteriormente ingresadas, y además se calcula
el valor de la densidad de ocupación correspondiente.
0 1 2 3
r1 96 57 26 115
r2 48 81 79
r3 35
D.O = 9/12 = 75 %
H(70)= 70 mod 4 = 2
0 1 2 3
r1 96 57 26 115
r2 48 81 70 79
r3 35
17
D.O = 10/12 = 83.33 %
14. se recalculan los valores de las claves anteriormente ingresadas, y además se calcula
el valor de la densidad de ocupación correspondiente.
0 1 2 3 4 5
r1 96 115 26 57 70 35
r2 48 79 81 64
r3
15. Para ingresar el 107 se calcula la densidad de ocupación, como es menor al 82%
entonces se ingresa la clave
0 1 2 3 4 5
r1 96 115 26 57 70 35
r2 48 79 81 64 107
r3
18
0 1 2 3 4 5
r1 96 115 26 57 70 35
r2 48 79 81 64 107
r3 45
0 1 2 3 4 5
r1 96 115 26 57 70 35
r2 48 79 62 81 64 107
r3 45
0 1 2 3 4 5
r1 96 115 26 57 70 35
r2 48 79 62 81 64 107
r3 98 45
20. se recalculan los valores de las claves anteriormente ingresadas, y además se calcula
el valor de la densidad de ocupación correspondiente.
19
H(115) =115 mod 8 = 3 -> D.O = 1/24 =4,16%
H(96) = 96 mod 8 = 0 -> D.O = 2/24 =8,33 %
H(48) = 48 mod 8 = 0 -> D.O = 3/24 = 12,5%
H(79) = 79 mod 8 = 7 -> D.O = 4/24 = 16,66%
H(35) = 35 mod 8 = 3 -> D.O = 5/24 = 20,83%
H(26) = 26 mod 8 = 2 -> D.O = 6/24 = 25%
H(57) = 57 mod 8 = 1 -> D.O = 7/24 = 29,16%
H(81) = 81 mod 8 = 1 -> D.O = 8/24 = 33,33%
H(70) = 70 mod 8 = 6 -> D.O = 9/24 = 37,5%
H(64) = 64 mod 8 = 0 -> D.O = 10/24 = 41,66%
H(107) = 107 mod 8 = 3 -> D.O = 11/24 = 45,83%
H(45) = 45 mod 8 = 5 -> D.O = 12/24 = 50%
H(62) = 62 mod 8 = 6 -> D.O = 13/24 = 54,17%
H(98) = 98 mod 8 = 2 -> D.O = 14/24 = 58,33%
H(33) = 33 mod 8 = 1 -> D.O = 15/24 = 62,5%
0 1 2 3 4 5 6 7
r1 96 57 26 115 45 70 79
r2 48 81 98 35 62
r3 64 33 107
0 1 2 3 4 5 6 7
r1 96 57 26 115 28 45 70 79
r2 48 81 98 35 62
r3 64 33 107
20
0 1 2 3 4 5 6 7
r1 96 57 26 115 28 45 70 79
r2 48 81 98 35 62
r3 64 33 107 38
Reducciones Parciales
0 1 2 3 4 5 6 7
r1 96 57 26 115 28 45 70 79
r2 48 81 98 35 62
r3 64 33 107 38
0 1 2 3 4 5 6 7
r1 96 57 26 115 28 45 70 79
r2 81 98 35 62
r3 64 33 107 38
21
D.O para expansión= 15/24 = 62.50%
0 1 2 3 4 5 6 7
r1 96 57 26 115 28 45 70 79
r2 81 98 62
r3 64 33 107 38
0 1 2 3 4 5 6 7
r1 96 57 26 115 28 45 70 79
r2 98 62
r3 64 33 107 38
0 1 2 3 4 5 6 7
r1 96 57 26 115 28 45 79
r2 98 62
r3 64 33 107 38
22
D.O para expansión= 12/24 = 50%
0 1 2 3 4 5 6 7
r1 96 57 26 115 28 79
r2 98 62
r3 64 33 107 38
0 1 2 3 4 5 6 7
r1 96 57 26 115 28 79
r2 98 62
r3 64 107 38
0 1 2 3 4 5 6 7
r1 96 57 26 115 28 79
r2 98 62
r3 64 107
23
10. Se hace la reducción y luego se reasignan las claves a la nueva estructura con 6
cubetas, finalmente se calcula el valor de densidad de ocupación para reducción de la
última clave.
0 1 2 3 4 5
r1 96 79 26 57 64 107
r2 62 28
r3 98
Conclusiones.
Para este caso particular se puede observar que el método de expansiones totales requiere
menos operaciones, se realizan solo dos expansiones, es decir se recalcula la función hash solo
dos veces. Mientras que el método parcial de expansión se realiza cuatro veces. Lo que muestra
que fue menos optimo el método de expansiones parciales en cuestión de tiempo. En cuanto a
espacio, a final ambos métodos terminan con el mismo número de cubetas.
En las reducciones, en cuanto a tiempo ambos métodos, total y parcial, se realizaron una vez,
sin embargo, al terminar de eliminar por el método de reducción total, el espacio vacío es menor
que el espacio vacío al terminar de eliminar por el método de reducción parcial.
En conclusión, para este ejercicio en particular, el método más optimo en tiempo para insertar es
el método de expansión total, y el método más optimo en espacio para eliminar es el método de
reducción total.
24