有限状態オートマトン:最終状態


8

私たちのプログラミング言語の概念コースでは、最終状態が有限状態図の別の状態につながることは問題ないと私たちの講師は主張しました。

しかし、これは根本的に矛盾した概念のようです。定義により、最終状態は遷移を終了する状態です。つまり、最終状態に到達すると、他に何もする必要がなくなります。

それでも、彼はこのようなスライドを提示しました。最終状態は2つの円で表されています... B、D、E、およびHが明らかにそうでない場合に、最終状態になることができるのはなぜですか。

ここに画像の説明を入力してください


「到達したら、他に何もすることはありません。」すべての入力を消費し、イプシロン遷移を考慮した場合のみ。
Andrea Lazzarotto

回答:


17

生成モデルと「認識」モデルを誤解しているようです。

右側の文法は、ルールを適用し、最初の変数から開始して、変数がなくなった後に停止することにより、単語を生成します。

ただし、オートマタは言語を次のように認識します。オートマトンに1文字ずつ単語を供給し、オートマトンはそれに与えられた文字に基づいて遷移します。

すべての文字を読んだ後、オートマトンが受け入れ可能な(別名final)状態になる場合、オートマトンは単語を受け入れると言います。

したがって、両方の用語が一般的に使用されますが、「最終的な」状態ではなく、「受け入れた」状態としてそれらを考える方が良いです。


私はとても同意します。私の教科書もそれらを「最終的な」状態と呼びました、そして私が私にそれらを「受け入れ国」と呼ぶように自分自身を強要し始めるまで私を混乱させました。
Seankala

おかしなことに、これまで意識的に「最終状態」という用語を見たことはありません。彼らが「受け入れ状態」と呼んでいるのを見たことはあります。この回答で説明されているように、「最終状態」は間違いなく間違いです。
Konrad Rudolph、

7

定義による最終状態は、遷移を終了する状態です。つまり、いったんそれに到達すると、他に何もすることがなくなります。

混乱の原因は、これ定義ではないということです。「最終状態」は名前の選択としては不十分であり、ほとんどの著者は「受け入れ状態」を好むようです。定義は、オートマトンがその実行が最終/受け入れ状態で終了した場合に受け入れ、そうでない場合は拒否することです。


7

確かに、それは混乱しています!問題を解決するには、「最終」状態ではなく「受け入れ」状態と呼びます。それが彼らの本当の姿なので、現時点で処理された文字列はその言語に属していることを示すマーカーにすぎません。


3

「最終的な状態は、遷移を終了させる状態です。つまり、いったんそれに到達すると、他に何もすることができなくなります。」

アクセプター(つまり、特定の文字列が言語に属する/属していないかどうかを通知する有限状態オートマトン)を処理する従来の規則では、最終的な状態は、空の文字列(入力は完全に消費される)は、最初の文字列が受け入れられることを示します。つまり、オートマトンの言語の一部です。


3

ご覧のように。与えられた文法はA-> aと言っています。したがって、オートマトンは文字列 "a"で終了することを受け入れます。ただし、A-> aB-> abD-> abcも許可されるため、文字列「abc」も受け入れられます。この時点で弦を完成させると、最終状態になり、弦が受け入れられます。ただし、「ab」という文字列を受け入れることもできます。したがって、{"a"、 "ab"、 "abc"}がすべてオートマトンによって受け入れられることを確認する必要があります。最終状態を入力した場合、それを決して出て行けないような状態として表示しないでください。現在の文字列が受け入れられるかどうかを示す状態として表示します。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.