正規表現からNFA-sを作成する方法を理解しようとしていますが、実際にはイプシロン遷移から混乱しています。私は教科書にこの例を載せていますが、イプシロンの遷移が使われる理由と、いつ使用されるのかを理解していません。一般的にNFAでイプシロントランジションを使用するのはなぜですか?
2
A
答えて
1
彼らは便利なとき、espilon-遷移が使用されています。たとえば、正規表現からNFAを作成する場合は、式の一部に対応するオートマトンの小さな部分を作成することから始めます。それらを接続するには、トランジションを行う必要があります。しかし、そこに読まれるシンボルがなければ、イプシロンの移行がこれを行う簡単な方法です。彼らは、決して必要はありませんが、あなたはいつも彼らなしで解決策を見つけることができます。
あなたの例では、教科書に記載されているアルゴリズムを適用するだけです。それはそれらをいつ使用するかを教えてくれます。
イプシロンが
- から1〜2は、おそらくのための部品を接続する遷移(| B)*と交流 ため
- 1-> 5及び8> 1は、おそらく* 起因します
- 5-> 6および5-> 7はおそらく、| NFAの中
0
イプシロン - 遷移が選択や正規表現で和または組合の自然な表現です。すなわち、(お好みの表記法に応じて、またはr | s
又はr U s
)r + s
ような正規表現は、天然NFAは、2つの独立のNFA、r
用とs
ための1つから成るとして表現されている、次のように電子遷移を使用して結合:
e
----->q0----->(r)
|
| e
|
V
(s)
より複雑な方法で状態を接続する場合、効果は説明が簡単で自然ではないかもしれませんが、基本的にこれらの遷移によって複数のオプションの中から無条件に選択できます。したがって、入力の一部をすでに見て、文字列が終わる可能性のあるいくつかの異なる方法がある場合は、異なる可能性を扱う状態にe-transitionsを使用して表現できます。
例では、eトランジションは実際には非常に有用な機能を提供しておらず、使用した変換アルゴリズムのアーチファクトに過ぎません。そのアルゴリズムには、一般的な場合には、それらが有用または必要である可能性があるため、それらのアルゴリズムも含まれます。あなたの特定の事例では、これは真実ではなかったので、彼らは不自然に見えます。
関連する問題
- 1. ユニオン式のイプシロントランジションをスキップできますか(Thompsonの構築アルゴリズム)
- 2. Flex 3でMXMLを使用するのはなぜですか?
- 3. 関数でvoidを使用するのはなぜですか?
- 4. Grape APIでヘルパーを使用するのはなぜですか?
- 5. ここでtypeofを使用するのはなぜですか?
- 6. Spring MVCでモデルクラスを使用するのはなぜですか?
- 7. アニメーションでCATransactionを使用するのはなぜですか?
- 8. EclipseでCp1252エンコーディングを使用するのはなぜですか?
- 9. サービスをAngularで使用するのはなぜですか?
- 10. モジュールバンドルをES6モジュールで使用するのはなぜですか?
- 11. AngularでsessionStorageを使用するのはなぜですか?
- 12. FlaskでFlashを使用するのはなぜですか?
- 13. sybaseでGOコマンドを使用するのはなぜですか?
- 14. Function.callをjavascriptで使用するのはなぜですか?
- 15. SwiftでInitializersを使用するのはなぜですか?
- 16. jstlでNPEを使用するのはなぜですか?
- 17. Pythonでclassmethodコンストラクタを使用するのはなぜですか?
- 18. プログラミングでラジアンを使用するのはなぜですか?
- 19. C++でvolatileキーワードを使用するのはなぜですか?
- 20. Sling Servletsでsling.servlet.prefixを使用するのはなぜですか?
- 21. 汎用ビューを使用するのはなぜですか?
- 22. なぜNFAのKleene閉鎖工事を単純化できないのですか?
- 23. プライベートタイプでautoを使用できるのはなぜですか?
- 24. リンゴは.plistファイルを使用するのはなぜですか?
- 25. コンテキストとはなぜオードーで使用するのですか?
- 26. IntelliJでタブを使用しないのはなぜですか?
- 27. 「?」を使用できないのはなぜですか?オペレーター?
- 28. strerrorを使用できないのはなぜですか?
- 29. $ session_start()を使用できないのはなぜですか?
- 30. 「TermDocumentMatrix」を使用できないのはなぜですか?