Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 03.12.2009, 09:51   #1
Познающий
Форумчанин
 
Аватар для Познающий
 
Регистрация: 09.05.2009
Сообщений: 162
Печаль Хеш-таблица. Непонятно с решением коллизии методом перемешивания внутренними цепочками

Всем привет!
Ребят проблема такая странная... не могу понять как работает вот этот метод. Сколько мучался и в фундаментальные алгоритмы на с++ лазил.. ничегодля себя не нашел...

Объясните кто-нить популярно как он работает
А то до меня не доходит... Мои догадки наверное далеки от истины но они гласят что мы берем и заполняем хештабличку, а колизийные записи заносим в отдельную таблицу. так что ли? а что дальше?ужс сос помогите
С наилучшими пожеланиями.
Познающий вне форума Ответить с цитированием
Старый 03.12.2009, 10:57   #2
notHaker
Форумчанин
 
Аватар для notHaker
 
Регистрация: 01.12.2009
Сообщений: 569
По умолчанию

вот http://ru.wikipedia.org/wiki/Коллизия. А так ты праильно догнал. Поюзай получше...
Код - это работа, а работа стоит денег.

pz-game.ru. 2d зомби-сурвивал для олдфагов.
notHaker вне форума Ответить с цитированием
Старый 03.12.2009, 11:53   #3
Познающий
Форумчанин
 
Аватар для Познающий
 
Регистрация: 09.05.2009
Сообщений: 162
По умолчанию

да бывал я там и подавно...

Там нашел разрешение коллизий в хеше, так там всего два слова и ДВЕ классификации( надклассы как я понимаю)
То есть метода есть два:
Цепочками и открытая адресация.
Из них вытекают по два и один подметода

Цепочки - Перемешивание с внутренними цепочками - Перемешивание с цепочками переполнения.

О.А. - открытое перемешивание...

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

и что от меня вообще нужно (
С наилучшими пожеланиями.
Познающий вне форума Ответить с цитированием
Старый 03.12.2009, 11:58   #4
notHaker
Форумчанин
 
Аватар для notHaker
 
Регистрация: 01.12.2009
Сообщений: 569
По умолчанию

Цитата:
Сообщение от Познающий Посмотреть сообщение
да бывал я там и подавно...

Там нашел разрешение коллизий в хеше, так там всего два слова и ДВЕ классификации( надклассы как я понимаю)
То есть метода есть два:
Цепочками и открытая адресация.
Из них вытекают по два и один подметода

Цепочки - Перемешивание с внутренними цепочками - Перемешивание с цепочками переполнения.

О.А. - открытое перемешивание...

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

и что от меня вообще нужно (
А зачем тебе хеширование?
Код - это работа, а работа стоит денег.

pz-game.ru. 2d зомби-сурвивал для олдфагов.
notHaker вне форума Ответить с цитированием
Старый 03.12.2009, 12:17   #5
Познающий
Форумчанин
 
Аватар для Познающий
 
Регистрация: 09.05.2009
Сообщений: 162
По умолчанию

Сформировть табличку.

Это все связано с сортировкой и базами данных =)
Надо отсортировать табличку хешированием и потом сбацать поиск который, по идее, круче бинарного
С наилучшими пожеланиями.
Познающий вне форума Ответить с цитированием
Старый 03.12.2009, 12:38   #6
notHaker
Форумчанин
 
Аватар для notHaker
 
Регистрация: 01.12.2009
Сообщений: 569
По умолчанию

http://pmg.org.ru/ai/hash.htm

вот ещё нашёл, но там С. А так всё поясняется.
Код - это работа, а работа стоит денег.

pz-game.ru. 2d зомби-сурвивал для олдфагов.
notHaker вне форума Ответить с цитированием
Старый 03.12.2009, 16:52   #7
Познающий
Форумчанин
 
Аватар для Познающий
 
Регистрация: 09.05.2009
Сообщений: 162
По умолчанию

да там немного о хешировании и как это все круто

чьорт ну мне надо само устройство алгоритма перемешивания внутренними цепочками блин...
С наилучшими пожеланиями.
Познающий вне форума Ответить с цитированием
Старый 03.12.2009, 19:09   #8
Познающий
Форумчанин
 
Аватар для Познающий
 
Регистрация: 09.05.2009
Сообщений: 162
По умолчанию

тэкс нарыл что раз уж цепочками, то коллизия решается просто - если на место претендуют два элемента, то они становятся цепочкой %|

Только не пойму чем отличается внутреннее от внешнего?
Кое-где пишется что это типа мы в старую таблицу в свободных ячейках будем хранить цепочки %X ужс
С наилучшими пожеланиями.
Познающий вне форума Ответить с цитированием
Старый 04.12.2009, 17:12   #9
Познающий
Форумчанин
 
Аватар для Познающий
 
Регистрация: 09.05.2009
Сообщений: 162
По умолчанию

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


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


Мне просто один парень помог и может быть эта запись тоже кому-то поможет... так как на форуме было где-то три темы и я чето не увидел в них разжеванного ответа
С наилучшими пожеланиями.
Познающий вне форума Ответить с цитированием
Старый 05.12.2009, 02:48   #10
notHaker
Форумчанин
 
Аватар для notHaker
 
Регистрация: 01.12.2009
Сообщений: 569
По умолчанию

Цитата:
Сообщение от Познающий Посмотреть сообщение
Итак,в общем решение коллизии методом перемешивания внутренними цепочками состоит в том что если возникает коллизия, то мы этот нехороший элемент(коллизийный, переполняющий) переносим в дополнительную табличку и дальше работам. Когда наша хеш-таблица уже заполнилась "хорошими" элементами, мы просто переносим переполняющие записи из доп.таблицы в хеш-таблицу в чистые ячейки (таковы будут обязательно ведь у нас и хеш и старая таблица имеют одинаковый размер (если по простому) )


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


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

незнаю, подойдёт ли тебе эта штука, но получай... её я использовал, када создавал некое подобие дескрипторов. просьба не пинать, если не то.

(ТОЛЬКО для скорости) допустим массив дескрипторов. если я несколько раз добавляю, а потом удаляю и у меня образуется окно. прежде чем завршить процесс удаления я добавляю индекс удалённого элемента в другой массив того же размера с индексом равным количеству удалённых. и в следующий раз када буду добавлять в массив дескрипторов, сначала я обращусь в массив с этими окнами, если количество удалённых больше 0. вот.
Код - это работа, а работа стоит денег.

pz-game.ru. 2d зомби-сурвивал для олдфагов.
notHaker вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Непонятно.... IICuX123 Общие вопросы .NET 2 23.07.2009 10:27
Перемешивание с внутренними цепочками igrok85_85 Помощь студентам 1 02.05.2008 18:20
Алгоритм "перемешивания" массива в Delphi MusicMan Помощь студентам 4 26.04.2008 21:06
коллизии fluer Общие вопросы Delphi 4 02.05.2007 05:44