Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Сортированный Хэш, по сортированным словам 
:(
    Опции темы
sergejzr
Дата 16.11.2006, 14:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Un salsero
Group Icon


Профиль
Группа: Админ
Сообщений: 13285
Регистрация: 10.2.2004
Где: Германия г .Ганновер

Репутация: 4
Всего: 360



Приветы!
Интересует вопрос, существует ли такая функция hash для слов w{w1,w2,..wn}, что 

hash(w1)>hash(w2) <=> w1>w2 ..

То есть порядок должен сохранятся и после хэширования.




--------------------
PM WWW IM ICQ Skype GTalk Jabber AOL YIM MSN   Вверх
comp
Дата 16.11.2006, 15:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 61
Регистрация: 15.11.2006

Репутация: 1
Всего: 1



1я мысль. Если подумать, что есть слово - это ничто иное, как число, в 26й системе счисления(естесвенно, имеется ввиду слово, из букв ангийского алфавита). Можно от этого как-нибудь поплясать...
2я мысль. Моежт подойдёт самое стандартное hesh = sum(w[i] * i)...  Т.е. найти сумму следующего вида: ascii_код_символа * его_позиция_в_слове... Не проверял. Такое ощущение, что так нельзя делать...
PM MAIL   Вверх
Sartorius
Дата 16.11.2006, 15:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1568
Регистрация: 18.7.2006
Где: Ivory tower

Репутация: 1
Всего: 37



sergejzr,  можно hash(w1) >= hash(w2), все таки хэширование - это отображение в  множество..., а иначе свертки не будет.
PM MAIL ICQ   Вверх
maxim1000
Дата 16.11.2006, 15:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник
Сообщений: 3334
Регистрация: 11.1.2003
Где: Киев

Репутация: 33
Всего: 110



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


--------------------
qqq
PM WWW   Вверх
sergejzr
Дата 16.11.2006, 15:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Un salsero
Group Icon


Профиль
Группа: Админ
Сообщений: 13285
Регистрация: 10.2.2004
Где: Германия г .Ганновер

Репутация: 4
Всего: 360



Цитата(Sartorius @  16.11.2006,  14:08 Найти цитируемый пост)
sergejzr,  можно hash(w1) >= hash(w2), все таки хэширование - это отображение в  множество..., а иначе свертки не будет. 

Скажем так, мне надо для определённой группы w. То есть числовое пространство множества можно расширить до необходимости.


Цитата(maxim1000 @  16.11.2006,  14:16 Найти цитируемый пост)
на тот случай, если дело касается криптографии:
я бы не советовал использовать такой хеш, т.к. при желании найти строку по нему можно будет использовать алгоритм бисекции, что сильно уменьшит время поиска 

Не совсем... Я думал использовать такое в базах данных. То есть инфа там лежит шифровкой, но все операции доступны.

Добавлено @ 15:41 
Цитата(comp @  16.11.2006,  14:04 Найти цитируемый пост)
2я мысль. Моежт подойдёт самое стандартное hesh = sum(w[i] * i)...  Т.е. найти сумму следующего вида: ascii_код_символа * его_позиция_в_слове... Не проверял. Такое ощущение, что так нельзя делать... 

Не получится.. т.к 2*2+3*2 == 2*5


--------------------
PM WWW IM ICQ Skype GTalk Jabber AOL YIM MSN   Вверх
esperant0
Дата 16.11.2006, 23:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 714
Регистрация: 20.5.2005

Репутация: 4
Всего: 14



да такая ф-я хещ есть ее еще называют ф-й равенства.

отношение порядко определено  как лексокографический порядок

f(W)=w


--------------------
 
 Student->Teacher Assistant ->Research assistant->Microsoft Software Development Engineer 

Пользователь получил наказание за то, что проигнорировал замечание которое было написано модератором  а затем стерто и которое он - пользователь не мог видеть. 
PM MAIL   Вверх
maxim1000
Дата 17.11.2006, 01:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник
Сообщений: 3334
Регистрация: 11.1.2003
Где: Киев

Репутация: 33
Всего: 110



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

так вот сама идея в том, чтобы использовать арифметическое кодирование
оно построено как раз на том, чтобы "разравнивать" распределение каждого очередного бита (правда, в случае АК это следует из другого критерия - минимальное среднее количество бит для представления информации)

т.е. просто строим статистику букв слова для того, чтобы оценивать вероятности появления той или иной буквы (желательно, на основании предыдущих), и кодируем каждое слово
конечно, количества бит будут разными, но их можно обрезать до нужной длины (зависит от выбора пространства результатов хеш-функции)

а монотонность соответствия, задаваемого арифметическим кодированием получается из-за самого устройства алгоритма (просто буквы при кодировании расположить в алфавитном порядке)


--------------------
qqq
PM WWW   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Алгоритмы"

maxim1000

Форум "Алгоритмы" предназначен для обсуждения вопросов, связанных только с алгоритмами и структурами данных, без привязки к конкретному языку программирования и/или программному продукту.


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, maxim1000.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Алгоритмы | Следующая тема »


 




[ Время генерации скрипта: 0.0484 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.