この最近のXKCDストリップと最近のブログ投稿に見られるようにPeter Norvig(および後者を特徴とするSlashdotの物語)から、「regex golf」(正規表現分離問題と呼ばれることもあります)は、セットAのすべての単語を受け入れ、単語を受け入れない最短の正規表現を定義するパズルです。セットB. Norvigの投稿には、適度に短い候補を生成するためのアルゴリズムが含まれており、彼のアプローチはNP完全なSet Cover問題の解決を伴うことに注意しますが、そしてもちろん、彼だけが必ずしもアルゴリズムではないため、彼の解が最適であるとは限りません。また、他の確実な多項式時間アルゴリズムが同等またはより良い解を見つける可能性もあります。
具体性のために、また最適化の問題を解決する必要を避けるために、正規表現分離の最も自然な定式化は次のようになると思います。
2(有限)与えられたセットとB、いくつかのアルファベットを超える文字列のΣを、長さの正規表現があり≤ kの中のすべての文字列受け付けAをし、内のすべての文字列を拒否するBは?
この特定の分離問題の複雑さについて何か知られていますか?(とBを文字列の有限セットとして指定しているため、問題のサイズの自然な概念はAとBのすべての文字列の合計の長さであることに注意してください。これはkからの寄与を圧倒します)。それは NP完全である可能性が非常に高いと思われますが(実際、何らかのカバー問題への削減が期待されます)、いくつかの検索は特に有用なものを見つけていません。