Алгоритмы поиска строк - PullRequest
       6

Алгоритмы поиска строк

9 голосов
/ 10 апреля 2010

Для двух алгоритмов поиска строк: KMP и дерева суффиксов, что является предпочтительным в каких случаях?Приведите несколько практических примеров.

1 Ответ

11 голосов
/ 10 апреля 2010

Дерево суффиксов лучше, если вам придется отвечать на множество вопросов, таких как «присутствует ли иголка в стоге сена?». KMP лучше, если вам нужно только искать одну строку в другой отдельной строке и не делать это много раз.

Дерево суффиксов - это гораздо более общая структура данных, поэтому вы можете сделать с ней гораздо больше. Посмотрите, что вы можете сделать с этим здесь . KMP полезен для поиска, является ли строка подстрокой в ​​другой строке.

Вы также можете проверить другие алгоритмы, такие как Бойер-Мур , Рабин-Карп и даже наивный алгоритм, поскольку существуют ситуации (входы), в которых один лучше других.

Итог:

  1. Если у вас много запросов, подобных тому, который я упомянул выше, стоит создать дерево суффиксов, а затем быстрее отвечать на каждый запрос.
  2. Если вам нужно выполнить больше, чем такие запросы, стоит также создать дерево суффиксов.
  3. Если вам нужно только время от времени находить, является ли строка подстрокой другой строки, используйте KMP.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...