SlideShare a Scribd company logo
1 of 29
Download to read offline
Tablas Hash

 Apoyo SSD5
Introducción
Una tabla hash es una estructura de datos
que soporta la recuperación, eliminación e
inserción de elementos de forma muy
rápida.




                Mtl Lourdes Cahuich      2
Tabla hash
Una tabla hash que está apropiadamente
configurada para los elementos que
contiene, puede realizar estas
operaciones en un tiempo fijo, a diferencia
de otras estructuras de datos y algoritmos
que ya hemos examinado



                 Mtl Lourdes Cahuich      3
Tabla hash
Una tabla hash es un tipo de mapa y los
mapas son estructuras asociativas.
Conceptualmente, las estructuras de
datos asociativas almacenan datos en
pares de valor-clave.




                Mtl Lourdes Cahuich       4
Tabla hash
Esto significa que por cada valor
almacenado existe una clave
correspondiente usada para acceder el
valor.
Un ejemplo real de una estructura de
datos asociativa es un diccionario.
En un diccionario, los datos están
almacenados en pares de valor-clave.
                Mtl Lourdes Cahuich     5
Tabla hash
Las claves son las palabras, y los valores
son las definiciones.
Para acceder a una definición, debemos
usar la clave correspondiente




                 Mtl Lourdes Cahuich         6
Diferencia entre mapas y conjuntos
               hash
 Los mapas hash y los conjuntos hash son
 dos tipos diferentes de tablas hash.
 Los mapas hash son estructuras
 asociativas que almacenan pares de
 valores-clave, mientras que los conjuntos
 hash son estructuras que mantienen el
 registro de la pertenencia de elementos
 dentro de una colección

                 Mtl Lourdes Cahuich         7
Los conjuntos hash no asocian claves a
los valores, simplemente almacenan un
colección de claves.
Por ejemplo, una lista de palabras
comúnmente mal deletreadas, puede ser
almacenada usando un conjunto hash.



               Mtl Lourdes Cahuich       8
En este ejemplo, no hay un mapeo o
asignación de una clave a un valor como
en el ejemplo del diccionario.
Cada palabra sirve solamente como una
clave.
Por lo tanto, un conjunto hash es usado
para reportar si existe o no una palabra en
la lista.
                 Mtl Lourdes Cahuich      9
Funciones Hash
Las operaciones que usan tablas hash
son eficientes porque la posición de un
valor almacenado puede ser calculada
usando la clave.
Las tablas hash son implantadas por lo
general, como un arreglo de valores.



                 Mtl Lourdes Cahuich      10
Funciones hash
Una función hash es usada para asignar
una clave a un índice dentro de este
arreglo.
Este índice está donde está almacenado
el valor correspondiente a la clave.




                Mtl Lourdes Cahuich      11
Tablas hash
Otros algoritmos de búsqueda, como la
búsqueda lineal o binaria, no pueden
asignar una clave a la posición de su valor
tan rápidamente como las tablas hash.




                 Mtl Lourdes Cahuich      12
Usos tablas hash
Estos algoritmos deben desarrollar más
comparaciones para encontrar el índice
del valor almacenado.
El tiempo que toma esta búsqueda
aumenta conforme aumenta el número de
elementos almacenados.



               Mtl Lourdes Cahuich   13
Mtl Lourdes Cahuich   14
Función hash
En esta figura, la función hash genera un
índice basado en el dígito colocado en el
extremo derecho del valor ASCII de la
segunda letra del apellido de la persona.




                 Mtl Lourdes Cahuich        15
Función y tabla hash
Por ejemplo, en el nombre quot;Hanson, Bobquot;,
la segunda letra es una quot;aquot;.
El valor ASCII de quot;aquot; es 97.
El dígito colocado en el extremo derecho
de 97 es 7.
Por lo tanto, el registro para quot;Hanson,
Bobquot; es almacenado en el índice 7 de la
tabla hash.
                Mtl Lourdes Cahuich    16
Mtl Lourdes Cahuich   17
Función y tabla hash
La tabla hash en la figura anterior muestra
cada nombre en su posición asignada.
La ventaja de una tabla hash es que para
encontrar una entrada, uno sólo tiene que
aplicar la función hash a la clave




                 Mtl Lourdes Cahuich      18
Función y tabla hash
Un método popular usado para implantar
una función hash es el método de división.
Como todas las funciones hash, el método
de división asigna una clave a un índice
dentro de la tabla hash.




                Mtl Lourdes Cahuich      19
La implantación del método de división
involucra la conversión de una clave a una
variable de tipo unsigned int.
Luego, este valor es dividido entre el
tamaño de la tabla hash.




                Mtl Lourdes Cahuich      20
class hash_function {
public:
    unsigned int mm;
    hash_function(unsigned int m = 6151)
            : mm(m) {}
    unsigned int operator()(const string& s)
  const {
        unsigned int res = 0;
        for (int i = 0; i < s.size(); i++) {
            res = res * mm + s[i];
        }
        return res;
    }
};

                  Mtl Lourdes Cahuich      21
