正規表現ゴルフはNP-Completeですか?


27

この最近のXKCDストリップ最近のブログ投稿に見られるようにPeter Norvig(および後者を特徴とするSlashdotの物語)から、「regex golf」(正規表現分離問題と呼ばれることもあります)は、セットAのすべての単語を受け入れ、単語を受け入れない最短の正規表現を定義するパズルです。セットB. Norvigの投稿には、適度に短い候補を生成するためのアルゴリズムが含まれており、彼のアプローチはNP完全なSet Cover問題の解決を伴うことに注意しますが、そしてもちろん、彼だけが必ずしもアルゴリズムではないため、彼の解が最適であるとは限りません。また、他の確実な多項式時間アルゴリズムが同等またはより良い解を見つける可能性もあります。

具体性のために、また最適化の問題を解決する必要を避けるために、正規表現分離の最も自然な定式化は次のようになると思います。

2(有限)与えられたセットB、いくつかのアルファベットを超える文字列のΣを、長さの正規表現がありkの中のすべての文字列受け付けAをし、内のすべての文字列を拒否するBはABΣkAB

この特定の分離問題の複雑さについて何か知られていますか?(Bを文字列の有限セットとして指定しているため、問題のサイズの自然な概念はABのすべての文字列の合計の長さであることに注意してください。これはkからの寄与を圧倒します)。それ NP完全である可能性が非常に高いと思われますが(実際、何らかのカバー問題への削減が期待されます)、いくつかの検索は特に有用なものを見つけていません。ABABk


4
NPでもですか?正規表現が与えられた場合、多項式時間で記述された言語に単語があるかどうかをどのように確認しますか?標準的なアプローチ-NFAへの変換、DFAおよびチェック-は(?)の指数関数的な時間を要します。k
ラファエル

1
PSPACE完全でなければなりません。で(Gramlich、シュニットガー、最小化のNFAと正規表現、2005)を参照してくださいggramlich.github.io/Publications/approximationSTACS05Pres.pdfciteseerx.ist.psu.edu/viewdoc/... (PS:私はコメントとしてこれを掲示しています、答えは理由を説明する必要がありますが、私は現時点ではそうする時間がありませんので;)おそらく他の誰かが、基準を使用して、それがどのように動作するかを説明することができます
rgrig

1
TCSで理解される正規表現の場合、問題はNPにあります(多項式サイズで多項式時間で検証可能な証明書は、正規表現自体になります)。たとえば、正規表現にPCREを使用する場合、NPには含まれません。これは、メンバーシップをテストすることさえもNPハード(perl.plover.com/NPC/NPC-3SAT.html)であるためです。
マイクB。14年

1
@MikeB .:多項式時間をどのように正確にチェックしますか?@Raphaelによるコメントを見ましたか?
rgrig 14年

5
(1)Pで決定論的アルゴリズムを実行して、NFAのメンバーシップをテストできます(start-stateで開始し、単語のシンボルを消費した後、可能な状態をすべて記憶します。最後に到達して、少なくとも(2)「正規表現」の定義に依存します。コンピューター科学者のプログラマーを使用しますか、それともプログラマーのプログラマーを使用しますか?通常の言語のみ、または(一部の)状況依存言語(したがってPCRE)のみを許可しますか?
マイクB.

回答:


15

正規表現のTCSバリアントを仮定すると、問題は実際にNP完全です。

私たちの正規表現には

  • からの文字、自分自身に一致、Σ
  • 、組合を示す、+
  • 、連結を示し、
  • 、Kleene-Starを表し、
  • 、空の文字列に一致λ

何もありません。正規表現の長さは、からの文字数として定義されます。コミックストリップのように、単語のサブストリングに一致する場合、正規表現は単語に一致すると見なします。(これらの仮定のいずれかを変更すると、以下の構成の複雑さにのみ影響し、一般的な結果には影響しません。)Σ

コメントで説明されているように、NPにあることは簡単です(候補REをNFAに変換し、それをおよびBからすべての単語で実行することで検証します)。AB

NP硬度を示すために、セットカバーを減らします。

宇宙所与及び収集CのサブセットのU、セットがあるC 'CサイズのKよううんCうんCCkSCS=うん

Setカバーの入力を正規表現ゴルフの入力に次のように変換します。

  • は、 Cのサブセットごとに1つの文字と1つの追加の文字(以下では xと表示)が含まれます。ΣCバツ
  • には Uの各要素 eに対して1つの単語が含まれます。単語は、 eを含む Cのサブセットを表す文字で構成されます(任意の順序で)。AeうんCe
  • には単一の単語 xが含まれます。Bバツ
  • は単純に引き継がれます。k

この減少は明らかにPであり、等価性も非常に簡単です。

  • 場合セットカバー、例えば溶液、正規表現であり、C 1c1,,ck正規表現ゴルフを解決します。c1++ck
  • 空のサブワードに一致する正規表現は一致します。したがって、ゴルフの問題を解決する正規表現には、Aの各単語から少なくとも1つの文字を含める必要があります。したがって、ゴルフインスタンスが解決可能な場合、Σから最大でk個の文字セットが存在するため、Aの各単語はこの文字セットでカバーされます。構築により、対応するサブセットのセットxAkΣA、セットカバーインスタンスのソリューションです。C

1
非常に素晴らしい、完全を期すために2点追加します:(1)問題の仕様に関する追加の仮定として、Bは有限集合でなければなりません(そして、すべての要素は明示的に列挙されますか?)(2)RE候補のサイズはOですn a 1 + a 2 +からIAは中サイズで有効な候補であるO N ので、すべての大きいため、K答えは自明に真です。ABOna1+a2+aAOnk
マイクB。14年

2
@Mike B .:(1):Bの有限性が質問に示されています。複雑性理論では、完全なリストは有限集合を表すデフォルトの方法です。(2)「NP内」の部分を厳密にしたい場合、実際に必須の引数です。AB
FrankW 14年
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.