实验一--利用子集法构造DFA.docx
《实验一--利用子集法构造DFA.docx》由会员分享,可在线阅读,更多相关《实验一--利用子集法构造DFA.docx(33页珍藏版)》请在第一文库网上搜索。
1、实验一利用子集法构造DFA一、实验目的掌握将非确定有限自动机确定化的方法和过程二、实验要求及内容实验要求:1.输入一个NFA,输出一个接受同一正规集的DFA;2,采用C+语言,实现该算法;3 ,编制测试程序;4 .调试程序。实验步骤:1 .输入一个NFA关系图;2 .通过一个转换算法将NFA转换为DFA;3 .显TKDFA关系图。三、实验环境计算机、Windows操作系统、Visua1C+程序集成环境。四、程序代码ttinc1ude,stdafx.hftinc1udeftinc1udeftinc1udettinc1udeftinc1udeusingnamespacestd;structedge
2、(intstart,end;charc;)E100,Ekong100;E保存所有的边,EkOng保存转换字符为空的边structStateintH100;状态集合intCoUnt;状态集合中的元素个数intf1ag;是否是接受状态intmark;状态编号);intn;n:边数intnk=0;空字符转换的边数intfirst,accept;开始状态,接受状态chara1pha100;输入字母表,#代表空串intnumof_char=0;字母表中的字符个数intUSeof1ehar256;该转换字符是否用过intf200;状态属性标志:0表示始态,1表示接受态,T表示中间态StateDFA100;
3、DFA状态集intUSeOf1DFA100;标志构造出来的状态是否已存在intnumof_Dtran=0;最后得到的DFA中的状态数charDtran100100;DFA状态转换表voidinput()inti,s,e;charch;CoIrt请输入转换的有向边数n:“n;COUt请输入NFA的开始状态:first;COUt请输入NFA的接受状态(输入-1结束):zzaccept;whi1e(accept!=-1)(faccept=1;cinaccept;)COUt请输入NFA,起点,终点,转换字符(#表示空字符):end1;intk=0;for(i=0;isech;Ei.start=s;Ei
4、.end=e;Ei.c-ch;if(ch!=,#&!useof_charch)(a1phanumof_char+-ch;useof_charch=1;Ekongnk.start-s;Ekongnk.end-e;Ekongnk.c-ch;nk+;Statemove(StateT,chars)c!,ft,Statetemp;temp,count=0;temp.mark=T.mark;inti,j=0,k=0;for(i=0;iT.count;i+)J-O;whi1e(jn)if(Ej.start=T.Hi&Ej.C=S)temp.Htemp,count+=Ej.end;)j+;)returntem
5、p;voidarriveBynone(intt,intresu1t,int&num)搜索状态t通过一个或多个空字符到达的状态,结果存在resu1t中intk=0;intm=0;num=0;stackS;S.push(t);intj;whi1e(!S.empty()j=S.top();S.pop();m=0;whi1e(mnk)if(Ekongm.Start=j)resu1tnum+=Ekongm.end;S. push(Ekongm.end);m+;boo1check(inti,StateT)判断状态i是否在T中intj;for(j=0;jT.count;j+)if(T.Hj=i)return
6、true;returnfa1se;)Statec1osure(StateT)求闭包(stackSTACK;Statetemp;inti,j,k;for(i=0;iT.count;i+)(STACK.push(T.Hi);temp.Hi=T.Hi;)temp.count=T.count;temp.mark=T.mark;whi1e(!STACK,empty()intt=STACK.top();STACK,pop();搜索状态t通过一个或多个空字符到达的状态intsearch_resu1t100;intnum;arriveBynone(t,search_resu1t,num);for(j=0;jn
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 实验 利用 子集 构造 DFA