明日は私のプレゼンテーションであり、私の概念を明確にしたい…
DFAでは、「各状態について、可能なすべてのシンボル(アルファベット)の遷移を定義する必要がある」と読みました。
各状態について、DFAではすべての可能なシンボルの遷移を定義することが必須ですか?そうでない場合は、例を挙げてください。
明日は私のプレゼンテーションであり、私の概念を明確にしたい…
DFAでは、「各状態について、可能なすべてのシンボル(アルファベット)の遷移を定義する必要がある」と読みました。
各状態について、DFAではすべての可能なシンボルの遷移を定義することが必須ですか?そうでない場合は、例を挙げてください。
回答:
DFAは、次のデータによって指定されます。
のシグネチャからわかるように、すべてのシンボルのすべての状態で遷移を指定します。
DFAで欠落している遷移を許可したとします。遷移が定義されていないシンボルに遭遇するとどうなりますか?結果は未定義です。これは、DFAの「決定論的」特性に違反しているようです。
ただし、このような不完全な DFAを完全な DFAに変換するのは簡単です。単に新しい状態を追加し、illegal
未定義の遷移をillegal
状態にマッピングします。最後に、illegal
状態からそれ自体に戻るすべてのシンボルの遷移を追加します。このillegal
状態は、シンク状態と呼ばれます。これは、データがシンクに落ちた後、抜け出す方法がないためです。
したがって、実用的な観点からは、欠落しているトランジションを処理するための明確な方法がある限り、それは一種の論争です。
NFAに受け入れの実行がある場合、単語はNFAによって受け入れられます。決定論的オートマトンの実行は最大で 1つです。完全なオートマトンには、少なくとも 1つの実行があります。
一部の著者は、各状態が初期状態から最終状態への何らかのパス上にあるものとしてトリムオートマトンを定義しています。特定の言語では、トリムと完全なオートマトンを使用できません。これらの場合、決定性オートマトンの定義から完全性の要件を除外すると便利です。