Форум программистов, компьютерный форум CyberForum.ru

Хэш-функция - C++

Восстановить пароль Регистрация
 
jenya-100
13 / 13 / 0
Регистрация: 22.10.2010
Сообщений: 72
22.10.2010, 15:47     Хэш-функция #1
Здравтствуйте! У меня такая проблема. У меня есть текст, и мне нужно каждому слову поставить в соответствие чиселку (например, от 0 до 255) таким образом, что разные слова имееют разные числеки, а одинаковые - одинаковые чиселки. Для этого мне нужно написать хэш-функцию. Ничего умнее, чем тупо сложить все коды всех символов, мне в голову не приходит. Может, кто-нибудь что умное посоветует?
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
22.10.2010, 15:47     Хэш-функция
Посмотрите здесь:

C++ Хэш таблица
Хэш функции C++
C++ хэш-функция
Хэш функция C++
C++ Хэш-таблица
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Black Fregat
 Аватар для Black Fregat
1353 / 983 / 215
Регистрация: 31.05.2009
Сообщений: 4,093
22.10.2010, 16:12     Хэш-функция #2
Если нужно попроще и побыстрее, то сумма Флетчера:
C++
1
2
3
4
5
6
7
int s1 = 0; 
int s2 = 0;
while (havingBytes())
{
  s1 += nextByte();
  s2 += s1;
}
Разрядность счетчиков можно варьировать. Есть ещё сумма Адлера - чуть более продвинутая.

Для стандартных случаев можно взять обычную CRC (16, 32)
Ну и параноидальный случай - всякие криптографические хэши - MD-5, SHA-1 и т.д.
Humanoid
Почетный модератор
 Аватар для Humanoid
9699 / 3749 / 140
Регистрация: 12.06.2008
Сообщений: 11,302
22.10.2010, 16:18     Хэш-функция #3
jenya-100, если сложить буквы, то получится одинаковый результат для слов, где те же самые буквы, но в другом порядке. Лучше использовать CRC... в инете очень много исходников CRC32 (особенно на Си).
jenya-100
13 / 13 / 0
Регистрация: 22.10.2010
Сообщений: 72
23.10.2010, 18:46  [ТС]     Хэш-функция #4
Спасибо!
Yandex
Объявления
23.10.2010, 18:46     Хэш-функция
Ответ Создать тему
Опции темы

Текущее время: 07:01. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru