Бесконечный поиск в квадратичном зондировании (хэш-таблицы)

Я думаю, что в хэш-таблицах может возникнуть проблема, если мы будем использовать квадратичное зондирование в следующей ситуации;

Предположим, у нас есть таблица размером 10, и она заполнена, за исключением третьего индекса. Наша хеш-функция, скажем, h(x) = x mod(n)

| 10 | 31 | 42 |  no value | 64 | 15 | 6 | 77 | 58 | 19 |

Как я знаю, квадратичное зондирование ищет (индекс + i^2), если происходит столкновение. Например, если мы хотим вставить "40" в этой хеш-таблице он ищет следующие позиции.

0 -> 1 -> 4 -> 9 -> 6 -> 5 -> 6 -> 9 -> 4 -> 1 -> 0 -> 1 -> 4 ->  ...

Поэтому он продолжает искать позицию, но у него не будет возможности вставить этот элемент в эту хэш-функцию, потому что n^2 mod (10) никогда не будет равно 3. Так что он будет искать место до бесконечности.

Это самый простой случай, который я мог найти, но могут быть и другие подобные ситуации. Так почему мы используем квадратичное зондирование, даже если оно может иметь такую ​​огромную проблему? Есть ли способ искать и избегать такого рода проблем?

0 ответов

Другие вопросы по тегам