(Wielkie podziękowania dla Gilada Barkana (גלעד ברקן) za poinformowanie mnie o tej dyskusji.)
Pozwólcie, że podzielę się przemyśleniami na temat tego problemu z czysto teoretycznego punktu widzenia (zauważ, że używam również „czynnik” zamiast „podsłówka”).
Uważam, że rozważana tutaj wystarczająco formalna definicja problemu (lub problemów) jest następująca:
Biorąc pod uwagę słowo w, znajdź słowa u_1, u_2, ..., u_k takie, że
- u_i! = u_j dla każdego i, j z 1 <= i <j <= k i
- u_1 u_2 ... u_k = w
Wariant maksymalizacji (chcemy wielu u_i): maksymalizuj k
Wariant minimalizacji (chcemy krótkiego u_i): minimalizuj max {| u_i | : 1 <= i <= k}
Problemy te stają się problemami decyzyjnymi poprzez dodatkowe ograniczenie B, które zgodnie z tym, czy mówimy o wariancie „wielu czynników”, czy wariancie „czynników krótkich”, jest dolną granicą k (chcemy co najmniej B Czynniki) lub górna granica maks. {| u_i | : 1 <= i <= k} (chcemy odpowiednio współczynników długości co najwyżej B). Aby mówić o twardości NP, musimy mówić o problemach decyzyjnych.
Użyjmy wyrażeń SF dla wariantu „krótkich czynników” i MF dla wariantu „wielu czynników”. W szczególności, i to jest naprawdę kluczowa kwestia, problemy są zdefiniowane w taki sposób, że uzyskujemy słowo nad jakimś alfabetem, które nie jest w żaden sposób ograniczone. Wersja problemowa, w której wiemy z góry, że otrzymujemy tylko słowa wejściowe, powiedzmy, że alfabet {a, b, c, d} to inny problem! Twardość NP nie przenosi się automatycznie z „nieograniczonego” na wariant „ustalonego alfabetu” (ten drugi może być prostszy).
Zarówno SF, jak i MF są problemami NP-zupełnymi. Pokazano to odpowiednio w [1, 1b] i [2] (jak już wskazał Gilad). Jeśli dobrze rozumiem (być może też) nieformalną definicję problemu tutaj na początku tej dyskusji, to problemem tej dyskusji jest właśnie problem MF. Początkowo nie wspomniano, że wyrazy są ograniczone do jakiegoś stałego alfabetu, później mówi się, że możemy założyć, że używane są tylko małe litery. Jeśli to oznacza, że bierzemy pod uwagę tylko słowa nad ustalonym alfabetem {a, b, c, ..., z}, to zmieniłoby się bardzo dużo pod względem twardości NP.
Bliższe spojrzenie ujawnia pewne różnice w złożoności SF i MF:
- artykuł [1, 1b] pokazuje, że SF pozostaje NP-kompletne, jeśli poprawimy alfabet na binarny (a dokładniej: otrzymując słowo w nad literami aib oraz związaną B, czy możemy je rozłożyć na różne czynniki długości przy najwięcej B?).
- artykuł [1, 1b] pokazuje, że SF pozostaje NP-kompletne, jeśli naprawimy związany B = 2 (a ściślej: otrzymując słowo w, czy możemy go podzielić na różne czynniki długości co najwyżej 2?).
- artykuł [3] pokazuje, że jeśli zarówno alfabet, jak i związany B są stałe, to SF można rozwiązać w czasie wielomianowym.
- artykuł [2] pokazuje, że MF jest kompletny NP, ale tylko wtedy, gdy alfabet nie jest ograniczony ani ustalony a priori! W szczególności nie odpowiada na pytanie, czy problem jest NP-zupełny, jeśli weźmiemy pod uwagę tylko słowa wpisane w stosunku do jakiegoś ustalonego alfabetu (jak to zwykle ma miejsce w praktycznych ustawieniach).
- artykuł [3] pokazuje, że MF można rozwiązać w czasie wielomianowym, jeśli granice wejściowe B są ponownie górne ograniczone pewną stałą, tzn. wejściowym problemem jest słowo i granica B z {1, 2, ..., K} , gdzie K jest pewną stałą stałą.
Kilka komentarzy na temat tych wyników: Wrt (1) i (2), intuicyjnie jest jasne, że jeśli alfabet jest binarny, to w celu utrudnienia SF problem związany z B również nie może zostać naprawiony. I odwrotnie, ustalenie B = 2 oznacza, że rozmiar alfabetu musi być dość duży, aby stworzyć trudne przypadki. W konsekwencji (3) jest dość trywialny (w rzeczywistości [3] mówi nieco więcej: możemy go rozwiązać w czasie wykonywania nie tylko wielomianu, ale także | w | ^ 2 razy czynnik, który zależy tylko od wielkości alfabetu i związany B). (5) również nie jest trudne: jeśli nasze słowo jest długie w porównaniu do B, możemy uzyskać pożądaną faktoryzację, po prostu dzieląc na czynniki o różnych długościach. Jeśli nie, to możemy zastosować brutalną siłę wszystkich możliwości, która jest wykładnicza tylko w B, który w tym przypadku przyjmuje się za stały.
Obraz, który mamy, jest następujący: SF wydaje się trudniejszy, ponieważ mamy twardość nawet dla ustalonych alfabetów lub dla ustalonego wiązania B. Z drugiej strony problem MF staje się rozwiązywalny w czasie wielokrotnym, jeśli granica jest ustalona (w pod tym względem jest łatwiej niż SF), podczas gdy odpowiadające pytanie o rozmiar alfabetu jest otwarte. Zatem MF jest nieco mniej skomplikowane niż SF, nawet jeśli okaże się, że MF dla stałych alfabetów jest również NP-zupełny. Jeśli jednak można wykazać, że MF można rozwiązać dla stałych alfabetów w czasie wielozadaniowym, wówczas MF jest znacznie łatwiejsze niż SF ... ponieważ jeden przypadek, dla którego jest trudny, jest nieco sztuczny (nieograniczony alfabet!) .
Włożyłem trochę wysiłku w rozwiązanie problemu MF z ograniczonym alfabetem, ale nie byłem w stanie go rozwiązać i od tego czasu przestałem nad nim pracować. Nie wierzę, że inni badacze bardzo starali się go rozwiązać (więc nie jest to jeden z tych bardzo trudnych, otwartych problemów, wiele osób już próbowało i poniosło porażkę; uważam, że jest to jakoś wykonalne). Domyślam się, że jest to również trudne dla NP dla stałych alfabetów, ale może redukcja jest tak skomplikowana, że można uzyskać coś takiego jak „MF jest trudny dla alfabetów o rozmiarze 35 lub większym” lub coś, co nie byłoby super miłe .
Jeśli chodzi o dalszą literaturę, znam pracę [4], która rozważa problem podziału słowa w na odrębne czynniki u_1, u_2, ..., u_k, które wszystkie są palindromami, co również jest NP-zupełne.
Rzuciłem okiem na papier [5], na co zwrócił uwagę Gilad. Wydaje się jednak, że rozważa inne ustawienie. W tym artykule autorzy są zainteresowani kombinatoryjnym pytaniem, ile różnych podsekwencji lub pod słów może zawierać jedno słowo, ale mogą się one nakładać. Na przykład aaabaab zawiera 20 różnych podtytułów a, b, aa, ab, ba, bb, aaa, aab, aba, baa, aaab, aaba, abaa, baab, aaaba, aabaa, abaab, aabaab, aaabaa, aaabaab (może ja przeliczyłem, ale masz pomysł). Niektóre z nich mają tylko jedno wystąpienie, jak baa, inne kilka, jak aa. W każdym razie nie chodzi o to, w jaki sposób możemy jakoś podzielić słowo, aby uzyskać wiele różnych czynników, ponieważ oznacza to, że każdy pojedynczy symbol przyczynia się do dokładnie jednego czynnika.
Jeśli chodzi o praktyczne rozwiązania tego rodzaju problemów (pamiętaj, że jestem teoretykiem, więc weź to z odrobiną soli):
Według mojej wiedzy, nie ma teoretycznych dolnych granic (takich jak twardość NP), które wykluczałyby rozwiązanie MF w czasie wielomianowym, jeśli weźmiemy pod uwagę tylko słowa wpisane na ustalonym alfabecie. Jest jednak jedno zastrzeżenie: jeśli otrzymasz algorytm wielogodzinny, powinien on działać wykładniczo w liczbie symboli ze stałego alfabetu (lub wykładniczo w niektórych funkcjach tego)! W przeciwnym razie byłby to również algorytm wielomianowy w przypadku nieograniczonych alfabetów. Będąc teoretykiem, szukałbym zadań algorytmicznych, które można by obliczyć w czasie wykładniczym, tylko jeśli liczba symboli i które w jakiś sposób pomagają w opracowaniu algorytmu dla MF. Z drugiej strony jest prawdopodobne, że taki algorytm nie istnieje, a MF jest również NP-twardy w przypadku stałego alfabetu.
Jeśli interesują Cię praktyczne rozwiązania, pomocne może być przybliżenie rozwiązania. Tak więc uzyskanie faktoryzacji, które są gwarantowane tylko w połowie tak duże, jak optymalne w najgorszym przypadku, nie byłoby takie złe.
Interesujące wydaje się również heurystyka, która nie daje możliwego do udowodnienia współczynnika przybliżenia, ale działa dobrze w praktycznym otoczeniu.
Przekształcanie instancji problemowych w instancje SAT lub ILP nie powinno być zbyt trudne, a następnie możesz uruchomić SAT lub ILP-Solver, aby uzyskać nawet optymalne rozwiązania.
Moim osobistym zdaniem jest to, że chociaż nie wiadomo, czy przypadek MF z ustalonym alfabetem jest trudny do NP, istnieje wystarczająco dużo teoretycznych spostrzeżeń, które sugerują, że problem jest na tyle trudny, że uzasadnione jest poszukiwanie rozwiązań heurystycznych itp., Które działają dobrze w praktycznych warunkach.
Bibliografia:
[1] Anne Condon, Ján Manuch, Chris Thachuk: Złożoność partycjonowania łańcucha. J. Discrete Al Algorytmy 32: 24-43 (2015)
[1b] Anne Condon, Ján Manuch, Chris Thachuk: Złożoność świadomego kolizji problemu rozdziału struny i jego związek z projektem Oligo do syntezy genów. COCOON 2008: 265–275
[2] Henning Fernau, Florin Manea, Robert Mercas, Markus L. Schmid: Dopasowywanie wzorców ze zmiennymi: szybkie algorytmy i nowe wyniki twardości. STACS 2015: 302–315
[3] Markus L. Schmid: Obliczanie wolnych od równości i powtarzalnych faktoryzacji ciągów. Teoria Comput. Sci. 618: 42–51 (2016)
[4] Hideo Bannai, Travis Gagie, Shunsuke Inenaga, Juha Kärkkäinen, Dominik Kempa, Marcin Piatkowski, Shiho Sugimoto: Zróżnicowane faktowanie palindromiczne jest zakończone NP. Int. J. Znaleziono. Comput. Sci. 29 (2): 143–164 (2018)
[5] Abraham Flaxman, Aram Wettroth Harrow, Gregory B. Sorkin: Struny z maksymalnie wieloma odrębnymi podsekwencjami i podciągami. Electr. J. Comb. 11 (1) (2004)
aab|a|b|aa
jest to nadal 4