- 495
- 0
- 约5.61千字
- 约 8页
- 2017-01-06 发布于重庆
- 举报
c语言编程NFA确定化
NFA确定化为DFA
1.实验目的
设计并实现将NFA确定化为DFA的子集构造算法,从而更好地理解有限自动机之间的等价性,掌握词法分析器自动产生器的构造技术。该算法也是构造LR分析器的基础。
2.实验要求
设计并实现计算状态集合I的ε闭包的算法ε_Closure(I)和转换函数Move(I,a),并在此基础上实现子集构造算法Subset_Construction。利用该从NFA到DFA的转换程序Subset_Construction,任意输入一个NFA N=(S,Σ,δ,s0,F),输出一个接收同一语言的DFA M=(S’,Σ,δ’,s0’,F’)。
3.实验内容
令I是NFA N的状态集S的一个子集,I的ε闭包的ε_Closure(I)构造规则如下:
若s∈I,则s∈ε_Closure(I);
若s∈ε_Closure(I)且δ(s, ε)=s’而s’ ?ε_Closure(I) ,则s’∈ε_Closure(I)
根据上面的规则,下面给出了一个计算I的ε闭包的算法ε_Closure(I)。
SET S;
SETε_Closure(input)
SET *input;
{
S=input; /* 初始化 */
push(); /* 把输入状态集中的全部状态压入栈中 */
while(栈非空){
Nfa_state i;
pop(); /* 把栈顶元素弹出并送入i */
if(存在δ(i, ε)=j)
if(j不在S中) {
把i加到S中;
把j压入栈中;
}
}
return S; /* 返回ε_Closure(input)集合 */
}
完成上述算法的设计。
令I是NFA N的状态集S的一个子集,a∈Σ, 转换函数Move(I,a)定义为:
Move(I,a)= ε_Closure(J)
其中,J={s’|s∈I且δ(s,a)=s’}
转换函数Move(I,a)的设计通过调用ε_Closure(input)实现,完成该函数的设计。
从NFA N构造一个与其等价的DFA M的子集构造算法,就是要为DFA M构造状态转换表Trans,表中的每个状态是NFA N状态的集合,DFA M将“并行”地模拟NFA N面对输入符号串所有可能的移动。下面给出了子集构造算法Subset_Construction的框架,请完成其设计过程。
有关数据结构:
States[] 是一个M的数组,每个状态有两个域,set域存放N的状态集合,flg域为一标识。
Trans[] 是M的转移矩阵(输入字母表Σ元素个数×最大状态数),Trans[i][a]=下一状态。
i M的当前状态号
a 输入符号,a∈Σ
Nstates[] M的下一新状态号
S 定义M的一个状态的N的状态集
初始化:
States[0].set=ε_Closure({N的初态})
States[0].flg=FALSE
Nstates=1
i=0
S=Ф
Trans初始化为无状态’-’
while(States[i]的flg为FALSE){
States[i].flg=TRUE;
for(每个输入符号a∈Σ){
S=ε_Closure(Move(States[i].set,a));
if(S非空)
if(States中没有set域等于 S的状态){
States[Nstates].set=S;
States[Nstates].flg=FALSE;
Trans[i][a]= Nstates++;
}
else
Trans[i][a]= States中一个set域为S的下标;
}
}
此算法的输出M主要由Trans矩阵描述,其中省略了每个状态是否为终态的描述,应加以完善。
4.实验程序;
#includeiostream
#includestring
#define MAXS 100
using namespace std;
string NODE; //结点集合
string CHANGE; //终结符集合
int N; //NFA边数
struct edge{
string first;
string change;
string last;
};
struct chan{
string ltab;
s
您可能关注的文档
- VCS双机检验方法.doc
- 浅谈计算机犯罪..doc
- 变压器在线监测.docx
- 编译原理-23.doc
- 编译原理实验四.doc
- 贝叶斯统计复习.doc
- 浅谈软性散光隐形眼镜的验配(眼视光毕业论文)..doc
- 浅谈配电房高低压配电柜的优化选择..doc
- 浅谈量子力学的前沿进展..docx
- 环境在线监测期末试卷答案版.doc
- 伟明环保-市场前景及投资研究报告-境内业务稳健运行,印尼市场贡献边际增量.pdf
- 桂东县法院系统招聘考试真题2025.pdf
- 贵州省黔南布依族2026年中考三模物理试题及答案.pdf
- 贵州省黔南州2026年中考语文二模试卷附答案.pdf
- 贵州省铜仁市2026年中考语文二模试卷附答案.pdf
- 2026上半年安徽事业单位联考合肥市庐江县招聘36人备考题库及一套完整答案详解.docx
- 贵州省毕节市2026年中考语文一模试卷附答案.pdf
- 贵州省贵阳市南明区2026年中考语文一模试卷附答案.pdf
- 2026上半年安徽事业单位联考合肥市庐江县招聘36人备考题库及一套参考答案详解.docx
- 贵州省贵阳市白云区2026年中考二模物理试题附答案.pdf
原创力文档

文档评论(0)