
DFA(确定的有穷自动机)在编译原理实验中的简化。
5星
- 浏览量: 0
- 大小:None
- 文件类型:None
简介:
1. 实验的各个正规集均可由状态数量最少的DFA识别,并且该DFA是唯一的(不考虑同构情况)。针对任意给定的DFA,设计并实现一个C程序,该程序能够将其化简为与之等价的最简DFA,遵循以下算法。2. 实验设计与分析2.1 实验设计方案:根据实验指导书以及相关书籍的知识,按照预定的算法进行实现。2.2 实验算法:(1)首先,构造一个初始划分I,该划分包含两个组:接受状态组F和非接受状态组Non-F。(2)随后,对划分I采用所描述的过程来构建一个新的划分I-new。对于I中每个组G,若对于任意输入符号a、状态s以及在状态s上读取符号a后转换到I中同一组的状态;/*在最坏情况下,一个状态可能属于多个组*/ 则将所有新形成的较小小组集替换I-new中的组G。(3)如果I-new与原始划分I一致,则保持I-new作为最终划分I-final,并执行第(4)步;否则,将I更新为I=I-new,并重复步骤(2)。(4)在最终划分I-final的每个状态组中选择一个代表状态作为该组的代表。这些代表状态共同构成了化简后的DFA M’的状态集合。假设在原始DFA M中,当输入为a时存在从代表状态s到状态t的转换;如果t所在组的代表是r,则在M’中添加一条从s到r的转换标记为a。同时,将包含s0的状态组的代表设置为M’的开始状态,并将M’的接受状态设置为那些属于F的状态所在组的代表。请注意,最终划分I-final中的每个组要么只包含F中的状态,要么不包含F中的任何状态。(5)如果化简后的DFA M’包含死状态(即对所有输入符号都自身转换的非接受状态d),则从M’中移除这些死状态;删除那些无法从开始状态到达的状态;取消所有从其他状态到死状态的转换等等。
全部评论 (0)
还没有任何评论哟~


