Re: Обратная задача: поиск в таблице паттернов

From
Sergei Emantayev ()
To
Andrey Tarasevich
Date
2002-07-03T09:24:22Z
Area
RU.ALGORITHMS
From: Sergei Emantayev <sergeie@ectel.com>


Andrey Tarasevich <atarasevich@telocity.com> пишет:
AT> Sun Jun 30 2002 14:04, Sergei Emantayev wrote to
AT> Sergei Emantayev:

SE>>> Теперь у меня есть обратная задача: есть
AT> таблица
SE>>> слов,
SE>>> на вход приходит некоторый текст. Нужно
AT> найти все
SE>>> слова
SE>>> из таблицы, которые находятся во входном
AT> тексте.

SE>> Поделюсь тем решением, которое более-менее
AT> меня удовлетворяет
SE>> на данный момент. Слова загоняются в этакое
AT> префиксное дерево,
SE>> оно еще "trie" называется. Далее, по дереву
AT> бегают несколько
SE>> поинтеров. Когда приходит новая буква из
AT> текста, поинтеры
SE>> продвигаются на следующие узлы дерева. Тот
AT> кто не смог найти
SE>> нужную букву, выбывает из игры.

SE>> Тем не менее, буду рад услышать о других
AT> интересных решениях
SE>> данной проблемы.

AT> Для решения этой задачи существует известный
AT> алгоритм Ахо-Корасик, описанный в
AT> статье

AT> A. Aho and M. Corasick. Efficient string
AT> matching: an aid to bibliographic
AT> search. Communications of the Association for
AT> Computing Machinery 18 (1975),
AT> 333-340

AT> У меня есть бумажная копия. В Инете я этой статьи
AT> не видел.

http://www.win.tue.nl/~watson/2R080/opdracht/p333-aho-corasick.pdf

Спасибо, посмотрю на досуге.

AT> Они строят специальный автомат, который ищет
AT> строки в тексте "сразу все
AT> одновременно".

единственное, что меня пугает в автоматах, так это
размер памяти, необходимый для их построения. Так
что идеи с автоматами встречаю с осторожностью, хотя
Vladimir A. Pertzel несколько сдвинул мою позицию.

AT> Best regards,
AT> Андрей.

-- 
=====
Serge
mailto:sergeem*@yahoo.com
Отправлено через сервер Форумы@mail.ru - http://talk.mail.ru
--- ifmail v.2.15dev5
 * Origin: Talk.ru (2:5020/400)