SlideShare una empresa de Scribd logo
1 de 11
TABLA HASH
Es un conjunto formado por un número
arbitrario de elementos distintos (del mismo
tipo), identificado cada uno por una palabra
clave diferente, junto con un conjunto de
procedimientos de acceso.
FUNCIÓN HASH
Es la que se va a encargar de transformar las
claves en direcciones de la tabla.
Podríamos definir a la “función ideal” como
aquella que distribuya a todos nuestros objetos
lo mas uniformemente posible sobre la gama de
valores índice, en un tamaño M, en donde M es
la cantidad de elementos que tiene la tabla
Metodología para el diseño de
funciones hash
Residual (división): el índice de un número es resto de la división
de ese número entre un número N prefijado, preferentemente primo.
Los números se guardarán en las direcciones de memoria de 0 a N-1.
Este método tiene el problema de que al menos un índice es señalado
por dos elementos. A este fenómeno se le llama colisión.
Representación:
H(llave)=llave MOD N donde: 0<= H(llave)<=N-1
Ejemplo.
Si el número N es el 13, los números siguientes quedan transformados
13000000 --> 0
12345678 --> 7
13602499 --> 1
71140205 --> 6
73062138 --> 6
Metodología para el diseño de
funciones hash
Cuadrática(multiplicación): consiste en elevar al
cuadrado la clave y coger las cifras centrales. Este
método también presenta problemas de colisión:
Representación:
H(llave)=digitos_centrales(llave^2)
Ejemplo:
123*123=15129 --> 51
136*136=18496 --> 84
730*730=532900 --> 29
301*301=90601 --> 06
Metodología para el diseño de
funciones hash
Folding(plegamiento): consiste en agrupar algunos de los
dígitos que conforman la llave y aplicar algunas operaciones
(normalmente con suma o multiplicación) que permita generar
un índice para el espacio de almacenamiento. También se
produce colisión.
Ejemplo.
Si dividimos los número de 8 cifras en 3, 3 y 2 cifras y se suman,
dará otro número de tres cifras (y si no, se cogen las tres últimas
cifras):
13000000 --> 130=130+000+00
12345678 --> 657=123+456+78
71140205 --> 118 --> 1118=711+402+05
13602499 --> 259=136+024+99
25000009 --> 259=250+000+09
Resolver colisiones
Una colisión se presenta cuando la función que
convierte la llave en una posición dentro de la
tabla, generan la misma dirección para dos
valores de llave diferente
Dependiendo de la forma en que se busca una
posición nueva para el elemento cisionado a
partir de la dirección base, estas metodologías
o pruebas se dividen en 2 grupos:
• Direccionamiento abierto
• Encadenamiento
Resolver colisiones
• Para almacenar los elementos esta función utiliza solo el
espacio definido en la tabla.
• El espacio en la tabla es considerado circular, es decir
cuando un elemento provoca una colisión se almacena
en otra posición del mismo espacio definido para la tabla,
hacia arriba o hacia debajo de la dirección base original
• Cuando se busca, examinamos varias entradas hasta
encontrarlo o es claro que no está.
• No hay una lista ni elementos almacenados fuera de la
“tabla”.
Dentro de las pruebas mas comunes tenemos las siguientes:
Direccionamiento abierto
Resolver colisiones
Prueba lineal:
hi(x) = (h(x) + i)%M, donde i es un contador del número
de ocasiones en las que se a registrado una colisión.
Prueba cuadrática:
hi(x) = (h(x) + i^2)%M.
Hashing doble:
hi(x) = (h(x) + i h′(x))%M, donde h’(x) es otra función
hash, llamada función hash secundaria, cuyo requisito es
que nunca pueda tomar el valor 0.
Direccionamiento abierto
Resolver colisiones
Direccionamiento abierto
Ejemplo de la prueba cuadrática
Resolver colisiones
• Las búsquedas de una clave en la tabla hash
se realizan en el mismo orden que se siguió
para la inserción.
• Los borrados marcan las posiciones de la
tabla con un valor distinto de libre u
ocupado, para facilitar las nuevas
inserciones y la búsqueda de elementos.
Direccionamiento abierto
Resolver colisiones
Direccionamiento abierto
Ejemplo de la prueba cuadrática

