2
A
回答
8
我認爲你已經完全掌握了主要的權衡。 NFA可以具有更高的內存效率,因爲它們可以在O(n)空間中編碼O(2 n)不同的配置,而同一語言的DFA可能需要指數空間。你同樣正確,NFA有更慢的更新;大多數用於模擬NFA的算法花費O(n)時間來計算DFA的狀態轉換(其中n是狀態數)與O(1)時間。
這兩者之間還有一些其他差異。對於初學者來說,DFA通常更易於編碼,因爲對於每一對狀態和符號,都只有一個轉換。這自然適用於轉換表的多維數組。相比之下,NFA(或更糟糕的,ε-NFA)通常需要更復雜的表示,因爲任何狀態都可能有大量的轉換。然而,NFA確實具有這樣的優點,即使用NFA從複雜結構到自動機的許多轉換更簡單。例如,從正則表達式中匹配自動機的規範構造會生成一個ε-NFA而不是DFA,因爲轉換最好是通過遞歸地構建更小的&ε-NFA,然後使用ε將它們連接在一起來表示。可以直接將正則表達式轉換爲DFA,但這樣做要困難得多。類似地,通過探索句柄識別自動機如何在NFA方面而非在DFA方面工作,許多用於生成LR(k)解析器的算法可以被更直觀地激勵(儘管用於生成這些解析器的大多數算法直接去往DFA而不是NFA )。
希望這會有所幫助!
1
NFA表示更緊湊,但DFA更易於模擬。當NFA減少到DFA時,通常情況下指數大小會增加
相關問題
- 1. NFA與DFA的優點/缺點相反
- 2. XML與RDMS相比的優點/缺點
- 3. NFA到DFA算法
- 4. NFA轉換爲DFA
- 5. C#中的NFA/DFA實現
- 6. 將NFA轉換爲DFA
- 7. DFA和NFA等效語言
- 8. 將nfa轉換爲dfa
- 9. DFA和NFA如何與正則表達式相關聯?
- 10. YSlow與Speed Tracer相比有哪些優點/缺點?
- 11. 來自NFA的DFA的子集構造
- 12. 用於繪製DFA的C庫,NFA的
- 13. 最高的國家的數量 - DFA/NFA
- 14. 與USB相比,USB虛擬COM端口有哪些優缺點?
- 15. 用於描述DFA或NFA的語法
- 16. 與使用foreach相比的優點
- 17. 哪個更強大?DFA或NFA?
- 18. NFA轉化爲DFA =確定性?
- 19. NFA/DFA可變轉換條件
- 20. 如何將NFA/DFA轉換爲java?
- 21. 爲什麼在DFA上使用NFA
- 22. QLPreviewController與UIWebView - 優點/缺點
- 23. TryCatch與TryParse的優缺點
- 24. MSTest和NUnit相比有什麼優點/缺點?
- 25. 比較web.py的Templator和Jinja2:優缺點
- 26. Cassandra UUID與TimeUUID的優點和缺點
- 27. CAAnimationGroup與CAKeyframeAnimation的優點和缺點
- 28. 與第三方供應商相比,Rails頁面緩存有哪些優缺點?
- 29. 學習EF代碼優先:與模型相比,有哪些缺點?
- 30. SharePoint Portal Services(SPS)與SharePoint Team Services(STS)相比有哪些優缺點?
內存和速度之間的折衷?這是聞所未聞的! – 2011-02-04 03:10:51