Desventajas tablas hash
Cuando consideramos que existen
muchas más claves que posiciones dentro
de una tabla hash, surge un problema.
Esto significa que una función hash puede
potencialmente asignar dos o más claves
distintas al mismo índice.



                Mtl Lourdes Cahuich     22
Colisiones en tablas hash
Las implantaciones de tablas hash son
complicadas por el hecho de que deben
manejar colisiones potenciales.
Estos mecanismos para manejar
colisiones se discuten a detalle en el
capítulo 20 del libro de texto de Weiss.
Básicamente, las colisiones decrementan
el desempeño de las operaciones de la
tabla hash
                Mtl Lourdes Cahuich        23
Colisiones en tablas hash
La mejor manera de reducir el número de
colisiones, y por ende, incrementar la
eficiencia de la tabla hash, es usar una
buena función hash.
Una buena función hash distribuye
equitativamente la asignación de claves a
través de las posiciones de la tabla hash.


                 Mtl Lourdes Cahuich         24
Memoizing: Una Aplicación de las
         Tablas Hash
Cuando es computacionalmente costoso
calcular el valor de una función y = f(x),
puede ser una buena idea almacenar el
valor para un uso futuro.




                 Mtl Lourdes Cahuich         25
Memorizing
En otras palabras, calculamos f(x) sólo la
primera vez que el valor de la función de
esta entrada particular x es requerida, y
luego almacenamos ( x, f(x) ) en una tabla
hash.
Cualquier solicitud futura para f(x)
resultará en una búsqueda en la tabla y
será mucho más rápido el recálculo.

                 Mtl Lourdes Cahuich     26
Memorizing
Esta técnica es llamada memoizing
Aquí se muestra la estructura de una
función memoized




                Mtl Lourdes Cahuich    27
int    f_memo(int x)              {
      if ( there is an            entry (x,y) in
    hash table ) {
          return y;
      }
      else {
          compute y =             f(x) directly
          store (x,y)              in table
          return y;
    }
}
                  Mtl Lourdes Cahuich              28
Memorizing
Debido a que la tabla hash tiene que
persistir entre las llamadas a la función,
sería natural organizarla como una clase
que sobrecarga el operador ().




                 Mtl Lourdes Cahuich         29

More Related Content

What's hot

Listas doblemente enlazadas C++ UP
Listas doblemente enlazadas C++ UPListas doblemente enlazadas C++ UP
Listas doblemente enlazadas C++ UPMiguelGomez371
 
Tipos de búsqueda en Inteligencia Artificial
Tipos de búsqueda en Inteligencia ArtificialTipos de búsqueda en Inteligencia Artificial
Tipos de búsqueda en Inteligencia ArtificialJuank Grifin
 
Organización lógica y física.
Organización lógica y física.Organización lógica y física.
Organización lógica y física.Lely
 
ESTRUCTURA DE DATOS Pilas y colas.pdf
ESTRUCTURA DE DATOS Pilas y colas.pdfESTRUCTURA DE DATOS Pilas y colas.pdf
ESTRUCTURA DE DATOS Pilas y colas.pdfKEVINDAVIDTOPONSALAZ
 
Teoria de automatas
Teoria de automatasTeoria de automatas
Teoria de automatasPedro Roman
 
Conceptos Unidad 1 Lenguajes Automatas Introducción a la Teoría de Lenguaje...
Conceptos Unidad 1 Lenguajes Automatas Introducción  a  la Teoría de Lenguaje...Conceptos Unidad 1 Lenguajes Automatas Introducción  a  la Teoría de Lenguaje...
Conceptos Unidad 1 Lenguajes Automatas Introducción a la Teoría de Lenguaje...Hugo Alberto Rivera Diaz
 
Metodos de-ordenamiento
Metodos de-ordenamientoMetodos de-ordenamiento
Metodos de-ordenamientodeff000001
 
Manejo de archivos en JAVA
Manejo de archivos en JAVAManejo de archivos en JAVA
Manejo de archivos en JAVAMichelle Torres
 
Alfabetos-Lenguajes y Automatas 1
Alfabetos-Lenguajes y Automatas 1Alfabetos-Lenguajes y Automatas 1
Alfabetos-Lenguajes y Automatas 1Osiris Mirerus
 
Arboles - estructura de datos
Arboles - estructura de datos Arboles - estructura de datos
Arboles - estructura de datos Kaneki04
 
Expresiones regulares
Expresiones regularesExpresiones regulares
Expresiones regularesJordan-P
 
U1 Analisis Algoritmos Complejidad
U1 Analisis Algoritmos ComplejidadU1 Analisis Algoritmos Complejidad
U1 Analisis Algoritmos Complejidadrezzaca
 

What's hot (20)

