[prueba suave] estructura de datos - estructura de tabla hash

1. ¿Qué es una tabla hash?

Hash Table (Hash Table) es una estructura de datos
Hash Table (Hash Table) es una estructura de datos de uso común que puede realizar búsquedas rápidas y almacenamiento dinámico.
Las tablas hash se utilizan ampliamente en aplicaciones prácticas, como motores de búsqueda, bases de datos y cachés.

En segundo lugar, las ventajas y desventajas de la tabla hash.

2.1 Principales características/ventajas de las tablas hash

2.1.1 Almacenamiento de valores clave

Los pares clave-valor se almacenan en la tabla hash, es decir, el valor correspondiente se puede encontrar rápidamente a través de la clave.

2.1.2 Búsqueda e inserción rápida

La clave se asigna a la posición del índice de la matriz a través de la función hash, y la búsqueda se puede realizar directamente en esta posición, y la complejidad del tiempo es O (1).
Tanto la búsqueda como la inserción tienen una complejidad temporal baja, normalmente O(1).

2.1.3 Almacenamiento dinámico

Las tablas hash pueden realizar dinámicamente operaciones de inserción, eliminación y búsqueda.

2.1.4 Manejo de conflictos

Dado que puede haber conflictos en el cálculo del valor hash, es decir, diferentes claves calculan el mismo valor hash, es necesario resolver el problema del conflicto hash.

2.2 Desventajas de las tablas hash

  • Se requiere espacio adicional para almacenar la tabla hash y la posible resolución de conflictos.

Tres, el principio básico de la tabla hash.

Para una clave determinada, un índice de matriz se calcula mediante una función hash y el par clave-valor se almacena en la posición del índice.
Al realizar una búsqueda, el índice correspondiente a la clave también se calcula mediante la función hash y la búsqueda se realiza directamente en esta posición, lo que reduce en gran medida la complejidad temporal de la búsqueda.

Cuarto, la realización de la tabla hash.

La implementación de una tabla hash generalmente incluye los siguientes pasos:
(1) Definir una función hash que asigne una clave a un número entero para determinar la posición de la clave en la tabla hash.
(2) Cree una matriz para almacenar los elementos en la tabla hash.
(3) Utilice una función hash para asignar la clave a la posición correspondiente en la matriz y almacenar el valor correspondiente.
(4) En la búsqueda, use la misma función hash para asignar la clave a una ubicación en la matriz y verificar si el valor en esa ubicación coincide con el valor deseado.

La implementación de la tabla hash puede basarse en diferentes estructuras de datos, como matrices, listas enlazadas, árboles rojo-negro, etc.
Las funciones hash comunes incluyen hash de módulo, hash de multiplicación, hash de división, etc.

5. Tabla hash y función hash

Las tablas hash utilizan una función hash para asignar claves a ubicaciones para que las búsquedas sean más eficientes.

Una tabla hash asigna claves a valores.
Una tabla hash asigna una clave (clave) a una asociación de valor (valor).
El rendimiento de la tabla hash depende de la elección de la función hash y del factor de carga de la tabla hash.
Una buena función hash debería asignar claves a posiciones en la matriz de la manera más uniforme posible para reducir las colisiones y los tiempos de búsqueda.
Al mismo tiempo, un factor de carga adecuado puede garantizar la eficiencia y la utilización del espacio de la tabla hash.

La tabla hash calcula el valor hash de la clave y almacena el par clave-valor en una posición específica de la matriz, logrando así operaciones rápidas de búsqueda, inserción y eliminación.

6. Construcción de funciones

7. Manejo de conflictos de hash

7.1 ¿Qué es una colisión hash?

Una colisión hash se produce cuando dos claves diferentes se asignan al mismo valor en una tabla hash.
En aplicaciones prácticas, un método apropiado para resolver colisiones hash generalmente se selecciona de acuerdo con los requisitos de rendimiento de la tabla hash y la probabilidad de colisiones hash.

7.2 ¿Cómo resolver colisiones de hash?

Para resolver conflictos de hash, generalmente se utilizan los siguientes métodos: incluido el método de direccionamiento abierto, el método de dirección en cadena, el establecimiento de una tabla hash de varios niveles, etc.

7.2.1 Método de dirección abierta

El direccionamiento abierto es un método para resolver colisiones hash moviendo los elementos en colisión a la siguiente ubicación disponible.

Los métodos de dirección abierta comunes incluyen sondeo lineal, sondeo cuadrático y hash doble.

7.2.1.1 Sondeo lineal

El sondeo lineal es el método de dirección abierta más simple

Mueve el elemento en colisión a la siguiente posición hasta que encuentra una ranura vacía o alcanza un número predeterminado de veces.
Sin embargo, el sondeo lineal puede hacer que la tabla hash se llene en exceso, lo que reduce la eficiencia de la búsqueda.

7.2.1.2 Método de doble detección

El método de doble detección es un método de dirección abierta mejorado

Utiliza una función cuadrática para elegir la siguiente posición.
Este método puede reducir la tasa de llenado de la tabla hash, pero puede provocar una distribución desigual de la tabla hash.

7.2.1.3 Doble hash

El doble hash es un método de direccionamiento abierto basado en dos funciones hash:
asigna claves a dos ubicaciones diferentes e inserta elementos en una de ellas.
Este método puede reducir la probabilidad de colisiones de hash, pero requiere espacio de almacenamiento adicional.

7.2.2 Método de dirección en cadena

El método de dirección en cadena es un método para resolver colisiones hash,
que almacena los elementos en conflicto en una lista vinculada. Al buscar, es necesario recorrer toda la lista vinculada para encontrar el elemento correspondiente.
El método de dirección en cadena puede resolver el conflicto hash, pero aumentará la complejidad temporal de la búsqueda.

7.2.3 Construir una tabla hash de varios niveles

Una tabla hash de varios niveles es un método para resolver colisiones hash:
divide la tabla hash en varias subtablas y utiliza diferentes funciones hash para asignar claves a diferentes subtablas.
Este método puede reducir la probabilidad de colisiones hash, pero requiere espacio de almacenamiento adicional y el diseño de funciones hash.

Ocho, presiona buscar

Supongo que te gusta

Origin blog.csdn.net/wstever/article/details/129977985
Recomendado
Clasificación