Junior — Middle
¿Puedes dar ejemplos de formas de resolver colisiones al trabajar con tablas hash?
sobes.tech AI
Respuesta de la IA
Al trabajar con tablas hash, las colisiones (colisiones) ocurren cuando diferentes claves se hash en la misma celda. Las principales formas de resolver colisiones:
-
Método de encadenamiento (chaining) — en cada celda de la tabla hash se almacena una lista enlazada de los elementos que han caído en esa celda. Cuando ocurre una colisión, el nuevo elemento se añade a la lista.
-
Dirección abierta (open addressing) — en caso de colisión, se busca la siguiente celda libre según una regla determinada (sondeo lineal, sondeo cuadrático, doble hashing).
Ejemplo del método de encadenamiento:
class HashTable {
var buckets: [[(key: String, value: Int)]]
init(size: Int) {
buckets = Array(repeating: [], count: size)
}
func hash(_ key: String) -> Int {
return abs(key.hashValue) % buckets.count
}
func insert(key: String, value: Int) {
let index = hash(key)
buckets[index].append((key, value))
}
}
Por lo tanto, la elección del método depende de los requisitos de rendimiento y memoria.