Вопрос проверяет понимание того, как структуры данных работают при совпадении хэшей.
Коллизия возникает, когда разные ключи имеют одинаковый хэш. Хэш-таблицы используют специальные методы для хранения таких данных. Самые популярные подходы — цепочки и открытая адресация. Каждый метод имеет свои плюсы и минусы. Python использует открытую адресацию.
Коллизии неизбежны, поэтому хэш-таблицы всегда содержат механизм их обработки.
Определение:
Коллизия — это ситуация, когда два разных ключа попадают в одну и ту же ячейку хэш-таблицы.
Идея метода:
В каждой ячейке хранится список значений
Все коллизии складываются в одну корзину
Особенности:
Простая реализация
Дополнительная память
Доступ может замедляться при большом числе элементов
Идея метода:
Если ячейка занята, ищется следующая свободная
Используется последовательность проб
Варианты:
Линейное пробирование
Квадратичное пробирование
Двойное хэширование
index = hash(key) % size
# если занято — ищем следующую позицию
Цепочки проще для понимания
Открытая адресация экономит память
Производительность зависит от заполненности таблицы
Вывод:
Метод разрешения коллизий напрямую влияет на скорость и потребление памяти хэш-таблицы.