欢迎来到冰点文库! | 帮助中心 分享价值,成长自我!
冰点文库
全部分类
  • 临时分类>
  • IT计算机>
  • 经管营销>
  • 医药卫生>
  • 自然科学>
  • 农林牧渔>
  • 人文社科>
  • 工程科技>
  • PPT模板>
  • 求职职场>
  • 解决方案>
  • 总结汇报>
  • ImageVerifierCode 换一换
    首页 冰点文库 > 资源分类 > DOCX文档下载
    分享到微信 分享到微博 分享到QQ空间

    不确定有限状态自动机的确定化.docx

    • 资源ID:15210436       资源大小:16.58KB        全文页数:10页
    • 资源格式: DOCX        下载积分:5金币
    快捷下载 游客一键下载
    账号登录下载
    微信登录下载
    三方登录下载: 微信开放平台登录 QQ登录
    二维码
    微信扫一扫登录
    下载资源需要5金币
    邮箱/手机:
    温馨提示:
    快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。
    如填写123,账号就是123,密码也是123。
    支付方式: 支付宝    微信支付   
    验证码:   换一换

    加入VIP,免费下载
     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    不确定有限状态自动机的确定化.docx

    1、不确定有限状态自动机的确定化不确定有限状态自动机的确定化2008-12-05 22:11#include#include#define MAXS 100using namespace std;string NODE; /结点集合string CHANGE; /终结符集合int N; /NFA边数struct edgestring first;string change;string last;struct chanstring ltab;string jiheMAXS;void kong(int a)int i;for(i=0;ia;i+) cout ;/排序void paixu(string

    2、 &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;j

    3、he.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(); c

    4、outti.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() N

    5、ODE+=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

    6、=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)

    7、; /求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.

    8、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(

    9、len,h,t); /输出DFAcout其中终态为: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

    10、; 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/icoutendl集合划分:;for(i=0;im;i+) coutdi ;coutendl;/状态重新命名chan *md=new chanm; NODE.erase();coutendl重命名:endl;for(i=0;im;i+)

    11、 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();for(i=0;im;i+) for(j=0;jendnode.length();j+) if(di.find

    12、(endnodej)di.length()&ednode.find(mdi.ltab) ednode+=mdi.ltab;endnode=ednode;coutendl最小化DFA如下:endl;outputfa(len,m,md); cout其中终态为:endnodeendl;/测试数据:i * 11 a 11 b 11 * 22 a 32 b 43 a 54 b 55 * 66 a 66 b 66 * f#f/运行结果:请输入NFA各边信息(起点 条件空为* 终点),以#终止:i * 11 a 11 b 11 * 22 a 32 b 43 a 54 b 55 * 66 a 66 b 66

    13、* f#结点中属于终态的是:f状态转换矩阵如下:I Ia Ib-i12 123 124123 12356f 124124 123 12456f12356f 12356f 1246f12456f 1236f 12456f1246f 1236f 12456f1236f 12356f 1246f重命名:i12=A123=B124=C12356f=D12456f=E1246f=F1236f=GDFA如下:I Ia Ib-A B CB D CC B ED D FE G EF G EG D F其中终态为:DEFG集合划分:A DEFG B C重命名:A=ADEFG=BB=CC=D最小化DFA如下:I Ia Ib-A C DB B BC B DD C B其中终态为:B


    注意事项

    本文(不确定有限状态自动机的确定化.docx)为本站会员主动上传,冰点文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰点文库(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

    copyright@ 2008-2023 冰点文库 网站版权所有

    经营许可证编号:鄂ICP备19020893号-2


    收起
    展开