SlideShare una empresa de Scribd logo
Universidad de Cuenca
Facultad de Ingeniería
Escuela de Ingeniería de Sistemas
Programación III
Tema: Tablas de Dispersión
Por: Jonnathan Peñaranda
CONTENIDO
• Tablas de dispersión.
• Funciones de dispersión.
• Colisiones y resolución de colisiones.
• Problema planteado.
• Conclusión.
TABLAS DE DISPERSIÓN (TABLAS HASH)
Son estructuras
de datos
Se usan en
secuencia de
elementos
Valor clave
Complejidad constante: O(1)
Su finalidad
Inserción
Búsqueda
Eliminación
• La tabla de dispersión es un vector de tamaño fijo m,
• Contiene las claves de los elementos,
• Consta de una función hash, que transforma el campo clave elegido,
en un valor entero dentro del rango del vector.
pos Elemento
0
1
2
4
.
m-2
m-1
FUNCION_HASH( clave)
Elemento 1
Elemento 2
Elemento 3
clave1
clave2
clave3
Elemento 1
Elemento 2
Elemento 3
IMPLEMENTACIÓN EN JAVA
FUNCIONES DE DISPERSIÓN
Convierte el dato considerado
campo clave en un índice dentro
del rango de definición del vector.
Lo ideal es
determinar
posición en un
almacenamiento
secuencial sin
desperdiciar
mucho espacio.
FUNCIONES DE DISPERSIÓN
tamTabla = m
Hash(x): [0,m-1]
String clave = “a01”;
int clave = ASCII(a)
+ ASCII(0)
+ ASCII(1);
CRITERIOS PARA SELECCIONAR UNA FUNCIÓN.
• Fácil de evaluar y complejidad O(1)
• h(x) debe distribuir uniformemente las posiciones de los elementos
sobre el conjunto de direcciones de memoria , de modo que minimice
el numero de colisiones
• Preparar siempre resolución de colisiones para cuando éstas se
produzcan.
TIPOS DE FUNCIONES HASH
• Aritmética modular.
• Plegamiento.
• Mitad del cuadrado.
• Método de la multiplicación
ARITMÉTICA MODULAR
• La función hash mas simple
utiliza el operador.
• Genera valores calculando el
resto de la división entera entre
la clave x y el tamaño de la tabla
m.
h(x)= x % m
• Implementación en Java
Ejemplo:
m= 1000
Elm1 = 245643
Elm2 = 245221
Elm3 = 257135
PLEGAMIENTO
• Clave demasiado grande.
• Consiste en partir la clave x en
varias partes ()
h(x) = x1 + x2 + x3 + x4 + ……..+ xr;
h)x) = valor entero ;
• Implementación en Java
Ejemplo:
m= 1000
Elm1 = 245643
Elm2 = 245221
Elm3 = 257135
MITAD DEL CUADRADO
tamTabla = 51;
clave = 45;
clave^2 = 2025;
2 0 2 5
h(x) = 25;
• Implementación en Java
Ejemplo:
m= 1000
Elm1 = 245643
Elm2 = 245221
Elm3 = 257135
MÉTODO DE LA MULTIPLICACIÓN
• La dispersión genera direcciones
en tres pasos:
1. A*clave (0 < A < 1).
2. d = A*x – ParteEntera(A*x).
3. h(x) = ParteEntera(m*d).
• Implementación en Java
Donald E. Knuth sugiere que A ≈ ( √ 5 − 1)/2 = 0.61680339887...
Ejemplo:
m= 1000
Elm1 = 245643
Elm2 = 245221
Elm3 = 257135
OPERACIONES DE LAS TABLAS DE DISPERSIÓN
Además
• Dos claves diferentes, c1 y c2, den la misma dirección, h1(c1) =
h2(c2). Se produce una colisión.
• Direccionamiento hash implica: la elección de la función hash y
resolución de colisiones.
COLISIONES Y RESOLUCIÓN DE COLISIONES
pos Elemento
0
1
2
4
.
m-2
m-1
FUNCION_HASH (clave)
Elemento 1
Elemento 2
clave1
clave2
Elemento1 Elemento 2
COLISIÓN
MODELOS PARA RESOLVER COLISIONES.
• La exploración de direcciones
• Exploración lineal
• Exploración cuadrática
• Direccionamiento enlazado.
EXPLORACIÓN DE DIRECCIONES.
• Las colisiones se resuelven explorando consecutivamente en una
secuencia de direcciones hasta que se encuentra una posición
libre(hueco).
• Importante, inicializar todas las posiciones de la tabla con un valor
que indique vacío. Por ejemplo null.
• Al insertar un elemento, si se produce una colisión, la secuencia de
exploración termina cuando se encuentra una dirección vacía.
EXPLORACIÓN LINEAL
• Forma mas simple y primitiva de resolver una colisión entre claves.
• La forma de resolver la colisión consiste en buscar la primera posición
disponible que siga a la posición que retorna la función hash.
pos Elemento
0
1 OCUPADO
2 OCUPADO
4
. OCUPADO
m-2
m-1
FUNCION_HASH (Elemento)
Elemento
EXP_LINEAL( pos)
¿Está ocupado?
SI
EXPLORACIÓN LINEAL
• Forma mas simple y primitiva de resolver una colisión entre claves.
• La forma de resolver la colisión consiste en buscar la primera posición
disponible que siga a la posición que retorna la función hash.
pos Elemento
0
1 OCUPADO
2 OCUPADO
4
. OCUPADO
m-2
m-1
FUNCION_HASH (Elemento)
Elemento
EXP_LINEAL( pos)
¿Está ocupado?
SI
EXPLORACIÓN LINEAL
• Forma mas simple y primitiva de resolver una colisión entre claves.
• La forma de resolver la colisión consiste en buscar la primera posición
disponible que siga a la posición que retorna la función hash.
pos Elemento
0
1 OCUPADO
2 OCUPADO
4
. OCUPADO
m-2
m-1
FUNCION_HASH (Elemento)
EXP_LINEAL( pos)
¿Está ocupado?
NO
Elemento
Elemento
IMPLEMENTACIÓN EN JAVA
EXPLORACIÓN CUADRÁTICA
FUNCION_HASH (clave)
EXP_CUADRATICA( POS)
¿Está ocupado?
SI
ELEMENTO
POS ELEMENTOS
0 OCUPADO
1 OCUPADO
2
3 OCUPADO
4 OCUPADO
5
6 OCUPADO
7
8
9
10 OCUPADO
p
clave
EXPLORACIÓN CUADRÁTICA
FUNCION_HASH (clave)
EXP_CUADRATICA( POS)
¿Está ocupado?
SI
ELEMENTO
POS ELEMENTOS
0 OCUPADO
1 OCUPADO
2
3 OCUPADO
4 OCUPADO
5
6 OCUPADO
7
8
9
10 OCUPADO
clave
p+1
p
EXPLORACIÓN CUADRÁTICA
FUNCION_HASH (clave) EXP_CUADRATICA( POS)
¿Está ocupado?
SI
ELEMENTO
POS ELEMENTOS
0 OCUPADO
1 OCUPADO
2
3 OCUPADO
4 OCUPADO
5
6 OCUPADO
7
8
9
10 OCUPADO
p+4
clave
p+1
p
EXPLORACIÓN CUADRÁTICA
FUNCION_HASH (clave)
EXP_CUADRATICA( POS)
¿Está ocupado?
NO
ELEMENTO
POS ELEMENTOS
0 OCUPADO
1 OCUPADO
2
3 OCUPADO
4 OCUPADO
5
6 OCUPADO
7
8
9
10 OCUPADO
p+9
clave
ELEMENTO
Recorrido
p + i^2
i = 0, 1, 2, …
p+4
p+1
p
IMPLEMENTACIÓN EN JAVA
DIRECCIONAMIENTO ENLAZADO.
• Se basa en utilizar listas enlazadas, de tal forma que en cada lista se
colocan los elementos que tienen la misma dirección hash.
• Todos los elementos que colisionan: h(x1) = h(x2) = h(x3) … van a
estar ubicados en la misma lista enlazada.
pos Elemento *
0
1
2
4
.
11
12
FUNCION_HASH (clave)
Elemento 1
clave
Elemento 2
DIRECCIONAMIENTO ENLAZADO.
• Se basa en utilizar listas enlazadas, de tal forma que en cada lista se
colocan los elementos que tienen la misma dirección hash.
• Todos los elementos que colisionan: h(x1) = h(x2) = h(x3) … van a
estar ubicados en la misma lista enlazada.
pos Elemento *
0
1
2
4
.
11
12
FUNCION_HASH (clave)
Elemento 1
clave
clave
null
Elemento 2
Elemento 1
DIRECCIONAMIENTO ENLAZADO.
• Se basa en utilizar listas enlazadas, de tal forma que en cada lista se
colocan los elementos que tienen la misma dirección hash.
• Todos los elementos que colisionan: h(x1) = h(x2) = h(x3) … van a
estar ubicados en la misma lista enlazada.
pos Elemento *
0
1
2
4
.
11
12
FUNCION_HASH (clave)
Elemento 1
clave
Elemento 2 nullnull
Elemento 2
TABLAS DE DISPERSIÓN ENLAZADAS EN JAVA
OPERACIONES DE TABLAS DE DISPERSIÓN ENLAZADAS
INSERTAR
OPERACIONES DE TABLAS DE DISPERSIÓN ENLAZADAS
INSERTAR
OPERACIONES DE TABLAS DE DISPERSIÓN ENLAZADAS
BUSCAR
OPERACIONES DE TABLAS DE DISPERSIÓN ENLAZADAS
BUSCAR
OPERACIONES DE TABLAS DE DISPERSIÓN ENLAZADAS
ELIMINAR
OPERACIONES DE TABLAS DE DISPERSIÓN ENLAZADAS
ELIMINAR
PROBLEMA.
PROBLEMA.
PROBLEMA.
PROBLEMA.
PROBLEMA.
PROBLEMA.
PROBLEMA.
PROBLEMA.
CONCLUSIÓN.
• tamTabla = numero_primo mayor, aunque cercano al numero de
elementos que se tiene previsto almacenar en la tabla.
• Para resolver una colisión, lo mejor seria que se utilizara el
direccionamiento enlazado, y de este modo el tamaño de la tabla
sería irrelevante puesto que la estructura podrá almacenar los
elementos de forma dinámica.
REFERENCIA.
• Joyanes Aguilar, L., & Zohonero Martínez, I. (2008).
Estructura de datos en Java. McGraw-Hill España.

