- 9
- 0
- 约1.94千字
- 约 6页
- 2018-04-21 发布于江苏
- 举报
实验DFA确定化实验报告
DFA确定化实验报告
课程设计的目的
通过课程设计进一步理解高级语言在计算机中的执行过程,加深对编译原理中重点算法和编译技术的理解,提高自己的编程能力,培养好的程序设计风格。同时通过某种可视化编程语言的应用,具备初步的Windows环境下的编程思想。掌握子集法,即将NFA转换为与之等价的DFA的算法。
课程设计的内容及要求
通过设计编写和调试将不确定的有穷自动机转换为与之等价的确定的有穷自动机的程序,使学生了解子集法,掌握转换过程中的相关概念和方法。
输入一个NFA
输出与之等价的DFA
实现原理
1、构造数据结构:
1)图的数据结构;
2)转换关系的数据结构。
2、求图的开始节点的ε-closure ,作为子集链表的头节点。然后对其ε-closure 中的每个节点,根据转换关系,求出新的子集,将新求出的子集插入到子集链表的尾部。
构造主要的数据结构:
struct diagram {
int snum; //节点编号
move *transfer; //转换关系
diagram *next;
};//图的数据结构
构造主要的数据结构:
struct subset {
int snum; //节点编号,
char closure[MAX]; //该节点中包含原来
的哪些节点,也就是其ε_closure
move *transfer; //来源关系
subset *next;
};//子集的数据结构
构造主要的数据结构:
struct move{
int point; //来自或转向哪一个节点
char input; //转向条件
move *next;
};//存储来源关系
算法实现与流程
(1)读取文件中的数据,组成图的初始链表。通常,用自然语言描述这个阶段的工作是烦琐的,用子集矩阵完成这阶段工作具有直观性和简单性。以下过程将描述用子集矩阵法完成从NFA(图1)到DFA的转化:
先将图1运用子集矩阵法,通过运算得到表1。其中s表示状态,即算法描述中的自己族C;a,b表示输入字符。该阶段,可能存在没有参加运算的状态,这些状态就是不可到达的状态。不可到达过程的运算也可通过图论中的可达性进行检查。
将表1转换矩阵中的所有子集重新命名得到表2 矩阵表示形式:
继而,将表2 用状态转换图描述可得到图2。图2 与图1进行比较可得到:状态数明显减少,并且消除了不确定性。
(2)将图的开始节点加入到其子集节点的closure数组中,调用求ε-closure的子函数求出图开始节点的ε-closure 存储在该子集节点的closure数组中。将该子集作为作为子集链表的头节点。
(3)遍历子集链表,对子集节点中closure数组中的每个元素,对其转换输入中的非ε元素,构造一个新的子集节点,将该输入之后所到达的节点插入新构造的子集节点的closure数组中,调用求ε-closure的子函数求该子集节点的ε-closure ,存储在该子集节点的closure数组中。同时构造构造转换关系节点,将该输入字母和来源节点编号填入该转换节点中,将该转换节点挂在刚才新构造的子集节点上。
(4)将新构造的子集节点插入子集链表中。
求ε-closure:遍历closure数组中的每个元素,如果该元素节点的转换输入(图数据结构)中存在ε,则把输入ε之后能到达的那个节点插入closure 数 组(尾插法)。
1)所有的插入操作,在插入的时候都需要比较即将插入的元素是否已经存在于插入对象中,如果已经存在,则不插入。
2)对于子集的插入,采用尾插法,插入的时候给新的子集编号。比较两个子集是否相同,是比较子集数据结构中的closure数组中的元素是否相同。如个有相同的子集,则只把转换关系节点加入到已有的子集节点的转换关系链表中,不插入该子集节点。
3)由于新的子集是在插入时才获得编号,所以,子集节点中转换关系链表和图中的转换链表有含义有所差别。图中的是目的节点,输入字符;子集中是来源节点,输入字符。
4)为了便于比较closure数组,在每次求完ε-closure之后,有必要对closure数组中的元素进行排序。
测试数据
输入表达式:(a|b)*(aa|bb)(a|b)*
结果输出及分析
软件运行环境及限制
Microsoft Visual C++ 6.0 运行环境。
心得体会
在手动从NFA确定DFA的基础上,将算法用C语言实现出来,加深了求DFA的算法的印象。通过设计编写和调试将不确定的有穷自动机转换为与之等价的确定的有穷自动机的程序,更加了解了其中的算法。
您可能关注的文档
最近下载
- 浮法玻璃成形薄玻璃的温度控制方法介绍玻璃制造技术-(图文).pdf VIP
- 玻璃制造技术-薄玻璃退火存在的问题及注意事项(图文).pdf VIP
- 2025年水路运输年终工作总结.docx VIP
- 2025中国(辽宁)自由贸易试验区大连片区(大连保税区)面向国内外公开招聘笔试历年参考题库附带答案详解.pdf
- 邹仲之《组织学与胚胎学》4血液.ppt VIP
- 2025年水路运输工作总结和2026年工作计划.docx VIP
- ams抗菌药物管理课件.pptx VIP
- 传染病流行病学调查规范.docx VIP
- 砀山经济开发区市政道路工程(1-3标段)砀山经济开发区市政道路工程(1-3标段).doc VIP
- 2025年企业云会计在医药行业的应用与合规性报告.docx VIP
原创力文档

文档评论(0)