(Muito obrigado a Gilad Barkan (גלעד ברקן) por me informar sobre essa discussão.)
Deixe-me compartilhar meus pensamentos sobre esse problema de um ponto de vista puramente teórico (observe que eu também uso "fator" em vez de "subpalavra").
Penso que uma definição suficientemente formal do problema (ou problemas) considerados aqui é a seguinte:
Dada uma palavra w, encontre as palavras u_1, u_2, ..., u_k de modo que
- u_i! = u_j para cada i, j com 1 <= i <j <= ke
- u_1 u_2 ... u_k = w
Variante de maximização (queremos muitos u_i): maximize k
Variante de minimização (queremos u_i curto): minimize max {| u_i | : 1 <= i <= k}
Esses problemas se tornam problemas de decisão, fornecendo adicionalmente um B vinculado, que, de acordo com a variável "muitos fatores" ou a variável "fatores curtos", é um limite inferior em k (queremos pelo menos B fatores) ou um limite superior em max {| u_i | : 1 <= i <= k} (queremos fatores de comprimento no máximo B), respectivamente. Para falar sobre dureza NP, precisamos falar sobre problemas de decisão.
Vamos usar os termos SF para a variável "fatores curtos" e MF para a variável "muitos fatores". Em particular, e este é um ponto realmente crucial, os problemas são definidos de tal maneira que obtemos uma palavra sobre um alfabeto que não é de forma alguma restrito. A versão do problema é que sabemos a priori que apenas obtemos palavras de entrada, digamos, alfabeto {a, b, c, d} é um problema diferente! A dureza NP não transita automaticamente da variante "irrestrita" para a "alfabeto fixo" (a última pode ser mais simples).
SF e MF são problemas completos de NP. Isso foi mostrado em [1, 1b] e [2], respectivamente (como Gilad já apontou). Se eu entendi corretamente a definição do problema informal (talvez também) aqui no início desta discussão, o problema dessa discussão é exatamente o problema MF. Inicialmente, não é mencionado que as palavras são restritas a vir de algum alfabeto fixo; depois, diz-se que podemos assumir que apenas letras minúsculas são usadas. Se isso significa que consideramos apenas as palavras sobre o alfabeto fixo {a, b, c, ..., z}, isso mudaria bastante, na verdade, em termos de dureza NP.
Um olhar mais atento revela algumas diferenças na complexidade de SF e MF:
- O artigo [1, 1b] mostra que SF permanece NP-completo se fixarmos o alfabeto em um binário (mais precisamente: obter uma palavra w sobre as letras aeb e um limite B, podemos fatorá-lo em fatores distintos de comprimento em mais B?).
- O artigo [1, 1b] mostra que SF permanece NP-completo se fixarmos o limite B = 2 (mais precisamente: obter uma palavra w, podemos fatorá-la em fatores distintos de comprimento, no máximo 2?).
- O artigo [3] mostra que, se o alfabeto e o limite B são fixos, o SF pode ser resolvido em tempo polinomial.
- O artigo [2] mostra que MF é NP completo, mas apenas se o alfabeto não for restrito ou corrigido a priori! Em particular, ele não responde à pergunta se o problema é NP-completo se considerarmos apenas as palavras de entrada sobre algum alfabeto fixo (como é habitual no caso de configurações práticas).
- O artigo [3] mostra que MF pode ser resolvido em tempo polinomial se os limites de entrada B forem novamente delimitados por alguma constante, ou seja, a entrada do problema for uma palavra e um limite B de {1, 2, ..., K} , onde K é alguma constante fixa.
Alguns comentários sobre esse resultado: Wrt (1) e (2), é intuitivamente claro que se o alfabeto é binário, então, para dificultar o problema SF, o limite B também não pode ser corrigido. Por outro lado, fixar B = 2 significa que o tamanho do alfabeto deve ser muito grande para produzir instâncias difíceis. Como conseqüência, (3) é bastante trivial (na verdade, [3] diz um pouco mais: então podemos resolvê-lo em tempo de execução não apenas polinomial, mas também | w | ^ 2 vezes um fator que depende apenas do tamanho do alfabeto e ligado B). (5) também não é difícil: se nossa palavra é longa em comparação com B, então podemos obter a fatoração desejada simplesmente dividindo fatores de diferentes comprimentos. Caso contrário, podemos forçar com força bruta todas as possibilidades, que são exponenciais apenas em B, que neste caso é assumido como uma constante.
Portanto, a imagem que temos é a seguinte: SF parece mais difícil, porque temos dureza mesmo para alfabetos fixos ou para um limite fixo B. O problema MF, por outro lado, é solucionável em tempo polivalente se o limite for fixo (em nesse sentido, é mais fácil do que SF), enquanto a pergunta correspondente indica o tamanho do alfabeto está aberto. Portanto, MF é um pouco menos complexo que SF, mesmo que MF para alfabetos fixos também seja NP-completo. No entanto, se for possível mostrar que o MF pode ser resolvido para alfabetos fixos no tempo polifólio, o MF é muito mais fácil que o SF ... porque o único caso em que é difícil é algo artificial (alfabeto ilimitado!) .
Esforcei-me ao tentar resolver o caso do MF com alfabeto delimitado, mas não consegui resolvê-lo e parei de trabalhar nele desde então. Não acredito que outros pesquisadores tenham se esforçado muito para resolvê-lo (portanto, este não é um desses problemas abertos muito difíceis, muitas pessoas já tentaram e falharam; considero-o de alguma forma factível). Meu palpite seria que também é NP-difícil para alfabetos fixos, mas talvez a redução seja tão complicada que você obteria algo como "MF é difícil para alfabetos de tamanho 35 ou maior" ou algo assim, o que também não seria muito bom .
Em relação à literatura adicional, conheço o artigo [4], que considera o problema de dividir uma palavra w em fatores distintos u_1, u_2, ..., u_k que são todos palíndromos, que também é NP completo.
Dei uma rápida olhada no artigo [5], apontado por Gilad. Parece considerar uma configuração diferente, no entanto. Neste artigo, os autores estão interessados na questão combinatória de quantas subsequências ou subpalavras distintas podem estar contidas em uma determinada palavra, mas elas podem se sobrepor. Por exemplo, aaabaab contém 20 subpalavras diferentes a, b, aa, ab, ba, bb, aaa, aab, aba, baa, aaab, aaba, aba, baab, aaaba, aabaa, abaab, aabaab, aaabaa, aaabaab (talvez eu mal contado, mas você entendeu). Alguns deles têm apenas uma ocorrência, como baa, outros, como aa. De qualquer forma, a questão não é como podemos, de alguma maneira, dividir a palavra para obter muitos fatores distintos, pois isso significa que cada símbolo individual contribui para exatamente um fator.
Em relação às soluções práticas para esse tipo de problema (lembre-se de que eu sou um teórico, leve isso com um pouco de sal):
Que eu saiba, não há limites teóricos mais baixos (como dureza NP) que descartariam resolver MF em tempo polinomial se considerarmos apenas as palavras de entrada sobre um alfabeto fixo. Porém, há uma ressalva: se você obtiver um algoritmo de politempo, ele deverá ser executado exponencialmente no número de símbolos do alfabeto fixo (ou exponencial em alguma função disso)! Caso contrário, também seria um algoritmo de tempo polinomial para o caso de alfabetos ilimitados. Sendo um teórico, eu procuraria por tarefas algorítmicas que podem ser computadas em tempo exponencial apenas se o número de símbolos e que de alguma forma ajudarem a criar um algoritmo para MF. Por outro lado, é provável que esse algoritmo não exista e MF também seja NP-hard no caso de alfabeto fixo.
Se você estiver interessado em soluções práticas, pode ser útil aproximar a solução. Portanto, obter fatoração garantida em apenas metade do tamanho ideal, no pior dos casos, não seria tão ruim.
Heurísticas que não fornecem uma taxa de aproximação comprovável, mas funcionam bem em um ambiente prático também seriam interessantes, eu acho.
Transformar as instâncias do problema em instâncias SAT ou ILP não deve ser muito difícil e, em seguida, você pode executar um SAT ou ILP-Solver para obter soluções ideais.
Minha opinião pessoal é que, embora não se saiba se o alfabeto fixo da MF é NP-difícil, há idéias teóricas suficientes que sugerem que o problema é difícil o suficiente para que seja justificado procurar soluções heurísticas etc. que funciona bem em um ambiente prático.
Bibliografia:
[1] Anne Condon, Ján Manuch, Chris Thachuk: A complexidade do particionamento de strings. J. Algoritmos Discretos 32: 24-43 (2015)
[1b] Anne Condon, Ján Manuch, Chris Thachuk: Complexidade de um problema de partição de cadeia sensível a colisões e sua relação com o Oligo Design para síntese de genes. COCOON 2008: 265-275
[2] Henning Fernau, Florin Manea, Robert Mercas e Markus L. Schmid: correspondência de padrões com variáveis: algoritmos rápidos e novos resultados de dureza. STACS 2015: 302-315
[3] Markus L. Schmid: Computando fatorações de seqüência repetitivas e sem igualdade. Theor. Comput. Sci. 618: 42-51 (2016)
[4] Hideo Bannai, Travis Gagie, Shunsuke Inenaga, Juha Kärkkäinen, Dominik Kempa, Marcin Piatkowski, Shiho Sugimoto: A fatoração palindrômica diversificada é NP-completa. Int. J. Found. Comput. Sci. 29 (2): 143-164 (2018)
[5] Abraham Flaxman, Aram Wettroth Harrow, Gregory B. Sorkin: cordas com no máximo muitas subseqüências e substrings distintas. Electr. J. Comb. 11 (1) (2004)
aab|a|b|aa
o que ainda é 4