Más contenido relacionado

PPTX
Sistema Operativo Distribuido
PPTX
Búsqueda secuencial y binaria
PDF
Introduccion a los sistemas distribuidos
PPT
Arquitectura 3 Capas
PPTX
Estructura fisica y logica de active directory
PPTX
Unidad 4 a HERENCIA, CLASES ABSTRACTAS, INTERFACES Y POLIMORFISMO . UML
PPTX
Organización lógica y física.
PDF
Gestión de archivos
Sistema Operativo Distribuido
Búsqueda secuencial y binaria
Introduccion a los sistemas distribuidos
Arquitectura 3 Capas
Estructura fisica y logica de active directory
Unidad 4 a HERENCIA, CLASES ABSTRACTAS, INTERFACES Y POLIMORFISMO . UML
Organización lógica y física.
Gestión de archivos

La actualidad más candente (20)

PPTX
Método de Búsqueda Hash
ODP
Método por plegamiento Hash
PPTX
Función Hash: metodos de división y de medio Cuadrado.
PPTX
Estructura de Datos - Unidad 5 metodos de ordenamiento
PPTX
Pilas, colas, y listas estructura de datos
DOCX
Algoritmos de busqueda - hash truncamiento
PPTX
3. algoritmos de ordenamiento interno
PDF
Arboles M-Way, 2-3 y 2-3-4
DOCX
Cuadro comparativo algoritmos de busqueda
DOCX
Recursividad
PPTX
4. algoritmo de ordenamiento externo
PPTX
Listas,pilas y colas Estructura de Datos
DOCX
Listas como estructura de datos..
PDF
Metodo de busqueda
PPT
Notación infija postfija
PPTX
Tablas Hash
PPTX
Ordenamiento QuickSort
PPTX
arboles avl con codigo en java
PPTX
Dispersión y tablas hash
PDF
Árboles Multicamino, B y B+
Método de Búsqueda Hash
Método por plegamiento Hash
Función Hash: metodos de división y de medio Cuadrado.
Estructura de Datos - Unidad 5 metodos de ordenamiento
Pilas, colas, y listas estructura de datos
Algoritmos de busqueda - hash truncamiento
3. algoritmos de ordenamiento interno
Arboles M-Way, 2-3 y 2-3-4
Cuadro comparativo algoritmos de busqueda
Recursividad
4. algoritmo de ordenamiento externo
Listas,pilas y colas Estructura de Datos
Listas como estructura de datos..
Metodo de busqueda
Notación infija postfija
Tablas Hash
Ordenamiento QuickSort
arboles avl con codigo en java
Dispersión y tablas hash
Árboles Multicamino, B y B+
Publicidad