Listas doblemente enlazadas C++ UP
Listas doblemente enlazadas C++ UPListas doblemente enlazadas C++ UP
Listas doblemente enlazadas C++ UP
 
Tipos de búsqueda en Inteligencia Artificial
Tipos de búsqueda en Inteligencia ArtificialTipos de búsqueda en Inteligencia Artificial
Tipos de búsqueda en Inteligencia Artificial
 
Organización lógica y física.
Organización lógica y física.Organización lógica y física.
Organización lógica y física.
 
Programa de Cola Estática
Programa de Cola EstáticaPrograma de Cola Estática
Programa de Cola Estática
 
Estructuras de datos lineales
Estructuras de datos linealesEstructuras de datos lineales
Estructuras de datos lineales
 
ESTRUCTURA DE DATOS Pilas y colas.pdf
ESTRUCTURA DE DATOS Pilas y colas.pdfESTRUCTURA DE DATOS Pilas y colas.pdf
ESTRUCTURA DE DATOS Pilas y colas.pdf
 
Algoritmos de Ordenamiento externo
Algoritmos de Ordenamiento externoAlgoritmos de Ordenamiento externo
Algoritmos de Ordenamiento externo
 
Teoria de automatas
Teoria de automatasTeoria de automatas
Teoria de automatas
 
Conceptos Unidad 1 Lenguajes Automatas Introducción a la Teoría de Lenguaje...
Conceptos Unidad 1 Lenguajes Automatas Introducción  a  la Teoría de Lenguaje...Conceptos Unidad 1 Lenguajes Automatas Introducción  a  la Teoría de Lenguaje...
Conceptos Unidad 1 Lenguajes Automatas Introducción a la Teoría de Lenguaje...
 
Metodos de-ordenamiento
Metodos de-ordenamientoMetodos de-ordenamiento
Metodos de-ordenamiento
 
Tablas Hash
Tablas HashTablas Hash
Tablas Hash
 
COLAS
COLASCOLAS
COLAS
 
Manejo de archivos en JAVA
Manejo de archivos en JAVAManejo de archivos en JAVA
Manejo de archivos en JAVA
 
Alfabetos-Lenguajes y Automatas 1
Alfabetos-Lenguajes y Automatas 1Alfabetos-Lenguajes y Automatas 1
Alfabetos-Lenguajes y Automatas 1
 
Arboles - estructura de datos
Arboles - estructura de datos Arboles - estructura de datos
Arboles - estructura de datos
 
AnáLisis De Algoritmos1
AnáLisis De Algoritmos1AnáLisis De Algoritmos1
AnáLisis De Algoritmos1
 
Listas
ListasListas
Listas
 
Arboles Binarios
Arboles BinariosArboles Binarios
Arboles Binarios
 
Expresiones regulares
Expresiones regularesExpresiones regulares
Expresiones regulares
 
U1 Analisis Algoritmos Complejidad
U1 Analisis Algoritmos ComplejidadU1 Analisis Algoritmos Complejidad
U1 Analisis Algoritmos Complejidad
 

Similar to 15 Tablas Hash (20)

Tablas Hash
Tablas HashTablas Hash
Tablas Hash
 
Tablas Hash Fash Vmaa
Tablas Hash Fash VmaaTablas Hash Fash Vmaa
Tablas Hash Fash Vmaa
 
Hashtable
HashtableHashtable
Hashtable
 
EXPOSICION HASH
EXPOSICION HASHEXPOSICION HASH
EXPOSICION HASH
 
Hashing
HashingHashing
Hashing
 
Hashing
HashingHashing
Hashing
 
Hashing
HashingHashing
Hashing
 
COMPILADORES-Tabla de Simbolos
COMPILADORES-Tabla de SimbolosCOMPILADORES-Tabla de Simbolos
COMPILADORES-Tabla de Simbolos
 
hashing y colisiones
hashing y colisioneshashing y colisiones
hashing y colisiones
 
Hashing
HashingHashing
Hashing
 
Tema 2 Diccionarios. Tablas Hash.
Tema 2 Diccionarios. Tablas Hash.Tema 2 Diccionarios. Tablas Hash.
Tema 2 Diccionarios. Tablas Hash.
 
Tablas hash
Tablas hashTablas hash
Tablas hash
 
Ezequiel Barbón Fernández
Ezequiel Barbón FernándezEzequiel Barbón Fernández
Ezequiel Barbón Fernández
 
Funcion resumen
Funcion resumenFuncion resumen
Funcion resumen
 
Tabla Hash ( Andrea Bedia Suarez )
Tabla Hash ( Andrea Bedia Suarez )Tabla Hash ( Andrea Bedia Suarez )
Tabla Hash ( Andrea Bedia Suarez )
 
Edi Tablas Hash
Edi Tablas HashEdi Tablas Hash
Edi Tablas Hash
 
Hashing
HashingHashing
Hashing
 
