No tienes acceso a esta clase

¡Continúa aprendiendo! Únete y comienza a potenciar tu carrera

No se trata de lo que quieres comprar, sino de quién quieres ser. Aprovecha el precio especial.

Antes: $249

Currency
$209

Paga en 4 cuotas sin intereses

Paga en 4 cuotas sin intereses
Suscríbete

Termina en:

14 Días
9 Hrs
55 Min
15 Seg

Hash Tables

10/29
Recursos

Aportes 38

Preguntas 6

Ordenar por:

¿Quieres ver más aportes, preguntas y respuestas de la comunidad?

Para hacer esto más fácil de entender, básicamente una Hash Table es similar a un objeto JSON, a mi me gusta compararlo con arreglos asociativos en PHP o Mapas en C++.
.
La única diferencia es que, a la “key” que tu le pases se le va a aplicar una función que convertirá esa key en una referencia de memoria que es en donde se guardarán los valores que tu les pases.
.
Para obtener de regreso tus valores, tienes que usar esa misma key, que será convertida de nuevo en un hash con la referencia de memoria en donde están guardados tus valores y te los devolverá.

Las Hash Table funcionan similar a un Array, solo que en vez de índices numéricos se tienen índices o keys en caracteres, entonces es necesario una función intermedia que convierte el key en caracteres en índice numérico.

🗂️ Hash Tables

<h4>Ideas/conceptos claves</h4>

hash function es poder asegurar generar un hash que se convierte en el address para acceder al valor

<h4>Apuntes</h4>
  • En JavaScript se pueden conocer como objetos o Maps [Aun les falta unos pasos para concretarlo]
  • En otros lenguajes como python son conocidos como Diccionarios [Python], Maps [Java, Go], Hashes [Ruby]
<h3>Hash Tables vs Objetos</h3>
  • Las hash tables son similares a los objetos porque tienen el concepto de guardar valores key, value
  • La diferencia es que tienen un paso extra que se convierte en caja negra la cual es una hash function
  • Funciona de una manera similar a los arreglos debido a que accedemos a través de un numero
<h3>Métodos</h3>
  • Insert ⇒ Insertar un elemento en la tabla
  • Search ⇒ Buscar un elemento por key
  • Delete ⇒ Borrar un elemento
<h3>Colisión de Hash Table</h3>
  • En ocasiones podemos pasar un key distintito puede generar el mismo hash
  • Colisionando con el anterior
  • Esto podrá depender de la cantidad de espacio disponible

RESUMEN: Las hash tables se parecen a los objetos porque podemos guardar valores por llave, valor. Pero su principal diferencia es que genera un hash para cada llave valor. El único problema es que se puede generar un mismo hash colisionando con el anterior

Para los futuros developers : las hash tables son muy útiles en la modificación del DOM, en React

📑 Las Hash Tables permiten almacenar un conjunto de pares (clave : valor). Destacando las búsquedas de elementos en el menor tiempo posible.

MY NOTES FOR HASH TABLES

De inicio las hash tables son similares a los objetos ya que manejan cosas como las key o los value

La diferencia entre una hash table a un objeto es un paso extra el cual es que se convierte en una caja negra que seria una hash fuction.

¿ Como funcionan?

Esto es poder asegurar una hash que se convierte en el address para poder acceder al valor de lo que estamos guardando.

Metodos

Inser → Insertar un elemento en la tabla

search → buscar un elemento por key

delete → borrar un elemento

Colision de hash table

Trabajar con has table aveces puede causar problemas

En ocasiones pasar un key distinto me puede genrar el mismo hash y eso quiere decir que pueden quedar dos elementos guardado en un mismo indice(bucket)

No hay forma de evitarlo.

Es un tema muy importante tener claro qué es y cómo funciona, así como cómo implementar una función hash. Este es un tema que es muy común ver en entrevistas. 😄

<h3>Hash Tables</h3>

En JS esta es una estructura de datos que no viene creada como tal. Esta estructura de datos tiene distintos nombres según el lenguaje, en js son los objetos, aunque no es lo mismo que un hast table 100%

  • Esta estructura de datos se caracteriza por tener la nomenclatura key: value / llave: valor
  • En js tenemos que hacer un paso extra y es que debemos crear una hash function, esto es una funcion que lo que hace es que a la key que le pasemos la comvertira en una referencia en memoria donde se guardaran los valores que asociadas a la llave.
  • Para acceder a lso valores debemos usar la misma llave, que sera parseada al hash, (que es la referencia en memoria donde se encuentras los valores).

HASH TABLES

