Diccionarios y Mapeos Estructuras de Datos 2017.

Slides:



Advertisements
Presentaciones similares
Capitulo 3 Java util.
Advertisements

Abstracción de Datos La abstracción es un recurso fundamental en la programación orientada a objetos y está además fuertemente ligado a reusabilidad.
Marzo 2007 Lenguajes Visuales Clase III.
M.I.A Daniel Alejandro García López.  Primer componente: Arreglo de cubetas.- Es una arreglo A de tamaño N, en el que se puede considerar que cada celda.
Tablas hash Juan Ramón Pérez Pérez Prácticas EDI - © Juan Ramón Pérez.
Técnicas avanzadas de programación Interfaces
Colecciones.
ÁRBOLES BINARIOS DE BÚSQUEDA
7.  El TDA Diccionario.
ESTRUCTURA DE DATOS EN JAVA
Tablas de Hash.
(Organización y Manejo de Archivos)
Agustín J. González ELO320: Estructura de Datos y Algoritmos
1 Tablas HASH Agustín J. González ELO320: Estructura de Datos y Algoritmos.
1. 2 Problema Telemóviles, una gran companía de telefonía, requiere mejorar la capacidad de identificación del usuario que llama: –dado un número de usuario,
El lenguaje de programación Java1 8. Colecciones e iteradores - interfaz Collection - clases ArrayList, LinkedList, HashSet, TreeSet - interfaz Map - clases.

PUNTEROS. Los punteros son de amplia utilización en programación y muchos lenguajes permiten la manipulación directa o indirecta de los mismos. Su razón.
SQL Lenguaje Estructurado de Consultas. Structured Query Lenguaje (SQL). Lenguaje de acceso a bases de datos. Proyecto de Investigación de IBM. La mayoria.
1 ListaUna Lista se define como una serie de N elementos E 1, E 2,..., E N, ordenados de manera consecutiva, es decir, el elemento E k (que se denomina.
GENERICIDAD Es una propiedad que permite definir una clase o función sin especificar el tipo de datos de uno o mas de sus parámetros (Módulos Parametrizados).
Paginamiento / Paging Sistemas Operativos 16 de Septiembre de 2011.
Estructura de Datos Luis Humeau Waldi Saturno
INSTITUTO TECNOLÓGICO SUPERIOR DE FELIPE CARRILLO PUERTO. MATERIA: Estructura De Datos TIPO: Presentación (Unidad 3 Estructura lineales ) DOCENTE: MTL.
Programación lógica funcional Árboles Binarios.  El siguiente trabajo trata sobre la estructura de datos no lineales llamada árbol. Esta estructura se.
Oscar Bedoya. Edificio 331, 2º piso, E.I.S.C. Estructuras de datos y algoritmos.
Programación Avanzada
SQL: Structured Query Language
Árboles binarios. Algoritmos básicos
Programación Avanzada
ArrayList Collecciones
Colecciones Carlos Fontela, 2008.
Manejo de Punteros y objetos en memoria dinámica en C++
INTRODUCCIÓN A LA PROGRAMACIÓN ORIENTADA A OBJETOS
IPOO 2 cuatrimestre 2017 Departamento de Ciencias e Ingeniería
IPOO 2 cuatrimestre 2017 Departamento de Ciencias e Ingeniería
Vectors (Vectores)‏ e Iteradores
Unidad 7: Nivel Interno Algunos Conceptos Importantes
Listas Dinámicas.
Programación I MC Beatriz Beltrán Martínez
LÓGICA DE PROGRAMACIÓN
IPOO 2 cuatrimestre 2016 Departamento de Ciencias e Ingeniería
IPOO 2 cuatrimestre 2017 Departamento de Ciencias e Ingeniería
Vectors (Vectores)‏ e Iteradores
Árboles Binario de Búsqueda
ÁRBOLES El árbol es una estructura de datos muy importante en informática y en ciencias de la computación. Los árboles son estructuras no lineales,
CONJUNTOS ESTRUCTURAS DE DATOS.
PILAS Una pila es una estructura de datos o lista de elementos, a la cual se le puede insertar o eliminar su contenido sólo por uno de sus extremos, llamado.
Árboles clase 6 Apoyo de Práctica. Resumen ●Árboles ○Concepto ○Características ○Dinámica ○Recorridos o barridos. ●Ejercicio Sugerido.
1 Tablas HASH Agustín J. González ELO320: Estructura de Datos y Algoritmos 1er. Sem
Estructuras de Datos MC Beatriz Beltrán Martínez Primavera 2018
ELO320: Estructura de Datos y Algoritmos
Árboles Binarios de Búsqueda (ABB)
Conferencia 2 TDA Lista lineal.
Estructuras de Datos Dinámicas
IPOO 2 cuatrimestre 2018 Departamento de Ciencias e Ingeniería
EL TDA COLA Estructuras de Datos.
Tema 8 Arreglos Parte 4.
Estructuras de Datos Aun en problemas muy simples surge la necesidad de agrupar valores elementales de alguna manera. Cuando representamos una caja de.
Clases Asociadas y encapsulamiento
Vectors (Vectores)‏ Agustín J. González ELO329.
Árboles Binarios Estructuras de Datos.
Manejo de Punteros y objetos en memoria dinámica en C++
Clase25: Listas Enlazadas
IPOO 2 cuatrimestre 2018 Departamento de Ciencias e Ingeniería
Departamento de Ingeniería de Sistemas e Industrial
Informacion estadistica Para cada tabla ●Cardinalidad (n° de filas) ●Factor de bloques (n° de filas que caben en un bloque) ●N° de bloques ocupados ●Método.
ALGORITMO Y ESTRUCTURA DE DATOS II UNIDAD 3 ORDENAMIENTO Y BUSQUEDA MARCOS RODRIGUEZ /4/2019ALGORITMO Y ESTRUCTURA DE DATOS II 1 Prof.
1 Tablas HASH Agustín J. González ELO320: Estructura de Datos y Algoritmos.
TALLER DE CERTIFICACIÓN INTERNACIONAL
Transcripción de la presentación:

Diccionarios y Mapeos Estructuras de Datos 2017

Mapeos Mapeo K es una clave V es el valor del elemento cuya clave es k Es un conjunto de pares (k,v) K es una clave V es el valor del elemento cuya clave es k Cada uno de los pares se define como una entrada en el Mapeo e = (k,v)

Operaciones Básicas: Mapeo Tamaño() Es Vacío() Recuperar(k) Insertar(k,v) Tamaño(): Retorna la cardinalidad del conjunto, la cantidad de entradas en el Mapeo. EsVacio(): Testea si el Mapeo está vacío y devuelve el valor booleano correspondiente. Recuperar(k): Si existe una entrada en el Mapeo con clave k (k,v) entonces retorna el valor de la entrada (v), sino retorna en valor nulo. Insertar(k,v): Si un mapeo no tiene una entrada con clave k, entonces inserta la entrada (k,v) y retorna Nulo, sino reemplaza el elemento existente con la misma clave y retorna el elemento viejo.

Operaciones Básicas Tamaño() Es Vacío() Recuperar(k) Insertar(k,v) Eliminar(k) Claves(k) Valores() Entradas() Eliminar(k): Elimina del mapeo la entrada con clave igual a k y devuelve su valor. Si la entrada no existe, entonces devuelve nulo. Claves(): Retorna una colección iterable conteniendo todas las claves de las entradas del mapeo. Valores(): Retorna una colección iterable conteniendo los valores asociados a todas las claves presentes en el mapeo. Entradas(): Retorna una colección iterable conteniendo todas las entradas e=(k,v) presentes en el mapeo.

Antes de declarar la interface del TDA MAPEO recordamos… public interface Entry <K,V> //Devuelve la clave almacenada en la entrada public K getKey() //Devuelve el valor almacenado en la entrada public V getValue()

Antes de declarar la interface del TDA MAPEO recordamos… public interface Iterator <E> // Testea si quedan elementos por visitar. Boolear hasNext() //Retorna el prox. Elemento a visitar en la secuencia E Next() public interface Iterable <E> // Devuelve un iterador de los elementos en la colección Iterator<e> iterator()

INTERFACE MAPEO public Interface Mapeo <K,V> public int Size()   public int Size() public boolean isEmpty(); public V get(K key) throws InvalidKeyException public V put(K key,V value) throws InvalidKeyException public V remove(K key) throws InvalidKeyException public Iterable<K> keys() public Iterable<V> values() public Iterable<Entry<K,V>> entries() INTERFACE MAPEO

Implementación del TDAMapeo Listas Enlazadas ( Ordenadas, no Ordenadas) Tablas Hash Árbol Binario de Búsqueda. etc.

Diccionario Diccionario K es una clave Es un conjunto de pares (k,v) K es una clave V es el valor del elemento cuya clave es k Puede haber diferentes entradas con la misma clave Cada uno de los pares se define como una entrada en el Diccionario e = (k,v)

Diccionario Diccionario K es una clave Es un conjunto de pares (k,v) K es una clave V es el valor del elemento cuya clave es k Puede haber diferentes entradas con la misma clave Cada uno de los pares se define como una entrada en el Diccionario e = (k,v)

TDA Diccionario Modelo: relación: Claves → Elemento Operaciones: tamaño() esVacío() encontrar(k) encontrarTodas(k) insertar(k,v) eliminar(e) entradas(k,v)

INTERFACE DICCIONARIO public Interface Diccionario <K,V>   public int size() public boolean isEmpty() public V find(K key) throws InvalidKeyException public Iterable<Entry<K,V>> findAll(K key) throws InvalidKeyException public Entry<K,V> insert(K key, V value) throws InvalidKeyException; public Entry<K,V> remove(Entry<K,V> e) throws InvalidEntryException; public Iterable<Entry<K,V>> entries(); INTERFACE DICCIONARIO

Implementación de TDADiccionario Listas Enlazadas (Ordenadas, No Ordenadas) Tablas Hash Árbol Binario de Búsqueda.

Hash ¿Qué significa hashing? Desmenuzar – picar Idea: Particionar el conjunto a representar en k clases Acceder a cada una de las clases en un tiempo constante ¿Cuál es el objetivo? Tener acceso para las consultas y las actualizaciones en “buen tiempo”

Hash Entonces la idea: Particionar el conjunto a representar en k Clases. Acceder a cada una de las clases en un tiempo constante. Lograr clases de baja cardinalidad Transformar el conjunto de llaves x pertenecientes a un conjunto U en un conjunto de llaves x´ pertenecientes a un conjunto escalar reducido U´

TABLA HASH Una tabla Hash consiste en dos componentes principales: Un Arreglo de Contenedores Una Función Hash Hash Code Función de Compresión Método de la División MAD etc…

TABLA HASH - Colisiones Si dos o más claves tienen el mismo valor hash, entonces serán mapeadas al mismo contenedor en A. En estos casos decimos que ha ocurrido una colisión Existen diversas alternativas para tratar colisiones, intentaremos evitarlas desde el primer momento implementando una función HASH que minimice las colisiones.

TABLA HASH - Colisiones Esquemas de manejos de Colisiones: Hash Abierto: Mantener por cada componente del arreglo una lista de entradas. Las colisiones determinan un elemento más en cada lista. Hash Cerrado: Almacenar directamente los elementos en cada contenedor. Esta estrategia lleva a un manejo de colisiones más complejo.

Ejemplo Manejo de Colisiones Hash Cerrado Arreglo de 10 componentes (N=10) Entradas=<n°libreta, Nota> H(x)= x mod N Resolución lineal de colisiones I M 1 2 3 4 5 6 7 8 9 Insertar: <66554, 6> <34523, 8> <34230, 3> <45434, 9> <53420,10> <61148, 7>

Ejemplo Manejo de Colisiones Hash Cerrado Arreglo de 10 componentes (N=10) Entradas=<n°libreta, Nota> H(x)= x mod N Resolución lineal de colisiones I M 1 2 3 4 5 6 7 8 9 Insertar: <66554, 6> <34523, 8> <34230, 3> <45434, 9> <53420,10> <61148, 7> H(66554)= 66554 mod 10 H(66554)= 4

Ejemplo Manejo de Colisiones Hash Cerrado Arreglo de 10 componentes (N=10) Entradas=<n°libreta, Nota> H(x)= x mod N Resolución lineal de colisiones I M 1 2 3 4 5 6 7 8 9 Insertar: <66554, 6> <34523, 8> <34230, 3> <45434, 9> <53420,10> <61148, 7> H(66554)= 66554 mod 10 H(66554)= 4

Ejemplo Manejo de Colisiones Hash Cerrado Arreglo de 10 componentes (N=10) Entradas=<n°libreta, Nota> H(x)= x mod N Resolución lineal de colisiones I M 1 2 3 4 5 6 7 8 9 Insertar: <66554, 6> <34523, 8> <34230, 3> <45434, 9> <53420,10> <61148, 7> <66554,6> H(66554)= 66554 mod 10 H(66554)= 4

Ejemplo Manejo de Colisiones Hash Cerrado Arreglo de 10 componentes (N=10) Entradas=<n°libreta, Nota> H(x)= x mod N Resolución lineal de colisiones I M 1 2 3 4 5 6 7 8 9 Insertar: <66554, 6> <34523, 8> <34230, 3> <45434, 9> <53420,10> <61148, 7> <66554,6>

Ejemplo Manejo de Colisiones Hash Cerrado Arreglo de 10 componentes (N=10) Entradas=<n°libreta, Nota> H(x)= x mod N Resolución lineal de colisiones I M 1 2 3 4 5 6 7 8 9 Insertar: <66554, 6> <34523, 8> <34230, 3> <45434, 9> <53420,10> <61148, 7> <66554,6> H(34523)= 34523 mod 10 H(34523)= 3

Ejemplo Manejo de Colisiones Hash Cerrado Arreglo de 10 componentes (N=10) Entradas=<n°libreta, Nota> H(x)= x mod N Resolución lineal de colisiones I M 1 2 3 4 5 6 7 8 9 Insertar: <66554, 6> <34523, 8> <34230, 3> <45434, 9> <53420,10> <61148, 7> <66554,6> H(34523)= 34523 mod 10 H(34523)= 3

Ejemplo Manejo de Colisiones Hash Cerrado Arreglo de 10 componentes (N=10) Entradas=<n°libreta, Nota> H(x)= x mod N Resolución lineal de colisiones I M 1 2 3 4 5 6 7 8 9 Insertar: <66554, 6> <34523, 8> <34230, 3> <45434, 9> <53420,10> <61148, 7> <34523,8> <66554,6> H(34523)= 34523 mod 10 H(34523)= 3

Ejemplo Manejo de Colisiones Hash Cerrado Arreglo de 10 componentes (N=10) Entradas=<n°libreta, Nota> H(x)= x mod N Resolución lineal de colisiones I M 1 2 3 4 5 6 7 8 9 Insertar: <66554, 6> <34523, 8> <34230, 3> <45434, 9> <53420,10> <61148, 7> <34523,8> <66554,6>

Ejemplo Manejo de Colisiones Hash Cerrado Arreglo de 10 componentes (N=10) Entradas=<n°libreta, Nota> H(x)= x mod N Resolución lineal de colisiones I M 1 2 3 4 5 6 7 8 9 Insertar: <66554, 6> <34523, 8> <34230, 3> <45434, 9> <53420,10> <61148, 7> <34523,8> <66554,6> H(34230)= 34230 mod 10 H(34230)= 0

Ejemplo Manejo de Colisiones Hash Cerrado Arreglo de 10 componentes (N=10) Entradas=<n°libreta, Nota> H(x)= x mod N Resolución lineal de colisiones I M 1 2 3 4 5 6 7 8 9 Insertar: <66554, 6> <34523, 8> <34230, 3> <45434, 9> <53420,10> <61148, 7> <34523,8> <66554,6> H(34230)= 34230 mod 10 H(34230)= 0

Ejemplo Manejo de Colisiones Hash Cerrado Arreglo de 10 componentes (N=10) Entradas=<n°libreta, Nota> H(x)= x mod N Resolución lineal de colisiones I M 1 2 3 4 5 6 7 8 9 <34230,3> Insertar: <66554, 6> <34523, 8> <34230, 3> <45434, 9> <53420,10> <61148, 7> <34523,8> <66554,6> H(34230)= 34230 mod 10 H(34230)= 0

Ejemplo Manejo de Colisiones Hash Cerrado Arreglo de 10 componentes (N=10) Entradas=<n°libreta, Nota> H(x)= x mod N Resolución lineal de colisiones I M 1 2 3 4 5 6 7 8 9 <34230,3> Insertar: <66554, 6> <34523, 8> <34230, 3> <45434, 9> <53420,10> <61148, 7> <34523,8> <66554,6>

Ejemplo Manejo de Colisiones Hash Cerrado Arreglo de 10 componentes (N=10) Entradas=<n°libreta, Nota> H(x)= x mod N Resolución lineal de colisiones I M 1 2 3 4 5 6 7 8 9 <34230,3> Insertar: <66554, 6> <34523, 8> <34230, 3> <45434, 9> <53420,10> <61140, 7> <34523,8> <66554,6> H(45434)= 45434 mod 10 H(45434)= 4

Ejemplo Manejo de Colisiones Hash Cerrado Arreglo de 10 componentes (N=10) Entradas=<n°libreta, Nota> H(x)= x mod N Resolución lineal de colisiones I M 1 2 3 4 5 6 7 8 9 <34230,3> Insertar: <66554, 6> <34523, 8> <34230, 3> <45434, 9> <53420,10> <61140, 7> <34523,8> <66554,6> H(45434)= 45434 mod 10 H(45434)= 4

Ejemplo Manejo de Colisiones Hash Cerrado Arreglo de 10 componentes (N=10) Entradas=<n°libreta, Nota> H(x)= x mod N Resolución lineal de colisiones I M 1 2 3 4 5 6 7 8 9 <34230,3> Insertar: <66554, 6> <34523, 8> <34230, 3> <45434, 9> <53420,10> <61140, 7> <34523,8> <66554,6> Ocupado!!! H(45434)= 45434 mod 10 H(45434)= 4

Ejemplo Manejo de Colisiones Hash Cerrado Arreglo de 10 componentes (N=10) Entradas=<n°libreta, Nota> H(x)= x mod N Resolución lineal de colisiones I M 1 2 3 4 5 6 7 8 9 <34230,3> Insertar: <66554, 6> <34523, 8> <34230, 3> <45434, 9> <53420,10> <61148, 7> <34523,8> <66554,6> H(45434)= 45434 mod 10 H(45434)= 4

Ejemplo Manejo de Colisiones Hash Cerrado Arreglo de 10 componentes (N=10) Entradas=<n°libreta, Nota> H(x)= x mod N Resolución lineal de colisiones I M 1 2 3 4 5 6 7 8 9 <34230,3> Insertar: <66554, 6> <34523, 8> <34230, 3> <45434, 9> <53420,10> <61148, 7> <34523,8> <66554,6> <45434,9> H(45434)= 45434 mod 10 H(45434)= 4

Ejemplo Manejo de Colisiones Hash Cerrado Arreglo de 10 componentes (N=10) Entradas=<n°libreta, Nota> H(x)= x mod N Resolución lineal de colisiones I M 1 2 3 4 5 6 7 8 9 <34230,3> Insertar: <66554, 6> <34523, 8> <34230, 3> <45434, 9> <53420,10> <61148, 7> <34523,8> <66554,6> <45434,9>

Ejemplo Manejo de Colisiones Hash Cerrado Arreglo de 10 componentes (N=10) Entradas=<n°libreta, Nota> H(x)= x mod N Resolución lineal de colisiones I M 1 2 3 4 5 6 7 8 9 <34230,3> Insertar: <66554, 6> <34523, 8> <34230, 3> <45434, 9> <53420,10> <61148, 7> <34523,8> <66554,6> <45434,9> H(53420)= 53420 mod 10 H(53420)= 0

Ejemplo Manejo de Colisiones Hash Cerrado Arreglo de 10 componentes (N=10) Entradas=<n°libreta, Nota> H(x)= x mod N Resolución lineal de colisiones I M Ocupado!!! 1 2 3 4 5 6 7 8 9 <34230,3> Insertar: <66554, 6> <34523, 8> <34230, 3> <45434, 9> <53420,10> <61148, 7> <34523,8> <66554,6> <45434,9> H(53420)= 53420 mod 10 H(53420)= 0

Ejemplo Manejo de Colisiones Hash Cerrado Arreglo de 10 componentes (N=10) Entradas=<n°libreta, Nota> H(x)= x mod N Resolución lineal de colisiones I M 1 2 3 4 5 6 7 8 9 <34230,3> Insertar: <66554, 6> <34523, 8> <34230, 3> <45434, 9> <53420,10> <61148, 7> <34523,8> <66554,6> <45434,9> H(53420)= 53420 mod 10 H(53420)= 0

Ejemplo Manejo de Colisiones Hash Cerrado Arreglo de 10 componentes (N=10) Entradas=<n°libreta, Nota> H(x)= x mod N Resolución lineal de colisiones I M 1 2 3 4 5 6 7 8 9 <34230,3> Insertar: <66554, 6> <34523, 8> <34230, 3> <45434, 9> <53420,10> <61148, 7> <53420,10> <34523,8> <66554,6> <45434,9> H(53420)= 53420 mod 10 H(53420)= 0

Ejemplo Manejo de Colisiones Hash Cerrado Arreglo de 10 componentes (N=10) Entradas=<n°libreta, Nota> H(x)= x mod N Resolución lineal de colisiones I M 1 2 3 4 5 6 7 8 9 <34230,3> Insertar: <66554, 6> <34523, 8> <34230, 3> <45434, 9> <53420,10> <61148, 7> <53420,10> <34523,8> <66554,6> <45434,9>

Ejemplo Manejo de Colisiones Hash Cerrado Arreglo de 10 componentes (N=10) Entradas=<n°libreta, Nota> H(x)= x mod N Resolución lineal de colisiones I M 1 2 3 4 5 6 7 8 9 <34230,3> Insertar: <66554, 6> <34523, 8> <34230, 3> <45434, 9> <53420,10> <61148, 7> <53420,10> <34523,8> <66554,6> <45434,9> H(61148)= 61148 mod 10 H(61148)= 8

Ejemplo Manejo de Colisiones Hash Cerrado Arreglo de 10 componentes (N=10) Entradas=<n°libreta, Nota> H(x)= x mod N Resolución lineal de colisiones I M 1 2 3 4 5 6 7 8 9 <34230,3> Insertar: <66554, 6> <34523, 8> <34230, 3> <45434, 9> <53420,10> <61148, 7> <53420,10> <34523,8> <66554,6> <45434,9> H(61148)= 61148 mod 10 H(61148)= 8

Ejemplo Manejo de Colisiones Hash Cerrado Arreglo de 10 componentes (N=10) Entradas=<n°libreta, Nota> H(x)= x mod N Resolución lineal de colisiones I M 1 2 3 4 5 6 7 8 9 <34230,3> Insertar: <66554, 6> <34523, 8> <34230, 3> <45434, 9> <53420,10> <61148, 7> <53420,10> <34523,8> <66554,6> <45434,9> <61148,7>

Ejemplo Manejo de Colisiones Hash Cerrado Arreglo de 10 componentes (N=10) Entradas=<n°libreta, Nota> H(x)= x mod N Resolución lineal de colisiones I M 1 2 3 4 5 6 7 8 9 <34230,3> Insertar: <66554, 6> <34523, 8> <34230, 3> <45434, 9> <53420,10> <61148, 7> <53420,10> <34523,8> <66554,6> <45434,9> <61148,7>

Implementación TDAMapeo con HASH Cerrado public class MapHashCerrado<K,V> implements Mapeo<K,V> { protected Entry<K,V> DISPONIBLE= new Entrada<k,V>(null, null) protected Entry<K,V> [] contenedor; protected int size; protected int Capacidad; public MapHashCerrado( int cap) { Capacidad=cap; contenedor= (Entry<K,V> []) new Entry[Capacidad]; size=0; } protected int funcionHash (K clave) {…} //Operaciones de Mapeo Interface Map<K,V> class MapHashCerrado<K,V>

Tablas Hash: Manejo de Colisiones Dos Alternativas: Hash Cerrado Hash Abierto: Una alternativa simple y eficiente es mantener en cada componente una lista de entradas Las colisiones determinan más de un elemento en cada lista.

Hash Abierto

Ejemplo Función Hash Abierto Arreglo de 10 componentes (N=10) Entradas=<n°libreta, Nota> H(x)= x mod N I 1 2 3 4 5 6 7 8 9 <66554, 6> <34523, 8> <34230, 3> <45434, 9> <53420,10> <61148, 7>

Ejemplo Función Hash Abierto Arreglo de 10 componentes (N=10) Entradas=<n°libreta, Nota> H(x)= x mod N I 1 2 3 4 5 6 7 8 9 <66554, 6> H(66554)=4 <34523, 8> <34230, 3> <45434, 9> <53420,10> <61148, 7> <66554, 6>

Ejemplo Función Hash Abierto Arreglo de 10 componentes (N=10) Entradas=<n°libreta, Nota> H(x)= x mod N I 1 2 3 4 5 6 7 8 9 <66554, 6> H(66554)=4 <34523, 8> <34230, 3> <45434, 9> <53420,10> <61148, 7> H(34523)=3 <34523, 8> <66554, 6>

Ejemplo Función Hash Abierto Arreglo de 10 componentes (N=10) Entradas=<n°libreta, Nota> H(x)= x mod N I 1 2 3 4 5 6 7 8 9 <34230, 3> <66554, 6> H(66554)=4 <34523, 8> <34230, 3> <45434, 9> <53420,10> <61148, 7> H(34523)=3 <34523, 8> <66554, 6> H(34230)=0

Ejemplo Función Hash Abierto Arreglo de 10 componentes (N=10) Entradas=<n°libreta, Nota> H(x)= x mod N I 1 2 3 4 5 6 7 8 9 <34230, 3> <66554, 6> H(66554)=4 <34523, 8> <34230, 3> <45434, 9> <53420,10> <61148, 7> H(34523)=3 <34523, 8> <66554, 6> <45434, 9> H(34230)=0 H(45434)=4

Ejemplo Función Hash Abierto Arreglo de 10 componentes (N=10) Entradas=<n°libreta, Nota> H(x)= x mod N I 1 2 3 4 5 6 7 8 9 <34230, 3> <53420, 10> <66554, 6> H(66554)=4 <34523, 8> <34230, 3> <45434, 9> <53420,10> <61148, 7> H(34523)=3 <34523, 8> <66554, 6> <45434, 9> H(34230)=0 H(45434)=4 H(53420)=0

Ejemplo Función Hash Abierto Arreglo de 10 componentes (N=10) Entradas=<n°libreta, Nota> H(x)= x mod N I 1 2 3 4 5 6 7 8 9 <34230, 3> <53420, 10> <66554, 6> H(66554)=4 <34523, 8> <34230, 3> <45434, 9> <53420,10> <61148, 7> H(34523)=3 <34523, 8> <66554, 6> <45434, 9> H(34230)=0 H(45434)=4 H(53420)=0 <61148, 7> H(61148)=8

Implementación TDAMapeo con HASH Abierto public class MapeoHashAbierto<K,V> implements Map<K,V> { protected PositionList<Entrada<K,V>> [] map; protected int cant; // cantidad de entradas protected int tam; // tamaño del arreglo protected final float factor = 0.9F; public MapeoHashAbierto() { tam = 11; map = (PositionList<Entrada<K,V>> []) new ListaDoblementeEnlazada[tam]; for(int i = 0; i < tam; i++) { map[i] = new ListaDoblementeEnlazada<Entrada<K,V>>();} cant = 0; } protected int funcionHash (K clave) {…} //Operaciones de Mapeo Interface Map<K,V> class MapHashAbierto<K,V>

¿Preguntas?