- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
计算机理论导引实验报告1-确定性有穷状态机(DFA)的最小化
HUNAN UNIVERSITY
计算理论导引
实验报告
题 目: 确定性有穷状态机(DFA)的最小化 学生姓名: 学生学号: 专业班级: 计算机科学与技术2班 上课老师: 实验日期: 2014-1-4 目 录
一、实验目的 2
二、实验内容 2
三、实验代码 2
四、测试数据以及运行结果 7
五、实验感想 8
一、实验目的
1、加深对确定型有穷自动机的理解。
2、掌握确定型有穷自动机的最小化方法。
二、实验内容
对于任意给定的一台确定型有穷自动机,编程求与之等价的状态个数最少的确定型有穷自动机。
三、实验代码
#includefstream
#includevector
using namespace std;
struct subset
{
int id;
vectorint set;
};
class Grammar
{
public:
Grammar(ifstream in);
~Grammar(void);
int k;//状态个数
int tc;//终结符个数
char t[26];//终结符
int m;//边数
int DFA[32][128];
int belong[32];//某个状态属于哪个子集
bool terminal[32];//终结符表
int terminalCount;//终结符个数
bool Mterminal[32];//最小化后的终结符表
int MDFA[32][128];//最小化的DFA表
int MDFAstart;// 最小化的DFA的初态
subset DFAsubset[32];//划分的子集
int subsetcount;//子集的个数
void erase();
vectorsubset spilt(subset I);
void min();
bool insameset(int e,subset v);
};
Grammar::Grammar(ifstream in)
{
int i,u,v;
char a;
memset(terminal,false,sizeof(terminal));
memset(Mterminal,false,sizeof(Mterminal));
for(u=0;u32;u++)
for(v=0;v128;v++)
{
DFA[u][v]=-1;
MDFA[u][v]=-1;
}
this-subsetcount=0;
inthis-k;//状态个数
inthis-tc;//终结符个数
for(i=0;itc;i++)//所有终结符
int[i];
inthis-terminalCount;//终态个数
for(i=0;ithis-terminalCount;i++)//标志终态
{
inu;
terminal[u]=true;
}
inthis-m;//边数
for(i=0;im;i++)//构造邻接矩阵
{
inuav;
DFA[u][a]=v;
}
this-min();
}
void Grammar::min()
{
subset start,end;
int i,id=0;
start.id=id++;
end.id=id++;
for(i=1;i=this-k;i++)
{
if(terminal[i])
{
end.set.push_back(i);
belong[i]=end.id;
}
else
{
start.set.push_back(i);
belong[i]=start.id;
}
}
DFAsubset[subsetcount++]=start;
DFAsubset[subsetcount++]=end;
while(true)
{
bool flag=false;
for(i=0;isubsetcount;i++)
{
if(DFAsubset[i].set.size()2) continue;
vectorsubset vs=spilt(DFAsubset[i]);
if(vs.size()1)
{
flag=true;
vs[0].id=DFAsubset[i].id;
DFAsubset[i]=vs[0];
for(unsigned int j=1;jvs.size();j++)
{
DFAsubset[subsetcount]=vs[j];
DFAsubset[su
您可能关注的文档
最近下载
- 路肩检查记录表.docx VIP
- Unit 6 How do you feel Part B read and write(教学设计)人教PEP版英语六年级上册.docx VIP
- 天然气管道涉路工程(定向钻穿越)安全评价报告.pdf VIP
- 地被植物的种植模板.docx VIP
- JJF2094-2024 行星式水泥胶砂搅拌机校准规范.pdf VIP
- 严重精神障碍家属护理.pptx VIP
- 锻造机械日常点检表.docx VIP
- 2MW变流器(艾默生)20140723.pptx VIP
- 钢结构检测内部培训.pptx VIP
- 体育舞蹈之拉丁舞智慧树知到期末考试答案章节答案2024年浙江大学.docx VIP
原创力文档


文档评论(0)