Tablas de Hashes, son similares a los objetos, pues manejan el paradigma de key-value La diferencia es un paso extra: usa una función que se convierte en una caja negra, que es una Hash Function. Lo que realiza, es configurar un hash que se convierte en el address para poder acceder al valor de lo que guardamos. Toma el Key que viene de nuestro objeto, lo convierte en un Hash, y ese Hash será el address donde guardamos el valor.
.
CÓMO FUNCIONAN?

  1. Va a pasar el Key mandarinas a la Hash Function.
  2. La Hash Function me va a generar un número, que siempre será el mismo cuando le pase ese valor.
  3. Ese hash se va a convertir en el address. Donde guardará el valor
  4. Esto se convierte en los Buckets, donde guardar el Key value.
  • Para acceder al valor:
  1. Se debe pasar el Key.
  2. La Hash Function devuelve el mismo número
  3. Tienes acceso al valor.

.
.
COLISIÓN DE HASHES
En ocasiones, pasar un valor distinto, me puede generar un mismo hash, lo que produce dos elementos guardados en un mismo bucket. Hash Tables funciona así, dependiendo de los buckets disponibles o libres, es la forma que va a regresar el Hash para guardar la información. Es casi imposible evitar las colisiones.
Es importante aprender cómo tratar una colisión.

  • Cuando hay dos valores en un mismo Bucket, la forma de acceder es:
  1. Si le paso el key de cerezas, sabiendo que ya existe el de mandarinas
  2. Me genera el hash pero devuelve el valor de las cerezas.

Para aquellos a los que no les queda claro cuando usar un Objeto o un HashMap, recomiendo este artículo muy sencillo.
https://medium.com/front-end-weekly/es6-map-vs-object-what-and-when-b80621932373

Hola, esto fue lo que entendí de las hash tables, quedo atento a sus aportes 😃
Hash Tables
Es una estructura de Datos asociativa que relaciona una llave con su respectivo valor por medio de una funcion Hash, esta funcion devuelve un indice o index aleatorio , el cual es la posicion donde se guardará la Informacion en memoria.

La ventaja de usar hash Tables frente a los arrays convencionales es la velocidad con que se recupera la informacion, puesto que en una hash table para obtener de regreso los valores, basta con usar la llave(key), que sera convertida por la funcion hash en la referencia de memoria donde fue guardada la informacion, trayendola inmediatamente.

Vale, tengo más información:

  • Hash Table es un término paraguas ☂️, el concepto amplio de los Diccionarios en Python, los Hashes en Ruby o los Maps en Java. Igual que coche es el término paraguas ☂️ para un BMW, un AUDI y un TOYOTA.

  • Lo que vamos a hacer en las siguientes clases es construir de cero un Hash Table como si no existiera ya en JavaScript, igual que hicimos con los arrays. Pero JavaScript sí tiene su propio BMW desde 2015 y es la clase Map.

  • La clase Map en JavaScript ya tiene su eficiente función hash, su método set( ), get( ), delete( ), entries( ), forEach( ), has( ), keys( )… Aquí toda su documentación en MDN: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Map

  • De hecho, este año 2024 acaban de estrenar un nuevo método estático llamado .groupBy( )

En JavaScript ya hay hash tables

Podemos encontrar mas informacion directo en la documentacion, aunque una dorma de verlo es asi:

>Documentacion<

const map1 = new Map();

La cual sirve para generar una Hash table y si vemos un caso de uso lo muestro a continuacion usando TypeScript.

const first = new Map<number, string>([
  [1, 'one'],
  [2, 'two'],
  [3, 'three'],
]);

Aqui puedo especificar el key y el value de la hash table.
Key => number
value => string

y usarla quedaria asi.

console.log(first.get(1)); // one

Gracias por leer c:

Bueno, sí, en Java (ojo, no JS) podemos usar la clase Map para crear una HashTable, incluso lo podríamos hacer usando un array. Pero también es bueno recordar que la API de Java ya tiene implementada la clase HashTable, en el paquete java.util. Te preguntarás que tiene que ver con JS, y a lo mejor nada, pero soy programadora de la vieja escuela y eso implica muchos años de usar Java, y la verdad, considero que la API de Java es de mucha ayuda porque ya tiene muchas clases implementadas especializadas para estructuras de datos.

Me costó entender el concepto de Hash table, este video fue muy útil: <https://www.youtube.com/watch?v=9tZsDJ3JBUA>

Conocia esto de C#

Un Hash Table es como un array pero el indice es un string=key y el adress un se crea atraves de una funcion.
🔴
Simils que se me ocurren son la generacion de IDs en el Backend y los Tuple de Typescritp o PropTypes.

