ましょう
私は、インデックスごとに異なる長さkの 2つの単語の連結言語用の小さなNFAビルドを探しています。つまり、
が固定されているため、であり、有限言語として規則的であることに注意してください。
言語の自明なDFAには | \ Sigma |が含まれています \ k +1の状態を選択し、最初のk文字の間に見た文字を「記憶」しますが、k = o(| \ Sigma |)の場合、大幅に小さいNFAを作成できます。
そのための「単純な」NFAのサイズは(より正確には、):
-universal set(すなわち、一連のベクトル\ mathcal V \ subseteq \ {0,1 \} ^ {| \ Sigma |}を取り、すべてのベクトルに対してとインデックスの場合、v_ {| I} = uのようなベクトルv \ in \ mathcal Vが存在します。つまり、vでこれらのkインデックスのみを見ると、uが見つかります)。サイズO ^ *(2 ^ {2k})のそのようなファミリは既知です。
各ベクトルを関数とます。ここで、v(\ sigma_i)=1⟺v_i= 1です。
次のようにNFAを作成します。
開始状態から、任意の新しい状態への遷移を作成します。この状態をます。
各から、最初の文字がによって0にマッピングされ、その後の文字がによって1にマッピングされるすべての単語を受け入れる状態のパスを構築します。
基本的には、ユニバーサルセットを使用すると、最初のシンボルに表示できる文字を残りの文字から分割でき、対応するベクトルが必要になるため、言語のすべての単語を取得できます。それを正しく分割する
だから質問は:
の最小NFAのサイズは?
この構造は最適ですか?
このようなオートマトンのサイズを証明できる下限は何ですか?