Re[3]: Поиск подстроки в наборе строк.
От: watchmaker  
Дата: 16.10.23 20:29
Оценка:
Здравствуйте, bnk, Вы писали:

bnk>Здравствуйте, Vladimir, Вы писали:


V>>Префиксное дерево не подходит, т.к. подразумевается соответствие подстроки с начала строки.


bnk>Почему не подходит?

bnk>Вроде задача похожа на твою 1-в-1 (поиск статей по содержащемуся в их заголовке слову)

Как я понял, у автора темы в задаче меняются запросы, но не меняются тексты, в которых происходит поиск. По ссылке же обратная ситуация описана.

bnk> Попробуй посмотреть вот например, описано как сделать full-text-search с помощью trie (префиксного дерева).

bnk>https://www.toptal.com/algorithms/needle-in-a-haystack-a-nifty-large-scale-text-search-algorithm

Не надо туда смотреть — там ерунда. Описанный по ссылке алгоритм не будет работать правильно. Например, он не найдёт запрос "aab" в тексте "xaaabx" (или в аналоге где слова вместо букв "x a a a b x"). То есть даже для поиска одного образца в одном тексте метод плох. Чего уж там говорить об более сложных случаях.

Если интересно, то описанная по ссылке задача (много статических запросов для поиска в динамическом тексте) решается правильно, например, классическим алгоритмом Ахо-Корасик (про то, что связь с trie есть, но она не такая, по ссылке тоже написано)


bnk>То есть, то того что дерево "префиксное", вовсе не означает что оно может использоваться только для поиска с начала строки.

bnk>Это просто название структуры данных такое.

Это да
Отредактировано 16.10.2023 21:21 watchmaker . Предыдущая версия . Еще …
Отредактировано 16.10.2023 20:31 watchmaker . Предыдущая версия .
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.