




已阅读5页,还剩13页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
编译原理实验报告实验名称 不确定有穷自动机的确定化实验时间_ 2014年4月10日_院 系_管理信息工程学院_班 级_11计算机科学与技术_学 号_201101020109_姓 名_姜高_1、 实验目的不确定有穷自动机的确定化2、 实验原理用子集构造算法构造子集加入子集族中直到收敛(所有构造的子集都已存在于子集族)为止。如原来不确定有穷自动机的五元组形式为:M=(K,&,F,S,Z),其中K为状态集,&为字母表,F为转换函数,S为初始态,Z为终态集。用子集族S代替K,新的转换函数D代替F,形成新的五元组M=(S,&,D,S,Z)即将原不确定有穷自动机转换为确定有穷自动机。3、 实验内容(1) 闭包计算:closure(I)(2) 转换函数:move(I,a)4、 伪代码 假定构造的子集族为S=(T1,T2。), K为状态集:(1) 开始,令closure(K0)为S中唯一成员,并且未被标记(2) WHILE(C中存在尚未被标记的子集T)DO标记T;For 每输入字母a DOU:=closure(move(T,a);If U 不在S中 then将U作为未被标记的子集加在S中5.代码实现#include #include #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; string jiheMAXS; ; void kong(int a) int i; for(i=0;ia;i+) cout ; /排序 void paixu(string &a) int i,j; char b; for(j=0;ja.length();j+) for(i=0;iNODE.find(ai+1) b=ai; ai=ai+1; ai+1=b; void eclouse(char c,string &he,edge b) int k; for(k=0;khe.length() he+=bk.last; eclouse(bk.last0,he,b); void move(chan &he,int m,edge b) int i,j,k,l; k=he.ltab.length(); l=he.jihem.length(); for(i=0;ik;i+) for(j=0;jhe.jihem.length() he.jihem+=bj.last0; for(i=0;il;i+) for(j=0;jhe.jihem.length() he.jihem+=bj.last0; /输出 void outputfa(int len,int h,chan *t) int i,j,m; cout I ; for(i=0;ilen;i+) coutICHANGEi ; coutendl-endl; for(i=0;ih;i+) cout ti.ltab; m=ti.ltab.length(); for(j=0;jlen;j+) kong(8-m); m=ti.jihej.length(); coutti.jihej; coutendl; void main() edge *b=new edgeMAXS; int i,j,k,m,n,h,x,y,len; bool flag; string jhMAXS,endnode,ednode,sta; cout请输入NFA各边信息(起点条件空为* 终点),以#结束:endl; for(i=0;ibi.first; if(bi.first=#) break; cinbi.changebi.last; N=i; /*for(j=0;jN;j+) coutbj.firstbj.changebj.lastendl;*/ for(i=0;iNODE.length() NODE+=bi.first; if(NODE.find(bi.last)NODE.length() NODE+=bi.last; if(CHANGE.find(bi.change)CHANGE.length()&(bi.change!=*) CHANGE+=bi.change; len=CHANGE.length(); cout结点中属于终态的是:endnode; for(i=0;iNODE.length() cout所输终态不在集合中,错误!endl; return; /coutendnode=endnodeendl; chan *t=new chanMAXS; t0.ltab=b0.first; h=1; eclouse(b0.first0,t0.ltab,b); /求e-clouse /coutt0.ltabendl; for(i=0;ih;i+) for(j=0;jti.ltab.length();j+) for(m=0;mlen;m+) eclouse(ti.ltabj,ti.jihem,b); /求e-clouse for(k=0;klen;k+) /coutti.jihek; move(ti,k,b); /求move(I,a) /coutti.jihekendl; for(j=0;jti.jihek.length();j+) eclouse(ti.jihekj,ti.jihek,b); /求e-clouse for(j=0;jlen;j+) paixu(ti.jihej); /对集合排序以便比较 for(k=0;kh;k+) flag=operator=(tk.ltab,ti.jihej); if(flag) break; if(!flag&ti.jihej.length() th+.ltab=ti.jihej; coutendl状态转换矩阵如下:endl; outputfa(len,h,t); /输出状态转换矩阵 /状态重新命名 string *d=new stringh; NODE.erase(); coutendl重命名:endl; for(i=0;ih;i+) sta=ti.ltab; ti.ltab.erase(); ti.ltab=A+i; NODE+=ti.ltab; coutsta=ti.ltabendl; for(j=0;jendnode.length();j+) if(sta.find(endnodej)sta.length() d1=ednode+=ti.ltab; for(k=0;kh;k+) for(m=0;mlen;m+) if(sta=tk.jihem) tk.jihem=ti.ltab; for(i=0;iednode.length() d0+=NODEi; endnode=ednode; coutendlDFA如下:endl; outputfa(len,h,t); /输出DFA cout其中终态为:endnodeendl; /DFA最小化 m=2; sta.erase(); flag=0; for(i=0;im;i+) /coutdi=diendl; for(k=0;klen;k+) /coutICHANGEkendl; y=m; for(j=0;jdi.length();j+) for(n=0;ny;n+) if(dn.find(tNODE.find(dij).jihek)dn.length()|tNODE.find(dij).jihek.length()=0) if(tNODE.find(dij).jihek.length()=0) x=m; else x=n; if(!sta.length() sta+=x+48; else if(sta0!=x+48) dm+=dij; flag=1; di.erase(j,1); /coutdiendl; j-; break; /跳出n /n /j if(flag) m+; flag=0; /coutsta=staendl; sta.erase(); /k /i coutendl集合划分:; for(i=0;im;i+) coutdi ; coutendl; /状态重新命名 chan *md=new chanm; NODE.erase(); coutendl重命名:endl; for(i=0;im;i+) mdi.ltab=A+i; NODE+=mdi.ltab; coutdi=mdi.ltabendl; for(i=0;im;i+) for(k=0;klen;k+) for(j=0;jh;j+) if(di0=tj.ltab0) for(n=0;nm;n+) if(!tj.jihek.length() break; else if(dn.find(tj.jihek)dn.length() mdi.jihek=mdn.ltab; break; break; ednode.erase(); f
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 小小科学家试题及答案
- 育婴师怎样提高沟通技巧与家长的合作关系试题及答案
- 育婴师多元文化教育试题及答案
- 杂志性格测试题及答案
- 教师资格考试的情感支持与心理辅导能力试题及答案
- 禁止饮酒面试题及答案
- 营养诊断在临床中的实施方案试题及答案
- 法律风险防控试题及答案
- 药检方法与技术分析试题及答案
- 护士资格证考试心理卫生的重要性试题及答案
- 无菌技术的护理课件
- 糖尿病科普教育的社交媒体推广-洞察分析
- 自动喷水灭火系统的工作原理和应用
- 汽车维修场所安全管理协议书
- 气候风险与企业绿色创新
- 《广西壮族自治区房屋建筑和市政基础设施工程质量安全手册实施细则(试行)》
- 基础医学题库(含参考答案)
- 接触网高空作业安全培训
- 砌体工程事故及事故分析
- 《改善患者就医体验》课件
- 2024年中考语文试题分类汇编:非连续性文本阅读(教师版)
评论
0/150
提交评论