ASD_Lecture04
.pdfПриклад: Пошук
Aho, Kruse, Standish, Horowiz, Langsam, Sedgewick, Knuth
хеш-таблиця
0 Aho
1 Standish
Sedgwick |
хеш |
2 |
2 |
|
функція |
||||
|
|
3 |
||
|
|
|
||
|
|
|
4 |
5 Kruse
Не знайдено
6
Лекція 4 |
51 |
Вирішення колізій
•Використовуються три методи:
–Лінійне зондування.
–Подвійне хешування.
–Зчеплення.
Лекція 4 |
52 |
Лінійне зондування
•Найпростіший метод хешування з відкритою адресою.
•Лінійний пошук у хеш-таблиці починаючи із місця де трапилася колізія.
•Якщо таблиця стає напівзаповненою, тоді з’являється тенденція до кластеризації.
•Видалення елементів є складним.
Лекція 4 |
53 |
Приклад: Вставляння з лінійним зондуванням
Aho, Kruse, Standish, Horowiz, Langsam, Sedgewick, Knuth
Aho
хеш-таблиця
0 Aho
хеш |
|
1 |
|
0 |
2 |
||
функція |
|||
|
3 |
||
|
|
4
5
6
Лекція 4 |
54 |
Приклад: Вставляння з лінійним зондуванням
Aho, Kruse, Standish, Horowiz, Langsam, Sedgewick, Knuth
хеш-таблиця
Kruse
0 Aho
хеш |
|
1 |
|
5 |
2 |
||
функція |
|||
|
3 |
||
|
|
||
|
|
4 |
5 Kruse
6
Лекція 4 |
55 |
Приклад: Вставляння з лінійним зондуванням
Aho, Kruse, Standish, Horowiz, Langsam, Sedgewick, Knuth
хеш-таблиця
Standish
0 Aho
1 Standish
хеш |
1 |
2 |
|
функція |
|||
|
3 |
||
|
|
||
|
|
4 |
5 Kruse
6
Лекція 4 |
56 |
Приклад: Вставляння з лінійним зондуванням
Aho, Kruse, Standish, Horowiz, Langsam, Sedgewick, Knuth
хеш-таблиця
Horowitz
0 Aho
1 Standish
хеш |
5 |
2 |
|
функція |
|||
|
3 |
||
|
|
||
|
|
4 |
5 Kruse
6 Horowitz
Лекція 4 |
57 |
Приклад: Вставляння з лінійним зондуванням
Aho, Kruse, Standish, Horowiz, Langsam, Sedgewick, Knuth
хеш-таблиця
Langsam
|
|
0 |
Aho |
|
|
|
|||
|
|
1 |
|
|
хеш |
|
Standish |
||
5 |
2 |
Langsam |
||
функція |
||||
|
3 |
|
||
|
|
|
||
|
|
4 |
|
|
|
|
5 |
Kruse |
6 Horowitz
Лекція 4 |
58 |
Подвійне хешування
•Інший методі хешування із відкритою адресою.
•Подібний до лінійного зондування.
•Проте, замість здійснення лінійного пошуку, який перевіряє всі наступні входження елемента від місця де трапилася колізія, здійснює перевірку елементів з фіксованим інкрементом.
•Друга хеш-функція використовується для обчислення фіксованого інкремента.
•Значення, яке отримується від другої хешфункції, повинне узгоджуватися із розміром хеш-таблиці.
Лекція 4 |
59 |
Вставляння з подвійним хешуванням
•Обчислити хеш-функцію для отримання позиції.
•Постаратися вставити ключ у отриману позицію.
•Якщо виникає колізія, тоді обчислити друну хеш-функцію для отримання фіксованого інкремента.
•Пройтися по хш-таблиці, використовуючи інкремент, поки не буде
знайдено порожньої позиції.
Лекція 4 |
60 |