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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
jenya-100
13 / 13 / 0
Регистрация: 22.10.2010
Сообщений: 72
#1

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

22.10.2010, 15:47. Просмотров 777. Ответов 3
Метки нет (Все метки)

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

хэш-функция - C++
Здрасти. Почитал тут про хэш-ф-ии, и был приведен пример: hashVal=(hashVal*128+key)%tableSize; А Что означает величина 128? И...

Хэш функция - C++
Нашел хэш функцию в нете,помогите разабратся че она делает unsigned HashData(char * DATA, int Length) { unsigned hash = 0; ...

Хэш-функция - C++
Здравствуйте, нужно придумать хэш-функцию достаточно эффективное и с не очень большим числом коллизий. Хэш-функция от строки. Думал...

Простейшая хэш-функция - C++
Здравствуйте. Дали задание составить хэш-таблицу из некоторого числа слов. Нужна простейшая хэш-функция, которой передается строка...

Дефолтная хэш функция - C++
Есть ли на плюсах, какая-то дефолтная хэш функция?

Генератор псевдо-случайных чисел, как хэш-функция - C++
Анализируя генератор псевдослучайных чисел Я пришел к выводу, что (Учитывая что RAND_MAX = 32767) придумал сам, но может где то...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Black Fregat
1381 / 1011 / 222
Регистрация: 31.05.2009
Сообщений: 4,240
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 и т.д.
0
Humanoid
Почетный модератор
9838 / 3839 / 165
Регистрация: 12.06.2008
Сообщений: 11,467
22.10.2010, 16:18 #3
jenya-100, если сложить буквы, то получится одинаковый результат для слов, где те же самые буквы, но в другом порядке. Лучше использовать CRC... в инете очень много исходников CRC32 (особенно на Си).
0
jenya-100
13 / 13 / 0
Регистрация: 22.10.2010
Сообщений: 72
23.10.2010, 18:46  [ТС] #4
Спасибо!
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
23.10.2010, 18:46
Привет! Вот еще темы с ответами:

Описать класс "хэш-таблица", используя unordered_set и заданную хэш-функцию - C++
Здравствуйте. Есть класс объектов и ключ сравнения: #pragma once #include <iostream> #include <vector> #include <list> #include...

Хэш таблица - C++
Как работает метод цепочек, для разрешения коллизий в хэш таблице?

Хэш-таблицы - C++
Добрый вечер! Задание такое: Способ вычисления адреса по ключу - расщепление ключа 2 Метод заключается в переводе всех символов...

Хэш-таблица - C++
Дана строка произвольного размера. Необходимо найти все повторяющиеся фрагменты максимальной длины. Для начала нужно создать хэш-таблицу...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
Yandex
Объявления
23.10.2010, 18:46
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru