这不是一个家庭作业问题。我正在看this lecture series并且好奇。
答案 0 :(得分:8)
由于所有非确定性FSM都具有相应的确定性FSM,因此对1和2的答案应该相同。
如果您想了解更多信息,请获取Michael Sipser撰写的“计算理论简介”,这是一本非常好的书,可以学习这些东西。 Sipser知道他谈论的是什么和如何很好地沟通。
答案 1 :(得分:6)
一些非正式的答案可以提供您的想法,详细的证据可以阅读一本关于Automata的好书,例如this one或其他答案中提到的那些。而且我很确定您可以找到回答所有问题的在线资料。
该过程是消除重复状态(或合并等效状态)。您知道状态和转换是生成字符串的关键。基本上,重复的状态无助于使语言生成更大或更少。该算法从始终具有生成lamda(空字符串)的能力的最终状态开始,并递归地更新指示状态的生成能力的表,并最终合并那些没有区别的状态。
NFA的规范化DFA使用NFA状态的不同集合作为DFA的状态,例如,{state0} - (1) - > {state1,state2}删除非确定性部分,没有办法避免状态爆炸,因为DFA必须这样做来表示语言。
我记得最好的一个是O(NLogN)在西安大略大学教授的一些论文中重复使用信息的一些技巧,并怀疑存在更好的信息。我相信经典的是O(N ^ 2)。
是。获取最小的一个,通过访问字符串来编码状态(一个字符串可以从开始状态到达状态,这几乎就是状态的真实“名称”),并验证转换映射。可能有更好的方法,但bigO上没有太大的区别。
答案 2 :(得分:5)
答案 3 :(得分:2)
从2.5节开始检查“编译器设计基础”。可在线免费使用。 http://www.diku.dk/hjemmesider/ansatte/torbenm/Basics/basics_lulu.pdf
它涵盖了将NFA转换为DFA并最小化DFA。当转换为DFA时,NFA可以指数级扩展。
“......任何常规语言(一种语言 可以用正则表达式表示,NFA或DFA)具有唯一性 最小DFA。因此,我们可以决定正则表达式的等价性(或 通过将两者转换为最小的DFA并比较结果来进行NFA或NFA)。“