最后是几个个小作业 :
给定如下的正则表达式 (a|b)((c|d)*),请完成如下练习:
(1)使用Thompson算法,将该正则表达式转换成非确定状态有限自动机(NFA);
(2)使用子集构造算法,将该上述的非确定有限状态自动机(NFA)转换成确定状态有限自动机(DFA);
(3)使用Hopcroft算法,对该DFA最小化。
我的实现如图所示 :
2. 本题是一个编程问题,在本题目中,你将完整的实现Thompson算法、子集构造算法和Hopcroft算法。为了帮助你开始,请下载如下链接中的代码并根据代码运行时的提示将缺少的代码补充完整。(注意,我们给出了正则表达式和NFA的数据结构和Thompson算法的框架,其它的数据结构和算法需要你自行补充完整。)
代码链接:http://staff.ustc.edu.cn/~bjhua/mooc/thompson.rar
这道题的话我之前用C语言尝试实现了下, 勉勉强强实现了Thompson 和 子集构造算法, 结果无法通过编译显示, 链接失败 很长时间不用C用起来果然还是比较吃力啊... 所以决定考试完(10号吧, 看看有没有时间, 毕竟之后还要考3门)了用java进行完整实现...