Главная страница
    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
15-1324023715
sniknik
2011-12-16 12:21
2012.04.22
Безопастность SSL... есть ли вероятность обмана?


2-1325168892
Gu
2011-12-29 18:28
2012.04.22
Pointer


2-1325060038
ply
2011-12-28 12:13
2012.04.22
Присвоить массив


3-1274355052
Ulugbek
2010-05-20 15:30
2012.04.22
Помогите мне спроектировать базу для учет денег


2-1324987441
Псарь
2011-12-27 16:04
2012.04.22
File not found





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский