DFA、NFA、ムーア、ミーリーマシンなどの有限状態マシンの実用的なアプリケーションを探しています...
Linuxカーネルの例を誰かが指摘すると、役に立ちます。KMPアルゴリズムのような文字列照合でDFAが使用されていることを知っています。
NFA、ムーア、ミーリーのマシンの重要性は何ですか?
DFA、NFA、ムーア、ミーリーマシンなどの有限状態マシンの実用的なアプリケーションを探しています...
Linuxカーネルの例を誰かが指摘すると、役に立ちます。KMPアルゴリズムのような文字列照合でDFAが使用されていることを知っています。
NFA、ムーア、ミーリーのマシンの重要性は何ですか?
回答:
1つの主要なアプリケーションは、システムのモデリングです。基本的に、単純なソフトウェアシステムは有限状態機械としてモデル化できます。(単純なソフトウェアとは、正規表現を使用して表現できる言語を意味します)。そのような「単純な」システムは多数あり、自動販売機が例です(vznが示すとおり)。
2つの有限状態機械の共通部分を見つけることにより、たとえばメッセージを交換する並行システムを非常に簡単な方法で設計できます。例として、信号機は、同時に動作する複数のサブシステム(異なる信号機)で構成されるシステムです。
これらの例を見てください:http : //www.site.uottawa.ca/~bochmann/SEG-2106-2506/Notes/LTSA-examples/examples/
これらの例を実行するには、LTSAアナライザーが必要です。http://www.doc.ic.ac.uk/ltsa/
FSMと関連理論に関する非常に優れたオンラインリファレンス、75p、および多くの図 中間理論セクションの後に多くのアプリケーションがあり、サンプルアプリケーション(p485など)を使用した多くの演習でも:
ch12。ケラーによる有限状態機械、ハーベイマッドカレッジ、CS60教科書/ CS、抽象化入門
アプリケーションは非常に多様です。例えば本から:
例12.4 EE構成
FSMは音声検出でも使用され、音素を検出します。これは、この優れたオンラインライブラリの主要な適用点の1つであり、manページとドキュメントに詳細が記載されています。AT&TオンラインFSMライブラリです。「FSMライブラリと音声処理アプリケーション」のセクションを参照してください(これには、より抽象的/理論的な「アプリケーション」もいくつかリストされています)
等!
デバイスドライバーを作成するときは、ステートマシンを使用します。大きなステートマシンは扱いにくくなることに注意してください。この一連のマクロ(https://www.codeproject.com/Articles/37037/Macros-to-simulate-multi-tasking-blocking-code-at)を使用することを検討してください ...こうすることで、トランジションがシンプルになり、状態図も必要です。これは、マクロを使用すると、ステートマシンコードを構造化コードのように記述できるためです。これらのマクロを使用して、Nexus 7000用のシスコのトランシーバーライブラリを作成しました。
実際には、オブジェクトのユーザーが呼び出すことができるアクションを表す非常に粗い状態機械を表す整数状態変数(通常は「状態」と呼ばれます)として明示的に表示されます。通常は、{uninitialized、initialized、...、stopped}のような値を持つ列挙です。ステートマシンは、多くの場合、データの解析時に明示的であり、ループの先頭で次の文字が取得されるwhileループのswitchステートメントによって示されます。特に、構文解析に通常の文法がある場合、他の機能がない正確なFSMがよく使用されます。末尾呼び出しをサポートする言語を使用している場合、FSMは通常、相互再帰によって示されます(これにより、コードを非常に明確な疑似コード仕様のように読み取ることができます)。FSMの本当に便利な機能は、実行スタック全体ではなく、現在の状態のみを覚えておけばよいので、同時に操作できることです。(つまり、何百万ものステートマシンインスタンス間でのコンテキストの切り替え)。