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,

Slides:



Advertisements
Presentaciones similares
ÍNDICES.
Advertisements

IBD Clase 8.
2.1.1 Definición. Un arreglo puede definirse como un grupo o una colección finita, homogénea y ordenada de elementos. Los arreglos pueden ser de los siguientes.
Organizaciones Directas
Bases de la programación de un PLC
FIUBAODD - Curso Servetto1 Organizaciones Directas Costos de Recuperación Unidades de Organización Funciones de Dispersión Organizaciones Estáticas – Primitivas.
III - Gestión de memoria
Diferenciación e Integración Numérica
Método para resolver colisiones
En las redes de clase A Los primeros 8 bits de la dirección son usados para identificar la red Mientras los otros tres segmentos de 8 bits cada uno.
PROGRAMACION DE ESTRUCTURAS DE DATOS
Teoría de lenguajes y compiladores
Johanna Lizeth Rodríguez Lorena Fda. Chávarro Ramos
Arquitectura de Conjunto de Instrucciones (ISA)
ORGANIZACIÓN RELATIVA ACCESO DIRECTO
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.
Ordenación, Clasificación
Direcciones físicas y direcciones virtuales (lógicas)
Programación Lineal Entera Antonio H. Escobar Z Universidad Tecnológica de Pereira – Colombia Posgrado en Ingeniería – Maestría/Doctorado.
MENSAJES SMS.
Introducción a la Informática Clase 5
Nombre, Alcance y Asociaciones (Bindings). Agenda Definición Nombre y Bindings Binding Time Importancia del Binding Time Eventos relacionados a la Asociación.
TIPOS Y ESTRUCTURAS BÁSICAS DE DATOS
Conversiones entre Sistemas Numéricos
Análisis de Algoritmos
Variables y Shapes. Variables ► Lugares de la memoria que reciben un nombre ► En VB no es necesario declarar las variables  A=8 ► Se declaran con Dim.
ESTRUCTURA DE DATOS EN JAVA
Estructuras de Datos Arreglos.
COMPUTACION 2009 Clase 6 Clase 7.
Estructura de Datos II Equipo 4 Equipo 7 Acosta Montiel Miguel A.
Tablas de Hash.
Administración de Memoria Memoria Virtual
CÓDIGOS DE HUFFMAN. Códigos de Huffman Los códigos de Huffman, que representan caracteres por cadenas de bits de longitud variable, proporcionan alternativas.
Sistema de archivos Sistemas operativos.
Tema 10.3: Asignación de Espacio No Contiguo. Tema 10.3: 2 Silberschatz, Galvin and Gagne ©2005 Fundamentos de los Computadores (ITT, Sist. Electr.),
Sistemas de numeración
(Organización y Manejo de Archivos)
Asignación de Espacio No Contiguo
Divide y vencerás 1. Método general.
Programación Lineal Entera Antonio H. Escobar Z Universidad Tecnológica de Pereira – Colombia Posgrado en Ingeniería Maestría en Ingeniería Eléctrica.
Agustín J. González ELO320: Estructura de Datos y Algoritmos
1 Arboles AVL Introducción Arboles AVL (Adel’son-Vel’skii and Landis.
Programación en C para electrónicos
Análisis y Diseño de Algoritmos
Unidad 1: FUNDAMENTOS DE COMPUTACIÓN Y PSEUDOLENGUAJE
Elementos básicos del lenguaje
1 Tablas HASH Agustín J. González ELO320: Estructura de Datos y Algoritmos.
Tema 11: Programación dinámica
Parte I. Estructuras de Datos.
DISEÑO DE UNA ESTRUCTURA DE INDEXACION DE DATOS TOPOLOGICAMENTE CONTENIDO.
Indexación M. Andrea Rodríguez Tastets DIIC - Universidad de Concepción
Sistemas de Archivos Sistemas Operativos.  Se debe proporcionar un almacenamiento secundario que respalda a la memoria principal  El Sistema de archivos.
 Un lenguaje se puede definir como un conjunto de palabras y formas de expresión por medio de las cuales se comunican y relacionan miembros de una comunidad.
Visual Basic FUNCIONES Y PROCEDIMIENTOS
Teoría de lenguajes y compiladores
Presente un cuestionario con los aspectos mas importantes sobre los
Introducción a los TADs
Algoritmos y Desarrollo de Programas I

MIA - Grupo 5 Unidad 2.

Arquitectura de Computadores I
Sistema Binario
Marco de Trabajo para Indexación, Clasificación y Recopilación Automática de Documentos Digitales Javier Caicedo Espinoza Gonzalo Parra Chico.
Previo tablas hash Juan Ramón Pérez Pérez Prácticas EDI - © Juan Ramón Pérez1.
El microprocesador y su arquitectura
Gestión de Memoria – Parte 2
José Luis Vergara Soberanis..   Una tabla hash requiere mucho menos espacio de almacenamiento si el conjunto K es mucho menos pequeño que el universo.
Arrays, Cadenas y Vectores Tipos Genéricos Fundamentos de Programación Departamento de Lenguajes y Sistemas Informáticos Unidad Didáctica 5 Versión
1 Tablas HASH Agustín J. González ELO320: Estructura de Datos y Algoritmos 1er. Sem
Transcripción de la presentación:

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, devolver el nombre del que llama –los números de teléfonos están en el rango de 0 a R = –n es el número de los números de teléfonos usados –se desea realizar esto de la manera más eficiente Conocemos dos formas para diseñar este diccionario: -un árbol de búsqueda balanceado (AVL, red-black) con el número de teléfono como llave tiene un tiempo de consulta O(log n) y un espacio O(n). Buen uso del espacio y tiempo de búsqueda, pero se puede reducir el tiempo de búsqueda a constante? -un array indexado por los números de teléfonos tiene un tiempo de consulta óptimo de O(1), pero requiere una gran cantidad de espacio: O(n + R) Pedro

3 Otra Solución Una Tabla Hash es una solución alternativa con un tiempo de consulta esperado de O(1) y espacio O(n + N), donde N es el tamaño de la tabla. Como un array, pero con una función que proyecta el rango amplio de llaves en uno más pequeño -e.g., tomar la llave original, mod el tamaño de la tabla, y usarlo como indice Insertar telefono ( , Pedro) en la tabla de tamaño mod 5 = 4, pro tanto ( , Pedro) se almacena en el cajetin 4 de la tabla Después de varias inserciones pueden existir colisiones! Pedro

4 Resolución de Colisiones Usar encadenamiento -Configurar listas de elementos con el mismo índice Complejidad O(n/N)

5 De Llaves a Indices La proyección de llaves a índices de una tabla hash se llama funcion hash Una función hash usualmente es la composición de dos proyección, una hash code map y otra compression map. –Un requerimiento esencial de una función hash es proyectar llaves iguales al mismo índice –Una función hash “buena” minimiza la probabilidad de colisiones Java tiene un mértodo hashCode() para la clase Object, que normalmente retorna la dirección de 32-bit de memoria del objeto. Este código hash trabaja mal para objetos Integer y String

6 Proyección de códigos Hash Integer cast: para tipos numéricos de 32 bits or less, suma de Componentes: para tipos numéricos acumulación Polynomica: en cadenas, combinar los valores (ASCII or Unicode) a 0 a 1... a n-1 como coeficientes de un polinomio: a 0 + a 1 x x n-1 a n-1 -Se usa la regla de Horner para evaluar para un valor fijo de x: a 0 + x (a 1 +x (a x (a n-2 + x a n-1 )... )) -Si x = 33, 37, 39, o 41produce como mucho 6 colisiones para un vocabulario de 50,000 palabras

7 Proyección de Compression comunes Division: h(k) = |k| mod N –N = 2 k es mala –el tamaño de la tabla N se escoge como número primo Multiplicar, Sumar, y Dividir (MSD): h(k) = |ak + b| mod N

8 Tratamiento de Colisiones Encadenamiento Direccionamiento abierto -Doble Hashing -Prueba lineal