Hashing
HashingHashing
Hashing
 
Tablas Hash (Pablo Fernández Díaz)
Tablas Hash (Pablo Fernández Díaz)Tablas Hash (Pablo Fernández Díaz)
Tablas Hash (Pablo Fernández Díaz)
 
Tablas hash (Alfredo García Moreno)
Tablas hash (Alfredo García Moreno)Tablas hash (Alfredo García Moreno)
Tablas hash (Alfredo García Moreno)
 

More from UVM

Tiempo compartido en programación
Tiempo compartido en programaciónTiempo compartido en programación
Tiempo compartido en programaciónUVM
 
Portafolio de evidencias del curso Programación Avanzada
Portafolio de evidencias del curso Programación AvanzadaPortafolio de evidencias del curso Programación Avanzada
Portafolio de evidencias del curso Programación AvanzadaUVM
 
Eficiencia en uso tiempo
Eficiencia en uso  tiempoEficiencia en uso  tiempo
Eficiencia en uso tiempoUVM
 
Administración de memoria arreglos dinamicos
Administración de memoria arreglos dinamicosAdministración de memoria arreglos dinamicos
Administración de memoria arreglos dinamicosUVM
 
Practica de arreglos
Practica de arreglosPractica de arreglos
Practica de arreglosUVM
 
Otra introducción a apuntadores
Otra introducción a apuntadoresOtra introducción a apuntadores
Otra introducción a apuntadoresUVM
 
Ejemplo de solución de práctica funciones stl
Ejemplo de solución de práctica funciones stlEjemplo de solución de práctica funciones stl
Ejemplo de solución de práctica funciones stlUVM
 
Breve repaso de apuntadores
Breve repaso de apuntadoresBreve repaso de apuntadores
Breve repaso de apuntadoresUVM
 
Arreglos conceptos básicos
Arreglos conceptos básicosArreglos conceptos básicos
Arreglos conceptos básicosUVM
 
Resolución práctica de tipos de datos
Resolución práctica de tipos de datosResolución práctica de tipos de datos
Resolución práctica de tipos de datosUVM
 
Resumen de funciones
Resumen de funcionesResumen de funciones
Resumen de funcionesUVM
 
Biblioteca estándar de funciones
Biblioteca estándar de funcionesBiblioteca estándar de funciones
Biblioteca estándar de funcionesUVM
 
Manejo de bits
Manejo de bitsManejo de bits
Manejo de bitsUVM
 
Aclaración de dudas 4 de septiembre
Aclaración de dudas 4 de septiembreAclaración de dudas 4 de septiembre
Aclaración de dudas 4 de septiembreUVM
 
Aclaraciones varias a códigos entregados en sesión 3
Aclaraciones varias a códigos entregados en sesión 3Aclaraciones varias a códigos entregados en sesión 3
Aclaraciones varias a códigos entregados en sesión 3UVM
 
Funciones definidas por el usuario
Funciones definidas por el usuarioFunciones definidas por el usuario
Funciones definidas por el usuarioUVM
 
Función main()
Función main()Función main()
Función main()UVM
 
Depuración de un programa en c++
Depuración de un programa en c++Depuración de un programa en c++
Depuración de un programa en c++UVM
 
Algunas dudas de la sesión 28 agosto
Algunas dudas de la sesión 28 agostoAlgunas dudas de la sesión 28 agosto
Algunas dudas de la sesión 28 agostoUVM
 
Estructura programa c++
Estructura programa c++Estructura programa c++
Estructura programa c++UVM
 

More from UVM (20)

Tiempo compartido en programación
Tiempo compartido en programaciónTiempo compartido en programación
Tiempo compartido en programación
 
Portafolio de evidencias del curso Programación Avanzada
Portafolio de evidencias del curso Programación AvanzadaPortafolio de evidencias del curso Programación Avanzada
Portafolio de evidencias del curso Programación Avanzada
 
Eficiencia en uso tiempo
Eficiencia en uso  tiempoEficiencia en uso  tiempo
Eficiencia en uso tiempo
 
Administración de memoria arreglos dinamicos
Administración de memoria arreglos dinamicosAdministración de memoria arreglos dinamicos
Administración de memoria arreglos dinamicos
 
Practica de arreglos
Practica de arreglosPractica de arreglos
Practica de arreglos
 
Otra introducción a apuntadores
Otra introducción a apuntadoresOtra introducción a apuntadores
Otra introducción a apuntadores
 
Ejemplo de solución de práctica funciones stl
Ejemplo de solución de práctica funciones stlEjemplo de solución de práctica funciones stl
Ejemplo de solución de práctica funciones stl
 
Breve repaso de apuntadores
Breve repaso de apuntadoresBreve repaso de apuntadores
Breve repaso de apuntadores
 
Arreglos conceptos básicos
Arreglos conceptos básicosArreglos conceptos básicos
Arreglos conceptos básicos
 
