Ist Regex Golf NP-Complete?


26

Wie in diesem aktuellen XKCD-Strip und diesem aktuellen Blog-Post zu sehenVon Peter Norvig (und einer Slashdot-Geschichte mit letzterem) ist "Regex Golf" (das besser als das Problem der Trennung regulärer Ausdrücke bezeichnet werden könnte) das Rätsel, den kürzestmöglichen regulären Ausdruck zu definieren, der jedes Wort in Satz A und kein Wort in Satz A akzeptiert Set B. Norvigs Beitrag enthält einen Algorithmus zur Generierung eines relativ kurzen Kandidaten. Er merkt an, dass sein Ansatz die Lösung eines NP-vollständigen Set-Cover-Problems beinhaltet. Er weist jedoch auch darauf hin, dass sein Ansatz nicht alle möglichen regulären Ausdrücke berücksichtigt. und natürlich ist er nicht notwendigerweise der einzige Algorithmus, daher kann nicht garantiert werden, dass seine Lösungen optimal sind, und es ist auch möglich, dass ein anderer Algorithmus mit sicherer Polynomzeit äquivalente oder bessere Lösungen findet.

Der Vollständigkeit halber und um zu vermeiden, dass die Optimierungsfrage gelöst werden muss, würde die natürlichste Formulierung für die Trennung regulärer Ausdrücke lauten:

Gibt es bei zwei (endlichen) Mengen und von Zeichenketten über ein Alphabet einen regulären Ausdruck der Länge , der jede Zeichenkette in akzeptiert und jede Zeichenkette in ablehnt ?EINBΣkEINB

Ist etwas über die Komplexität dieses speziellen Trennungsproblems bekannt? (Da ich und als endliche Mengen von Zeichenfolgen angegeben habe, ist der natürliche Größenbegriff für das Problem die Gesamtlänge aller Zeichenfolgen in und ; dies überflutet jeden Beitrag von ). Es scheint sehr mir wahrscheinlich , dass es ist NP-vollständig (und in der Tat würde ich die Reduktion auf eine Art Abdeckung Problem zu sein erwarten) , aber ein paar Recherchen haben nicht aufgedreht etwas besonders nützlich.EINBEINBk


3
Ist es auch in NP? Wie können Sie bei einem regulären Ausdruck überprüfen, ob ein Wort in der beschriebenen Sprache in Polynomialzeit vorliegt? Der Standardansatz - Transformation in NFA, dann DFA und Prüfung - benötigt eine Exponentialzeit in (?). k
Raphael

1
sollte PSPACE-vollständig sein; Siehe (Gramlich, Schnitger, Minimierung von NFAs und regulären Ausdrücken, 2005) unter ggramlich.github.io/Publications/approximationSTACS05Pres.pdf und citeseerx.ist.psu.edu/viewdoc/… (PS: Ich poste dies als Kommentar.) denn eine antwort sollte erklären warum, aber ich habe im moment keine zeit dazu, vielleicht kann jemand anderes die referenz benutzen und erklären wie es funktioniert)
rgrig

1
Für reguläre Ausdrücke im Sinne von TCS liegt das Problem in NP (Ein Zertifikat der Polynomgröße, das in Polynomzeit überprüfbar ist, wäre der reguläre Ausdruck selbst). Es ist (wahrscheinlich) nicht in NP, wenn wir zB PCREs für reguläre Ausdrücke verwenden, da selbst das Testen der Mitgliedschaft NP-schwer ist ( perl.plover.com/NPC/NPC-3SAT.html ).
Mike B.

1
@MikeB .: Und wie genau checkst du die Polynomzeit ein? Hast du den Kommentar von @Raphael gesehen?
Rgrig

5
(1) Sie können einen deterministischen Algorithmus in P ausführen, um die Zugehörigkeit zu NFAs zu testen (beginnen Sie beim Startzustand und merken Sie sich alle Zustände, in denen Sie sich befinden können, nachdem Sie ein Symbol des Wortes verbraucht haben. Erreichen Sie das Ende, und überprüfen Sie, ob Sie mindestens erreicht haben ein Endzustand.) (2) Es kommt auf die Definition des "regulären Ausdrucks" an - verwenden wir den von Informatikern oder den von Programmierern? Erlauben wir nur reguläre Sprachen oder (eine Untergruppe von) kontextsensitiven Sprachen (daher PCREs)?
Mike B.

Antworten:


14

Unter der Annahme der TCS-Variante von Regex ist das Problem in der Tat NP-vollständig.

Wir gehen davon aus, dass unsere Regexes enthalten

  • Briefe von , die zusammenpassen,Σ
  • + , bedeutet Vereinigung,
  • , was Verkettung bedeutet,
  • mit der Bezeichnung Kleene-Star,
  • λ , passend zur leeren Zeichenkette

und sonst nichts. Die Länge eines regulären Ausdrucks ist definiert als die Anzahl der Zeichen aus . Wie im Comic betrachten wir einen regulären Ausdruck, um ein Wort zu finden, wenn es einem Teil des Wortes entspricht. (Das Ändern einer dieser Annahmen sollte nur die Komplexität der folgenden Konstruktion beeinflussen, nicht jedoch das allgemeine Ergebnis.)Σ

Wie in den Kommentaren erläutert, ist es in NP unkompliziert (überprüfen Sie einen RE-Kandidaten, indem Sie ihn in eine NFA übersetzen und dies für alle Wörter von und B ausführen ).EINB

Um die NP-Härte zu zeigen, reduzieren wir die Set-Abdeckung:

Gibt es bei gegebenem Universum und einer Sammlung C von Teilmengen von U eine Menge C 'C der Größe k, so dass that S C ' S = U ist ?UCUCCkSCS=U

Wir übersetzen eine Eingabe für Set Cover in eine für Regex Golf wie folgt:

  • enthält ein Zeichen für jede Teilmenge in C und ein zusätzliches Zeichen (im Folgendenmit x bezeichnet).ΣCx
  • enthält ein Wort für jedes Element e von U . Das Wort besteht genau aus den Zeichen, die Teilmengen in C darstellen , die e enthalten(in beliebiger Reihenfolge).EINeUCe
  • enthält das einzelne Wort x .Bx
  • wird einfach übertragen.k

Diese Reduktion ist offensichtlich in P und die Äquivalenz ist auch ziemlich einfach zu sehen:

  • Wenn eine Lösung für die festgelegte Deckungsinstanz ist, ist der Ausdruck c 1 + + c k eine Lösung für den Ausdruck Golf.c1,,ckc1++ck
  • Ein regulärer Ausdruck, der mit dem leeren Unterwort übereinstimmt, würde mit übereinstimmen . Daher muss jede Regex, die das Golfproblem löst, mindestens einen Buchstaben aus jedem der Wörter in A enthalten . Wenn die Golfinstanz lösbar ist, gibt es daher eine Menge von höchstens k Buchstaben von Σ, so dass jedes Wort in A durch diese Menge von Buchstaben abgedeckt wird. Die entsprechende Menge von Teilmengen aus C ist konstruktionsbedingt eine Lösung für die Mengen-Cover-Instanz.xEINkΣEINC

Sehr schön, lassen Sie mich der Vollständigkeit halber 2 Punkte hinzufügen: (1) Als zusätzliche Annahme bezüglich der Problemspezifikation müssen und B endliche Mengen sein (und alle Elemente sind explizit aufgezählt?). (2) Die Größe des RE-Kandidaten ist in O ( n ) , da a 1 + a 2 + . . . , A iA ist ein gültiger Kandidat mit der Größe in O ( n ) , so dass für jeden größeren k die Antwort trivially wahr ist. EINBO(n)ein1+ein2+...,einichEINO(n)k
Mike B.

1
@Mike B .: (1): Die Endlichkeit von und B ist in der Frage angegeben. In der Komplexitätstheorie ist die vollständige Auflistung die Standardmethode zur Darstellung endlicher Mengen. (2) ist in der Tat ein erforderliches Argument, wenn man den Teil "in NP" rigoros gestalten will. EINB
FrankW
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.