
DFA的简化(包含可运行代码)。
5星
- 浏览量: 0
- 大小:None
- 文件类型:None
简介:
本程序的核心数据结构采用字符串类型的数组,用于存储划分后的子集。与此同时,这些子集内元素的邻接点及权重信息则分别存储在edge结构体数组中。为了将一个DFA的状态分解成若干互不相交的、彼此可区分的子集,其中同一子集内的状态之间具有等价性,算法假设每个状态所发射的弧是完整的;若存在不完全的弧,则引入一个特殊的“死状态”,该死状态为非终态,并将所有不完全的输入弧都指向该死状态。 随后,对所有输入进行处理时,该死状态的输出弧会重新回到自身。具体步骤如下:首先,构造初始状态划分:将终态kt和非终态K-kt划分为两组(group);然后,对整个集合∏施用过程PP,得到新的划分∏new;若∏new等于∏,则将∏final赋值为∏并进入步骤4;否则,将∏赋值为∏new,重复步骤2。 4.针对∏final中的每一组选择一个代表元素,这些代表元素共同构成M’的状态集合。如果k是一个代表元素且f(k,a) = t,并且r是t组的代表元素, 则M’中有一条转换f’(k,a) = rM’, 其开始状态为包含S0的那组代表元素所构成的集合, 且终态为包含F的那组代表元素所构成的集合。最后, 从M’中移除所有死状态。 输入文本格式样例:0 a 11 a 22 a 22 d 31 d 33 d 33 a 2#1230ad
全部评论 (0)
还没有任何评论哟~


