(Большое спасибо Гиладу Баркану (גלעד ברקן) за то, что он дал мне знать об этом обсуждении.)
Позвольте мне поделиться своими мыслями об этой проблеме с чисто теоретической точки зрения (обратите внимание, что я также использую «фактор» вместо «подслово»).
Я думаю, что достаточно формальное определение рассматриваемой здесь проблемы (или проблем) заключается в следующем:
По заданному слову w найдите слова u_1, u_2, ..., u_k, такие что
- u_i! = u_j для каждого i, j с 1 <= i <j <= k и
- u_1 u_2 ... u_k = w
Вариант максимизации (мы хотим много u_i): максимизировать k
Вариант минимизации (мы хотим короткий u_i): минимизировать max {| u_i | : 1 <= i <= k}
Эти проблемы становятся проблемами решения, если дополнительно дать оценку B, которая, в зависимости от того, говорим ли мы о «многофакторном» варианте или «короткофакторном», является нижней границей k (мы хотим по крайней мере B факторы), или верхняя граница max {| u_i | : 1 <= i <= k} (мы хотим, чтобы факторы длины были не более B), соответственно. Чтобы говорить о NP-сложности, нам нужно поговорить о решении проблем.
Давайте использовать термины SF для «коротких факторов» -варианта и MF для «многих факторов» -варианта. В частности, и это действительно важный момент, проблемы определены таким образом, что мы получаем слово в некотором алфавите, который никоим образом не ограничен. Версия проблемы, в которой мы знаем априори, что мы получаем только входные слова, скажем, по алфавиту {a, b, c, d}, - это другая проблема! NP-твердость вовсе не автоматически переносятся из «неограниченного» на «фиксированный алфавит» вариант (последний может быть проще).
Как SF, так и MF являются NP-полными задачами. Это было показано в [1, 1b] и [2] соответственно (как уже указывал Гилад). Если я правильно понимаю (возможно, слишком) неформальное определение проблемы здесь, в начале этого обсуждения, то проблема этого обсуждения - именно проблема MF. Первоначально не упоминается, что слова ограничены, чтобы прийти из некоторого фиксированного алфавита, позже говорится, что мы можем предположить, что используются только строчные буквы. Если это означает, что мы рассматриваем слова только с фиксированным алфавитом {a, b, c, ..., z}, то это на самом деле сильно изменится с точки зрения NP-твердости.
При ближайшем рассмотрении выявляются некоторые различия в сложности SF и MF:
- В статье [1, 1b] показано, что SF остается NP-полной, если мы фиксируем алфавит в двоичном (точнее: получая слово w над буквами a и b и границей B, можем ли мы разложить его на разные множители длины при самое б?).
- статья [1, 1b] показывает, что SF остается NP-полной, если мы фиксируем оценку B = 2 (точнее: получая слово w, можем ли мы разложить его на различные множители длины не более 2?).
- В работе [3] показано, что если и алфавит, и граница B фиксированы, то SF можно решить за полиномиальное время.
- статья [2] показывает, что MF является NP-полной, но только если алфавит не ограничен или фиксирован априори! В частности, он не отвечает на вопрос, является ли задача NP-полной, если мы рассматриваем входные слова только по некоторому фиксированному алфавиту (как это обычно бывает в практических условиях).
- В работе [3] показано, что MF может быть решена за полиномиальное время, если входные границы B снова ограничены сверху некоторой константой, т. е. входной вопрос задачи является словом и границей B из {1, 2, ..., K} где K - некоторая фиксированная константа.
Некоторые комментарии к этому результату: Wrt (1) и (2), интуитивно понятно, что если алфавит является двоичным, то для усложнения задачи SF граница B также не может быть зафиксирована. И наоборот, установка B = 2 означает, что размер алфавита должен быть достаточно большим, чтобы создавать сложные экземпляры. Как следствие, (3) является довольно тривиальным (на самом деле, [3] говорит немного больше: тогда мы можем решить это во время выполнения не только полиномиального, но также и | w | ^ 2 раза множителя, который зависит только от размера алфавита и связаны Б). (5) тоже не сложно: если наше слово длиннее по сравнению с B, то мы можем получить желаемую факторизацию, просто разбив на факторы разной длины. Если нет, то мы можем перебрать все возможности, которые экспоненциальны только в B, который в этом случае предполагается постоянным.
Итак, картина, которую мы имеем, выглядит следующим образом: SF кажется более трудным, потому что у нас есть твердость даже для фиксированных алфавитов или для фиксированной границы B. С другой стороны, проблема MF становится многократной, разрешимой, если граница фиксирована (в это проще, чем SF), в то время как соответствующий вопрос по размеру алфавита открыт. Таким образом, MF немного менее сложен, чем SF, даже если окажется, что MF для фиксированных алфавитов также NP-завершен. Однако, если можно показать, что MF может быть решена для фиксированных алфавитов за многократное время, то MF будет гораздо проще, чем SF ... потому что один случай, для которого это сложно, является несколько искусственным (неограниченный алфавит!) ,
Я приложил некоторые усилия, чтобы попытаться разрешить случай MF с помощью ограниченного алфавита, но я не смог уладить его и с тех пор прекратил работать над ним. Я не верю, что другие исследователи изо всех сил пытались решить ее (так что это не одна из этих очень сложных открытых проблем, многие люди уже пытались и потерпели неудачу; я считаю, что это как-то выполнимо). Я предполагаю, что это также NP-hard для фиксированных алфавитов, но, возможно, сокращение настолько сложно, что вы могли бы получить что-то вроде «MF is hard для алфавитов размером 35 или больше» или что-то, что тоже не было бы супер приятно ,
Что касается дальнейшей литературы, мне известна статья [4], в которой рассматривается проблема разбиения слова w на отдельные факторы u_1, u_2, ..., u_k, которые являются палиндромами, что также является NP-полным.
Я быстро взглянул на статью [5], на которую указал Гилад. Похоже, рассмотреть другие настройки, хотя. В этой статье авторов интересует комбинаторный вопрос о том, сколько разных подпоследовательностей или подслов может содержаться в данном слове, но они могут перекрываться. Например, aaabaab содержит 20 различных подслов a, b, aa, ab, ba, bb, aaa, aab, aba, baa, aaab, aaba, abaa, baab, aaaba, aabaa, abaab, aabaab, aaabaa, aaabaab (возможно, я просчитался, но вы поняли). Некоторые из них имеют только одно вхождение, например baa, некоторые из них несколько, например aa. В любом случае, вопрос не в том, как мы можем каким-то образом разделить слово, чтобы получить много разных факторов, поскольку это означает, что каждый отдельный символ вносит свой вклад ровно в один фактор.
Что касается практических решений таких проблем (имейте в виду, что я теоретик, так что возьмите это с крошкой соли):
Насколько мне известно, не существует теоретических нижних границ (например, NP-твердости), которые исключали бы возможность решать MF за полиномиальное время, если мы рассмотрим только входные слова в фиксированном алфавите. Однако есть одно предостережение: если вы получаете алгоритм поли-времени, то он должен работать экспоненциально в количестве символов из фиксированного алфавита (или экспоненциально в некоторой функции этого)! В противном случае это был бы также алгоритм полиномиального времени для случая неограниченных алфавитов. Так что, будучи теоретиком, я бы искал алгоритмические задачи, которые можно вычислить по экспоненте, только если число символов и которые каким-то образом помогают разработать алгоритм для MF. С другой стороны, вероятно, что такого алгоритма не существует, и MF также NP-труден в случае с фиксированным алфавитом.
Если вы заинтересованы в практических решениях, может быть полезно приблизить решение. Таким образом, получение факторизации, которая гарантированно будет вдвое меньше оптимальной в худшем случае, не будет слишком плохим.
Эвристика, которая не дает доказуемого коэффициента аппроксимации, но хорошо работает на практике, также будет интересна, я думаю.
Преобразование экземпляров проблемы в экземпляры SAT или ILP не должно быть слишком сложным, и тогда вы можете запустить SAT или ILP-Solver, чтобы даже получить оптимальные решения.
Мое личное мнение таково, что хотя неизвестно, является ли случай MF с фиксированным алфавитом NP-сложным, существует достаточно теоретических выводов, которые предполагают, что проблема достаточно сложна, так что оправданно искать эвристические решения и т.д., которые хорошо работать в практической обстановке.
Список используемой литературы:
[1] Энн Кондон, Ян Мануч, Крис Тачук: Сложность разбиения строк. J. Дискретные алгоритмы 32: 24-43 (2015)
[1b] Энн Кондон, Ян Мануч, Крис Тачук: Сложность проблемы разделения строк с учетом столкновений и ее связь с олиго-дизайном для синтеза генов. COCOON 2008: 265-275
[2] Хеннинг Фернэу, Флорин Манеа, Роберт Меркас, Маркус Л. Шмид: Сопоставление шаблонов с переменными: быстрые алгоритмы и новые результаты твердости. STACS 2015: 302-315
[3] Маркус Л. Шмид: Вычисление равноправных и повторяющихся факторизаций струн. Теор. Вычи. Sci. 618: 42-51 (2016)
[4] Хидео Баннаи, Трэвис Гэги, Шунсуке Иненага, Юха Кярккяйнен, Доминик Кемпа, Марцин Пятковски, Шихо Сугимото: Разнообразная палиндромная факторизация является NP-полной. Int. J. Найдено. Вычи. Sci. 29 (2): 143-164 (2018)
[5] Авраам Флэксман, Арам Веттрот Харроу, Грегори Б. Соркин: Строки с максимально большим количеством различных подпоследовательностей и подстрок. Электр. J. Comb. 11 (1) (2004)
aab|a|b|aa
4