Un excelente ejemplo de la vida real donde podemos comparar el uso de una **HashTable** es con la **guía telefónica** o un **sistema de almacenamiento de lockers en un gimnasio**. Te lo explico con ambos: ### 1. **Guía telefónica** Imagina que tienes una guía telefónica con los nombres de las personas y sus respectivos números de teléfono. * **Clave (key)**: El nombre de la persona, por ejemplo, "Rubel". * **Valor (value)**: El número de teléfono asociado, por ejemplo, "555-1234". La guía telefónica, al ser muy grande, no la recorres secuencialmente para encontrar un nombre. En vez de eso, usas un sistema que convierte el nombre (clave) en un número que te dice exactamente dónde buscar. Eso es el **hashing**. * **Ejemplo en HashTable**: Cuando buscas a "Rubel", aplicas una función hash al nombre "Rubel" para obtener una posición, como el índice 23, donde almacenaste su número de teléfono. Si el número está ahí, lo obtienes rápidamente. Ahora, si tienes un **nombre duplicado** como "Ana" y "Osito" que colisionan (porque ambos nombres generan el mismo índice), en vez de sobrescribir el número, almacenas ambos valores en una lista (bucket) en ese índice. ### 2. **Lockers en un gimnasio** Imagina un gimnasio con 50 lockers, y cada persona tiene su propio candado para guardar sus cosas. * **Clave (key)**: El nombre de la persona que utiliza el locker, por ejemplo, "Chiqui". * **Valor (value)**: El contenido del locker, por ejemplo, ropa y zapatos deportivos. En lugar de asignar lockers de forma secuencial, el gimnasio tiene una función especial (una función hash) que convierte el nombre de la persona en un número (la posición del locker). De esa forma, no es necesario buscar entre todos los lockers, sino que al llegar al gimnasio, saben exactamente cuál es tu locker. Si por casualidad dos personas tienen nombres que se asignan al mismo locker (colisión), se podría guardar el contenido de ambas personas en el mismo locker pero de forma organizada (una lista dentro del locker). O si los lockers se llenan, podría asignarse un locker nuevo cercano. En ambos casos: * **HashTable**: Relacionamos una clave (nombre) con un valor (número de teléfono o contenido del locker) utilizando una función hash para buscar rápidamente. * **Colisiones**: Si dos claves producen el mismo valor (nombre = locker o índice en la guía), podemos guardar ambos elementos en el mismo "lugar" (bucket). ### Comparación con la HashTable: * Una **guía telefónica** (o un sistema de lockers) es una estructura donde cada persona tiene un número o contenido asociado. * La **HashTable** utiliza una función hash para convertir las claves (nombres) en índices, almacenando el valor asociado y resolviendo colisiones cuando sea necesario.
1. Descripción * Las tablas hash son estructura de datos que asocian clave (`key`) con valores (`value`) * Funcionan de manera similar a los objetos en JavaScript * La diferencia es que las tablas hash utilizan una función hash (`hash function`) para convertir una clave en una dirección (índice) 2. Métodos que tiene una hash table * Insert * Serach * Delete 3. Colisión de hash table * Una colisión ocurre cuando dos claves diferentes generan el mismo hash * Estro proboca que ambos valores se almacenen en el mismo bucket (espacio de almacenamiento) * Para manejar colisiones, se utilizan varias técnicas, como el encadenamiento(listas enlazadas en cada bucket) o el direccionamiento abierto (buscar otra ubicación disponible)

He necesitado entrar en todos los aportes que han hecho los compañeros porque estaba completamente perdida y el que hizo Hugo Andres Marrugo Polo me ha resultado genial: https://www.youtube.com/watch?v=9tZsDJ3JBUA

Lo que he entendido es que una Hash Table podemos imaginarla como un array de JavaScript en la que diseñamos la lógica con la que guarda los elementos. Es decir, los elementos no se guardan como con push, uno y luego otro y luego otro, sin ningún sentido… sino que podemos escribir su algoritmo (nuestra propia función hash). Se van a guardar en la tabla con la lógica que hemos pensado y así los índices [ i ] de cada elemento tienen un sentido y, por lo tanto, podemos utilizar esa función a la inversa para encontrarlo sin usar bucles que necesitan recorrer cada elemento el array. Cuanto mejor pensemos esa función, menos colisiones (elementos que coinciden en un mísmo índice) habrá.

Las hash tables en JavaScript, implementadas comúnmente como objetos o la clase `Map`, son estructuras de datos que asocian claves únicas con valores, permitiendo un acceso rápido y eficiente. Funcionan mediante una función hash que convierte una clave en un índice en una tabla, donde se almacena el valor correspondiente. Esta estructura facilita operaciones de búsqueda, inserción y eliminación con una complejidad promedio de O(1), lo que las hace ideales para casos donde se requiere un acceso rápido a datos asociados a claves únicas. Las hash tables son fundamentales para optimizar el rendimiento en diversas aplicaciones web, mejorando la eficiencia en la gestión de datos.

Para la primera parte del curso donde debíamos construir un prototipo de tipo Array, creé este prototipo, me llevó tooda la tarde y probablemente es un poco verboso, definitivamente hardcodeado.

También lo desplegué como paquete en npm y como repositorio en github, así que pueden ir a checarlo con cualquiera de los dos:
GitHub || NPM ||
CLI command [ npm i @delalyra/arr ]

¡Cualquier feedback es infinitamente agradecido!

Para la primera parte del curso donde debíamos construir un prototipo de tipo Array, creé este prototipo, me llevó tooda la tarde y probablemente es un poco verboso, definitivamente hardcodeado.

También lo desplegué como paquete en npm y como repositorio en github, así que pueden ir a checarlo con cualquiera de los dos:
GitHub || NPM ||
CLI command [ npm i @delalyra/datastructure ]

¡Cualquier feedback es infinitamente agradecido!

Hash Tables

Una hash table es una estructura de datos que se encarga de asignar claves a valores para una búsqueda altamente eficiente, para implementar este tipo de estructura de datos podemos hacer uso por ejemplo de un simple arreglo de listas enlazadas y una función hash, la función hash será la encargada de transformar una clave dada en un hash o numero que identifiqué fácilmente donde se ubica o almacena un valor.

En términos más simples se puede decir que un hash table es una estructura de datos que se encarga de asociar llaves o claves, con valores específicos para una fácil búsqueda.

https://dejuniorasenior.com/que-son-los-hash-tables-o-tablas-hash/

== Hash Table ==

  • Es una estructura de datos asociativa que relaciona una llave con un valor utilizando la funcion hash, dicha función se emplea para calcular el indice en el que van los elementos que estarán en la tabla.

Este video me ayudo a entender un poco más https://www.youtube.com/watch?v=9tZsDJ3JBUA

Sí está algo complejo al comienzo

Creo que una forma de ver la Hash Function, seria como una funcion suprayectiva, en donde el x seria el key, y el f(x) seria el index

Definición de hash table según un recorte que encontré en google:
“Una tabla hash o mapa hash es una estructura de datos que asocia llaves o claves con valores. … Funciona transformando la clave con una función hash en un hash, un número que la tabla hash utiliza para localizar el valor deseado.”

Para los que tengan dudas sobre que es un “hash” les dejo este video, que lo deja bastante claro: https://www.youtube.com/watch?v=GctssJjiqG4. Créditos a David Ceja Zapata, quién trajo el video como aporte a otra clase!

La tabla hash es como un cubo, representado inicialmente como una matriz vacía. Al inicializar la tabla hash, creamos una matriz que contiene un número fijo de estos depósitos.

let allBuckets = [[], [], [], []]  
Y para insertar un valor dentro de nuestros depósitos, es decir, inserte una clave "x" con el valor 10  
1. Utilice la función has para obtener el índice del depósito. 
2. Introduzca el par clave-valor en el depósito.

Usar hastable es una forma muy conveniente para búsqueda, inserción y borrado, en la gran mayoría de casos son Big O(1), es decir en tiempo constante.

los Arrays tengo entendido son una estructura de datos al igual que los Stringsen teoria tambien manejan indices como el arreglo.

QUÉ SON
Es una estructura de datos (asociativa) que pretende la inserción, búsqueda y borrado elementos conformados por una llave y un valor, utilizando una función de Hash. Esta función se utiliza para calcular el índice en el que hay que guardar los elementos que se ingresan a la tabla.

COLISIONES
Ocurren cuando en un mismo índice se introducen varios elementos.
Existen diversas formas de solucionarlo pero la principal es la de generar una lista enlazada con los elementos ubicados en la misma posición.

Es una estructura de datos no lineal cuyo propósito final se centra en llevar a cabo las acciones básicas (inserción, eliminación y búsqueda de elementos) en el menor tiempo posible, mejorando las cotas de rendimiento respecto a un gran número de estructuras.

Una tabla hash almacena un conjunto de pares “(clave, valor)”. La clave es única para cada elemento de la tabla y es el dato que se utiliza para buscar un determinado valor.

COLISION DE HASH TABLE

En ocasiones pasar un valor puede generar el mismo hash, y esto puede hacer que dos elementos se guarden en un mismo bucket. Todo depende de los buckets libres tengamos. Esto se soluciona fácil accediendo con el valor de la key