Solo intento comprender la lógica de sondeo lineal.Está buscando una tabla hash para un valor que no está allí O (n)? (sondeo lineal)
Con hashtable usando direccionamiento abierto, ¿cómo se puede confirmar que un elemento no está en la tabla.
Por ejemplo, supongamos que tiene un hashmap de 10 depósitos. Supongamos que hashe una tecla e insértala. Ahora, si los elementos A y B se van a insertar y hash y se reducen al mismo cubo, entonces los elementos A y B si usan una sonda lineal probablemente estarán uno al lado del otro.
Ahora, simplemente porque un cubo está vacío, no parece significar que un elemento no existe en el mapa. p.ej. Busca el elemento B después de que el elemento A se elimina por primera vez. Primero obtienes un cubo vacío donde esperas que sea B, pero necesitas sondear uno más y encontrarás B. Realmente está allí. Si esa lógica es correcta, ¿no tendrá que buscar en toda la tabla para confirmar si una clave no está allí? es decir, O (n) rendimiento cada vez.
Lo que estoy diciendo es, ¿no necesitas revisar todo el mapa para confirmar que no está allí?
Con un enfoque de encadenamiento separado para hashmap's ese problema no existe.
Editar: Lo que quiero decir es mirar esta imagen http://upload.wikimedia.org/wikipedia/commons/b/bf/Hash_table_5_0_1_1_1_1_0_SP.svg
Si se elimina John Smith, y tratamos de localizar a Sandra Dee.
O con el direccionamiento lineal se supone que debe mover los elementos para que no haya agujeros como tales. es decir, si se elimina a John Smith, ¿los elementos del 152 al 154 deberían desplazarse un lugar hacia atrás? Realmente no se ve eso en la descripción, pero eso podría tener algún sentido. Excepto si ted baker hashed a 154 y no 153 como se describe. Requiere un poco más de trabajo de lo que pensaba.
Podría ir simplemente con una simple lista vinculada en cada segmento.
Encontré un gran tutorial sobre tablas hash. http://research.cs.vt.edu/AVresearch/hashing/ – Matt