安徽大学编译原理试验斯.docx
- 文档编号:29342284
- 上传时间:2023-07-22
- 格式:DOCX
- 页数:22
- 大小:712KB
安徽大学编译原理试验斯.docx
《安徽大学编译原理试验斯.docx》由会员分享,可在线阅读,更多相关《安徽大学编译原理试验斯.docx(22页珍藏版)》请在冰豆网上搜索。
安徽大学编译原理试验斯
不确定的有穷自动机的化简
2015年11月25日星期三
班级:
软件工程学号:
E21314003姓名:
李世
1.目的与要求
通过设计、编写和调试,将不确定的有穷自动机转换为与之等价的确定的有穷自动机的程序,使学生了解子集法。
掌握转换过程中的相关概念和方法。
DFA的表现形式可以是表格或图形。
2.理论基础
有穷自动机(也称有限自动机)作为一种识别装置,它能准确地识别正规集,即识别正规式所表示的集合.应用有穷自动机这个理论,为词法分析程序的自动构造寻找有效的方法和工具。
有穷自动机分为两类,即,确定的有穷自动机(DeterministicFiniteAutomata)和不确定的有穷自动机(NondeterministicFiniteAutomata)。
(1)不确定的有穷自动机的定义:
一个不确定的有穷自动机(NFA)M是一个五元组:
NFAM={K,Σ,f,S,Z},
其中:
K为状态的有穷非空集;
Σ为有穷输入字母表;
f为K×Σ*到K的子集(2K)的一种映射,2K表示K的幂集(f不是一个单值函数);
S⊆K是初始状态集;
Z⊆K为终止状态集.
例子:
NFAM=({S,P,Z},{0,1},f,{S,P},{Z}),其中:
f(S,0)={P}//函数的结果为集合
f(S,1)={S,Z}
f(P,1)={Z}
f(Z,0)={P}
f(Z,1)={P}
状态图表示为:
矩阵表示为:
(2)确定的有穷自动机的定义:
一个确定的有穷自动机(DFA)M是一个五元组:
M=(K,Σ,f,S,Z)
其中:
K是一个有穷集,它的每个元素称为一个状态;
Σ是一个有穷字母表,它的每个元素称为一个输入符号,所以也称Σ为输入符号表;
f是转换函数,是在K×Σ→K上的映射,即,如f(ki,a)=kj,(ki∈K,kj∈K)就意味着,当前状态为ki,输入符为a时,将转换为下一个状态kj,我们把kj称作ki的一个后继状态;
S∈K是唯一的一个初态;
Z⊂K是一个终态集,终态也称可接受状态或结束状态。
例子:
DFAM=({S,U,V,Q},{a,b},f,S,{Q}),其中f定义为:
f(S,a)=Uf(V,a)=U
f(S,b)=Vf(V,b)=Q
f(U,a)=Qf(Q,a)=Q
f(U,b)=Vf(Q,b)=Q
状态图表示为:
矩阵表示为:
(3)确定有限自动机和不确定有限自动机
DFA是NFA的特例。
对每个NFAN一定存在一个DFAM,使得L(M)=L(N)。
对每个NFAN存在着与之等价的DFAM。
有一种算法,将NFA转换成接受同样语言的DFA.这种算法称为子集法.
子集法的基本思想:
让DFA的每一个状态对应NFA的一组状态,也就是让DFA使用它的状态去记录在NFA读入一个输入符号后可能达到的所有状态。
注意:
与某一NFA等价的DFA不唯一.
a)定义对状态集合I的几个有关运算:
状态集合I的ε-闭包:
表示为ε-closure(I),定义为一状态集,是状态集I中的任何状态S经任意条ε弧而能到达的状态的集合。
状态集合I中的任何状态S都属于ε-closure(I)。
状态集合I的a弧转换:
表示为move(I,a)定义为状态集合J,其中J是所有那些可从I中的某一状态经过一条a弧而到达的状态的全体。
三、调试测试
四、程序源代码
#include
#include
#defineMAXS100
usingnamespacestd;
stringNODE;
stringCHANGE;
intN;
structedge
{
stringfirst;
stringchange;
stringlast;
};
structchan
{
stringltab;
stringjihe[MAXS];
};
voidkong(inta)
{
inti;
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 安徽大学 编译 原理 试验
![提示](https://static.bdocx.com/images/bang_tan.gif)