Update Hash Table image.

This commit is contained in:
Oleksii Trekhleb 2022-08-11 17:26:11 +02:00
parent ac31c913b2
commit 18fcead0dc
8 changed files with 27 additions and 11 deletions

View File

@ -17,7 +17,9 @@ hachage où la fonction de hachage génère le même index
pour plusieurs clés. De telles collisions doivent être pour plusieurs clés. De telles collisions doivent être
accommodées d'une manière ou d'une autre. accommodées d'une manière ou d'une autre.
![Hash Table](https://upload.wikimedia.org/wikipedia/commons/7/7d/Hash_table_3_1_1_0_1_0_0_SP.svg) ![Hash Table](./images/hash-table.jpeg)
*Made with [okso.app](https://okso.app)*
Collision de hachage résolue par chaînage séparé. Collision de hachage résolue par chaînage séparé.

View File

@ -1,10 +1,12 @@
# ハッシュテーブル # ハッシュテーブル
コンピュータサイエンスにおいて、**ハッシュテーブル**(ハッシュマップ)は*キーを値にマッピング*できる*連想配列*の機能を持ったデータ構造です。ハッシュテーブルは*ハッシュ関数*を使ってバケットやスロットの配列へのインデックスを計算し、そこから目的の値を見つけることができます。 コンピュータサイエンスにおいて、**ハッシュテーブル**(ハッシュマップ)は*キーを値にマッピング*できる*連想配列*の機能を持ったデータ構造です。ハッシュテーブルは*ハッシュ関数*を使ってバケットやスロットの配列へのインデックスを計算し、そこから目的の値を見つけることができます。
理想的には、ハッシュ関数は各キーを一意のバケットに割り当てますが、ほとんどのハッシュテーブルは不完全なハッシュ関数を採用しているため、複数のキーに対して同じインデックスを生成した時にハッシュの衝突が起こります。このような衝突は何らかの方法で対処する必要があります。 理想的には、ハッシュ関数は各キーを一意のバケットに割り当てますが、ほとんどのハッシュテーブルは不完全なハッシュ関数を採用しているため、複数のキーに対して同じインデックスを生成した時にハッシュの衝突が起こります。このような衝突は何らかの方法で対処する必要があります。
![Hash Table](https://upload.wikimedia.org/wikipedia/commons/7/7d/Hash_table_3_1_1_0_1_0_0_SP.svg) ![Hash Table](./images/hash-table.jpeg)
*Made with [okso.app](https://okso.app)*
チェイン法によるハッシュの衝突の解決例 チェイン法によるハッシュの衝突の解決例

View File

@ -11,7 +11,9 @@ _Read this in other languages:_
이상적으로, 해시 함수는 각 키들을 고유 버킷에 할당하지만 대부분의 해시 테이블은 불완전한 해시 함수를 사용하기 때문에 해시 함수를 통해 두 개 이상의 키에 대해 동일한 인덱스를 생성하는 해시 충돌이 발생할 수 있습니다. 이러한 해시 충돌은 어떠한 방법으로든 해결되어야 합니다. 이상적으로, 해시 함수는 각 키들을 고유 버킷에 할당하지만 대부분의 해시 테이블은 불완전한 해시 함수를 사용하기 때문에 해시 함수를 통해 두 개 이상의 키에 대해 동일한 인덱스를 생성하는 해시 충돌이 발생할 수 있습니다. 이러한 해시 충돌은 어떠한 방법으로든 해결되어야 합니다.
![Hash Table](https://upload.wikimedia.org/wikipedia/commons/7/7d/Hash_table_3_1_1_0_1_0_0_SP.svg) ![Hash Table](./images/hash-table.jpeg)
*Made with [okso.app](https://okso.app)*
다음은 분리 연결법을 통해 해시 충돌을 해결한 예시입니다. 다음은 분리 연결법을 통해 해시 충돌을 해결한 예시입니다.
@ -20,4 +22,4 @@ _Read this in other languages:_
## 참고 ## 참고
- [Wikipedia](https://en.wikipedia.org/wiki/Hash_table) - [Wikipedia](https://en.wikipedia.org/wiki/Hash_table)
- [YouTube](https://www.youtube.com/watch?v=shs0KM3wKv8&index=4&list=PLLXdhg_r2hKA7DPDsunoDZ-Z769jWn4R8) - [YouTube](https://www.youtube.com/watch?v=shs0KM3wKv8&index=4&list=PLLXdhg_r2hKA7DPDsunoDZ-Z769jWn4R8)

View File

@ -22,7 +22,9 @@ collisions where the hash function generates the same
index for more than one key. Such collisions must be index for more than one key. Such collisions must be
accommodated in some way. accommodated in some way.
![Hash Table](https://upload.wikimedia.org/wikipedia/commons/7/7d/Hash_table_3_1_1_0_1_0_0_SP.svg) ![Hash Table](./images/hash-table.jpeg)
*Made with [okso.app](https://okso.app)*
Hash collision resolved by separate chaining. Hash collision resolved by separate chaining.

View File

@ -13,7 +13,9 @@ imperfeita, pela qual poderá causar colisões de hashes onde a função de hash
gera o mesmo índice para mais de uma chave.Tais colisões devem ser gera o mesmo índice para mais de uma chave.Tais colisões devem ser
acomodados de alguma forma. acomodados de alguma forma.
![Hash Table](https://upload.wikimedia.org/wikipedia/commons/7/7d/Hash_table_3_1_1_0_1_0_0_SP.svg) ![Hash Table](./images/hash-table.jpeg)
*Made with [okso.app](https://okso.app)*
Colisão de hash resolvida por encadeamento separado. Colisão de hash resolvida por encadeamento separado.

View File

@ -2,10 +2,12 @@
**Хеш-таблица** - структура данных, реализующая абстрактный тип данных *ассоциативный массив*, т.е. структура, которая **Хеш-таблица** - структура данных, реализующая абстрактный тип данных *ассоциативный массив*, т.е. структура, которая
*связывает ключи со значениями*. Хеш-таблица использует *хеш-функцию* для вычисления индекса в массиве, в котором может *связывает ключи со значениями*. Хеш-таблица использует *хеш-функцию* для вычисления индекса в массиве, в котором может
быть найдено желаемое значение. Ниже представлена хеш-таблица, в которой ключом выступает имя человека, а значениями быть найдено желаемое значение. Ниже представлена хеш-таблица, в которой ключом выступает имя человека, а значениями
являются телефонные номера. Хеш-функция преобразует ключ-имя в индекс массива с телефонными номерами. являются телефонные номера. Хеш-функция преобразует ключ-имя в индекс массива с телефонными номерами.
![Хеш-таблица](https://upload.wikimedia.org/wikipedia/commons/7/7d/Hash_table_3_1_1_0_1_0_0_SP.svg) ![Hash Table](./images/hash-table.jpeg)
*Made with [okso.app](https://okso.app)*
В идеале хеш-функция будет присваивать элементу массива уникальный ключ. Однако большинство реальных хеш-таблиц В идеале хеш-функция будет присваивать элементу массива уникальный ключ. Однако большинство реальных хеш-таблиц
используют несовершенные хеш-функции. Это может привести к ситуациям, когда хеш-функция генерирует одинаковый индекс для используют несовершенные хеш-функции. Это может привести к ситуациям, когда хеш-функция генерирует одинаковый индекс для
@ -14,9 +16,11 @@
Существует два варианта решения коллизий - хеш-таблица с цепочками и с открытой адресацией. Существует два варианта решения коллизий - хеш-таблица с цепочками и с открытой адресацией.
Метод цепочек подразумевает хранение значений, соответствующих одному и тому же индексу в виде связного списка(цепочки). Метод цепочек подразумевает хранение значений, соответствующих одному и тому же индексу в виде связного списка(цепочки).
![Хеш цепочки](https://upload.wikimedia.org/wikipedia/commons/d/d0/Hash_table_5_0_1_1_1_1_1_LL.svg) ![Хеш цепочки](https://upload.wikimedia.org/wikipedia/commons/d/d0/Hash_table_5_0_1_1_1_1_1_LL.svg)
Метод открытой адресации помещает значение, для которого получен дублирующий индекс, в первую свободную ячейку. Метод открытой адресации помещает значение, для которого получен дублирующий индекс, в первую свободную ячейку.
![Хеш открытая адресация](https://upload.wikimedia.org/wikipedia/commons/thumb/b/bf/Hash_table_5_0_1_1_1_1_0_SP.svg/380px-Hash_table_5_0_1_1_1_1_0_SP.svg.png) ![Хеш открытая адресация](https://upload.wikimedia.org/wikipedia/commons/thumb/b/bf/Hash_table_5_0_1_1_1_1_0_SP.svg/380px-Hash_table_5_0_1_1_1_1_0_SP.svg.png)
## Ссылки ## Ссылки

View File

@ -1,6 +1,6 @@
# 哈希表 # 哈希表
在计算中, 一个 **哈希表(hash table 或hash map)** 是一种实现 *关联数组(associative array)* 在计算中, 一个 **哈希表(hash table 或hash map)** 是一种实现 *关联数组(associative array)*
的抽象数据类型, 该结构可以将 *键映射到值* 的抽象数据类型, 该结构可以将 *键映射到值*
哈希表使用 *哈希函数/散列函数* 来计算一个值在数组或桶(buckets)中或槽(slots)中对应的索引,可使用该索引找到所需的值。 哈希表使用 *哈希函数/散列函数* 来计算一个值在数组或桶(buckets)中或槽(slots)中对应的索引,可使用该索引找到所需的值。
@ -9,7 +9,9 @@
以某种方式进行处理。 以某种方式进行处理。
![Hash Table](https://upload.wikimedia.org/wikipedia/commons/7/7d/Hash_table_3_1_1_0_1_0_0_SP.svg) ![Hash Table](./images/hash-table.jpeg)
*Made with [okso.app](https://okso.app)*
通过单独的链接解决哈希冲突 通过单独的链接解决哈希冲突

Binary file not shown.

After

Width:  |  Height:  |  Size: 165 KiB