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