Re: поиск подстроки в таблице

From
Valentin Davydov ()
To
Sergei Emantayev
Date
2002-05-02T18:49:01Z
Area
RU.ALGORITHMS
From: Valentin Davydov <val@sqdp.trc-net.co.jp>

>   From: Sergei Emantayev <sergeie@ectel.com>
>   Date: Tue, 30 Apr 2002 16:20:04 +0000 (UTC)
>
>Задачка такая: есть таблица слов, необходимо организовать поиск
>подстроки, точнее подслова в таблице. Вопрос в том, какова должна
>быть структура таблицы, чтобы поиск был максимально эффективным.
>Например если заранее известно, что искомое слово является префиксом
>(или суффиксом), то можно воспользоваться бинарным деревом.
>А если общий случай - поиск в середине слова? Можно взять алгоритм
>типа Морриса-Пратта, но тогда придется линейно просматривать всю
>таблицу.
>Существует ли какое-то более красивое решение?

Если памяти не жалко, а таблица статичная (словарь), то можно хранить
таблицы хэшей (т.е. 256 массивов индексов слов, содержащих данную букву,
65536 массивов индексов слов, содержащих данное буквосочентание и т.д.).

Вал. Дав.

--- ifmail v.2.15dev5
 * Origin: Demos online service (2:5020/400)