Similar a Programación 3: tablas de dispersión (20)

PPTX
PPTX
Dipersion
 
PPTX
Dipersion HASH
 
PPT
T A B L A D E D I S P E R S I O N (Hash Table)
PPTX
Dipersion hash
 
PDF
Tablas hash
PDF
Tablas de dispersion
PPT
EXPOSICION HASH
PPTX
hashing y colisiones
PPT
Orlando Prada Grupo 15/16h
PPT
Tabla Hash
PPT
hashing.ppt
PDF
Hash mitad al cuadrado pdf
PDF
Hash mitad al cuadrado pdf
PDF
Hash mitad al cuadrado pdf
Dipersion
 
Dipersion HASH
 
T A B L A D E D I S P E R S I O N (Hash Table)
Dipersion hash
 
Tablas hash
Tablas de dispersion
EXPOSICION HASH
hashing y colisiones
Orlando Prada Grupo 15/16h
Tabla Hash
hashing.ppt
Hash mitad al cuadrado pdf
Hash mitad al cuadrado pdf
Hash mitad al cuadrado pdf
Publicidad

Más de Angel Vázquez Patiño (20)

PDF
Capítulo 1: funciones, límites y continuidad
PDF
Python aplicado en las Ciencias Ambientales
PDF
Introducción al lenguaje de programación Python
PDF
Integral definida e integración
PDF
Valores extremos y comportamiento de las funciones y de sus gráficas
PDF
Derivada y diferenciación
PDF
Causality and climate networks approaches for evaluating climate models, trac...
PDF
Diferencias finitas y Ecuación de calor
PPTX
Puntos ordinarios y singularidades de una EDO lineal
PPTX
La ecuación diferencial de Legendre
PPTX
Solución en series de y' = f(x,y)
PPTX
Métodos de resolución de EDOs mediante series
PPTX
Solución en series de EDOs no lineales de orden mayor a uno y de un sistema d...
PDF
Problemas que originan sistemas de ecuaciones
PPTX
Linealización de sistemas de primer orden
PPTX
Sistemas de EDOs
PDF
Método de la secante
PDF
Iteraciones de punto fijo
PDF
Objetos y variables en Python
PDF
Definiciones de Error
Capítulo 1: funciones, límites y continuidad
Python aplicado en las Ciencias Ambientales
Introducción al lenguaje de programación Python
Integral definida e integración
Valores extremos y comportamiento de las funciones y de sus gráficas
Derivada y diferenciación
Causality and climate networks approaches for evaluating climate models, trac...
Diferencias finitas y Ecuación de calor
Puntos ordinarios y singularidades de una EDO lineal
La ecuación diferencial de Legendre
Solución en series de y' = f(x,y)
Métodos de resolución de EDOs mediante series
Solución en series de EDOs no lineales de orden mayor a uno y de un sistema d...
Problemas que originan sistemas de ecuaciones
Linealización de sistemas de primer orden
Sistemas de EDOs
Método de la secante
Iteraciones de punto fijo
Objetos y variables en Python
Definiciones de Error

