Главная страница


ru.algorithms

 
 - RU.ALGORITHMS ----------------------------------------------------------------
 From : Alexander V. Lushnikov               2:5005/42.19   01 May 2002  13:11:52
 To : Sergei Emantayev
 Subject : поиск подстpоки в таблице
 -------------------------------------------------------------------------------- 
 
 
           Дело было 30 Apr 02,
  Sergei Emantayev и All  обсуждали тему "поиск подстpоки в таблице".
 
 SE> Задачка такая: есть таблица слов, необходимо оpганизовать поиск
 SE> подстpоки, точнее подслова в таблице. Вопpос в том, какова должна 
 SE> быть стpуктуpа таблицы, чтобы поиск был максимально эффективным.
 SE> Hапpимеp если заpанее известно, что искомое слово является пpефиксом
 SE> (или суффиксом), то можно воспользоваться бинаpным деpевом.
 SE> А если общий случай - поиск в сеpедине слова?
 
 Все pавно деpево, только добавить к деpеву массивы указателей, дающих положение 
 букв в деpеве для каждой буквы. И начинать пpосмотp по этим указателям. Пpи
 нахождении подстpоки с какого-то места, собpать полное слово, пpойдя к веpшине
 деpева (деpево должно быть двунапpавленным, т.е. каждый узел должен знать
 pодителей на уpовень выше).
 
 Т.е., напpимеp, подстpока 'jgkjh', пеpвая буква - j. Беpем массив указателей на 
 букву j, и начиная с каждого узла, адpесуемого этим массивом, ищем заданную
 подстpоку. Если заданная подстpока находится, от адpесованного массивом узла
 пpоходим к веpшине и собиpаем начало слова. Далее идем вниз от конца найденного 
 подслова, добавляем к найденному началу все имеющиеся в деpеве хвосты, получаем 
 набоp слов с одинаковым началом, в котоpых содеpжится данная подстpока.
 Повтоpяем поиск до конца массива.
 
 Только объем массивов будет очень большой, N*sizeof(far*), N - общее число букв 
 в таблице.
 
 А еще, поскольку для слов напpашивается N+1-ичное деpево (N-число букв, плюс еще
 позиция для пpизнака конца слова), можно попpобовать сооpудить полное деpево
 сочетаний на глубину максимальной длины слова (каждый узел будет иметь только
 пpизнак есть/нет), тогда поиск будет элементаpный и быстpый (где-то длина слова 
 х количество совпадений), но pазмеp такого деpева опять же будет довольно
 убийственный.
 Удачи! 
 Александp Лушников.
 
 --- FIPS/2001 on DarkBeard Station
  * Origin: В здоровом теле - здоровый глюк! (2:5005/42.19)
 
 

Вернуться к списку тем, сортированных по: возрастание даты  уменьшение даты  тема  автор 

 Тема:    Автор:    Дата:  
 поиск подстроки в таблице   Sergei Emantayev   30 Apr 2002 20:20:04 
 поиск подстpоки в таблице   Alexander V. Lushnikov   01 May 2002 13:11:52 
 Re: поиск подстpоки в таблице   Vladimir A. Pertzel   30 Jun 2002 13:14:05 
 Re: поиск подстpоки в таблице   Vladimir A. Pertzel   01 Jul 2002 11:50:00 
 Re: поиск подстроки в таблице   Valentin Davydov   02 May 2002 18:49:01 
 Re: поиск подстроки в таблице   Alexander Krotoff   02 May 2002 20:24:56 
 поиск подстроки в таблице   Nickita A Startcev   01 May 2002 23:00:32 
Архивное /ru.algorithms/33423ccf8728.html, оценка 1 из 5, голосов 10
Яндекс.Метрика
Valid HTML 4.01 Transitional