SlideShare une entreprise Scribd logo
1  sur  29
Télécharger pour lire hors ligne
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

Contenu connexe

Tendances

Cuadro comparativo algoritmos de busqueda
Cuadro comparativo algoritmos de busquedaCuadro comparativo algoritmos de busqueda
Cuadro comparativo algoritmos de busqueda
Cristopher Morales Ruiz
 
Busqueda Binaria
Busqueda BinariaBusqueda Binaria
Busqueda Binaria
ITCV
 
Unidad5. algebra relacional. yama.may.joseluis.j4
Unidad5. algebra relacional. yama.may.joseluis.j4Unidad5. algebra relacional. yama.may.joseluis.j4
Unidad5. algebra relacional. yama.may.joseluis.j4
LuiS YmAY
 

Tendances (20)

Arboles Binarios
Arboles BinariosArboles Binarios
Arboles Binarios
 
Archivo secuencial indexado
Archivo secuencial indexadoArchivo secuencial indexado
Archivo secuencial indexado
 
Tipos de listas en estructura de datos
Tipos de listas en estructura de datosTipos de listas en estructura de datos
Tipos de listas en estructura de datos
 
Ventajas desventajas sgbd
Ventajas desventajas sgbdVentajas desventajas sgbd
Ventajas desventajas sgbd
 
Control de flujo en Telecomunicaciones
Control de flujo en TelecomunicacionesControl de flujo en Telecomunicaciones
Control de flujo en Telecomunicaciones
 
Cuadro comparativo algoritmos de busqueda
Cuadro comparativo algoritmos de busquedaCuadro comparativo algoritmos de busqueda
Cuadro comparativo algoritmos de busqueda
 
Estructura de Datos - Unidad 4 Estructuras no lineales
Estructura de Datos - Unidad 4 Estructuras no linealesEstructura de Datos - Unidad 4 Estructuras no lineales
Estructura de Datos - Unidad 4 Estructuras no lineales
 
Árboles binarios, ABB y AVL
Árboles binarios, ABB y AVLÁrboles binarios, ABB y AVL
Árboles binarios, ABB y AVL
 
Busqueda Binaria
Busqueda BinariaBusqueda Binaria
Busqueda Binaria
 
Normalización de Base de Datos
Normalización de Base de DatosNormalización de Base de Datos
Normalización de Base de Datos
 
Unidad5. algebra relacional. yama.may.joseluis.j4
Unidad5. algebra relacional. yama.may.joseluis.j4Unidad5. algebra relacional. yama.may.joseluis.j4
Unidad5. algebra relacional. yama.may.joseluis.j4
 
4. algoritmo de ordenamiento externo
4. algoritmo de ordenamiento externo4. algoritmo de ordenamiento externo
4. algoritmo de ordenamiento externo
 
Algebra relacional
Algebra relacionalAlgebra relacional
Algebra relacional
 
Guia normalización
Guia normalizaciónGuia normalización
Guia normalización
 
Control de Flujo [Telecomunicaciones]
Control de Flujo [Telecomunicaciones]Control de Flujo [Telecomunicaciones]
Control de Flujo [Telecomunicaciones]
 
SO Unidad 2: Mecanismos de comunicación y sincronización de procesos
SO Unidad 2: Mecanismos de comunicación y sincronización de procesosSO Unidad 2: Mecanismos de comunicación y sincronización de procesos
SO Unidad 2: Mecanismos de comunicación y sincronización de procesos
 
Metodos de programacion no-lineal
Metodos de programacion no-linealMetodos de programacion no-lineal
Metodos de programacion no-lineal
 
Estructura de Datos - Unidad 6 Metodos de busqueda
Estructura de Datos - Unidad 6 Metodos de busquedaEstructura de Datos - Unidad 6 Metodos de busqueda
Estructura de Datos - Unidad 6 Metodos de busqueda
 
Árboles Multicamino, B y B+
Árboles Multicamino, B y B+Árboles Multicamino, B y B+
Árboles Multicamino, B y B+
 
Programación 3: tablas de dispersión
Programación 3: tablas de dispersiónProgramación 3: tablas de dispersión
Programación 3: tablas de dispersión
 

Similaire à 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)
 

Plus de UVM

Plus de 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++
 

Dernier

redes informaticas en una oficina administrativa
redes informaticas en una oficina administrativaredes informaticas en una oficina administrativa
redes informaticas en una oficina administrativa
nicho110
 

Dernier (12)

redes informaticas en una oficina administrativa
redes informaticas en una oficina administrativaredes informaticas en una oficina administrativa
redes informaticas en una oficina administrativa
 
EVOLUCION DE LA TECNOLOGIA Y SUS ASPECTOSpptx
EVOLUCION DE LA TECNOLOGIA Y SUS ASPECTOSpptxEVOLUCION DE LA TECNOLOGIA Y SUS ASPECTOSpptx
EVOLUCION DE LA TECNOLOGIA Y SUS ASPECTOSpptx
 
Resistencia extrema al cobre por un consorcio bacteriano conformado por Sulfo...
Resistencia extrema al cobre por un consorcio bacteriano conformado por Sulfo...Resistencia extrema al cobre por un consorcio bacteriano conformado por Sulfo...
Resistencia extrema al cobre por un consorcio bacteriano conformado por Sulfo...
 
pruebas unitarias unitarias en java con JUNIT
pruebas unitarias unitarias en java con JUNITpruebas unitarias unitarias en java con JUNIT
pruebas unitarias unitarias en java con JUNIT
 
Avances tecnológicos del siglo XXI 10-07 eyvana
Avances tecnológicos del siglo XXI 10-07 eyvanaAvances tecnológicos del siglo XXI 10-07 eyvana
Avances tecnológicos del siglo XXI 10-07 eyvana
 
EL CICLO PRÁCTICO DE UN MOTOR DE CUATRO TIEMPOS.pptx
EL CICLO PRÁCTICO DE UN MOTOR DE CUATRO TIEMPOS.pptxEL CICLO PRÁCTICO DE UN MOTOR DE CUATRO TIEMPOS.pptx
EL CICLO PRÁCTICO DE UN MOTOR DE CUATRO TIEMPOS.pptx
 
Buenos_Aires_Meetup_Redis_20240430_.pptx
Buenos_Aires_Meetup_Redis_20240430_.pptxBuenos_Aires_Meetup_Redis_20240430_.pptx
Buenos_Aires_Meetup_Redis_20240430_.pptx
 
Innovaciones tecnologicas en el siglo 21
Innovaciones tecnologicas en el siglo 21Innovaciones tecnologicas en el siglo 21
Innovaciones tecnologicas en el siglo 21
 
investigación de los Avances tecnológicos del siglo XXI
investigación de los Avances tecnológicos del siglo XXIinvestigación de los Avances tecnológicos del siglo XXI
investigación de los Avances tecnológicos del siglo XXI
 
PROYECTO FINAL. Tutorial para publicar en SlideShare.pptx
PROYECTO FINAL. Tutorial para publicar en SlideShare.pptxPROYECTO FINAL. Tutorial para publicar en SlideShare.pptx
PROYECTO FINAL. Tutorial para publicar en SlideShare.pptx
 
How to use Redis with MuleSoft. A quick start presentation.
How to use Redis with MuleSoft. A quick start presentation.How to use Redis with MuleSoft. A quick start presentation.
How to use Redis with MuleSoft. A quick start presentation.
 
Avances tecnológicos del siglo XXI y ejemplos de estos
Avances tecnológicos del siglo XXI y ejemplos de estosAvances tecnológicos del siglo XXI y ejemplos de estos
Avances tecnológicos del siglo XXI y ejemplos de estos
 

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