SlideShare una empresa de Scribd logo
FUNCION DE DISPERSION  (Función Hash) Una función hash es un algoritmo matemático que nos da un resultado  B  al aplicarlo a un valor inicial  A .  Es como cualquier función matemática, por ejemplo la función raíz cuadrada nos daría como resultado 2 si se la aplicamos al número 4.  Al igual que cualquier función matemática tiene que actuar de tal forma y tiene que cumplir con ciertos criterios. No nos puede devolver cualquier cosa, lo que nos devuelva requiere que tenga ciertas propiedades para que podamos usarlo.
Una función de Hash es una caja negra que tiene como entrada una llave y como salida una dirección  h(K) =address Ejemplo:  h(LOWELL) =4
El hashing es similar al  indexamiento  en el sentido de asociación entre llaves y direcciones relativas de registros Pero difiere de los índices en 2 cosas: 1 La dirección generada por Hash suele ser aleatoria (random).  No hay una relación aparente entre la llave y la localización del registro correspondiente 2  El Hash permite que 2 llaves puedan producir la misma salida -->  direcciones iguales, a esto se le conoce como "colisión".
PROPIEDADES  BASICAS PARA CUMPLIR POR LAS FUNCIONES HASH 1 Sea cual sea la longitud del texto base  A , la longitud de su hash resultante  B  siempre va a ser la misma.  Si la longitud de la salida  B  esta defiinida en  128 bits , si aplicamos una  función hash a un  A  de 5 bits nos dará un   B   de 128 bits, y si se la aplicamos a  un  A  de 380 millones de bits, nos dará un  B  de  128 bits  igualmente. 2 Para cada entrada  A , la función generará una salida  B  única.  O lo que es lo mismo, es imposible que dos textos bases  A  y  A ' tengan un  mismo hash  B. 3 Dado un texto base, es fácil y rápido (para un ordenador) calcular su  número resumen.
PROPIEDADES TIENEN QUE CUMPLIR LAS FUNCIONES HASH 4 Es imposible reconstruir el texto base a partir del número resumen.   5  No puede presentar  Colisiones  PERO? QUE SON COLISIONES?
COLISIONES
COLISIONES Nuestra función de hash es pobre ya que fácilmente habrán llaves que generen la misma dirección ej.(  OL IVIER), a éstas llaves que generan las mismas direcciones se les llama "sinónimas". Idealmente lo que se buscaría es tener un "algoritmo de hash perfecto" en el cual no ocurran colisiones y siempre nos garantice direcciones diferentes. Pero desafortunadamente esto es casi imposible, se dice que  1 de 10^120000  algoritmos evitarían dichas colisiones, así que hay que acostumbrarse a la idea de trabajar y lidiar con  COLISIONES.
TABLA DE DISPERSION ( hash table ) Son estructuras de datos que asocien claves con valores. Por ejemplo, se podría implementar una guía telefónica por guardar los  números (los valores) bajo los nombres (las claves). La idea es reservar primero espacio en la memoria de la computadora y después alocarlo a la información insertada, de tal manera que siempre será rápido obtener la información que corresponde a una clave dada. OPERACIONES:  insertar  buscar  eliminar  En promedio el tiempo de ejecución de estas operaciones es constante.  Gracias a esto y a su simplicidad muchas veces se prefiere a los árboles binarios de búsqueda, requiere memoria extra.
Tablas de Dispersión Abierta •  Utilizan como estrategia de resolución del problema de las colisiones el permitir que varios elementos se encuentren almacenados en la misma posición de la tabla: es decir, el contenido de la tabla no son elementos, sino listas de elementos. •  Las listas suelen implementarse mediante representación enlazada, con enlaces simples y sin mantener un orden entre los elementos. •  Se define el factor de carga (L) de la tabla como el valor L = n/m, donde n es el número de elementos almacenados. Si la función de dispersión se comporta de manera uniforme para el conjunto de datos utilizado, entonces L representa el tamaño promedio de las listas. Nota:  La tabla se define como un vector de listas indexado    de 0 a m-1.
 
Propiedades de la dispersión abierta Nota: La tabla se define como un vector de listas indexado de 0 a m-1. •    El número de elementos almacenados puede ser mayor que el tamaño de la tabla. No es estrictamente necesario realizar operaciones de reestructuración (cambio de tamaño) de la tabla, salvo para garantizar que el coste de las operaciones de acceso y borrado (que es lineal con L) sea constante. •  Las operaciones de acceso y borrado se convierten en operaciones de búsqueda y borrado en listas: La eficiencia depende del tamaño de las listas, para que se considere que el tiempo es constante se debe cumplir •  El tamaño de las listas debe ser más o menos uniforme: Se debe cumplir que la función de dispersión sea uniforme para los conjuntos de datos que se van a utilizar. •  Si se cumple la condición anterior, el tamaño promedio de las listas será de  L = n/m (factor de carga).  •    No se debe permitir que L sea muy grande, por lo que el tamaño de la tabla debe ser del mismo orden que el máximo número de elementos que se van a almacenar.
 
Tablas de Dispersión Cerrada • Las tablas de dispersión  cerrada utilizan como estrategia de resolución del  problema de colisiones el asignar otra posición en la tabla al elemento cuya  posición está ocupada. •   Se define una función adicional, la  función de exploración, que calcula  una nueva posición para un elemento a partir de su posición inicial y del número de intentos de realojamientos (nº de colisiones sufridas) en el proceso de hallar una posición vacía. •  El contenido de las tablas de dispersión cerrada son referencias a elementos: A diferencia de la dispersión abierta, sólo se puede almacenar un elemento (o ninguno) en cada celda. •  Cuando se busca un elemento en la tabla se sigue el mismo camino de exploración que se ha seguido en la inserción. La aparición de una posición vacía indica que no existe el elemento en la tabla, ya que en caso contrario se hubiera insertado en esa posición. •   Además se plantea el problema de que borrar un elemento cambiando su posición en la tabla a vacía puede impedir el hallar otros elementos que sufrieron una colisión en esa posición, ya que aparece una posición vacía en su ruta de exploración. • La solución más utilizada es la estrategia  perezosa de borrado: Los  elementos no se borran marcando su posición como  vacía, sino que se  marca es posición como  borrada. Una casilla borrada se puede usar para  insertar un elemento (al igual que una posición vacía), pero no indica el final de una exploración (a diferencia de una posición vacía).
Tablas de Dispersión dinámica  El número de bloques del fichero no es fijo, sino que crece y disminuye conforme es necesario. El fichero puede empezar con un solo bloque y cuando éste se llena, se toma un nuevo bloque. Los registros se distribuyen entre los dos bloques teniendo en cuenta el primer bit de sus valores de dispersión. Los que tienen un 0 van a un bloque y los que tienen un 1 van al otro. Además, se va formando un directorio con estructura de árbol binario que tiene dos tipos de nodos: Nodos internos , que guían la búsqueda. Tienen un puntero izquierdo correspondiente al bit 0 y un puntero derecho correspondiente al bit 1.  Nodos hoja , conteniendo el puntero al bloque de datos.  Para hacer una búsqueda se puede almacenar el directorio en memoria, a menos que sea muy grande. Si no cabe en un bloque, habrá que distribuirlo en dos o más niveles. Cada nodo interno puede tener también un puntero al padre. Se pueden utilizar representaciones especiales de árboles binarios para reducir el espacio necesario para los tres punteros (izquierdo, derecho y padre). En general, un directorio de niveles puede necesitar hasta accesos a bloque para alcanzar un registro.
Eficiencia en las Tablas de Dispersión La eficiencia dependerá de la longitud de las listas (dispersión abierta) o de la longitud del proceso de exploración (dispersión cerrada). Existen dos situaciones distintas:  Explorar para encontrar un elemento o Explorar para encontrar una posición vacía. El análisis en el caso promedio da los resultados siguientes:
CONCLUSIONES En la dispersión abierta la dependencia es lineal con el factor de carga.  La dispersión cerrada, sin embargo, a medida que el factor de carga se Aproxima al valor límite 1 (tabla llena), el número de accesos crece de manera potencial. Por lo tanto, si se desea garantizar un orden constante en el caso promedio, se deben cumplir las siguientes condiciones: Diseñar la función de dispersión para que sea uniforme de acuerdo con las características de los datos que se van a utilizar. En tablas de dispersión cerrada, usar exploración con desplazamiento si puede darse el problema de agrupamiento. No permitir L > 0.8.
BIBLIOGRAFIA www.cs.buap.mx/~mmartin/introprog/ejercicios03-AED-prope-2007.pdf  Arboles AVL – Rotaciones disponible  http://www.infor.uva.es/~cvaca/asigs/transp0405b.pdf Dispersión dinámica  http://www3.uji.es/~mmarques/f47/apun/node20.html Tablas de dispersión dinámicas  http://it.ciidit.uanl.mx/~elisa/teaching/aa/pdf/clase1610.pdf

Más contenido relacionado

PDF
15 Tablas Hash
 
PPTX
Tablas Hash
ODP
Método por plegamiento Hash
PPT
EXPOSICION HASH
PPTX
Método de Búsqueda Hash
PPT
Tablas Hash Fash Vmaa
PDF
Guia basica de MySQL 2
PPTX
Búsqueda secuencial y binaria
15 Tablas Hash
 
Tablas Hash
Método por plegamiento Hash
EXPOSICION HASH
Método de Búsqueda Hash
Tablas Hash Fash Vmaa
Guia basica de MySQL 2
Búsqueda secuencial y binaria

La actualidad más candente (19)

PPTX
Estructura de Datos Unidad - V: Métodos de Ordenamiento
PPTX
Ordenamiento c++
PPTX
Estructura de Datos - Unidad 6 Metodos de busqueda
PPTX
Ordenacion y busqueda
PPTX
hashing y colisiones
DOC
PDF
Arreglos
PPTX
Algebra relacional
PPTX
Algebra relacional
PPTX
Exposicion Busqueda
PPTX
Búsqueda secuencial en tabla ordenada
DOCX
Informe técnico - Métodos de búsqueda Unidad 6 (Rubí Verónica)
PDF
METODOS DE ORDENACION ORDENAMIENTO Y BUSQUEDA (ALGORITMOS)
PPTX
4cod 01nov mbustamante_kmalla
PPTX
Ordenamientos rápido y mezcla
PPT
Estructuras de datos y algoritmos
Estructura de Datos Unidad - V: Métodos de Ordenamiento
Ordenamiento c++
Estructura de Datos - Unidad 6 Metodos de busqueda
Ordenacion y busqueda
hashing y colisiones
Arreglos
Algebra relacional
Algebra relacional
Exposicion Busqueda
Búsqueda secuencial en tabla ordenada
Informe técnico - Métodos de búsqueda Unidad 6 (Rubí Verónica)
METODOS DE ORDENACION ORDENAMIENTO Y BUSQUEDA (ALGORITMOS)
4cod 01nov mbustamante_kmalla
Ordenamientos rápido y mezcla
Estructuras de datos y algoritmos
Publicidad

Destacado (8)

PPT
Tablas Hash (María Macías Alonso)
PPT
Tablas Hash (Joel Díaz Pousada)
PDF
Tema 2 Diccionarios. Tablas Hash.
PPT
Algoritmo De Hash
DOC
Algoritmo de busqueda truncamiento
DOCX
Ejercicios funciones de hash
PPS
HASH Organizacion de Archivos en Bases de Datos
PPTX
Función Hash: metodos de división y de medio Cuadrado.
Tablas Hash (María Macías Alonso)
Tablas Hash (Joel Díaz Pousada)
Tema 2 Diccionarios. Tablas Hash.
Algoritmo De Hash
Algoritmo de busqueda truncamiento
Ejercicios funciones de hash
HASH Organizacion de Archivos en Bases de Datos
Función Hash: metodos de división y de medio Cuadrado.
Publicidad

Similar a T A B L A D E D I S P E R S I O N (Hash Table) (20)

PPT
Tablas Hash
PDF
Tablas hash
PPTX
COMPILADORES-Tabla de Simbolos
PPTX
PPT
hashing.ppt
PPTX
Ordenamiento en C++
PPTX
PPTX
Hashing
PPT
Ezequiel Barbón Fernández
DOCX
11. indices en my sql
PPTX
Estructura de Datos - Unidad III Estructuras Lineales
PDF
Yulieth jerez rodrigues
PDF
Tablas de dispersion
PPSX
Terminologías de excel
PPTX
DOCX
Listas c#
PPT
Unidad 1 1
PPT
Tabla hash uo3136
PPTX
PPTS FINAL DE ESTRUCTURA DE DATOS.pptx
Tablas Hash
Tablas hash
COMPILADORES-Tabla de Simbolos
hashing.ppt
Ordenamiento en C++
Hashing
Ezequiel Barbón Fernández
11. indices en my sql
Estructura de Datos - Unidad III Estructuras Lineales
Yulieth jerez rodrigues
Tablas de dispersion
Terminologías de excel
Listas c#
Unidad 1 1
Tabla hash uo3136
PPTS FINAL DE ESTRUCTURA DE DATOS.pptx

Último (20)

PDF
Instrucciones simples, respuestas poderosas. La fórmula del prompt perfecto.
PDF
capacitación de aire acondicionado Bgh r 410
PDF
informe_fichas1y2_corregido.docx (2) (1).pdf
PPTX
Propuesta BKP servidores con Acronis1.pptx
PPTX
Sesion 1 de microsoft power point - Clase 1
PPTX
Presentacion de Alba Curso Auditores Internos ISO 19011
PDF
Ronmy José Cañas Zambrano - Potenciando la tecnología en Venezuela.pdf
PDF
Influencia-del-uso-de-redes-sociales.pdf
PPTX
Presentación de Redes de Datos modelo osi
PPTX
ANCASH-CRITERIOS DE EVALUACIÓN-FORMA-10-10 (2).pptx
PDF
Documental Beyond the Code (Dossier Presentación - 2.0)
PPTX
El uso de las TIC en la vida cotidiana..
PPTX
modulo seguimiento 1 para iniciantes del
PDF
TRABAJO DE TECNOLOGIA.pdf...........................
PPT
El-Gobierno-Electrónico-En-El-Estado-Bolivia
PDF
Diapositiva proyecto de vida, materia catedra
PDF
PRESENTACIÓN GENERAL MIPIG - MODELO INTEGRADO DE PLANEACIÓN
PDF
ADMINISTRACIÓN DE ARCHIVOS - TICS (SENA).pdf
PPTX
sa-cs-82-powerpoint-hardware-y-software_ver_4.pptx
DOCX
Zarate Quispe Alex aldayir aplicaciones de internet .docx
Instrucciones simples, respuestas poderosas. La fórmula del prompt perfecto.
capacitación de aire acondicionado Bgh r 410
informe_fichas1y2_corregido.docx (2) (1).pdf
Propuesta BKP servidores con Acronis1.pptx
Sesion 1 de microsoft power point - Clase 1
Presentacion de Alba Curso Auditores Internos ISO 19011
Ronmy José Cañas Zambrano - Potenciando la tecnología en Venezuela.pdf
Influencia-del-uso-de-redes-sociales.pdf
Presentación de Redes de Datos modelo osi
ANCASH-CRITERIOS DE EVALUACIÓN-FORMA-10-10 (2).pptx
Documental Beyond the Code (Dossier Presentación - 2.0)
El uso de las TIC en la vida cotidiana..
modulo seguimiento 1 para iniciantes del
TRABAJO DE TECNOLOGIA.pdf...........................
El-Gobierno-Electrónico-En-El-Estado-Bolivia
Diapositiva proyecto de vida, materia catedra
PRESENTACIÓN GENERAL MIPIG - MODELO INTEGRADO DE PLANEACIÓN
ADMINISTRACIÓN DE ARCHIVOS - TICS (SENA).pdf
sa-cs-82-powerpoint-hardware-y-software_ver_4.pptx
Zarate Quispe Alex aldayir aplicaciones de internet .docx

