Jak widać na ostatnim pasku XKCD i najnowszym poście na bloguwedług Petera Norviga (i opowiadania Slashdota z tym ostatnim) „regex golf” (który można by lepiej nazwać problemem separacji wyrażeń regularnych) jest zagadką polegającą na zdefiniowaniu najkrótszego możliwego wyrażenia regularnego, które akceptuje każde słowo w zestawie A i nie ma słowa w post B. zestaw Norviga zawiera algorytm generowania rozsądnie krótkiego kandydata, i zauważa, że jego podejście polega na rozwiązaniu problemu NP-Complete Set Cover, ale ostrożnie zaznacza, że jego podejście nie uwzględnia każdego możliwego wyrażenia regularnego, i oczywiście jego niekoniecznie jest jedynym algorytmem, więc nie ma gwarancji, że jego rozwiązania będą optymalne, a także możliwe, że jakiś inny algorytm z czasem wielomianowym znajdzie równoważne lub lepsze rozwiązania.
Ze względu na konkretność i aby uniknąć konieczności rozwiązywania problemu optymalizacji, najbardziej naturalnym sformułowaniem separacji wyrażeń regularnych byłoby:
Biorąc pod uwagę dwa (skończone) zestawy i B ciągów znaków nad pewnym alfabetem Σ , czy istnieje wyrażenie regularne o długości ≤ k, które akceptuje każdy ciąg A i odrzuca każdy ciąg B ?
Czy coś wiadomo na temat złożoności tego konkretnego problemu separacji? (Zauważ, że skoro podałem i B jako skończone zestawy łańcuchów, naturalnym pojęciem rozmiaru problemu są całkowite długości wszystkich łańcuchów w A i B ; to pochłania jakikolwiek wkład z k ). Wydaje mi się bardzo prawdopodobne, że jest kompletny z NP (i faktycznie spodziewałbym się, że redukcja będzie miała jakiś problem z ochroną), ale kilka wyszukiwań nie przyniosło nic szczególnie przydatnego.