¿ QUE ES 'HASH TABLES' ?

 

ARREGLOS

Ventajas:

  • Asociados por un indice
  • Acceso aleatorio a cualquier elemento del arreglo 
  • Busqueda binaria depende de este tipo de arreglos por su acceso aleatorio

ARREGLOS

Desventajas :

  • Tamaño fijo
  • Dificiles de aumentar el tamaño , no hay garantias que el espacio siguiente este vacio.

Listas enlazadas :

Ventajas :

  • Tamaño dinamico, por que no son consecutivas en la memoria.

Listas enlazadas :

Desventajas:

  • Tamaño dinamico         no acceso aleatorio 
  • Acceso O(n) 

TIEMPOS

  • Los arreglos tiene complejidad O(n) para indices arbitrarios de añadir/eliminar , pero O(1) para el final de la lista.
  • Las listas enlazadas tiene complejidad O(n) para indices arbitrarios de añadir/eliminar , pero O(1) para operaciones al inicio/final de la lista

HASH TABLE

TAMAÑO DINAMICO

ACCESO ARBITRARIO

... PORQUE?

Una tabla hash es una estructura de datos que permite la recuperación, inserción, eliminación y búsqueda de datos de forma rápida

La potencia de las tablas hash se encuentra en la búsqueda de elementos; conociendo el campo clave se puede obtener directamente la posición que ocupa, y por tanto, la información que se encuentra almacenada en ese espacio de memoria.

La eficacia de una tabla hash va de acuerdo a como se tratan las colisiones y la lógica de un algoritmo que permita un rápido acceso e inserción de datos a la estructura sin ninguna fuga de datos.

int hash::Hash(string key){
	int hash=0;

	for(int i=0;i<key.length();i++)
	{
		hash+=(int)key[i];                //Cada caracter tiene un key diferente 
                                                 //y se almacena en el HASH
	                                        // For para obtener el HASH de cada key
	}	                               //
	return hash%tableSize;                //Como obtener el index de cada hash
	 
}

... COMO ? (CÓDIGO)

... CUANDO ?

  • Una de las aplicaciones de las tablas hash esta en los compiladores de lenguajes de programación. La tabla donde se guardan los identificadores del programa, tabla de símbolos, se implementa como una tabla hash. La clave es el símbolo que se transforma en un valor entero para aplicar alguna de las funciones hash.

O(n/k)

O(n/k)

...PERO EN EL MUNDO REAL ?

A real world example: Suppose I stay in a hotel for a few days, because I attend a congress on hashing. At the end of the day, when I return to the hotel, I ask the desk clerk if there are any messages for me. Behind his back is a dovecot-like cupboard, with 26 entries, labeled A to Z. Because he knows my last name, he goes to the slot labeled W, and takes out three letters. One is for Robby Williams, one is for Jimmy Webb, and one is for me.

The clerk only had to inspect three letters. How many letters would he have to inspect if there would have been only one letter box?

http://stackoverflow.com/questions/8263617/what-are-some-common-examples-of-a-hash-table

answered Jan 31 '12 at 15:56 by wildplasser

Fuentes :

  • http://www.kriche.com.ar/root/programming/data%20structures%20&%20algorithms/hashTable.html
  • http://www.programcreek.com/2013/03/arraylist-vs-linkedlist-vs-vector/
  • https://www.youtube.com/watch?v=shs0KM3wKv8
  • https://www.youtube.com/watch?v=h2d9b_nEzoA
  • http://blog.josephwilk.net/presentations/a-developers-guide-to-creating-presentations.html
  • http://www.it.uc3m.es/abel/as/MMC/M2/HashTable_es.html

Copy of Hash Tables

By Enzo Lizama

Copy of Hash Tables

Hash tables explanation , comparing with array and linked list

  • 182