すべての位置で異なる長さ 2つの単語の連結を受け入れる最小のNFA


7

ましょうkN

私は、インデックスごとに異なる長さkの 2つの単語の連結言語用の小さなNFAビルドを探していkます。つまり、

Lk={uvΣ:|u|=|v|=ki,uivi}

kが固定されているため、|Lk|=(|Σ|(|Σ|1))kであり、有限言語として規則的であることに注意してください。

言語の自明なDFAには | \ Sigma |が含まれています \ k +1の状態を選択し、最初のk文字の間に見た文字を「記憶」しますが、k = o(| \ Sigma |)の場合、大幅に小さいNFAを作成できます。k(|Σ|k)+1kk=o(|Σ|)

そのための「単純な」NFAのサイズはO(22k)(より正確には、O(k2log|Σ|22k+O(log2k))):

  1. (|Σ|,2k) -universal set(すなわち、一連のベクトル\ mathcal V \ subseteq \ {0,1 \} ^ {| \ Sigma |}を取り、V{0,1}|Σ|すべてのベクトルに対してu{0,1}2k2kインデックスの場合、v_ {| I} = uのようなベクトルv \ in \ mathcal Vが存在します。つまり、vでこれらのkインデックスのみを見ると、uが見つかります)。サイズO ^ *(2 ^ {2k})のそのようなファミリは既知です。vVv|I=ukvuO(22k)

    各ベクトルvを関数Σ{0,1}v(σi)=1vi=1ます。ここで、v(\ sigma_i)=1⟺v_i= 1です。

  1. 次のようにNFAを作成します。

    1. 開始状態から、任意の新しい状態への遷移を作成します。この状態をます。q0ϵvVqv

    2. 各から、最初の文字がによって0にマッピングされ、その後の文字がによって1にマッピングされるすべての単語を受け入れる状態のパスを構築します。qvkvkv

基本的には、ユニバーサルセットを使用すると、最初のシンボルに表示できる文字を残りの文字から分割でき、対応するベクトルが必要になるため、言語のすべての単語を取得できます。それを正しく分割するkvV

だから質問は:

の最小NFAのサイズは?L

この構造は最適ですか?

このようなオートマトンのサイズを証明できる下限は何ですか?


多少関連するDFAからの最小NFAの計算 tcs.se
vzn 14

1
@vznに感謝します。実際、最小化が解決可能である場合、この質問は役に立たなくなります。残念ながら、それはPSPACEで完全なため、興味深い言語用の小さなNFAを構築するために懸命に努力する必要があります。DFANFA
RB 14

それがPTimeである場合、なぜそれは「役に立たない」と言うのですか?私にとってそれはそれのための効率的なアルゴリズムがあることを意味するだけです。とにかく、これはむしろ抽象的/理論的(研究/ 理論的コンピュータサイエンスに照らして)のようですが、bkg /動機/アプリケーションが多いのでしょうか
vzn 14

@vzn-この言語は、パッキング問題のファミリ用にパラメータ化されたアルゴリズムを開発するために使用する言語の特殊なケースです。入力からの制約に加えて、言語のオートマトンを使用し、言語が空かどうかをチェックします。使い方はあまり拡張できませんが(まだ作業中なので)、基本的には文字の違いにより、すべてのアイテムが「何度も」梱包されないことが保証されます。言語をできる限り簡略化しましたが、 NFAを構築するために使用される任意の手法は、使用している実際の言語の構築を改善するのに役立つと思います。L
RB

回答:


4

更新:これは、元の投稿者が探していた質問には答えず、の一般的なケースには役立ちません。そのため、質問は未解決のままです。|Σ|>2


次に、より単純な構成を示します。場合、で十分であり、実際にDFAを使用して言語を認識できます。多くの州。Σ={0,1}O(k22k)

補足言語から見てみましょう:

Lk¯={uvΣ:|u|=|v|=k,i.ui=vi}.

これは NFAで認識できることに注意してください状態。NFAは最初にとシンボル推測し、次にすべての文字列受け入れます。ここでです。2k2|Σ|ixuvui=vi=x

標準のサブセット構成を使用して、これをDFAに変換します。 DFAを取得します 状態。これで、補数を計算できます。これは、を認識する同じ数の状態を持つ別のDFA。これはDFAなので、自動的にNFAにもなります。2|Σ|k+1kLk

これは、の場合の構成に勝りますが、それ以外の場合は、スキームよりも大きいNFAを導きます。ただし、非常に単純であることと、実際に言語を認識するためのDFA(単なるNFAではない)を提供することの両方のため、これは興味深いかもしれないと思い。|Σ|=2Lk


回答をありがとう、@ DW。それは素晴らしい構成ですが、私のアプリケーションでは。k<<|Σ|
RB

@ RB、OK、問題ありません!あなたの建設はより良いです。質問を編集して、アプリケーションでに言及することができます 。k|Σ|
DW
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.