Más contenido relacionado

La actualidad más candente

Cadena Juan Bastidas
Cadena Juan BastidasCadena Juan Bastidas
Cadena Juan BastidasJuan Bastidas
 
FUNCION DE CONTAR DE EXCEL
FUNCION DE CONTAR DE EXCELFUNCION DE CONTAR DE EXCEL
FUNCION DE CONTAR DE EXCELDavid Vaquero
 
hashing y colisiones
hashing y colisioneshashing y colisiones
hashing y colisionesemiru48
 
Investigacion
InvestigacionInvestigacion
InvestigacionJipselRoa
 
Función Hash: metodos de división y de medio Cuadrado.
Función Hash: metodos de división y de medio Cuadrado.Función Hash: metodos de división y de medio Cuadrado.
Función Hash: metodos de división y de medio Cuadrado.Ana Castro
 
Arreglos Bidimensionales
Arreglos BidimensionalesArreglos Bidimensionales
Arreglos Bidimensionalesguestefc95b
 
Tema 2 Diccionarios. Tablas Hash.
Tema 2 Diccionarios. Tablas Hash.Tema 2 Diccionarios. Tablas Hash.
Tema 2 Diccionarios. Tablas Hash.Carlos A. Iglesias
 
Algoritmo de busqueda truncamiento
Algoritmo de busqueda truncamientoAlgoritmo de busqueda truncamiento
Algoritmo de busqueda truncamientojaviervilugron
 
Listas doblemente enlazadas C++ UP
Listas doblemente enlazadas C++ UPListas doblemente enlazadas C++ UP
Listas doblemente enlazadas C++ UPMiguelGomez371
 
Arreglos programacion
Arreglos programacionArreglos programacion
Arreglos programacionashildir
 
Método de quine mc cluskey
Método de quine mc cluskeyMétodo de quine mc cluskey
Método de quine mc cluskeyJorge Estrada
 
Concepto de ecuación
Concepto de ecuaciónConcepto de ecuación
Concepto de ecuaciónSharon Albur
 

La actualidad más candente (20)

Cadena Juan Bastidas
Cadena Juan BastidasCadena Juan Bastidas
Cadena Juan Bastidas
 
FUNCION DE CONTAR DE EXCEL
FUNCION DE CONTAR DE EXCELFUNCION DE CONTAR DE EXCEL
FUNCION DE CONTAR DE EXCEL
 
Aritmetica Modular
Aritmetica ModularAritmetica Modular
Aritmetica Modular
 
hashing y colisiones
hashing y colisioneshashing y colisiones
hashing y colisiones
 
Investigacion
InvestigacionInvestigacion
Investigacion
 
Arreglos
ArreglosArreglos
Arreglos
 
Función Hash: metodos de división y de medio Cuadrado.
Función Hash: metodos de división y de medio Cuadrado.Función Hash: metodos de división y de medio Cuadrado.
Función Hash: metodos de división y de medio Cuadrado.
 
Hash mitad al cuadrado pdf
Hash mitad al cuadrado pdfHash mitad al cuadrado pdf
Hash mitad al cuadrado pdf
 
Arreglos Bidimensionales
Arreglos BidimensionalesArreglos Bidimensionales
Arreglos Bidimensionales
 
Tutorial de formulas de excel
Tutorial de formulas de excelTutorial de formulas de excel
Tutorial de formulas de excel
 
Funciones (parte ii) 1
Funciones (parte ii) 1Funciones (parte ii) 1
Funciones (parte ii) 1
 
Funciones (parte ii)
Funciones (parte ii)Funciones (parte ii)
Funciones (parte ii)
 
Tema 2 Diccionarios. Tablas Hash.
Tema 2 Diccionarios. Tablas Hash.Tema 2 Diccionarios. Tablas Hash.
Tema 2 Diccionarios. Tablas Hash.
 
Algoritmo de busqueda truncamiento
Algoritmo de busqueda truncamientoAlgoritmo de busqueda truncamiento
Algoritmo de busqueda truncamiento
 
Listas doblemente enlazadas C++ UP
Listas doblemente enlazadas C++ UPListas doblemente enlazadas C++ UP
Listas doblemente enlazadas C++ UP
 
Arreglos programacion
Arreglos programacionArreglos programacion
Arreglos programacion
 
Presentación
Presentación  Presentación
Presentación
 
Unidad i
Unidad iUnidad i
Unidad i
 
Método de quine mc cluskey
Método de quine mc cluskeyMétodo de quine mc cluskey
Método de quine mc cluskey
 
Concepto de ecuación
Concepto de ecuaciónConcepto de ecuación
Concepto de ecuación
 

Similar a Hash

Similar a Hash (20)

T A B L A D E D I S P E R S I O N (Hash Table)
T A B L A  D E  D I S P E R S I O N (Hash Table)T A B L A  D E  D I S P E R S I O N (Hash Table)
T A B L A D E D I S P E R S I O N (Hash Table)
 
Hashing
HashingHashing
Hashing
 
Hashing
HashingHashing
Hashing
 
Tablas de dispersion
Tablas de dispersionTablas de dispersion
Tablas de dispersion
 
Hashing
HashingHashing
Hashing
 
Hashing
HashingHashing
Hashing
 
Tablas hash
Tablas hashTablas hash
Tablas hash
 
Hashing
HashingHashing
Hashing
 
Algoritmos de búsqueda
Algoritmos de búsqueda Algoritmos de búsqueda
Algoritmos de búsqueda
 
Metodos de ordenamiento
Metodos de ordenamientoMetodos de ordenamiento
Metodos de ordenamiento
 
Tablas Hash
Tablas HashTablas Hash
Tablas Hash
 
Tablas Hash Fash Vmaa
Tablas Hash Fash VmaaTablas Hash Fash Vmaa
Tablas Hash Fash Vmaa
 
Dipersion
DipersionDipersion
Dipersion
 
Dipersion HASH
Dipersion HASHDipersion HASH
Dipersion HASH
 
Dipersion hash
Dipersion hashDipersion hash
Dipersion hash
 
Aritmética Modular
Aritmética ModularAritmética Modular
Aritmética Modular
 
Informe aritmetica modular
Informe aritmetica modularInforme aritmetica modular
Informe aritmetica modular
 
Unidad 8 metodos_de_busqueda
Unidad 8 metodos_de_busquedaUnidad 8 metodos_de_busqueda
Unidad 8 metodos_de_busqueda
 
EXPOSICION HASH
EXPOSICION HASHEXPOSICION HASH
EXPOSICION HASH
 
COMPILADORES-Tabla de Simbolos
COMPILADORES-Tabla de SimbolosCOMPILADORES-Tabla de Simbolos
COMPILADORES-Tabla de Simbolos
 

Más de Jose Silva

Metodos de ordenamiento
Metodos de ordenamientoMetodos de ordenamiento
Metodos de ordenamientoJose Silva
 
Tipo de memorias
Tipo de memoriasTipo de memorias
Tipo de memoriasJose Silva
 
Representacion+grafica
Representacion+graficaRepresentacion+grafica
Representacion+graficaJose Silva
 
Arreglode discosmaquinasvirtuales
Arreglode discosmaquinasvirtualesArreglode discosmaquinasvirtuales
Arreglode discosmaquinasvirtualesJose Silva
 
Dispositivos de entrada salida
Dispositivos de entrada salidaDispositivos de entrada salida
Dispositivos de entrada salidaJose Silva
 

Más de Jose Silva (6)

Metodos de ordenamiento
Metodos de ordenamientoMetodos de ordenamiento
Metodos de ordenamiento
 
Tipo de memorias
Tipo de memoriasTipo de memorias
Tipo de memorias
 
Representacion+grafica
Representacion+graficaRepresentacion+grafica
Representacion+grafica
 
Arreglode discosmaquinasvirtuales
Arreglode discosmaquinasvirtualesArreglode discosmaquinasvirtuales
Arreglode discosmaquinasvirtuales
 
Dispositivos de entrada salida
Dispositivos de entrada salidaDispositivos de entrada salida
Dispositivos de entrada salida
 
Arboles
ArbolesArboles
Arboles
 

Hash

  • 1. TABLA HASH Es un conjunto formado por un número arbitrario de elementos distintos (del mismo tipo), identificado cada uno por una palabra clave diferente, junto con un conjunto de procedimientos de acceso.
  • 2. FUNCIÓN HASH Es la que se va a encargar de transformar las claves en direcciones de la tabla. Podríamos definir a la “función ideal” como aquella que distribuya a todos nuestros objetos lo mas uniformemente posible sobre la gama de valores índice, en un tamaño M, en donde M es la cantidad de elementos que tiene la tabla
  • 3. Metodología para el diseño de funciones hash Residual (división): el índice de un número es resto de la división de ese número entre un número N prefijado, preferentemente primo. Los números se guardarán en las direcciones de memoria de 0 a N-1. Este método tiene el problema de que al menos un índice es señalado por dos elementos. A este fenómeno se le llama colisión. Representación: H(llave)=llave MOD N donde: 0<= H(llave)<=N-1 Ejemplo. Si el número N es el 13, los números siguientes quedan transformados 13000000 --> 0 12345678 --> 7 13602499 --> 1 71140205 --> 6 73062138 --> 6
  • 4. Metodología para el diseño de funciones hash Cuadrática(multiplicación): consiste en elevar al cuadrado la clave y coger las cifras centrales. Este método también presenta problemas de colisión: Representación: H(llave)=digitos_centrales(llave^2) Ejemplo: 123*123=15129 --> 51 136*136=18496 --> 84 730*730=532900 --> 29 301*301=90601 --> 06
  • 5. Metodología para el diseño de funciones hash Folding(plegamiento): consiste en agrupar algunos de los dígitos que conforman la llave y aplicar algunas operaciones (normalmente con suma o multiplicación) que permita generar un índice para el espacio de almacenamiento. También se produce colisión. Ejemplo. Si dividimos los número de 8 cifras en 3, 3 y 2 cifras y se suman, dará otro número de tres cifras (y si no, se cogen las tres últimas cifras): 13000000 --> 130=130+000+00 12345678 --> 657=123+456+78 71140205 --> 118 --> 1118=711+402+05 13602499 --> 259=136+024+99 25000009 --> 259=250+000+09
  • 6. Resolver colisiones Una colisión se presenta cuando la función que convierte la llave en una posición dentro de la tabla, generan la misma dirección para dos valores de llave diferente Dependiendo de la forma en que se busca una posición nueva para el elemento cisionado a partir de la dirección base, estas metodologías o pruebas se dividen en 2 grupos: • Direccionamiento abierto • Encadenamiento
  • 7. Resolver colisiones • Para almacenar los elementos esta función utiliza solo el espacio definido en la tabla. • El espacio en la tabla es considerado circular, es decir cuando un elemento provoca una colisión se almacena en otra posición del mismo espacio definido para la tabla, hacia arriba o hacia debajo de la dirección base original • Cuando se busca, examinamos varias entradas hasta encontrarlo o es claro que no está. • No hay una lista ni elementos almacenados fuera de la “tabla”. Dentro de las pruebas mas comunes tenemos las siguientes: Direccionamiento abierto
  • 8. Resolver colisiones Prueba lineal: hi(x) = (h(x) + i)%M, donde i es un contador del número de ocasiones en las que se a registrado una colisión. Prueba cuadrática: hi(x) = (h(x) + i^2)%M. Hashing doble: hi(x) = (h(x) + i h′(x))%M, donde h’(x) es otra función hash, llamada función hash secundaria, cuyo requisito es que nunca pueda tomar el valor 0. Direccionamiento abierto
  • 10. Resolver colisiones • Las búsquedas de una clave en la tabla hash se realizan en el mismo orden que se siguió para la inserción. • Los borrados marcan las posiciones de la tabla con un valor distinto de libre u ocupado, para facilitar las nuevas inserciones y la búsqueda de elementos. Direccionamiento abierto