Неформальная постановка задачи:
Для строки, например, , мы хотим, чтобы некоторые буквы были окрашены в красный цвет, а некоторые - в синий (а некоторые нет), чтобы чтение только красных букв слева направо давало тот же результат, что и чтение только синих букв.
В примере мы могли бы покрасить их так:
Поэтому мы говорим, что - это повторяющаяся подпоследовательность . Это также самая длинная повторяемая подпоследовательность (которую легко проверить).A C C A B B A B
Можем ли мы эффективно вычислить самые длинные повторные подпоследовательности?
Формальный вопрос:
Трудно ли NP решить для строки и некоторого , существует ли в строке повторяющаяся подпоследовательность длины ?к
- Если так: какую проблему можно свести к этой проблеме?
- Если нет: что такое эффективный алгоритм? (очевидно, этот алгоритм может быть использован для вычисления самой длинной повторяющейся подпоследовательности)
Бонусный вопрос:
Будут ли они всегда повторяться в подпоследовательности длины если размер алфавита ограничен константой?
(Известно, что это верно для двоичных алфавитов.)
Изменить 2: Отрицательный ответ на бонусный вопрос уже известен для алфавитов размером не менее . Фактически для алфавитов размером Σ существуют строки с самыми длинными повторяющимися подпоследовательностями длиной всего O (n · Σ ^ {- 1/2}) . Случайных строк достаточно, чтобы показать это. Результат уже существовал, но я его упустил.
Редактировать: Примечание:
Некоторые люди имеют в виду «подстрока», когда говорят «подпоследовательность». Я не. Это не проблема поиска подстрок дважды.