Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Прочее";
Текущий архив: 2012.04.22;
Скачать: [xml.tar.bz2];

Вниз

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

 
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;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.46 MB
Время: 0.003 c
2-1323823424
Валентина
2011-12-14 04:43
2012.04.22
распределение средств между предприятиями


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


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


1-1291843738
alex870
2010-12-09 00:28
2012.04.22
TRegistry в службе


2-1325185725
Plast
2011-12-29 23:08
2012.04.22
Конвертировать String в GUID?





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский