Форум программистов, компьютерный форум, киберфорум
Алгоритмы
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 5.00/8: Рейтинг темы: голосов - 8, средняя оценка - 5.00
2 / 2 / 2
Регистрация: 10.12.2010
Сообщений: 27

хеш функция

19.02.2011, 07:55. Показов 1628. Ответов 4
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Нужна хеш функция от строки, которая выдаёт числа. Хеш функция должна быть одинакова для строк получающихся друг из друга перестановкой букв, и различаться для строк, которые не могут быть получены дур из друга перестановкой букв. Прошу приветсти пример такой функции
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
19.02.2011, 07:55
Ответы с готовыми решениями:

Почему хеш-функция MD6 не популярна?
Здравствуйте. Почему хеш-функция MD6 не популярна?

Хеш таблицы
где применяются хеш таблицы если это просто обощение обычного массива?

Зачем нужны хеш таблицы?
Подскажите, пожалуйста, зачем нужны хеш таблицы? Я так подозреваю, что они могут помочь найти образец в тексте, но тогда как их построить,...

4
2 / 2 / 2
Регистрация: 10.12.2010
Сообщений: 27
19.02.2011, 11:27  [ТС]
Цитата Сообщение от Sosnoolеy Посмотреть сообщение
Lisp
1
2
3
4
5
6
roosterSoSnool = foldl' (flip ((+) . ord)) 0 . sort
 
> roosterSoSnool "abc"
294
> roosterSoSnool "cba"
294
что-то я не понял ничего, если можно, то приводите объснение этой функции, а не реализацию
0
I ♥ C#
 Аватар для Delog
470 / 262 / 25
Регистрация: 07.05.2010
Сообщений: 567
19.02.2011, 12:04
Первое, что пришло в голову:
Пусть а=1, б=2, в=4, г=8 и т.д., тогда хеш строки "баг", будет 2+1+8=11, справедливо для любой перестановки "габ" = 8+1+2=11. Конечно же будут коллизии, если в слове какая-то буква повторяется: "аааг" = 1+1+1+8=11, но коллизии есть у всех хешей. А раз вам нужен именно хеш, а не число однозначно идентифицирующее слово, то получите и распишитесь
0
2 / 2 / 2
Регистрация: 10.12.2010
Сообщений: 27
19.02.2011, 12:33  [ТС]
Цитата Сообщение от Delog Посмотреть сообщение
Первое, что пришло в голову:
Пусть а=1, б=2, в=4, г=8 и т.д., тогда хеш строки "баг", будет 2+1+8=11, справедливо для любой перестановки "габ" = 8+1+2=11. Конечно же будут коллизии, если в слове какая-то буква повторяется: "аааг" = 1+1+1+8=11, но коллизии есть у всех хешей. А раз вам нужен именно хеш, а не число однозначно идентифицирующее слово, то получите и распишитесь
что такое коллизии? Ну так при вашей хеш функции строки aa и б не получаются друг из друга перестановкой, но у обоих хеш 2.
ЗЫ все строки длины не более 20. И хочется, чтоб их хеш влезал в int64(в паскале) и соответсвующие типы в других языках.
0
I ♥ C#
 Аватар для Delog
470 / 262 / 25
Регистрация: 07.05.2010
Сообщений: 567
19.02.2011, 17:55
Цитата Сообщение от witchdoctor
что такое коллизии? Ну так при вашей хеш функции строки aa и б не получаются друг из друга перестановкой, но у обоих хеш 2.
Я могу прислать два совершенно разных файла с одинаковым md5-хешем. Это возможно благодаря коллизиям. Коллизия - конфликт, наложение сигналов. Если разные последовательности байтов имеют одинаковый хеш, это коллизия. Вам они значит не нужны?
Цитата Сообщение от witchdoctor
все строки длины не более 20. И хочется, чтоб их хеш влезал в int64
Без коллизий невозможно будет уместить в int64 даже с самым гениальным алгоритмом.

Вот еще одна моя быстрая идея, может разовьете и оптимизируете: пусть а = 1, б = 21, в= 421, г = 8421 и т.д. тогда "баг" = 21+1+8421 = 8443, понятно, что от перестановки букв/слагаемых ничего не изменится. Коллизий нет для всех строк не длиннее 20 символов.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
19.02.2011, 17:55
Помогаю со студенческими работами здесь

Хеш-таблица (Hash-table)
Есть ли у кого-то пример реализации хеш-таблицы и метод делением на С++ или ссылки на хорошие источники? Добавлено через 8 часов 53...

Открытая адресация в хеш-таблицах (удаление)
Всем хай! Сходу к делу! Дана хеш-таблица, состоящая из 10 элементов. Она должна хранить натуральные неповторяющиеся числа. Стартовая...

Хеш-функция и хеш-таблица
Всем привет, написал хеш-функцию для строки: #include <iostream> //Главная библиотека #include <string> //Библиотека для...

Хеш функция
Нужно написать функцию, которая от строки name возвращает хеш код. Хеш код получить методом сложение битовой последовательности в трое.....

Хеш функция
Всем добрый день! В общем, нужно подсчитать кол-во коллизий. За это отвечает функция size_t collisions_count(), но почему-то не...


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

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Новые блоги и статьи
Использование SDL3-callbacks вместо функции main() на Android, Desktop и WebAssembly
8Observer8 24.01.2026
Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а привычная функция main(). . .
моя боль
iceja 24.01.2026
Выложила интерполяцию кубическими сплайнами www. iceja. net REST сервисы временно не работают, только через Web. Написала за 56 рабочих часов этот сайт с нуля. При помощи perplexity. ai PRO , при. . .
Модель сукцессии микоризы
anaschu 24.01.2026
Решили писать научную статью с неким РОманом
http://iceja.net/ математические сервисы
iceja 20.01.2026
Обновила свой сайт http:/ / iceja. net/ , приделала Fast Fourier Transform экстраполяцию сигналов. Однако предсказывает далеко не каждый сигнал (см ограничения http:/ / iceja. net/ fourier/ docs ). Также. . .
http://iceja.net/ сервер решения полиномов
iceja 18.01.2026
Выкатила http:/ / iceja. net/ сервер решения полиномов (находит действительные корни полиномов методом Штурма). На сайте документация по API, но скажу прямо VPS слабенький и 200 000 полиномов. . .
Расчёт переходных процессов в цепи постоянного тока
igorrr37 16.01.2026
/ * Дана цепь(не выше 3-го порядка) постоянного тока с элементами R, L, C, k(ключ), U, E, J. Программа находит переходные токи и напряжения на элементах схемы классическим методом(1 и 2 з-ны. . .
Восстановить юзерскрипты Greasemonkey из бэкапа браузера
damix 15.01.2026
Если восстановить из бэкапа профиль Firefox после переустановки винды, то список юзерскриптов в Greasemonkey будет пустым. Но восстановить их можно так. Для этого понадобится консольная утилита. . .
Сукцессия микоризы: основная теория в виде двух уравнений.
anaschu 11.01.2026
https:/ / rutube. ru/ video/ 7a537f578d808e67a3c6fd818a44a5c4/
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru