Название: хэши, огромный размер Отправлено: BuRn от Декабрь 12, 2011, 20:40 Может и не суда , но спрошу тут .
Не знаю что делать, есть хэш функция вставки , принимает строку, и вставляет в определенный индекс массива структур маншу запись, индекс генерится хэш функцией . впринципе все ок если элементов не так много, но если элементов больше 1000000 то я не знаю что делать ...нужно сделать поиск по словарю хэшированием но что бы это сделать нужно все слова вставлять в массив структур по индексам которые сгенерит хэш функция , но слов как никак 5+лямов , что предлагаете Название: Re: хэши, огромный размер Отправлено: BRE от Декабрь 12, 2011, 21:03 // quint32 - index
// QString - word QHash<quint32, QString> hash; Хеш функция генерирует индекс, этот индекс будет ключом в КуХеше. Эдакое двойное хеширование. :) Название: Re: хэши, огромный размер Отправлено: BuRn от Декабрь 12, 2011, 21:08 ммм вы не поняли , функция хэширования моя вот сырец :
Код: #include <iostream> Название: Re: хэши, огромный размер Отправлено: Igors от Декабрь 12, 2011, 23:18 20000 макс , а что сделать когда записей очень много Распределять по мере необходимости, когда вставляются новые элементы. С a + b + c придется расстаться, не беда. Для начала прямолинейно выделяйте такую напр структуруКод Потом можно выделять лучше и прицепить template. Во всяком случае сделать свой хэш - это интересно Название: Re: хэши, огромный размер Отправлено: BRE от Декабрь 12, 2011, 23:42 Для начала прямолинейно выделяйте такую напр структуру А как такая организация данных позволит быстро искать нужную запись?С такой организацией мы теряем все достоинства хеш-поиска. Название: Re: хэши, огромный размер Отправлено: BuRn от Декабрь 13, 2011, 06:23 реализовал, кому интересно пишите, скину
Название: Re: хэши, огромный размер Отправлено: Igors от Декабрь 13, 2011, 11:50 А как такая организация данных позволит быстро искать нужную запись? Головы всех списков храним в массиве, по ключу спрыгиваем на нужную голову. В основном забота вовремя увеличивать "число голов" и перестраиватьсяНазвание: Re: хэши, огромный размер Отправлено: fuCtor от Декабрь 16, 2011, 08:36 Для начала прямолинейно выделяйте такую напр структуру А как такая организация данных позволит быстро искать нужную запись?С такой организацией мы теряем все достоинства хеш-поиска. Хеш функция может и иметь коллизии, в этом случае будет хеш таблица корзин, в которые будут попадать значения, там уже может работать либо еще одна хеш таблица (с другой хеш функцией), либо другая структура данных в принципе. При таком раскладе на больших объемах будет только выигрыш: хеш функции проще быстрее, время поиска увеличится не значительно, но будет проигрыш по памяти =). |