T A B L A D E D I S P E R S I O N (Hash Table)

  • 1. FUNCION DE DISPERSION (Función Hash) Una función hash es un algoritmo matemático que nos da un resultado B al aplicarlo a un valor inicial A . Es como cualquier función matemática, por ejemplo la función raíz cuadrada nos daría como resultado 2 si se la aplicamos al número 4. Al igual que cualquier función matemática tiene que actuar de tal forma y tiene que cumplir con ciertos criterios. No nos puede devolver cualquier cosa, lo que nos devuelva requiere que tenga ciertas propiedades para que podamos usarlo.
  • 2. Una función de Hash es una caja negra que tiene como entrada una llave y como salida una dirección h(K) =address Ejemplo: h(LOWELL) =4
  • 3. El hashing es similar al indexamiento en el sentido de asociación entre llaves y direcciones relativas de registros Pero difiere de los índices en 2 cosas: 1 La dirección generada por Hash suele ser aleatoria (random). No hay una relación aparente entre la llave y la localización del registro correspondiente 2 El Hash permite que 2 llaves puedan producir la misma salida --> direcciones iguales, a esto se le conoce como "colisión".
  • 4. PROPIEDADES BASICAS PARA CUMPLIR POR LAS FUNCIONES HASH 1 Sea cual sea la longitud del texto base A , la longitud de su hash resultante B siempre va a ser la misma. Si la longitud de la salida B esta defiinida en 128 bits , si aplicamos una función hash a un A de 5 bits nos dará un B de 128 bits, y si se la aplicamos a un A de 380 millones de bits, nos dará un B de 128 bits igualmente. 2 Para cada entrada A , la función generará una salida B única. O lo que es lo mismo, es imposible que dos textos bases A y A ' tengan un mismo hash B. 3 Dado un texto base, es fácil y rápido (para un ordenador) calcular su número resumen.
  • 5. PROPIEDADES TIENEN QUE CUMPLIR LAS FUNCIONES HASH 4 Es imposible reconstruir el texto base a partir del número resumen. 5 No puede presentar Colisiones PERO? QUE SON COLISIONES?
  • 7. COLISIONES Nuestra función de hash es pobre ya que fácilmente habrán llaves que generen la misma dirección ej.( OL IVIER), a éstas llaves que generan las mismas direcciones se les llama "sinónimas". Idealmente lo que se buscaría es tener un "algoritmo de hash perfecto" en el cual no ocurran colisiones y siempre nos garantice direcciones diferentes. Pero desafortunadamente esto es casi imposible, se dice que 1 de 10^120000 algoritmos evitarían dichas colisiones, así que hay que acostumbrarse a la idea de trabajar y lidiar con COLISIONES.
  • 8. TABLA DE DISPERSION ( hash table ) Son estructuras de datos que asocien claves con valores. Por ejemplo, se podría implementar una guía telefónica por guardar los números (los valores) bajo los nombres (las claves). La idea es reservar primero espacio en la memoria de la computadora y después alocarlo a la información insertada, de tal manera que siempre será rápido obtener la información que corresponde a una clave dada. OPERACIONES: insertar buscar eliminar En promedio el tiempo de ejecución de estas operaciones es constante. Gracias a esto y a su simplicidad muchas veces se prefiere a los árboles binarios de búsqueda, requiere memoria extra.
  • 9. Tablas de Dispersión Abierta • Utilizan como estrategia de resolución del problema de las colisiones el permitir que varios elementos se encuentren almacenados en la misma posición de la tabla: es decir, el contenido de la tabla no son elementos, sino listas de elementos. • Las listas suelen implementarse mediante representación enlazada, con enlaces simples y sin mantener un orden entre los elementos. • Se define el factor de carga (L) de la tabla como el valor L = n/m, donde n es el número de elementos almacenados. Si la función de dispersión se comporta de manera uniforme para el conjunto de datos utilizado, entonces L representa el tamaño promedio de las listas. Nota: La tabla se define como un vector de listas indexado de 0 a m-1.
  • 10.  
  • 11. Propiedades de la dispersión abierta Nota: La tabla se define como un vector de listas indexado de 0 a m-1. • El número de elementos almacenados puede ser mayor que el tamaño de la tabla. No es estrictamente necesario realizar operaciones de reestructuración (cambio de tamaño) de la tabla, salvo para garantizar que el coste de las operaciones de acceso y borrado (que es lineal con L) sea constante. • Las operaciones de acceso y borrado se convierten en operaciones de búsqueda y borrado en listas: La eficiencia depende del tamaño de las listas, para que se considere que el tiempo es constante se debe cumplir • El tamaño de las listas debe ser más o menos uniforme: Se debe cumplir que la función de dispersión sea uniforme para los conjuntos de datos que se van a utilizar. • Si se cumple la condición anterior, el tamaño promedio de las listas será de L = n/m (factor de carga). • No se debe permitir que L sea muy grande, por lo que el tamaño de la tabla debe ser del mismo orden que el máximo número de elementos que se van a almacenar.
  • 12.  
  • 13. Tablas de Dispersión Cerrada • Las tablas de dispersión cerrada utilizan como estrategia de resolución del problema de colisiones el asignar otra posición en la tabla al elemento cuya posición está ocupada. • Se define una función adicional, la función de exploración, que calcula una nueva posición para un elemento a partir de su posición inicial y del número de intentos de realojamientos (nº de colisiones sufridas) en el proceso de hallar una posición vacía. • El contenido de las tablas de dispersión cerrada son referencias a elementos: A diferencia de la dispersión abierta, sólo se puede almacenar un elemento (o ninguno) en cada celda. • Cuando se busca un elemento en la tabla se sigue el mismo camino de exploración que se ha seguido en la inserción. La aparición de una posición vacía indica que no existe el elemento en la tabla, ya que en caso contrario se hubiera insertado en esa posición. • Además se plantea el problema de que borrar un elemento cambiando su posición en la tabla a vacía puede impedir el hallar otros elementos que sufrieron una colisión en esa posición, ya que aparece una posición vacía en su ruta de exploración. • La solución más utilizada es la estrategia perezosa de borrado: Los elementos no se borran marcando su posición como vacía, sino que se marca es posición como borrada. Una casilla borrada se puede usar para insertar un elemento (al igual que una posición vacía), pero no indica el final de una exploración (a diferencia de una posición vacía).
  • 14. Tablas de Dispersión dinámica El número de bloques del fichero no es fijo, sino que crece y disminuye conforme es necesario. El fichero puede empezar con un solo bloque y cuando éste se llena, se toma un nuevo bloque. Los registros se distribuyen entre los dos bloques teniendo en cuenta el primer bit de sus valores de dispersión. Los que tienen un 0 van a un bloque y los que tienen un 1 van al otro. Además, se va formando un directorio con estructura de árbol binario que tiene dos tipos de nodos: Nodos internos , que guían la búsqueda. Tienen un puntero izquierdo correspondiente al bit 0 y un puntero derecho correspondiente al bit 1. Nodos hoja , conteniendo el puntero al bloque de datos. Para hacer una búsqueda se puede almacenar el directorio en memoria, a menos que sea muy grande. Si no cabe en un bloque, habrá que distribuirlo en dos o más niveles. Cada nodo interno puede tener también un puntero al padre. Se pueden utilizar representaciones especiales de árboles binarios para reducir el espacio necesario para los tres punteros (izquierdo, derecho y padre). En general, un directorio de niveles puede necesitar hasta accesos a bloque para alcanzar un registro.
  • 15. Eficiencia en las Tablas de Dispersión La eficiencia dependerá de la longitud de las listas (dispersión abierta) o de la longitud del proceso de exploración (dispersión cerrada). Existen dos situaciones distintas: Explorar para encontrar un elemento o Explorar para encontrar una posición vacía. El análisis en el caso promedio da los resultados siguientes:
  • 16. CONCLUSIONES En la dispersión abierta la dependencia es lineal con el factor de carga. La dispersión cerrada, sin embargo, a medida que el factor de carga se Aproxima al valor límite 1 (tabla llena), el número de accesos crece de manera potencial. Por lo tanto, si se desea garantizar un orden constante en el caso promedio, se deben cumplir las siguientes condiciones: Diseñar la función de dispersión para que sea uniforme de acuerdo con las características de los datos que se van a utilizar. En tablas de dispersión cerrada, usar exploración con desplazamiento si puede darse el problema de agrupamiento. No permitir L > 0.8.
  • 17. BIBLIOGRAFIA www.cs.buap.mx/~mmartin/introprog/ejercicios03-AED-prope-2007.pdf Arboles AVL – Rotaciones disponible http://www.infor.uva.es/~cvaca/asigs/transp0405b.pdf Dispersión dinámica http://www3.uji.es/~mmarques/f47/apun/node20.html Tablas de dispersión dinámicas http://it.ciidit.uanl.mx/~elisa/teaching/aa/pdf/clase1610.pdf

Notas del editor