Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Размерность хеш-таблицы. 
V
    Опции темы
Avaj
Дата 26.10.2008, 05:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

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



Никак не могу разобраться с хешированием.

Нужно построить хеш-таблицу для хранящихся в текстовом файле "слов", разделённых пробелами. "Слово" - последовательность символов. Метод разрешения коллизий - с помощью связных списков.

Тогда какова должна быть размерность таблицы? Т.е. конечно понятно, что она должна быть простым числом, не близким к степени 2. 
Но какое именно число взять, если кол-во "слов" в файле заранее не известно и оно не больше кокого-то N. - самому придумать или оно должно быть основано на кол-ве хешируемых слов?
Но если так, то слова должны сначала из файла считыватся в массив, чтоб посчитать их.








Это сообщение отредактировал(а) Avaj - 26.10.2008, 06:21
PM MAIL   Вверх
darkart
Дата 26.10.2008, 23:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



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


        Нет необходимости читать все слова. Читать нужно по одному слову. Далее, по слову с помощью хеш-функции находить место в таблице. Если случилась коллизия, то нужно добавить элемент в гроздь( список ), висящую на этом месте. Получается такая конструкция( Пусть Aij - j - ый элемент грозди i ( Ai0 - элемент нашей первоначальной таблицы) ):
A00 A10 A20 ... An0
A01        A21     An1
A02                   An2
A03

        Далее некоторые мысли, которые могут помочь с определением размерности.

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

        P.S.: просто мысли вслух.


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

maxim1000

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


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

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


 




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


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

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