博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
实验三 有限自动机的构造与识别
阅读量:7055 次
发布时间:2019-06-28

本文共 2372 字,大约阅读时间需要 7 分钟。

一、实验目标

  
1、掌握有穷状态自动机的概念;  
2、掌握有穷状态自动机的存储及表示方法;
3、掌握有穷状态自动机与正则式之间的关系。
 
二、实验要求
  
1、输入正规式; 

2、构造该正规式的有穷状态自动机;

3. 以五元组形式输出。

三、算法

参见教材的转换规则。

 

练习:

²  (a|b)*abb

²  l(l|d)*

²  1(1010*|1(010)*1)*0

 

四、完成算法设计、编码和调试工作,完成实验报告。

#include
#include
#include
int main(){char p[30][30];char q[30][30];int line=0;int n;inti,j;int count=0;intk,t=0;int flag=0;intl,m=0;char VN[30]={
'\0'};char VT[30]={
'\0'};printf("规则数:");scanf("%d",&n);line=n;for(i=0;i<30;i++)for(j=0;j<30;j++) {p[i][j]='\0'; q[i][j]='\0'; }printf("请输入文法:\n");for(i=0;i
='a'||(p[i][j]<='9'&&p[i][j]>='0')) {flag=0;for(t=0;VN[t]!='\0';t++) {if(VN[t]==p[i][j]) {flag=1;break; } }if(flag==0) { VN[l]=p[i][j];l++; } }if(p[i][j]<='Z'&&p[i][j]>='A') {flag=0;for(t=0;t<30&&(VT[t]!='\0');t++) {if(VT[t]==p[i][j]) {flag=1;break; } }if(flag==0) { VT[m]=p[i][j];m++; } } } }count=0; k=0;for(i=0;i
='a')||(p[i][j]<='Z'&&p[i][j]>='A')||(p[i][j]<='9'&&p[i][j]>='0')) {q[count][k]=p[i][j];k++; }else {count++; k=0; } }count++; k=0; }flag=0;for(i=0;i
='a')||(p[i][j]<='Z'&&p[i][j]>='A')||(p[i][j]<='9'&&p[i][j]>='0')) {q[count][k]=p[i][j];k++;j++; }if(p[i][j]=='l') {count++; k=0;j++; } } }count++; k=0; }printf("\n");printf("M:\n"); l=0;while(VN[l]!='\0') {printf("M(S,%c)={ ",VN[l]);for(i=0;i<30;i++) {for(j=4;j<30&&(q[i][j]!='\0');j++) { if(VN[l]==q[i][j]&&(q[i][j+1]=='\0')&&(q[i][j-1]=='='))printf("%c",q[i][0]); } }printf("}\t");l++; }printf("\n"); l=0;k=0;while(VT[k]!='\0') { l=0;while(VN[l]!='\0') {printf("M(%c,%c)={ ",VT[k],VN[l]);for(i=0;i<30;i++) {for(j=4;j<30&&(q[i][j]!='\0');j++) {if(VT[k]==q[i][j]&&VN[l]==q[i][j+1])printf("%c",q[i][0]); } }printf("}\t");l++; }k++;printf("\n"); }system("pause");}

心得体会:

通过本次实验,使我对有穷状态自动机有了初步的了解,虽然没有成功,但使我对自动机有了更深刻的理解

转载于:https://www.cnblogs.com/TopHin/p/6150209.html

你可能感兴趣的文章
js指针时钟
查看>>
【绿色系统】如何恢复XP“显示桌面”按钮
查看>>
在ubuntu 11.10 下安装谷歌输入法
查看>>
Apache Hive2.1.0安装笔记
查看>>
django中翻译处理国际化方法
查看>>
三:JVM学习-内存分配以及回收策略
查看>>
spring redis 配置子域名共享session (有点坑)
查看>>
Linux 条件变量 pthread_cond_signal及pthread_cond_wait
查看>>
比AtomicInteger更高效的并发计数器LongAdder
查看>>
做一个座右铭工具每天激励自己
查看>>
Jenkins安装配置
查看>>
vmware12下对虚拟机ubuntu14.10系统所在分区sda1进行磁盘扩容
查看>>
EJB到底是什么,真的那么神秘吗??
查看>>
UI开发工具
查看>>
广义表 (五)
查看>>
Swift中NSTimer定时器的使用
查看>>
本周游戏推荐:暗影格斗2:shandow fight 2
查看>>
/var/log目录下的20个Linux日志文件功能详解
查看>>
我的友情链接
查看>>
去除中国菜刀密码的方法
查看>>