![]() |
|
Модераторы: Daevaorn |
![]()
|
|
| Nastya |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 1287 Регистрация: 27.3.2002 Где: Мариуполь Репутация: 5 Всего: 44 |
Ребята, я слышала только это загадочное слово (хєш-функции). Объясните в трех словах или кинте доку
-------------------- Что бы понять рекурсию, надо понять рекурсию "Профессионал - это человек сделавший все возможные ошибки в очень узкой области". Н.Бор |
|||
|
||||
| Sheff |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 503 Регистрация: 25.3.2002 Где: Зеленоград Репутация: 3 Всего: 3 |
Ну в общем эта фишка используется для быстрого поиска, кажись даже в qsort, короче есть хэш-функция и список, допустим надо забить список строками и так чтобы потом нужную строку можно было быстро найти. Делается следующим образом: Строка передаётся в хэш-функцию, обрабатывается и функция возвращает индекс в списке, туда и заносится строка. Вот пример хэш-функции:
А как потом быстро найти эту строку ? Очень просто, просто передать её в хэш функцию, ну а та даст индекс, и не надо бегать по всему списку. Это я конечно объяснил в 3 словах как ты и просила, вообще при разработке хэш таблиц возникают такие вещи как коллизии и их нужно обрабатывать, но это уже отдельный разговор... -------------------- -------------------------- Шеф всегда прав :) |
|||
|
||||
| Sardar |
|
|||
![]() Бегун ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 6986 Регистрация: 19.4.2002 Где: Нидерланды, Groni ngen Репутация: 1 Всего: 317 |
Представь себе большой список. Поиск перебором очень медленный, потому используется фокус: хеширование, от английского to hash - делить.
Большой список делится на несколько маленьких списков, в которых нам легко найти требуемое. Есть хеш-функция "кидающая" обьект в некоторую кучу, т.е. получив обьект искать его надо в том маленьком списке на который укажет хеш-функция. Сама хеш-функция вычисляется очень быстро. Самые большие споры в выборе хорошей хеш-функции, которая бы равномерно делила бы обьекты между маленькими списками. В коде это вылгядит так:
-------------------- Опыт - сын ошибок трудных © А. С. Пушкин Процесс написания своего велосипеда повышает профессиональный уровень программиста. © Opik Оценить мои качества можно тут. |
|||
|
||||
| maxim1000 |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 3334 Регистрация: 11.1.2003 Где: Киев Репутация: 17 Всего: 110 |
есть еще одно применение hash-функций - криптография
кстати, по-моему, они используются на этом форуме hash-функция обладает следующими свойствами: 1. она действует из большего множества в меньшее, а поэтому необратима - одному результату может соответствовать несколько аргументов 2. в прямом направлении она высичляется достаточно легко (с точки зрения вычислительной сложности) 3. в обратном направлении (найти хоть один аргумент, дающий заранее заданный результат) она практически невычислима иногда добавляют 4. практически невозможно найти два аргумента, которые дают одинаковый результат используется hash-функция, например, так: есть ресурс, к которому обеспечивается парольный доступ пользователь регистрируется, создает пароль система берет hash-образ этого пароля и сохраняет его при аутентификации пользователь набирает свой пароль, система берет от него hash-функцию и сравнивает ее с сохраненным значением и по результатам принимает решение о допуске если вдруг кто-то получит доступ (на чтение) к базе данных паролей, он сможет прочитать только их hash-образы, а это (свойство 3) ему ничего не дает поэтому, когда кто-то просит пароль у нашего Админа, он не может его выслать: он его просто не знает, зато его можно сменить. -------------------- qqq |
|||
|
||||
| Guest |
|
|||
|
Unregistered |
Спасибо большое.
Эти функции используются только при поиске и сортировке ? Есть ли четкое определение? Как я поняла с точки зрения языка это обычная функция, толко используюемая определенным образом? |
|||
|
||||
| Sardar |
|
|||
![]() Бегун ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 6986 Регистрация: 19.4.2002 Где: Нидерланды, Groni ngen Репутация: 1 Всего: 317 |
Нет это просто обычная функция, на пример используемая тобой для обьеденения множества обьектов по одному признаку.
По идее hash-функция действует из большего множества в меньшее, но в жизни "может быть наоборот" - из меньшего множества "любимых" человеком паролей берется хеш-код(например md5) с огромным диапазоном возможных значений. Это важно для аутентификационных алгоритмов На algolist.manual.ru загляни в разделы: хеш-таблицы, аутентификация и хеш-функции. -------------------- Опыт - сын ошибок трудных © А. С. Пушкин Процесс написания своего велосипеда повышает профессиональный уровень программиста. © Opik Оценить мои качества можно тут. |
|||
|
||||
![]()
|
| Правила форума "С++:Общие вопросы" | |
|
|
Добро пожаловать!
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | C/C++: Общие вопросы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |