(Vielen Dank an Gilad Barkan (גלעד ברקן), der mich auf diese Diskussion aufmerksam gemacht hat.)
Lassen Sie mich meine Gedanken zu diesem Problem aus rein theoretischer Sicht teilen (beachten Sie, dass ich anstelle von "Unterwort" auch "Faktor" verwende).
Ich denke, eine ausreichend formale Definition des Problems (oder der Probleme), die hier betrachtet wird, ist die folgende:
Finden Sie bei einem gegebenen Wort w die Wörter u_1, u_2, ..., u_k so, dass
- u_i! = u_j für jedes i, j mit 1 <= i <j <= k und
- u_1 u_2 ... u_k = w
Maximierungsvariante (wir wollen viele u_i): maximiere k
Minimierungsvariante (wir wollen kurz u_i): minimiere max {| u_i | : 1 <= i <= k}
Diese Probleme werden zu Entscheidungsproblemen, indem zusätzlich eine Grenze B angegeben wird, die je nachdem, ob es sich um die Variante "Viele Faktoren" oder die Variante "Kurzfaktoren" handelt, eine Untergrenze für k ist (wir wollen mindestens B. Faktoren) oder eine Obergrenze für max {| u_i | : 1 <= i <= k} (wir wollen höchstens Längenfaktoren B). Um über NP-Härte zu sprechen, müssen wir über Entscheidungsprobleme sprechen.
Verwenden wir die Begriffe SF für die "Short Factors" -Variante und MF für die "Many Factors" -Variante. Insbesondere, und dies ist ein wirklich entscheidender Punkt, werden die Probleme so definiert, dass wir ein Wort über ein Alphabet erhalten, das in keiner Weise eingeschränkt ist. Die Problemversion, bei der wir a priori wissen, dass wir nur Eingabewörter über das Alphabet {a, b, c, d} erhalten, ist ein anderes Problem! Die NP-Härte überträgt sich nicht automatisch von der "uneingeschränkten" auf die "feste Alphabet" -Variante (letztere könnte einfacher sein).
Sowohl SF als auch MF sind NP-vollständige Probleme. Dies wurde in [1, 1b] bzw. [2] gezeigt (wie Gilad bereits betont hat). Wenn ich die (vielleicht auch) informelle Problemdefinition hier zu Beginn dieser Diskussion richtig verstehe, dann ist das Problem dieser Diskussion genau das Problem MF. Es wird zunächst nicht erwähnt, dass die Wörter nur aus einem festen Alphabet stammen dürfen. Später wird davon ausgegangen, dass nur Kleinbuchstaben verwendet werden. Wenn dies bedeutet, dass wir nur Wörter über dem festen Alphabet {a, b, c, ..., z} betrachten, würde sich dies tatsächlich in Bezug auf die NP-Härte stark ändern.
Ein genauerer Blick zeigt einige Unterschiede in der Komplexität von SF und MF:
- Papier [1, 1b] zeigt, dass SF NP-vollständig bleibt, wenn wir das Alphabet auf ein binäres fixieren (genauer gesagt: Wenn wir ein Wort w über die Buchstaben a und b und ein gebundenes B erhalten, können wir es in verschiedene Längenfaktoren bei faktorisieren die meisten B?).
- Papier [1, 1b] zeigt, dass SF NP-vollständig bleibt, wenn wir die Grenze B = 2 festlegen (genauer: Wenn wir ein Wort w erhalten, können wir es in unterschiedliche Längenfaktoren von höchstens 2 faktorisieren?).
- Papier [3] zeigt, dass SF sowohl in Polynomzeit gelöst werden kann, wenn sowohl das Alphabet als auch das gebundene B festgelegt sind.
- Papier [2] zeigt, dass MF NP-vollständig ist, aber nur, wenn das Alphabet nicht a priori eingeschränkt oder festgelegt ist! Insbesondere wird die Frage nicht beantwortet, ob das Problem NP-vollständig ist, wenn wir nur Eingabewörter über ein festes Alphabet betrachten (wie es in praktischen Einstellungen üblich ist).
- Papier [3] zeigt, dass MF in Polynomzeit gelöst werden kann, wenn die Eingabegrenzen B wieder durch eine Konstante begrenzt sind, dh die Problemeingabe ist ein Wort und eine Grenze B aus {1, 2, ..., K} , wobei K eine feste Konstante ist.
Einige Kommentare zu diesem Ergebnis: In (1) und (2) ist intuitiv klar, dass, wenn das Alphabet binär ist, die Grenze B nicht ebenfalls festgelegt werden kann, um das Problem SF zu erschweren. Umgekehrt bedeutet das Festlegen von B = 2, dass die Alphabetgröße ziemlich groß werden muss, um schwierige Instanzen zu erzeugen. Infolgedessen ist (3) eher trivial (tatsächlich sagt [3] etwas mehr: Wir können es dann in der Laufzeit nicht nur polynomisch lösen, sondern auch | w | ^ 2 mal einen Faktor, der nur von der Alphabetgröße abhängt und gebunden B). (5) ist auch nicht schwierig: Wenn unser Wort im Vergleich zu B lang ist, können wir die gewünschte Faktorisierung erhalten, indem wir einfach in Faktoren unterschiedlicher Länge aufteilen. Wenn nicht, können wir alle Möglichkeiten brutal erzwingen, was nur in B exponentiell ist, was in diesem Fall als Konstante angenommen wird.
Das Bild, das wir haben, ist das folgende: SF scheint schwieriger zu sein, weil wir selbst für feste Alphabete oder für eine feste Grenze B eine Härte haben. Das Problem MF wird andererseits mehrfach lösbar, wenn die Grenze fest ist (in diesbezüglich ist es einfacher als SF), während die entsprechende Frage zur Alphabetgröße offen ist. MF ist also etwas weniger komplex als SF, auch wenn sich herausstellt, dass MF für feste Alphabete ebenfalls NP-vollständig ist. Wenn jedoch gezeigt werden kann, dass MF in Poly-Zeit für feste Alphabete gelöst werden kann, ist MF viel einfacher als SF ... weil der eine Fall, für den es schwierig ist, etwas künstlich ist (unbegrenztes Alphabet!). .
Ich habe einige Anstrengungen unternommen, um den Fall von MF mit begrenztem Alphabet zu lösen, aber ich konnte es nicht regeln und habe seitdem aufgehört, daran zu arbeiten. Ich glaube nicht, dass andere Forscher sich sehr bemüht haben, es zu lösen (dies ist also nicht eines dieser sehr schwierigen offenen Probleme, viele Menschen haben es bereits versucht und sind gescheitert; ich halte es irgendwie für machbar). Ich würde vermuten, dass es auch für feste Alphabete NP-schwer ist, aber vielleicht ist die Reduzierung so kompliziert, dass Sie so etwas wie "MF ist schwer für Alphabete der Größe 35 oder größer" oder so etwas bekommen würden, was auch nicht besonders schön wäre .
In Bezug auf weitere Literatur kenne ich die Arbeit [4], in der das Problem der Aufteilung eines Wortes w in verschiedene Faktoren u_1, u_2, ..., u_k betrachtet wird, die alle Palindrome sind, was ebenfalls NP-vollständig ist.
Ich warf einen kurzen Blick auf Papier [5], auf das Gilad hingewiesen hatte. Es scheint jedoch eine andere Einstellung zu berücksichtigen. In diesem Artikel interessieren sich die Autoren für die kombinatorische Frage, wie viele verschiedene Teilsequenzen oder Unterwörter in einem bestimmten Wort enthalten sein können, aber diese können sich überschneiden. Zum Beispiel enthält aaabaab 20 verschiedene Unterwörter a, b, aa, ab, ba, bb, aaa, aab, aba, baa, aaab, aaba, abaa, baab, aaaba, aabaa, abaab, aabaab, aaabaa, aaabaab (vielleicht ich) falsch gezählt, aber Sie bekommen die Idee). Einige von ihnen haben nur ein Vorkommen, wie baa, einige mehrere, wie aa. Auf jeden Fall ist die Frage nicht, wie wir das Wort irgendwie aufteilen können, um viele verschiedene Faktoren zu erhalten, da dies bedeutet, dass jedes einzelne Symbol zu genau einem Faktor beiträgt.
In Bezug auf praktische Lösungen für diese Art von Problemen (denken Sie daran, dass ich ein Theoretiker bin, nehmen Sie dies also mit Salzkorn):
Meines Wissens gibt es keine theoretischen Untergrenzen (wie die NP-Härte), die es ausschließen würden, MF in Polynomzeit zu lösen, wenn wir nur Eingabewörter über ein festes Alphabet betrachten. Es gibt jedoch eine Einschränkung: Wenn Sie einen Poly-Time-Algorithmus erhalten, sollte dieser exponentiell in der Anzahl der Symbole aus dem festen Alphabet ausgeführt werden (oder in einer Funktion davon exponentiell)! Andernfalls wäre es auch ein Polynomzeitalgorithmus für den Fall unbegrenzter Alphabete. Als Theoretiker würde ich also nach algorithmischen Aufgaben suchen, die nur dann in der Zeit exponentiell berechnet werden können, wenn die Anzahl der Symbole und irgendwie dazu beitragen, einen Algorithmus für MF zu entwickeln. Andererseits ist es wahrscheinlich, dass ein solcher Algorithmus nicht existiert und MF im Fall des festen Alphabets auch NP-hart ist.
Wenn Sie an praktischen Lösungen interessiert sind, kann es hilfreich sein, die Lösung zu approximieren. Eine Faktorisierung zu erhalten, die garantiert nur halb so groß ist wie das Optimum im schlimmsten Fall, wäre also nicht schlecht.
Interessant wären auch Heuristiken, die kein nachweisbares Näherungsverhältnis liefern, aber in der Praxis gut funktionieren.
Das Umwandeln der Probleminstanzen in SAT- oder ILP-Instanzen sollte nicht zu schwierig sein. Anschließend können Sie einen SAT- oder ILP-Solver ausführen, um sogar optimale Lösungen zu erhalten.
Meine persönliche Meinung ist, dass, obwohl nicht bekannt ist, ob der Fall des MF mit festem Alphabet NP-schwer ist, es genügend theoretische Erkenntnisse gibt, die darauf hindeuten, dass das Problem schwer genug ist, so dass es gerechtfertigt ist, nach heuristischen Lösungen usw. zu suchen arbeiten gut in einer praktischen Umgebung.
Literaturverzeichnis:
[1] Anne Condon, Ján Manuch und Chris Thachuk: Die Komplexität der String-Partitionierung. J. Discrete Algorithms 32: 24 & ndash; 43 (2015)
[1b] Anne Condon, Ján Manuch und Chris Thachuk: Komplexität eines kollisionsbewussten String-Partitionsproblems und seine Beziehung zum Oligo-Design für die Gensynthese. COCOON 2008: 265 & ndash; 275
[2] Henning Fernau, Florin Manea, Markus L. Schmid, Robert Mercas: Mustervergleich mit Variablen: Schnelle Algorithmen und neue Härteergebnisse. STACS 2015: 302–315
[3] Markus L. Schmid: Berechnung gleichheitsfreier und sich wiederholender String-Faktorisierungen. Theor. Comput. Sci. 618: 42-51 (2016)
[4] Hideo Bannai, Travis Gagie, Shunsuke Inenaga, Juha Kärkkäinen, Dominik Kempa, Marcin Piatkowski und Shiho Sugimoto: Die vielfältige palindromische Faktorisierung ist NP-vollständig. Int. J. gefunden. Comput. Sci. 29 (2): 143 & ndash; 164 (2018)
[5] Abraham Flaxman, Aram Wettroth Harrow, Gregory B. Sorkin: Saiten mit maximal vielen unterschiedlichen Folgen und Teilzeichenfolgen. Electr. J. Comb. 11 (1) (2004)
aab|a|b|aa
noch 4