Для двух алгоритмов поиска строки: KMP и суффиксное дерево, которое предпочтено в который случаи? Дайте некоторые практические примеры.
Суффиксное дерево лучше, если вам придется отвечать на множество запросов типа "есть ли иголка в стоге сена?". KMP лучше, если вам нужно искать только одну строку в другой единственной строке, а не делать это много раз.
Суффиксное дерево - это гораздо более общая структура данных, поэтому с ним можно делать гораздо больше. Посмотрите, что можно сделать с ним здесь. KMP полезен для поиска того, является ли строка подстрокой в другой строке.
Возможно, вы также захотите проверить другие алгоритмы, такие как Boyer-Moore, Rabin-Karp и даже наивный алгоритм, поскольку есть ситуации (исходные данные), в которых один из них лучше других.
Итог таков: