Está en la página 1de 3

HASHING

Caractersticas generales: 1. Esta es una organizacin de archivos que es til cuando se realizan consultas y el resultado ser siempre un solo registro. 2. La principal ventaja es que se podr realizar un acceso directo tanto para guardar como para recuperar (consultar) el registro deseado. 3. La organizacin interna es dispersa, no secuencial. Esto se realiza a travs de la escritura de registros sobre una posicin aleatoria pero siempre fija obtenida por una frmula matemtica. 4. Este tipo de archivos se inicializan sobre un total de registros esperados. 5. Si se inicializa el archivo sobre un total de registros esperados entonces no es posible hacer recorridos de principio a fin del archivo. 6. Una de las desventajas es que el algoritmo para obtener la posicin es posible que genere colisiones y ests deberan de ser resueltas por el programador. 7. Para el manejo de colisiones son tiles las cubetas que pueden almacenar ms de un registro con la misma posicin generada por el algoritmo. Tambin es til una cabecera para cada cubeta. Supongamos que vamos a guardar los siguientes registros: Cliente AEB343-2 532DFF-1 63V3FF-6 Nombre Jos Martnez Rodrguez Jorge Alberto Alvarado Ramn Luna Loza Edad 34 43 30 Adeudo 123.32 1,222.20 433.2

Se requiere para su manipulacin la siguiente estructura: struct Deudor { char cliente[8]; char nombre[30]; char sexo; double adeudo; }; En el caso de uso de cubetas con cabecera ser necesario declarar la siguiente forma tambin: struct cubeta { int total; struct Deudor persona[50]; }

Suponiendo que el mximo de colisiones calculadas sean 50.

Para inicializar se debe colocar en ceros todas las cabeceras de las cubetas, pero antes debe estimarse el nmero de registros esperados o bien el nmero de cubetas. Para esto debemos considerar tambin la frmula hash. Si est arroja como mximo nmero el 1304 ese ser el nmero de cubetas a inicializar. Considerando que vamos a inicializar 10 cubetas por ejemplo, sera necesario escribir 300 ceros al inicio de cada cubeta que es capaz de albergar 50 registros en colisin, imaginemos el archivo as despus de este proceso:

Sizeof(struct cubeta)

0 0 0 0 0 0 0 0 0 0

Si deseamos guardar el siguiente registro, debemos someterlo a la obtencin de su clave hash, que es cualquier clculo a partir de la misma informacin del usuario, en este caso pensemos en que el cdigo del cliente se somete a un clculo matemtico a travs de los valores ascci de sus caracteres, por decir algo si obtenemos en este ejemplo el nmero 8 ese ser su NRR. AEB343-2 Jos Martnez Rodrguez 34 123.32

8 <- hash (AEB343-2)

Y sera almacenado en el archivo en la cubeta con NRR 8, observar la siguiente imagen:

0 0 0 0 0 0 0 0 1 AEB343-2Jos Martnez Rodrguez34 0


123.32

Espacio para 49 registros que colisionen en el NRR 8

También podría gustarte