【发布时间】:2015-10-21 13:40:33
【问题描述】:
我目前正在研究一些计算理论,正如所暗示的那样,这是非常理论化的。
我可以很容易地从正则表达式转换为 NFA 到 DFA,我可以理解。
但是由于所有 NFA 都可以转换为 DFA,并且(我很确定)UNIX 中的grep 命令使用正则表达式来确定匹配字符串,所以最常用的有限自动机、DFA 或 NFA 是什么?
根据我的经验(不多),在表示常规语言时,DFA 通常更易于使用,并且具有确定性,因此应始终选择 NFA。
NFA 分支到多个结果,需要递归函数,而且对我来说似乎更尴尬。
我知道编译器是有限自动机的另一种实际用途。
我的问题...为什么要同时学习/使用两者。 DFA 在我看来完全没问题。
感谢您的任何回答!
【问题讨论】:
标签: regex dfa computation-theory compiler-theory nfa