Último (20)

PPTX
376060032-Diapositivas-de-Ingenieria-ESTRUCTURAL.pptx
PPTX
Curso Corto de PLANTA CONCENTRADORA FREEPORT
PPTX
Software para la educación instituciones superiores
PDF
Pensamiento Politico Siglo XXI Peru y Mundo.pdf
PDF
HISTORIA DE LA GRÚAA LO LARGO DE LOS TIEMPOSpdf
PPT
357161027-seguridad-industrial-diapositivas-ppt.ppt
PPTX
Riesgo eléctrico 5 REGLAS DE ORO PARA TRABAJOS CON TENSION
PPTX
CAPACITACIÓN DE USO ADECUADO DE EPP.pptx
PPTX
LEVANTAMIENTOS TOPOGRAFICOS - DIAPOSITIVAS
PPTX
Electronica II, material basico de electronica II
PPTX
DEBL Presentación PG 23.pptx [Autoguardado].pptx
PDF
Repaso sobre el Gusano_cogollero y como ataca .pdf
PDF
Prevención de estrés laboral y Calidad de sueño - LA PROTECTORA.pdf
PPTX
Introduccion quimica del fuego.ffffffffffpptx
PPTX
MARITIMO Y LESGILACION DEL MACO TRANSPORTE
PDF
FUNCION CUADRATICA FUNCIONES RAIZ CUADRADA
PDF
Matriz_Seguimiento_Estu_Consult_2024_ACT.pdf
PPTX
A8B08CED-D3D9-415C-B4A3-2A6CA6409A48.1.1Presentación Dirección 2022 unidade...
PPTX
Manual ISO9001_2015_IATF_16949_2016.pptx
PPTX
CNE-Tx-ZyD_Comite_2020-12-02-Consolidado-Version-Final.pptx
376060032-Diapositivas-de-Ingenieria-ESTRUCTURAL.pptx
Curso Corto de PLANTA CONCENTRADORA FREEPORT
Software para la educación instituciones superiores
Pensamiento Politico Siglo XXI Peru y Mundo.pdf
HISTORIA DE LA GRÚAA LO LARGO DE LOS TIEMPOSpdf
357161027-seguridad-industrial-diapositivas-ppt.ppt
Riesgo eléctrico 5 REGLAS DE ORO PARA TRABAJOS CON TENSION
CAPACITACIÓN DE USO ADECUADO DE EPP.pptx
LEVANTAMIENTOS TOPOGRAFICOS - DIAPOSITIVAS
Electronica II, material basico de electronica II
DEBL Presentación PG 23.pptx [Autoguardado].pptx
Repaso sobre el Gusano_cogollero y como ataca .pdf
Prevención de estrés laboral y Calidad de sueño - LA PROTECTORA.pdf
Introduccion quimica del fuego.ffffffffffpptx
MARITIMO Y LESGILACION DEL MACO TRANSPORTE
FUNCION CUADRATICA FUNCIONES RAIZ CUADRADA
Matriz_Seguimiento_Estu_Consult_2024_ACT.pdf
A8B08CED-D3D9-415C-B4A3-2A6CA6409A48.1.1Presentación Dirección 2022 unidade...
Manual ISO9001_2015_IATF_16949_2016.pptx
CNE-Tx-ZyD_Comite_2020-12-02-Consolidado-Version-Final.pptx

