Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2012.04.22;
Скачать: CL | DM;

Вниз

поиск по списку слов.   Найти похожие ветки 

 
aka   (2011-12-19 17:48) [0]

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

Делал в скорях, пока на нужное количество слов этого вполне достаточно.

Где посмотреть алгоритм сокращения диапазона поиска в 33*(кол-во первых букв)?
Это должно быть что-то вроде дерева поиска.


 
Jeer ©   (2011-12-19 17:50) [1]

быстрее по хэш-у ( индексу )


 
aka   (2011-12-19 17:58) [2]


> быстрее по хэш-у ( индексу )


только что скачал:
Стивенс. Delphi Готовые алгоритмы.pdf
Бакнелл Джулиан М. «Фундаментальные алгоритмы и структуры да.pdf
и сразу, особо не вникая, мне показалось, что нужно делать по типу Б-дерева


 
MBo ©   (2011-12-19 18:11) [3]

хэш-таблица или структура данных trie


 
Ega23 ©   (2011-12-19 18:14) [4]

сортированный список


 
Кто б сомневался ©   (2011-12-19 19:14) [5]

TStringList - там включаем сортировку. И Find (не помню как точно функция называется) .
Он сам все сделает (хэширует, сортирует итп)


 
TUser ©   (2011-12-19 19:33) [6]


> Где посмотреть алгоритм сокращения диапазона поиска в 33*(кол-
> во первых букв)?
> Это должно быть что-то вроде дерева поиска.

Алгоритм Ахо-Корасика. Описан, например, в книге

Д. Гасфилд. Строки, деревья и последовательности в алгоритмах: информатика и вычислительная биология.

Ну и наверняка много где еще.


 
И. Павел ©   (2011-12-19 19:36) [7]


> aka   (19.12.11 17:48)

По моему, тут будет удобен обычный бинарный поиск: смотрите на слово в середине словаря. Если искомое слово "меньше" среднего, то отбрасываете вторую часть словаря, и повторяете поиск в первой.

Кстати, если создать словарь как индексированное поле в БД, как раз будет использоваться B-дерево для поиска.


 
TUser ©   (2011-12-19 19:37) [8]

Хотя не, это я глупость сказал.


 
Ega23 ©   (2011-12-19 20:02) [9]

Вот как раз недавно этим занимался.

1. Дин.массив строк.
2. TList<Integer> индексов строк. Сортировка здесь.
3. Идём дихотомией по TList<Integer>, сравниваем значение array[TList<Integer>] с Value. Делим пополам.


 
Jeer ©   (2011-12-19 21:52) [10]


> Идём дихотомией


И пошел народ вразнос: дефки, вотка, пиво, кастрация..



Страницы: 1 вся ветка

Текущий архив: 2012.04.22;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.008 c
2-1324922178
upc
2011-12-26 21:56
2012.04.22
Строковая константа больше 255 символов


2-1324889544
gvozdkoff
2011-12-26 12:52
2012.04.22
ListView1, заполнение колонок из файлов


15-1324363262
oxffff
2011-12-20 10:41
2012.04.22
Может кто поделиться БД(продуктов и их иерархии) с фото


15-1324033056
И. Павел
2011-12-16 14:57
2012.04.22
Восстановление бекапа для SQL SERVER 2005


15-1323898980
ffff
2011-12-15 01:43
2012.04.22
Напомните, плиз, о гениальных изобретениях ближайшего прошлого :)