Resolución práctica de tipos de datos
Resolución práctica de tipos de datosResolución práctica de tipos de datos
Resolución práctica de tipos de datos
 
Resumen de funciones
Resumen de funcionesResumen de funciones
Resumen de funciones
 
Biblioteca estándar de funciones
Biblioteca estándar de funcionesBiblioteca estándar de funciones
Biblioteca estándar de funciones
 
Manejo de bits
Manejo de bitsManejo de bits
Manejo de bits
 
Aclaración de dudas 4 de septiembre
Aclaración de dudas 4 de septiembreAclaración de dudas 4 de septiembre
Aclaración de dudas 4 de septiembre
 
Aclaraciones varias a códigos entregados en sesión 3
Aclaraciones varias a códigos entregados en sesión 3Aclaraciones varias a códigos entregados en sesión 3
Aclaraciones varias a códigos entregados en sesión 3
 
Funciones definidas por el usuario
Funciones definidas por el usuarioFunciones definidas por el usuario
Funciones definidas por el usuario
 
Función main()
Función main()Función main()
Función main()
 
Depuración de un programa en c++
Depuración de un programa en c++Depuración de un programa en c++
Depuración de un programa en c++
 
Algunas dudas de la sesión 28 agosto
Algunas dudas de la sesión 28 agostoAlgunas dudas de la sesión 28 agosto
Algunas dudas de la sesión 28 agosto
 
Estructura programa c++
Estructura programa c++Estructura programa c++
Estructura programa c++
 

Recently uploaded

GonzalezGonzalez_Karina_M1S3AI6... .pptx
GonzalezGonzalez_Karina_M1S3AI6... .pptxGonzalezGonzalez_Karina_M1S3AI6... .pptx
GonzalezGonzalez_Karina_M1S3AI6... .pptx241523733
 
Actividad integradora 6 CREAR UN RECURSO MULTIMEDIA
Actividad integradora 6    CREAR UN RECURSO MULTIMEDIAActividad integradora 6    CREAR UN RECURSO MULTIMEDIA
Actividad integradora 6 CREAR UN RECURSO MULTIMEDIA241531640
 
La era de la educación digital y sus desafios
La era de la educación digital y sus desafiosLa era de la educación digital y sus desafios
La era de la educación digital y sus desafiosFundación YOD YOD
 
El uso de las TIC's en la vida cotidiana.
El uso de las TIC's en la vida cotidiana.El uso de las TIC's en la vida cotidiana.
El uso de las TIC's en la vida cotidiana.241514949
 
FloresMorales_Montserrath_M1S3AI6 (1).pptx
FloresMorales_Montserrath_M1S3AI6 (1).pptxFloresMorales_Montserrath_M1S3AI6 (1).pptx
FloresMorales_Montserrath_M1S3AI6 (1).pptx241522327
 
Medidas de formas, coeficiente de asimetría y coeficiente de curtosis.pptx
Medidas de formas, coeficiente de asimetría y coeficiente de curtosis.pptxMedidas de formas, coeficiente de asimetría y coeficiente de curtosis.pptx
Medidas de formas, coeficiente de asimetría y coeficiente de curtosis.pptxaylincamaho
 
Google-Meet-como-herramienta-para-realizar-reuniones-virtuales.pptx
Google-Meet-como-herramienta-para-realizar-reuniones-virtuales.pptxGoogle-Meet-como-herramienta-para-realizar-reuniones-virtuales.pptx
Google-Meet-como-herramienta-para-realizar-reuniones-virtuales.pptxAlexander López
 
Arenas Camacho-Practica tarea Sesión 12.pptx
Arenas Camacho-Practica tarea Sesión 12.pptxArenas Camacho-Practica tarea Sesión 12.pptx
Arenas Camacho-Practica tarea Sesión 12.pptxJOSEFERNANDOARENASCA
 
definicion segun autores de matemáticas educativa
definicion segun autores de matemáticas  educativadefinicion segun autores de matemáticas  educativa
definicion segun autores de matemáticas educativaAdrianaMartnez618894
 
Hernandez_Hernandez_Practica web de la sesion 11.pptx
Hernandez_Hernandez_Practica web de la sesion 11.pptxHernandez_Hernandez_Practica web de la sesion 11.pptx
Hernandez_Hernandez_Practica web de la sesion 11.pptxJOSEMANUELHERNANDEZH11
 
El uso de las tic en la vida ,lo importante que son
El uso de las tic en la vida ,lo importante  que sonEl uso de las tic en la vida ,lo importante  que son
El uso de las tic en la vida ,lo importante que son241514984
 
Presentación inteligencia artificial en la actualidad
Presentación inteligencia artificial en la actualidadPresentación inteligencia artificial en la actualidad
Presentación inteligencia artificial en la actualidadMiguelAngelVillanuev48
 
El uso delas tic en la vida cotidiana MFEL
El uso delas tic en la vida cotidiana MFELEl uso delas tic en la vida cotidiana MFEL
El uso delas tic en la vida cotidiana MFELmaryfer27m
 
tics en la vida cotidiana prepa en linea modulo 1.pptx
tics en la vida cotidiana prepa en linea modulo 1.pptxtics en la vida cotidiana prepa en linea modulo 1.pptx
tics en la vida cotidiana prepa en linea modulo 1.pptxazmysanros90
 
TEMA 2 PROTOCOLO DE EXTRACCION VEHICULAR.ppt
TEMA 2 PROTOCOLO DE EXTRACCION VEHICULAR.pptTEMA 2 PROTOCOLO DE EXTRACCION VEHICULAR.ppt
TEMA 2 PROTOCOLO DE EXTRACCION VEHICULAR.pptJavierHerrera662252
 
Plan Sarmiento - Netbook del GCBA 2019..
Plan Sarmiento - Netbook del GCBA 2019..Plan Sarmiento - Netbook del GCBA 2019..
Plan Sarmiento - Netbook del GCBA 2019..RobertoGumucio2
 
El_Blog_como_herramienta_de_publicacion_y_consulta_de_investigacion.pptx
El_Blog_como_herramienta_de_publicacion_y_consulta_de_investigacion.pptxEl_Blog_como_herramienta_de_publicacion_y_consulta_de_investigacion.pptx
El_Blog_como_herramienta_de_publicacion_y_consulta_de_investigacion.pptxAlexander López
 
R1600G CAT Variables de cargadores en mina
R1600G CAT Variables de cargadores en minaR1600G CAT Variables de cargadores en mina
R1600G CAT Variables de cargadores en minaarkananubis
 
Mapa-conceptual-del-Origen-del-Universo-3.pptx
Mapa-conceptual-del-Origen-del-Universo-3.pptxMapa-conceptual-del-Origen-del-Universo-3.pptx
Mapa-conceptual-del-Origen-del-Universo-3.pptxMidwarHenryLOZAFLORE
 
Crear un recurso multimedia. Maricela_Ponce_DomingoM1S3AI6-1.pptx
Crear un recurso multimedia. Maricela_Ponce_DomingoM1S3AI6-1.pptxCrear un recurso multimedia. Maricela_Ponce_DomingoM1S3AI6-1.pptx
Crear un recurso multimedia. Maricela_Ponce_DomingoM1S3AI6-1.pptxNombre Apellidos
 

Recently uploaded (20)

GonzalezGonzalez_Karina_M1S3AI6... .pptx
GonzalezGonzalez_Karina_M1S3AI6... .pptxGonzalezGonzalez_Karina_M1S3AI6... .pptx
GonzalezGonzalez_Karina_M1S3AI6... .pptx
 
Actividad integradora 6 CREAR UN RECURSO MULTIMEDIA
Actividad integradora 6    CREAR UN RECURSO MULTIMEDIAActividad integradora 6    CREAR UN RECURSO MULTIMEDIA
Actividad integradora 6 CREAR UN RECURSO MULTIMEDIA
 
La era de la educación digital y sus desafios
La era de la educación digital y sus desafiosLa era de la educación digital y sus desafios
La era de la educación digital y sus desafios
 
El uso de las TIC's en la vida cotidiana.
El uso de las TIC's en la vida cotidiana.El uso de las TIC's en la vida cotidiana.
El uso de las TIC's en la vida cotidiana.
 
FloresMorales_Montserrath_M1S3AI6 (1).pptx
FloresMorales_Montserrath_M1S3AI6 (1).pptxFloresMorales_Montserrath_M1S3AI6 (1).pptx
FloresMorales_Montserrath_M1S3AI6 (1).pptx
 
Medidas de formas, coeficiente de asimetría y coeficiente de curtosis.pptx
Medidas de formas, coeficiente de asimetría y coeficiente de curtosis.pptxMedidas de formas, coeficiente de asimetría y coeficiente de curtosis.pptx
Medidas de formas, coeficiente de asimetría y coeficiente de curtosis.pptx
 
Google-Meet-como-herramienta-para-realizar-reuniones-virtuales.pptx
Google-Meet-como-herramienta-para-realizar-reuniones-virtuales.pptxGoogle-Meet-como-herramienta-para-realizar-reuniones-virtuales.pptx
Google-Meet-como-herramienta-para-realizar-reuniones-virtuales.pptx
 
Arenas Camacho-Practica tarea Sesión 12.pptx
Arenas Camacho-Practica tarea Sesión 12.pptxArenas Camacho-Practica tarea Sesión 12.pptx
Arenas Camacho-Practica tarea Sesión 12.pptx
 
definicion segun autores de matemáticas educativa
definicion segun autores de matemáticas  educativadefinicion segun autores de matemáticas  educativa
definicion segun autores de matemáticas educativa
 
Hernandez_Hernandez_Practica web de la sesion 11.pptx
Hernandez_Hernandez_Practica web de la sesion 11.pptxHernandez_Hernandez_Practica web de la sesion 11.pptx
Hernandez_Hernandez_Practica web de la sesion 11.pptx
 
El uso de las tic en la vida ,lo importante que son
El uso de las tic en la vida ,lo importante  que sonEl uso de las tic en la vida ,lo importante  que son
El uso de las tic en la vida ,lo importante que son
 
Presentación inteligencia artificial en la actualidad
Presentación inteligencia artificial en la actualidadPresentación inteligencia artificial en la actualidad
Presentación inteligencia artificial en la actualidad
 
El uso delas tic en la vida cotidiana MFEL
El uso delas tic en la vida cotidiana MFELEl uso delas tic en la vida cotidiana MFEL
El uso delas tic en la vida cotidiana MFEL
 
tics en la vida cotidiana prepa en linea modulo 1.pptx
tics en la vida cotidiana prepa en linea modulo 1.pptxtics en la vida cotidiana prepa en linea modulo 1.pptx
tics en la vida cotidiana prepa en linea modulo 1.pptx
 
TEMA 2 PROTOCOLO DE EXTRACCION VEHICULAR.ppt
TEMA 2 PROTOCOLO DE EXTRACCION VEHICULAR.pptTEMA 2 PROTOCOLO DE EXTRACCION VEHICULAR.ppt
TEMA 2 PROTOCOLO DE EXTRACCION VEHICULAR.ppt
 
Plan Sarmiento - Netbook del GCBA 2019..
Plan Sarmiento - Netbook del GCBA 2019..Plan Sarmiento - Netbook del GCBA 2019..
Plan Sarmiento - Netbook del GCBA 2019..
 
El_Blog_como_herramienta_de_publicacion_y_consulta_de_investigacion.pptx
El_Blog_como_herramienta_de_publicacion_y_consulta_de_investigacion.pptxEl_Blog_como_herramienta_de_publicacion_y_consulta_de_investigacion.pptx
El_Blog_como_herramienta_de_publicacion_y_consulta_de_investigacion.pptx
 
R1600G CAT Variables de cargadores en mina
R1600G CAT Variables de cargadores en minaR1600G CAT Variables de cargadores en mina
R1600G CAT Variables de cargadores en mina
 
Mapa-conceptual-del-Origen-del-Universo-3.pptx
Mapa-conceptual-del-Origen-del-Universo-3.pptxMapa-conceptual-del-Origen-del-Universo-3.pptx
Mapa-conceptual-del-Origen-del-Universo-3.pptx
 
Crear un recurso multimedia. Maricela_Ponce_DomingoM1S3AI6-1.pptx
Crear un recurso multimedia. Maricela_Ponce_DomingoM1S3AI6-1.pptxCrear un recurso multimedia. Maricela_Ponce_DomingoM1S3AI6-1.pptx
Crear un recurso multimedia. Maricela_Ponce_DomingoM1S3AI6-1.pptx
 

