- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
NFA转换为DFA及DFA的化简
实验三(一)NFA(DFA(2小时)
实验目的:学会编程实现子集构造法
实验任务:存储NFA与DFA,编程实现子集构造法将NFA转换成DFA
实验内容:
确定NFA与DFA的存储格式,为3个以上测试NFA准备好存储文件。
NFA的存储格式:
3 //转换边数
0 // 开始状态
3 -1 //结束状态集,以-1为结束标志
0 1 a //状态转换
0 2 a //如状态0在a输入下转换为状态2
2 3 b //其中用#表示空转换
如测试用例:
以a开头和结尾的小字字母串;a (a|b|…|z)*a | a
不包含三个连续的b的,由字母a与b组成的字符串;(( | b | bb) (a | ab | abb)*
(c) (aa|b)*(a|bb)*
用C或JAVA语言编写将NFA转换成DFA的子集构造法的程序。
子集构造法原理:
子集构造法主要代码:
子集构造函数:
void child_method()
{
int m,n;
for(m=0;m100;m++)
for(n=0;n100;n++)
Dtran[m][n]=#;
for(m=0;m100;m++)
DFA[m].flag=-1;
State S0,U;
S0.flag=0;
S0.count=1;
S0.H[0]=first;
State T;
T=closure(S0);
T.mark=0;
T.flag=0;
DFA[numof_Dtran++]=T;
memset(useof_DFA,0,sizeof(useof_DFA));
//检查DFA中是否存在未被标记的状态
int j=check_inDFA();
int k;
while(j!=-1)
{
useof_DFA[j]=1;
for(k=0;knumof_char;k++)
{
U=closure(move(DFA[j],alpha[k])); //求闭包
//if U不在DFA中
if(!check_whetherin_DFA(U)) //判断是否在DFA中
{
U.mark=numof_Dtran;
DFA[numof_Dtran++]=U;
}
Dtran[DFA[j].mark][U.mark]=alpha[k];
}
j=check_inDFA();//检查DFA中是否存在未被标记的状态,有返回标号,否则返回-1
}
}
闭包函数:
State closure(State T)//求闭包
{
stackint STACK;
State temp;
int i,j,k;
for(i=0;iT.count;i++)
{
STACK.push(T.H[i]);
temp.H[i]=T.H[i];
}
temp.count=T.count;
/*temp.flag=0;*/
temp.mark=T.mark;
while(!STACK.empty())
{
int t=STACK.top();
STACK.pop();
//搜索状态t通过一个或多个空字符到达的状态
int search_result[100];
int num;
arriveBynone(t,search_result,num);
for(j=0;jnum;j++)
{
if(!check(search_result[j],temp))
{
temp.H[temp.count++]=search_result[j];
STACK.push(search_result[j]);
}
}
}
for(k=0;ktemp.count;k++)
{
if(f[temp.H[k]]==1)
{
temp.flag=1;
break;
}
if(f[temp.H[k]]==0)
{
temp.flag=0;
break;
}
}
sort(temp.H,temp.H+temp.count);
for(i=0;inumof_Dtran;i++)
{
if(temp.count!=DFA[i].count)
continue;
sort(DFA[i].H,DFA[i].H+DFA[i].count);
for(j=0;jDFA[i].count;j++)
{
if(DFA[i].H[j]!=temp.H[j])
break;
}
if(j=DFA[i].count)
temp.mark=DFA[i
您可能关注的文档
最近下载
- 《语文(基础模块)下册》(中职)教案 第24课 跨媒介阅读与交流(二).pdf VIP
- 《磨床安全操作规程》.docx VIP
- 青2013G02图集-标准图集.docx VIP
- 第36届全国中学生物理竞赛决赛理论考试试题与解答.pdf VIP
- DB45_T1900-2018_芒果成龄果树管理技术规程_广西壮族自治区 conv.docx VIP
- 软件测试-全套PPT课件.pptx
- 类风湿关节炎情景模拟教学案例范文.docx VIP
- 2025广西公需科目培训考试答案(90分)——“一区两地一园一通道”建设;人工智能时代的机遇与挑战(1).pdf VIP
- 化学核心素养引领单元主题学习之初探.docx VIP
- 钻床安全操作规程[共1页].doc VIP
文档评论(0)