简单的NFA转DFA的代码实现
来源:互联网 发布:免费的域名解析软件 编辑:程序博客网 时间:2024/05/29 08:50
(本文章是学习笔记,里面可能有错误,随时更新中。。。)
该方法虽然是一个通用的方法,但是只是针对(a|b)*abb实现而已。也就是说,如果要支持所有的NFA,那么就需要修改一下NFA的读入。
(a|b)*abb的状态转换表是:
将NFA转为DFA的算法如下:
1、对初始状态进行闭包操作,也就是sinma-closure(0),0为初始状态,将所得的状态集合设为T,并将其加入D中,设为未标记。
2、检查D中是否有未标记的集合T,如果有的话,就拷贝一份到T,同时在D中将T设置为已标记
3、对T到A进行转移(move(T,a)),合并起来的状态集为U,判断U是否在D中,没有的话就加入D中,同时设置为未标记。
4、U则是当前T到a的状态集,需要记录下来。
5、循环第二个步骤,直到所有的标记都已经读取完毕。
详细代码见:https://github.com/CODE7070/lexer
0 0
- 简单的NFA转DFA的代码实现
- DFA 和 NFA 的区别
- NFA到DFA的转换
- NFA到DFA的转化
- NFA到DFA的转换
- DFA和NFA的区别
- NFA(子集算法,DFA最小化)代码实现
- 计算理论:NFA转DFA的两种方法
- DFA与NFA的终极比较
- NFA 的 DFA (确定化)
- DFA与NFA的区别与联系
- <编译原理>NFA转化DFA 及 DFA的化简
- [转]NFA/DFA算法
- Java , NFA转DFA
- NFA-DFA(c++实现代码c#实现画图)
- 用java实现编译器之代码实现Thompson构造:在简单NFA的基础上构造更复杂的NFA
- 编译原理(二) NFA的确定化及DFA的最小化的算法及C++实现
- 编译原理(二) NFA的确定化及DFA的最小化的算法及C++实现
- Bulkload Hive表到HBase
- linux系统中内存爆满之后会如何?
- 二叉树的构造(一)
- 1381: Munching(BFS)
- bsoj: 2857 -- 【2011福建】TT的身体
- 简单的NFA转DFA的代码实现
- MyBatis主配置文件SqlMapConfig.xml
- logcat不显示信息
- 表单
- MySQL基本概念
- CodeForces - 659C Tanya and Toys (map&模拟)
- 标准C++中的string类的用法总结
- yah3c在ubuntu下面的联网之路
- R 常用函数