Programación 3: tablas de dispersión

  • 1. Universidad de Cuenca Facultad de Ingeniería Escuela de Ingeniería de Sistemas Programación III Tema: Tablas de Dispersión Por: Jonnathan Peñaranda
  • 2. CONTENIDO • Tablas de dispersión. • Funciones de dispersión. • Colisiones y resolución de colisiones. • Problema planteado. • Conclusión.
  • 3. TABLAS DE DISPERSIÓN (TABLAS HASH) Son estructuras de datos Se usan en secuencia de elementos Valor clave Complejidad constante: O(1) Su finalidad Inserción Búsqueda Eliminación
  • 4. • La tabla de dispersión es un vector de tamaño fijo m, • Contiene las claves de los elementos, • Consta de una función hash, que transforma el campo clave elegido, en un valor entero dentro del rango del vector. pos Elemento 0 1 2 4 . m-2 m-1 FUNCION_HASH( clave) Elemento 1 Elemento 2 Elemento 3 clave1 clave2 clave3 Elemento 1 Elemento 2 Elemento 3
  • 6. FUNCIONES DE DISPERSIÓN Convierte el dato considerado campo clave en un índice dentro del rango de definición del vector. Lo ideal es determinar posición en un almacenamiento secuencial sin desperdiciar mucho espacio.
  • 7. FUNCIONES DE DISPERSIÓN tamTabla = m Hash(x): [0,m-1] String clave = “a01”; int clave = ASCII(a) + ASCII(0) + ASCII(1);
  • 8. CRITERIOS PARA SELECCIONAR UNA FUNCIÓN. • Fácil de evaluar y complejidad O(1) • h(x) debe distribuir uniformemente las posiciones de los elementos sobre el conjunto de direcciones de memoria , de modo que minimice el numero de colisiones • Preparar siempre resolución de colisiones para cuando éstas se produzcan.
  • 9. TIPOS DE FUNCIONES HASH • Aritmética modular. • Plegamiento. • Mitad del cuadrado. • Método de la multiplicación
  • 10. ARITMÉTICA MODULAR • La función hash mas simple utiliza el operador. • Genera valores calculando el resto de la división entera entre la clave x y el tamaño de la tabla m. h(x)= x % m • Implementación en Java
  • 11. Ejemplo: m= 1000 Elm1 = 245643 Elm2 = 245221 Elm3 = 257135
  • 12. PLEGAMIENTO • Clave demasiado grande. • Consiste en partir la clave x en varias partes () h(x) = x1 + x2 + x3 + x4 + ……..+ xr; h)x) = valor entero ; • Implementación en Java
  • 13. Ejemplo: m= 1000 Elm1 = 245643 Elm2 = 245221 Elm3 = 257135
  • 14. MITAD DEL CUADRADO tamTabla = 51; clave = 45; clave^2 = 2025; 2 0 2 5 h(x) = 25; • Implementación en Java
  • 15. Ejemplo: m= 1000 Elm1 = 245643 Elm2 = 245221 Elm3 = 257135
  • 16. MÉTODO DE LA MULTIPLICACIÓN • La dispersión genera direcciones en tres pasos: 1. A*clave (0 < A < 1). 2. d = A*x – ParteEntera(A*x). 3. h(x) = ParteEntera(m*d). • Implementación en Java Donald E. Knuth sugiere que A ≈ ( √ 5 − 1)/2 = 0.61680339887...
  • 17. Ejemplo: m= 1000 Elm1 = 245643 Elm2 = 245221 Elm3 = 257135
  • 18. OPERACIONES DE LAS TABLAS DE DISPERSIÓN
  • 19. Además • Dos claves diferentes, c1 y c2, den la misma dirección, h1(c1) = h2(c2). Se produce una colisión. • Direccionamiento hash implica: la elección de la función hash y resolución de colisiones.
  • 20. COLISIONES Y RESOLUCIÓN DE COLISIONES pos Elemento 0 1 2 4 . m-2 m-1 FUNCION_HASH (clave) Elemento 1 Elemento 2 clave1 clave2 Elemento1 Elemento 2 COLISIÓN
  • 21. MODELOS PARA RESOLVER COLISIONES. • La exploración de direcciones • Exploración lineal • Exploración cuadrática • Direccionamiento enlazado.
  • 22. EXPLORACIÓN DE DIRECCIONES. • Las colisiones se resuelven explorando consecutivamente en una secuencia de direcciones hasta que se encuentra una posición libre(hueco). • Importante, inicializar todas las posiciones de la tabla con un valor que indique vacío. Por ejemplo null. • Al insertar un elemento, si se produce una colisión, la secuencia de exploración termina cuando se encuentra una dirección vacía.
  • 23. EXPLORACIÓN LINEAL • Forma mas simple y primitiva de resolver una colisión entre claves. • La forma de resolver la colisión consiste en buscar la primera posición disponible que siga a la posición que retorna la función hash. pos Elemento 0 1 OCUPADO 2 OCUPADO 4 . OCUPADO m-2 m-1 FUNCION_HASH (Elemento) Elemento EXP_LINEAL( pos) ¿Está ocupado? SI
  • 24. EXPLORACIÓN LINEAL • Forma mas simple y primitiva de resolver una colisión entre claves. • La forma de resolver la colisión consiste en buscar la primera posición disponible que siga a la posición que retorna la función hash. pos Elemento 0 1 OCUPADO 2 OCUPADO 4 . OCUPADO m-2 m-1 FUNCION_HASH (Elemento) Elemento EXP_LINEAL( pos) ¿Está ocupado? SI
  • 25. EXPLORACIÓN LINEAL • Forma mas simple y primitiva de resolver una colisión entre claves. • La forma de resolver la colisión consiste en buscar la primera posición disponible que siga a la posición que retorna la función hash. pos Elemento 0 1 OCUPADO 2 OCUPADO 4 . OCUPADO m-2 m-1 FUNCION_HASH (Elemento) EXP_LINEAL( pos) ¿Está ocupado? NO Elemento Elemento
  • 27. EXPLORACIÓN CUADRÁTICA FUNCION_HASH (clave) EXP_CUADRATICA( POS) ¿Está ocupado? SI ELEMENTO POS ELEMENTOS 0 OCUPADO 1 OCUPADO 2 3 OCUPADO 4 OCUPADO 5 6 OCUPADO 7 8 9 10 OCUPADO p clave
  • 28. EXPLORACIÓN CUADRÁTICA FUNCION_HASH (clave) EXP_CUADRATICA( POS) ¿Está ocupado? SI ELEMENTO POS ELEMENTOS 0 OCUPADO 1 OCUPADO 2 3 OCUPADO 4 OCUPADO 5 6 OCUPADO 7 8 9 10 OCUPADO clave p+1 p
  • 29. EXPLORACIÓN CUADRÁTICA FUNCION_HASH (clave) EXP_CUADRATICA( POS) ¿Está ocupado? SI ELEMENTO POS ELEMENTOS 0 OCUPADO 1 OCUPADO 2 3 OCUPADO 4 OCUPADO 5 6 OCUPADO 7 8 9 10 OCUPADO p+4 clave p+1 p
  • 30. EXPLORACIÓN CUADRÁTICA FUNCION_HASH (clave) EXP_CUADRATICA( POS) ¿Está ocupado? NO ELEMENTO POS ELEMENTOS 0 OCUPADO 1 OCUPADO 2 3 OCUPADO 4 OCUPADO 5 6 OCUPADO 7 8 9 10 OCUPADO p+9 clave ELEMENTO Recorrido p + i^2 i = 0, 1, 2, … p+4 p+1 p
  • 32. DIRECCIONAMIENTO ENLAZADO. • Se basa en utilizar listas enlazadas, de tal forma que en cada lista se colocan los elementos que tienen la misma dirección hash. • Todos los elementos que colisionan: h(x1) = h(x2) = h(x3) … van a estar ubicados en la misma lista enlazada. pos Elemento * 0 1 2 4 . 11 12 FUNCION_HASH (clave) Elemento 1 clave Elemento 2
  • 33. DIRECCIONAMIENTO ENLAZADO. • Se basa en utilizar listas enlazadas, de tal forma que en cada lista se colocan los elementos que tienen la misma dirección hash. • Todos los elementos que colisionan: h(x1) = h(x2) = h(x3) … van a estar ubicados en la misma lista enlazada. pos Elemento * 0 1 2 4 . 11 12 FUNCION_HASH (clave) Elemento 1 clave clave null Elemento 2 Elemento 1
  • 34. DIRECCIONAMIENTO ENLAZADO. • Se basa en utilizar listas enlazadas, de tal forma que en cada lista se colocan los elementos que tienen la misma dirección hash. • Todos los elementos que colisionan: h(x1) = h(x2) = h(x3) … van a estar ubicados en la misma lista enlazada. pos Elemento * 0 1 2 4 . 11 12 FUNCION_HASH (clave) Elemento 1 clave Elemento 2 nullnull Elemento 2
  • 35. TABLAS DE DISPERSIÓN ENLAZADAS EN JAVA
  • 36. OPERACIONES DE TABLAS DE DISPERSIÓN ENLAZADAS INSERTAR
  • 37. OPERACIONES DE TABLAS DE DISPERSIÓN ENLAZADAS INSERTAR
  • 38. OPERACIONES DE TABLAS DE DISPERSIÓN ENLAZADAS BUSCAR
  • 39. OPERACIONES DE TABLAS DE DISPERSIÓN ENLAZADAS BUSCAR
  • 40. OPERACIONES DE TABLAS DE DISPERSIÓN ENLAZADAS ELIMINAR
  • 41. OPERACIONES DE TABLAS DE DISPERSIÓN ENLAZADAS ELIMINAR
  • 50. CONCLUSIÓN. • tamTabla = numero_primo mayor, aunque cercano al numero de elementos que se tiene previsto almacenar en la tabla. • Para resolver una colisión, lo mejor seria que se utilizara el direccionamiento enlazado, y de este modo el tamaño de la tabla sería irrelevante puesto que la estructura podrá almacenar los elementos de forma dinámica.
  • 51. REFERENCIA. • Joyanes Aguilar, L., & Zohonero Martínez, I. (2008). Estructura de datos en Java. McGraw-Hill España.