15 Tablas Hash

  • 2. Introducción Una tabla hash es una estructura de datos que soporta la recuperación, eliminación e inserción de elementos de forma muy rápida. Mtl Lourdes Cahuich 2
  • 3. Tabla hash Una tabla hash que está apropiadamente configurada para los elementos que contiene, puede realizar estas operaciones en un tiempo fijo, a diferencia de otras estructuras de datos y algoritmos que ya hemos examinado Mtl Lourdes Cahuich 3
  • 4. Tabla hash Una tabla hash es un tipo de mapa y los mapas son estructuras asociativas. Conceptualmente, las estructuras de datos asociativas almacenan datos en pares de valor-clave. Mtl Lourdes Cahuich 4
  • 5. Tabla hash Esto significa que por cada valor almacenado existe una clave correspondiente usada para acceder el valor. Un ejemplo real de una estructura de datos asociativa es un diccionario. En un diccionario, los datos están almacenados en pares de valor-clave. Mtl Lourdes Cahuich 5
  • 6. Tabla hash Las claves son las palabras, y los valores son las definiciones. Para acceder a una definición, debemos usar la clave correspondiente Mtl Lourdes Cahuich 6
  • 7. Diferencia entre mapas y conjuntos hash Los mapas hash y los conjuntos hash son dos tipos diferentes de tablas hash. Los mapas hash son estructuras asociativas que almacenan pares de valores-clave, mientras que los conjuntos hash son estructuras que mantienen el registro de la pertenencia de elementos dentro de una colección Mtl Lourdes Cahuich 7
  • 8. Los conjuntos hash no asocian claves a los valores, simplemente almacenan un colección de claves. Por ejemplo, una lista de palabras comúnmente mal deletreadas, puede ser almacenada usando un conjunto hash. Mtl Lourdes Cahuich 8
  • 9. En este ejemplo, no hay un mapeo o asignación de una clave a un valor como en el ejemplo del diccionario. Cada palabra sirve solamente como una clave. Por lo tanto, un conjunto hash es usado para reportar si existe o no una palabra en la lista. Mtl Lourdes Cahuich 9
  • 10. Funciones Hash Las operaciones que usan tablas hash son eficientes porque la posición de un valor almacenado puede ser calculada usando la clave. Las tablas hash son implantadas por lo general, como un arreglo de valores. Mtl Lourdes Cahuich 10
  • 11. Funciones hash Una función hash es usada para asignar una clave a un índice dentro de este arreglo. Este índice está donde está almacenado el valor correspondiente a la clave. Mtl Lourdes Cahuich 11
  • 12. Tablas hash Otros algoritmos de búsqueda, como la búsqueda lineal o binaria, no pueden asignar una clave a la posición de su valor tan rápidamente como las tablas hash. Mtl Lourdes Cahuich 12
  • 13. Usos tablas hash Estos algoritmos deben desarrollar más comparaciones para encontrar el índice del valor almacenado. El tiempo que toma esta búsqueda aumenta conforme aumenta el número de elementos almacenados. Mtl Lourdes Cahuich 13
  • 15. Función hash En esta figura, la función hash genera un índice basado en el dígito colocado en el extremo derecho del valor ASCII de la segunda letra del apellido de la persona. Mtl Lourdes Cahuich 15
  • 16. Función y tabla hash Por ejemplo, en el nombre quot;Hanson, Bobquot;, la segunda letra es una quot;aquot;. El valor ASCII de quot;aquot; es 97. El dígito colocado en el extremo derecho de 97 es 7. Por lo tanto, el registro para quot;Hanson, Bobquot; es almacenado en el índice 7 de la tabla hash. Mtl Lourdes Cahuich 16
  • 18. Función y tabla hash La tabla hash en la figura anterior muestra cada nombre en su posición asignada. La ventaja de una tabla hash es que para encontrar una entrada, uno sólo tiene que aplicar la función hash a la clave Mtl Lourdes Cahuich 18
  • 19. Función y tabla hash Un método popular usado para implantar una función hash es el método de división. Como todas las funciones hash, el método de división asigna una clave a un índice dentro de la tabla hash. Mtl Lourdes Cahuich 19
  • 20. La implantación del método de división involucra la conversión de una clave a una variable de tipo unsigned int. Luego, este valor es dividido entre el tamaño de la tabla hash. Mtl Lourdes Cahuich 20
  • 21. class hash_function { public: unsigned int mm; hash_function(unsigned int m = 6151) : mm(m) {} unsigned int operator()(const string& s) const { unsigned int res = 0; for (int i = 0; i < s.size(); i++) { res = res * mm + s[i]; } return res; } }; Mtl Lourdes Cahuich 21
  • 22. Desventajas tablas hash Cuando consideramos que existen muchas más claves que posiciones dentro de una tabla hash, surge un problema. Esto significa que una función hash puede potencialmente asignar dos o más claves distintas al mismo índice. Mtl Lourdes Cahuich 22
  • 23. Colisiones en tablas hash Las implantaciones de tablas hash son complicadas por el hecho de que deben manejar colisiones potenciales. Estos mecanismos para manejar colisiones se discuten a detalle en el capítulo 20 del libro de texto de Weiss. Básicamente, las colisiones decrementan el desempeño de las operaciones de la tabla hash Mtl Lourdes Cahuich 23
  • 24. Colisiones en tablas hash La mejor manera de reducir el número de colisiones, y por ende, incrementar la eficiencia de la tabla hash, es usar una buena función hash. Una buena función hash distribuye equitativamente la asignación de claves a través de las posiciones de la tabla hash. Mtl Lourdes Cahuich 24
  • 25. Memoizing: Una Aplicación de las Tablas Hash Cuando es computacionalmente costoso calcular el valor de una función y = f(x), puede ser una buena idea almacenar el valor para un uso futuro. Mtl Lourdes Cahuich 25
  • 26. Memorizing En otras palabras, calculamos f(x) sólo la primera vez que el valor de la función de esta entrada particular x es requerida, y luego almacenamos ( x, f(x) ) en una tabla hash. Cualquier solicitud futura para f(x) resultará en una búsqueda en la tabla y será mucho más rápido el recálculo. Mtl Lourdes Cahuich 26
  • 27. Memorizing Esta técnica es llamada memoizing Aquí se muestra la estructura de una función memoized Mtl Lourdes Cahuich 27
  • 28. int f_memo(int x) { if ( there is an entry (x,y) in hash table ) { return y; } else { compute y = f(x) directly store (x,y) in table return y; } } Mtl Lourdes Cahuich 28
  • 29. Memorizing Debido a que la tabla hash tiene que persistir entre las llamadas a la función, sería natural organizarla como una clase que sobrecarga el operador (). Mtl Lourdes Cahuich 29