Хэширование слов

lagif
На сайте с 15.12.2004
Offline
30
7680

Кто слышал или даст ссылки на объяснение или исходники?

Есть такой алгоритм кодирования, когда слово, не превышающее определенную длину можно закодировать уникальной последовательнстью из 4-5 байт/символов.

Товарищи, заранее благодарна... :)

Это тоже пройдет...
A
На сайте с 23.10.2003
Offline
196
#1

Как вариант, можно представить символ не в байте, а в 5 битах. Этого хватит для один символов английского алфавита.

андроид ТВ (http://qway.com.ua/android_tv) и экшн камеры (qway.com.ua/action-cameras) в Украине.
J
На сайте с 22.08.2004
Offline
8
Joy
#2
Как писал lagif
Кто слышал или даст ссылки на объяснение или исходники?
Есть такой алгоритм кодирования, когда слово, не превышающее определенную длину можно закодировать уникальной последовательнстью из 4-5 байт/символов.

Так все таки хэширование или кодирование? Первое в общем случае необратимо в то время как второе обычно предполагает обратимость.

Если хэширование то длина слова для хорошего алгоритма не важна, например md5 message digest использовать столько бит сколько надо для задачи.

lagif
На сайте с 15.12.2004
Offline
30
#3

Задача - из любого слова получить 4-байтное слово (другими словами уникальное для слова число) методом хэширования (необратимое тоже подойдет :))

Пошла качать и перечитывать Кнута. Там, вроде, в 3-м томе, если ничего не путаю, есть описание похожего...

euhenio
На сайте с 21.09.2001
Offline
357
#4

Напридумывать алгоритмов можно много, сжимающих хоть к 1 байту. :) Вопрос в слипаниях хешей для разных слов. И алгоритмы часто дают много слипаний.

Была у меня когда-то идея хеш слова строить по слогам. Их гораздо больше, чем букв, но гораздо меньше, чем слов. Может, вам пригодится.

с ув., Евгений Трофименко seo блог Trofimenko.ru ( http://trofimenko.ru/ ) но ыыы мало обновляется... Tools.Promosite.ru - анализатор апдейтов Яндекса (пожертвуйте лимиты на Яндекс.XML! ( https://searchengines.guru/ru/forum/801888/page7#comment_11942489 )) Konvr.ru - увеличение конверсии сайта на 81% за 4 недели ( http://konvr.ru/ )
[Удален]
#5
Как писал lagif
Задача - из любого слова получить 4-байтное слово (другими словами уникальное для слова число) методом хэширования (необратимое тоже подойдет :))

А как оно может быть уникальным, если всего 4-байтных слов существует меньше, чем 5-байтных? 😕

lagif
На сайте с 15.12.2004
Offline
30
#6

euhenio, У меня тоже была идея. Но вообще сейчас я все это бросила. По слогам - неплохое решение...

Interitus,

Вы хотите, чтоб на букву был 1 байт. Хе-хе...

Хэширование ж кодирует по слову, а не по букве. Возьмите 4 байта - это 32 бита. 2 в 32 степени - дофига. Сколько это получится слов?

Другой вопрос - вероятность слипания (одинакового хэша для разных слов), действительно. Ее нужно всемерно уменьшать...

Хэширование здорво индексирование ускоряет...

[Удален]
#7

Вам наверно CRC32 в самый раз будет. :)

lagif
На сайте с 15.12.2004
Offline
30
#8

Interitus,

Там ведь 32-битный хэш?... А вероятность совпадания хэшей не знаете какая?

euhenio
На сайте с 21.09.2001
Offline
357
#9

Дело, в общем, не в вероятности совпадения, а в реальности.

Реальный набор слов русского языка с падежами, числами и т.п. прогоните по нескольким известным алгоритмам - и, вероятно, откажетесь от любого из них... :)

AA
На сайте с 16.04.2001
Offline
70
#10

Цитирую Влада Шабанова (да простит автор):

"Для 30 миллионов слов CRC32 дает примерно

тысяч 50 коллизий. Максимальное количество

слипаний в одной коллизии ~ 150."

Оригинал - 404

С уважением, Антонов Александр.

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий