質問

この言語が定期的なことを示すようにします:

$ l= $ {w $ \ in \(a、b)^ * $ |w、 $ - 5 \ le | u | _a- | u | _b \ le5 \} $

NFAを構築し、Wの部分文字列(毎回他の文字をスキップ)していた場合(条件に従う)の場合に限り、(条件に従う)がwを受け入れます。 NFAで可能ですか?言語の規則性を示すための他の方法はありますか?

役に立ちましたか?

解決

素敵な質問!これは定期的な言語を含む非常に重要な問題です。

まず最初に:いいえ、他の文字をスキップするストリングのすべての部分文字列でオートマトンを実行することはできません。ターゲット文字列に1回だけオートマトンを実行することになっています。

与えられた言語の相補的の理由で、

$$ l ^ c={w \ in(a、b)^ * \ mid \ text {Substringがあります} u \ text {の} w \ text {そのようなもの} | u | _a- | u | _b> 5 \ text {または} | u | u | _a- | u | _a- | u | _b <-5 \} $$

言語 $ l ^ c $ は、次のNFAによって認識されているので、

画像の説明が入力されています

(各状態名は $ | u | _a- | u | _a- | u | _b $ 、substring $ u $ はNFAによって決定的に"見つかった "です)。

だから、 $ l ^ c $ として $ l=(l ^ c)^ C $


Hendrickの提案の後、私はNFAを決定し、その補数を描くことを試みました、そして $ l $ を認識するこの素晴らしいDFAを取得します:

画像の説明が入力されています

受付状態名の各名前は間隔:オートマトンを実行している場合、 $ [x_1、x_2] $ にあります。文字列 $ Z $ これは、すべての $ x \ in [x_1、x_2] $ であることを意味します。サフィックス $ u $ $ |の $ z $ u | _a- | u | _b= x $ 。そうでなければ、Dmitryの提案に続いて、オートマトンは $ z $ の残差セットを計算します。

ヘンドリックは言うように、それは各部分文字列のオートマトンを実行しているようなものですが、これは $ A $ sと $ b $ sは $ [ - 5,5 ] $ (実現が簡単であろう)と、このオートマトンを特定のものの各部分に実行し、このように言語が正規であることを証明します。


最後に、結果の些細な一般化を書くでしょう(これは民間伝承であると思いますが、私は参照を見つけることができませんでした)。

$ t $ をアルファベット $ \ sigma $ の通常の言語になり、 $ l $ 次のように定義された言語になります。

$$ L={w \ in \ sigma ^ * \ mid \ text {すべての部分文字列}} u \ text {of} w、\} $$

その後 $ l $ は通常です。

実際には、上記のように、 $ l ^ c $ $ l $ の補数を考慮してください。すなわち

$$ l ^ c={w \ in \ sigma ^ * \ mid \ text {substring} u \ text {の} w \ text { $ \

その後 $ l ^ c=sigma ^ * t ^ c \ sigma ^ * $ 、したがって $ l=(\ Sigma ^ * T ^ C \ Sigma ^ *)^ C $ は定期的な言語のファミリーが連結と補完の下で閉鎖されています。

クリーティー連結と補完の下で閉じられた言語の家族のすべての言語にはまだ当てはまりますが、これは必要な状態ではありません。確かに、有限言語のファミリーは補完的では閉じられていませんが、 $ t $ が有限である場合は $ l $ です( $ l \ subseteq t $ が常にそうです)。 その一方で、これはすべてのクラスの言語には当てはまりません。通常の言語のファミリNRを検討してから、 $ t={1 ^ p \ mid p \ text {IS Prime} \ \ \ \ $ nr、しかし、この場合、 $ l=varnothing $ があります。これは正規です。

ライセンス: CC-BY-SA帰属
所属していません cs.stackexchange
scroll top