The Cat
Искусственный Интеллект
(116174)
8 лет назад
Это означает, что имея хеш, вы сразу получаете значение, без перебора, и это время не зависит от N.
Андрей ИвановПрофи (705)
8 лет назад
Извиняюсь за глупый вопрос. Мы знаем только этот хеш. А нам надо найти в таблице связанный с хешем объект, т. е нам надо перебрать все элементы в таблице, чтобы найти связанный с ним хеш. Вы говорите мы сразу получаем значение, я не могу понять, как можно сразу получить значение.
Капитан Гугл
Искусственный Интеллект
(146235)
8 лет назад
Потому что ты не прочитал, что такое хеш-таблица, а писать тебе тут определение из интернета бессмысленно - ты же в интернете его не прочитал, а значит, и тут не прочитаешь.
Андрей ИвановПрофи (705)
8 лет назад
Википедия: "это структура данных, реализующая интерфейс ассоциативного массива, а именно, она позволяет хранить пары (ключ, значение) и выполнять три операции: операцию добавления новой пары, операцию поиска и операцию удаления пары по ключу." И что? Вопрос то не в этом
Александр
Искусственный Интеллект
(303840)
8 лет назад
что есть хеш? это какое-то определённое число полученное обработкой каким-то определённым образом занесённой в таблицу величины
алгоритм вычисления хеша позволяет якобы каждой записи присвоить какое-то своё число.
допустим (как очень хреновый пример), список имён.
можно тупо раскидать по длине имени.
само собой, повторы могу быть.
ну так добавим туда код первого символа.
уже вариантов повтора меньше станет
но есть же люди с абсолютно одинаковыми именами
как же быть?
а не как... каждый такой вариант получит одинаковый хэш
но среди повторов выбрать нужный будет куда проще, чем из всей кучи
ну и поскольку реальные алгоритмы хеширования не на столько примитивны, то и вероятность повторов можно считать "нулевой"
и вот когда тебе надо найти какое-то имя, хэш твоего запроса мигом считается и получается число, которое по сути номер записи в таблице.
вот и получается что никаких переборов и никаких O(N) не будет
Источник: перечитаю когда протрезвею...
Монти ПайтонГуру (2788)
8 лет назад
Это какие такие "реальные алгоритмы хеширования"?
В реальности все определяется реализацией hashCode() в конкретном классе.