Закрепление материала: Хеш-таблицы

Модуль "Хеш-таблицы" • урок 3 из 4 • ~5 минут

Суть урока. Мы изучили хеш-таблицы - одну из самых важных и быстрых структур данных в Computer Science. Разобрали концепцию хеш-функции, проблему коллизий и два основных способа их разрешения: метод цепочек и открытую адресацию. Пора проверить ваши знания!

Краткое резюме модуля

В этом модуле мы изучили механизм работы хеш-таблиц под капотом:

Ключевые идеи

Важные концепции, которые необходимо понимать для эффективной работы с хеш-таблицами:

Методы рехеширования: сравнение цепочек, линейного и квадратичного пробирования по числу коллизий на одном прогоне
Один и тот же прогон восьми ключей тремя методами: цепочки принимают все ключи с наименьшим числом коллизий, у линейного пробирования коллизий больше всего.

Коротко: главное

  • Хеш-таблицы работают за O(1) в среднем случае, но могут деградировать до O(N) в худшем.
  • Коллизии неизбежны из-за ограниченного размера массива.
  • Два главных метода борьбы с коллизиями: цепочки (внешняя память) и открытая адресация (поиск места внутри массива).
  • Рехеширование спасает хеш-таблицу от переполнения и потери производительности.

Проверьте себя

Вопрос 1

Какова алгоритмическая сложность поиска элемента в хеш-таблице в худшем случае (например, при очень плохой хеш-функции)?

Вопрос 2

Зачем нужно рехеширование (rehashing)?

Вопрос 3

Для какого метода разрешения коллизий характерна проблема "сложного удаления", требующая использования специальных меток (tombstones)?

Как вам урок? Спасибо за отзыв!