Notas del editor

  • #11: Normalment la clave asociada con un elementos es de tipo entero. Si no es entero hay que trnasformarlo en un valor entero Con el fin de que la función disperse lo mas uniformemente
  • #12: Se recomienda que el tamaño de la tabla sea los números primos mayores, aunque cercano al numero de elementos que se tiene previsto almacenar en la tabla.
  • #13: Pudiendo ocurrir que no pueda ser almacenado en memoria De igual longitud que el tamanio de la tabla sin superar el numero de cifras significativas del tamaño de la tabla.
  • #15: La función eleva al cuadrado la clave y del resultado, se toman los dígitos de la mitad hacia la izquierda, sin superar el numero de cifras significativas del tamaño de la tabla.
  • #17: Antes de esto el algoritmo utiliza una constante real A entre 0 -1 Primero multiplica la clave por una constante real (A) entre 0 y 1 En segundo lugar, determina la parte decimal, d, del numero obtenido en la multiplicación del valor real por la clave. Por ultimo, multiplica el tamaño de la tabla, m, por LA PARTE DECIMAL DEL PRIMER PASO, y al truncarse el resultado se obtiene un numero entero en el rango DEL TAMANO DE LA TABLA. EN ESTA PARTE ESTA EL CODE IMPLEMENTADO EN JAVA, Y AUNQ este método funciona para cualquier valor de A, se ha encontrado que funciona mejor con el valor 0.618 Y MAS DESCIMALES0339887...
  • #18: LO UNICO Q CAMVIA EN EL CODE EL LA LLAMADA DEL METODO Y LOS VALORES DE RETORNO. COMO PODEMOS VER TODOS LOS METODOS GENERARON VALORES DISTINTOS PARA LAS MISMAS CLAVES.
  • #19: 1 RECIVE COMO PARAMETRO EL ELEMENTO Y LA POSICION Y LUEGO ASIGNA EL ELEMENTO EN L
  • #20: Es posible que según la función hash elegida, que dos claves diferentes, c1 y c2, den la misma dirección, h1(c1) = h2(c2). Se produce el fenómeno de colisión. Se debe usar un método para resolver la colisión. Por tanto el estudio de direccionamiento hash implica: la elección de la función hash y LA resolución de colisiones.
  • #21: COMO AVIA DICHO La función de dispersión elegida h(x) puede generar la misma posición al aplicarla a las claves de dos o mas registros diferentes. Si esto ocurre se produce una colisión. Lo ideal seria que h(x) genere direcciones distintas para dos claves distintas. (no siempre es así).
  • #24: 1 al aplicar una función de dispersión. Suponiendo que un elemento tiene una clave x, y la dirección que devuelve h(x) = p. y que esta posición ya este ocupada El recorrido de las posiciones seria: La tabla se ha de considerar circular, de tal forma que al llegar a la ultima posición, la siguiente es la posición 0. Y FINALIZARA CUANDO ENCUENTRE UN UGAR VACIO
  • #25: 1 al aplicar una función de dispersión. Suponiendo que un elemento tiene una clave x, y la dirección que devuelve h(x) = p. y que esta posición ya este ocupada El recorrido de las posiciones seria: La tabla se ha de considerar circular, de tal forma que al llegar a la ultima posición, la siguiente es la posición 0.
  • #26: 1 al aplicar una función de dispersión. Suponiendo que un elemento tiene una clave x, y la dirección que devuelve h(x) = p. y que esta posición ya este ocupada El recorrido de las posiciones seria: La tabla se ha de considerar circular, de tal forma que al llegar a la ultima posición, la siguiente es la posición 0.
  • #28: Suponiendo que un elemento tiene una clave x, y la dirección que devuelve h(x) = p. y que esta posición ya este ocupada Este método busca en las direcciones p, p+1, p+4, p+9, . . . p+i^2 para valores de i = 1, 2, 3 …
  • #29: Suponiendo que un elemento tiene una clave x, y la dirección que devuelve h(x) = p. y que esta posición ya este ocupada Este método busca en las direcciones p, p+1, p+4, p+9, . . . p+i^2 para valores de i = 1, 2, 3 …
  • #30: Suponiendo que un elemento tiene una clave x, y la dirección que devuelve h(x) = p. y que esta posición ya este ocupada Este método busca en las direcciones p, p+1, p+4, p+9, . . . p+i^2 para valores de i = 1, 2, 3 …
  • #31: ESTE METODO ES MUY SIMILAR AL ANTERIOR, LO UNICO QUE CAMBIA COMO VEMOSS EN LA ANIMACION, ES EL RECORRIDO DE LA TALBA; Y DE IGUAL MANERA TERMINARA LA EXPLORACION CUNADO ENCUENTRE UN LUGAR VACIO. POR LO TANTO EL RECORRIDO ESTARIA DADO POR LA SIGUITE FORMULA, DONDE P SERIA LA POSICION DE RETORNO DE LA FUNCION HASH Y EL INDICE I SERIA LOS VALORES ENTEROS DENTRO DEL RANFGO DEL TAMANIO DE LA TABLA.
  • #36: Cuando se desea implementar el direccionamiento enalzado para solu ionar las coliciones, La estructura de la tabla se debe implementear de la siguiente forma. Lo único que cambia respecto a una tabla normal es que en cada posición de la tabla se encuentra un enlaze hacia el siguiente elemnto que colicione.
  • #37: las operaciones de Insertar, Buscar, y Eliminar se lo realizaría sobre listas enlazadas.
  • #38: las operaciones de Insertar, Buscar, y Eliminar se lo realizaría sobre listas enlazadas.
  • #39: Ademas las operaciones de Insertar, Buscar, y Eliminar variarían un poco a las normales puesto que ahora se lo realizaría sobre listas enlazadas.
  • #40: las operaciones de Insertar, Buscar, y Eliminar se lo realizaría sobre listas enlazadas.
  • #41: las operaciones de Insertar, Buscar, y Eliminar se lo realizaría sobre listas enlazadas.
  • #42: las operaciones de Insertar, Buscar, y Eliminar se lo realizaría sobre listas enlazadas.
  • #51: YA QUE EN METODOS COMO LA ARITMETICA MODULAR AYUDARIA A REDUCIR EL NUMERO DE COLICIONES. ADEMAS PARA RESOLV