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

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

Войти
Регистрация
Восстановить пароль
 
Warezovvv
9 / 9 / 2
Регистрация: 09.12.2012
Сообщений: 219
#1

PERFECT HASH FUNCTION - C++

28.10.2013, 00:56. Просмотров 473. Ответов 3
Метки нет (Все метки)

Вопрос таков, подскажите хэш функцию:
формат AcccAA- где A-заглавные буквы,c-цифры.
всего 1500 сегментов.
Мин сумма символов 339 и макс 441.
Т.Е. если мы будем складывать в тупую аски коды каждого из символов то получится что все они лягут в 339<ТУТ<441?
что означает что коллизий будет OVER9000.
C++
1
2
3
4
5
int HashFunc(string key){
        int    Adress = (key[0] + key[1] + key[2] + key[3] + key[4] + key[5]);
 
        return Adress;
    }
Пока она такая ,но хочется что бы элементы ложились от 0<ТУТ<1499

Добавлено через 1 час 41 минуту
UPPPPP
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
28.10.2013, 00:56
Здравствуйте! Я подобрал для вас темы с ответами на вопрос PERFECT HASH FUNCTION (C++):

Hash Function Efficiency v0.1 pre-Alpha (May 11th, 2017) - C++
Вот код, для наглядности (cyberforum.ru - не сохраняет оригинал кода! может не компилироваться) комментарии не удалял... #include...

C:\Dev-Cpp\lib\vector.h `ostream' is neither function nor member function; cannot be declared friend - C++
выкидывает C:\Dev-Cpp\lib\vector.h `ostream' is neither function nor member function; cannot be declared friend при компиляции. что делать?

Семантика перемещения и perfect forwarding - C++
Спасибо автору статьи http://www.cyberforum.ru/blogs/174410/blog826.html Но не понял кое что. А именно этот кусок. Прошу объяснить тех...

Hash+++ - C++
Скажите пожалуйста где скачать Hash subj и Hash on coure it

Почему возникает ошибка "function returning function is not allowed" - C++
Подключаю заголовочный файл .dll библиотеки, возникают ошибки #pragma once #include &lt;vector&gt; struct RSA_Interface { ...

hash строк - C++
Доброго времени суток! =) Зачем: Для игры понадобилась база данных стандартных строк типа как данные для удобного перевода (всмысле весь...

3
lemegeton
2925 / 1354 / 135
Регистрация: 29.11.2010
Сообщений: 2,725
28.10.2013, 01:21 #2
Цитата Сообщение от Warezovvv Посмотреть сообщение
но хочется что бы элементы ложились от 0<ТУТ<1499
Непонятная фраза.

Без коллизий -- умножением.
Если у вас латинский алфавит, то у вас 26 вариантов заглавной буквы и 10 вариантов цифр.
Итого 26 * 10 * 10 * 10 * 26 * 26 = 17576000.
В четыре байта влезет.
1
Warezovvv
9 / 9 / 2
Регистрация: 09.12.2012
Сообщений: 219
28.10.2013, 01:50  [ТС] #3
C++
1
2
3
4
5
6
7
int address = key[0] + 
              31 * key[1] + 
              137 * key[2] + 
              1571 * key[3] + 
              11047 * key[4] + 
              77813 * key[5];
return address % kNumBuckets;
Лично я сделал так. может кому поможет
0
lemegeton
2925 / 1354 / 135
Регистрация: 29.11.2010
Сообщений: 2,725
28.10.2013, 10:31 #4
Ваша функция явно предполагает, что int состоит из четырех байт, потому что в два байта число 77813 уже не лезет. Почему-б тогда не сделать хэширующую функцию без коллизий!?

А кто такой kNumBuckets? Если это "количество корзин" в каком-либо хранилище, использующем хэши, то ему не место в хэширующей функции.
0
28.10.2013, 10:31
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
28.10.2013, 10:31
Привет! Вот еще темы с ответами:

Std::hash<.> - C++
а для чего конкретно он применяется? читал на с++/reference, не особо понял...

Hash - таблица - C++
Собственно всегда считал, что map - обычная хеш-таблица, оказалось нет, это какое-то древовидная упорядоченная хэш-таблица (без понятия,...

списки, вектора, map, Hash - C++
интересует информация о следующих &quot;типах&quot; std::vector и std::deque Списки, деревья std::list, std::set, std::map, hash_set, hash_map ...

Консольный HASH под *nix - C++
Приветствую! Есть задачка выдавать некий HASH в консоли. например как это делает PING, что бы в командной строке писали &quot;my_func...


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

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Опции темы

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