Introduccin: Qu se hizo como problema? Realizamos el cdigo de hash
Especificacin del problema: Las tablas de dispersin, son estructuras de datos que se usan en aplicaciones que manejan una secuencia de elementos, de tal forma que cada elemento tiene asociado un valor clave. Aplicaciones: El uso de hash es bastante amplio, digamos al realizar una bsqueda por ejemplo, si en el almacenamiento se aplic hash y ahora queremos encontrar cosas relacionadas esto nos reducira considerablemente el tiempo que tardara en encontrar lo que busca, este programa s realizo con nmeros pero bien podra realizarse para documentos, palabras etc. Puntos a considerar: Al realizar este proyecto, tomamos en cuenta lo que realizar el proyecto, es decir, en su forma ms bsica de explicar, diremos que tenemos un arreglo de nmeros los cuales sern ordenados en determinada arreglo de memoria y cuando se busque acceder a ellos se podra lograr de una manera ms eficiente. Ocuparemos las funciones de dispersin que lograran esto. El funcionamiento de esto es por medio de la aritmtica modular la cual realizara la asignacin en el arreglo creado. Colisin: Es necesario tomar en cuenta que existe la posibilidad de que dos nmeros puedan almacenarse en el mismo lugar dentro de nuestro arreglo por lo cual si esto sucede deberamos recorrernos y buscar el ms prximo. Esto contempla otro problema en el momento de bsqueda no podramos encontrar alguno de los datos almacenados pues podra localizarse en otra parte del arreglo as que lo que se hace es volver a aplicar el modular para encontrar dicha direccin y si no se encuentra ir recorriendo hasta dar con el Si nuestro arreglo se encuentra lleno el programa est obligado a buscar un espacio en todo el arreglo en caso de que no lo halle se informara al usuario y este ser desechado. En el peor de los casos el dato requerido se encuentra hasta el final de nuestro arreglo (uno antes de donde debera estar) por lo cual tendra que recorrer todo el arreglo hasta encontrarlo. En el mejor de los casos se aplica directamente el modular y la direccin es inmediata Sin embargo an en el peor de los casos la eficiencia de este algoritmo el Logartmica Es decir lineal, por lo cual es bastante eficiente. Ejemplo: supongamos un arreglo de 10 nmeros los cuales deben ser almacenados por hash nuestros nmeros seran los siguientes: {12, 23, 6, 43, 84, 60, 5, 10, 2, 5} Nuestro modular seria 10, y los nmeros resultaran almacenados de la siguiente forma: 12/10: asigna en la posicin 2 23/10: asigna en la posicin 3 06/10: asigna en la posicin 6
43/10: asigna en la posicin 3
Como la posicin 3 ya est ocupada busca la ms prxima seria la 4 84/10: asigna en la posicin 4 Como ya est ocupada busca el ms prximo 5 60/10: asigna en la posicin 0 05/10: asigna en la posicin 5 Como ya est ocupada busca el ms prximo 7 Ahora: digamos que necesitamos el nmero 5 que fue el ltimo asignado Para encontrarlo aplicaramos el modular que nos dice esta en el espacio 5 Lo comparamos y al no ser correcto comenzaramos a buscar y comparar cada espacio hasta hallarlo y regresar la posicin. Conclusiones: Si las colisiones ocurren a menudo eso nos genera un gran problema en el momento de bsqueda, por lo cual sera recomendable minimizar al mximo las colisiones, este algoritmo es bastante simple pero tambin eficiente, y eso lo hace muy til y verstil a la hora de aplicarlo a algn problema