総当たり検索を使用せずに2つの単語を分離する最小のDFAを見つけますか?


23

2つの文字列xとyが与えられた場合、xを受け入れ、yを拒否する最小サイズのDFAを作成します。これを行う1つの方法は、ブルートフォース検索です。DFAの最小値から列挙します。xを受け入れ、yを拒否するDFAが見つかるまで、各DFAを試します。

xを受け入れ、yを拒否する最小サイズのDFAを見つけるまたは構築する他の既知の方法があるかどうかを知りたい。言い換えれば、ブルートフォース検索に勝てるでしょうか?

より詳しく:

(1)アルゴリズムは、最小サイズに近いDFAではなく、最小サイズのDFAを見つける必要があります。

(2)最小DFAの大きさを知りたいだけではありません。

(3)ここでは、2つの文字列xとyがある場合にのみ焦点を当てています。


編集

興味のある読者のための追加情報:

仮定及び最大でも長さのバイナリ文字列である。最大状態でを受け入れ、を拒否するDFAが存在することは既知の結果です。バイナリアルファベットと最大で状態の約 DFA があることに注意してください。したがって、ブルートフォースアプローチでは、を超えるDFA を列挙する必要はありません。したがって、ブルートフォースアプローチは時間よりも長くかかることはありません。、Y nがxはyとxynxyのnnnnのnnのnnnnn

参考になったスライド:https : //cs.uwaterloo.ca/~shallit/Talks/sep2.pdf


2
@AndrásSalamon区別されるセットがそれぞれ1つの文字列のみで構成されている場合、NP完全ですか?これはかなり扱いやすいはずだと感じています。
ムム

6
@mhum 2つの文字列を分離する多くの異なる標準言語があるという問題— DFA最小化は、これらの言語のいずれかに対して最適なオートマトンを見つけますが、他の分離言語のオートマトンと比較することはありません。
デビッドエップスタイン

4
場合yが長さの大きい方と異なる長さであるN迅速に有するDFA見つけ、それは容易であるO ログN それらを分離状態:ちょうど長さのサイクル使用Ppは分裂しないが| x | | y | 。検索のpを試みることによって2 3 5 ...あなたは適切な見つけるまで順番にPを。場合のxyは、同じ長さ、次いで、OxynO(logn)pp|x||y|p2,3,5,pxyRobsonの構築は、1996年の論文で、サイズOn)の検索で見つけることができる単純なマシンを提供します。どちらの構造も最小のDFAであるとは限りません。O(n)O(n)
ジェフリーシャリット

3
上にリンクされているShallitのメモには、分離問題の最悪のケースはアルファベットがバイナリであるという有用な観察が含まれています:大きなアルファベットを2つの入力単語を区別する2つのサブセットに分割し、処理するバイナリオートマトンを検索することは常に可能です1つのサブセットの文字を0として、もう1つのサブセットの文字を1として。しかし、最小の分離オートマトンを求める場合、これは役に立たないようです。元のアルファベットの追加情報を使用して、バイナリアルファベットへのマッピングよりも優れた機能を発揮できる可能性があるためです。
デビッドエップシュタイン

3
インセットとアウトセットのサイズが1に等しいこの他の最近の質問の特殊なケース。インワードとアウトワードを与えられた最小有限オートマトン。その答えは、いくつかの発見的手法を含むいくつかの学習文献をリストしています。
vzn

回答:


9

実際にこれを行う必要がある場合は、SATソルバーを使用します。

xを受け入れ、yを拒否する状態のDFAがあるかどうかの問題は、SATインスタンスとして簡単に表現できます。たとえば、1つの方法は、2 k 2のブール変数を持つことです。入力ビットbで DFAが状態sから状態tに遷移する場合、z s b tはtrueです。これはDFAであることを強制するためにいくつかの句を追加し、いくつかの変数との句は、それが受け入れることを強制するために、Xと不良yはkxy2k2zs,b,tstbxy

今すぐにバイナリ検索を使用するの最小見つけるために、kのこの種のDFAが存在するようにします。関連する問題に関する論文で私が読んだものに基づいて、これは実際には合理的に効果的であると期待します。kk


これをSATとして他のエンコードも可能です。たとえば、トレースエンコーディングを使用できます。

  • 場合、長さのあるメートル、あなたが追加することができますメートルLG k個のブール変数:LET S 0sは1... S 、Mの入力にトラバース状態のシーケンスであるX、およびそれぞれを表す、私が使用してLG kはブール変数を。xmmlgks0,s1,,smxsilgk

  • ここで、x i = x jであるようなごとに、s i 1 = s j 1という制約があります。i,jxi=xjsi1=sj1si=sj

  • 次に、処理するために、これを延ばす:せ、T 0... T n個の入力にトラバース状態のシーケンスであるY、および各表現のT jを用いて、LG Kブール変数。y i = y jであるようなi jごとに、t i 1 = t j 1という制約を追加します。yt0,,tnytjlgki,jyi=yjti1=tj1ti=tj

  • 同様に、x i = y jである各に対して、s i 1 = t j 1という制約を追加します。i,jxi=yjsi1=tj1si=tj

  • 両方のトレースは同じ開始点から開始する必要があるため、(WLOGではs 0 = t 0 = 0を要求できます)という要件を追加します。s0=t0s0=t0=0

  • DFAでのみ使用することを確実にするためにの状態を、必要とする0 sのI < K0 T J < kのすべてのためのJk0si<k0tj<ki,j

  • 最後に、が受け入れられ、yが拒否されるという要件をエンコードするには、s mt nであることを要求します。xysmtn

これらの要件はすべて、SAT句としてエンコードできます。

前と同様に、バイナリ検索を使用して、そのようなDFAが存在する最小のkを見つけます。kk


3
問題に特定の対称性があり、ソルバーによって認識されている場合、これは実際にブルートフォース検索よりも優れていますが、現在それらを特定/分離するのは難しい場合があります(人間または機械のいずれか)。また、充足可能性モジュロ理論の新しい/関連する「テクノロジー」と回答セットプログラミングもあり、その一部は「組み込み」グラフ述語を持っているか、その定義をサポートできます。
vzn
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.