| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1696 人关注过本帖
标题:求简单确定型自动机范例(C++的)
取消只看楼主 加入收藏
死海文书
Rank: 1
等 级:新手上路
帖 子:10
专家分:0
注 册:2004-11-21
收藏
 问题点数:0 回复次数:3 
求简单确定型自动机范例(C++的)
    我想编一个确定型有穷自动机,但是现在不知道如何下手,所以想找个范例看看,有注释最好,没有也没关系,不懂的我再来问!

[此贴子已经被作者于2004-12-04 20:42:05编辑过]


搜索更多相关主题的帖子: 自动机 范例 有穷 注释 
2004-12-04 20:28
死海文书
Rank: 1
等 级:新手上路
帖 子:10
专家分:0
注 册:2004-11-21
收藏
得分:0 

是一种简单的计算机模型,一种数学模型!我总结不出更简单的解释

1. 有穷自动机的运行描述
(1) 有穷自动机由输入带读头控制器组成。
(2) 输入带是一条向右无限延伸的空白带,可以放入任何一个字符串。读头一次可以读入一个字符。共有有限种状态,控制器总处于其中一种状态中.
(3) 将字符串放入输入带后,最初读头总是位于输入带最左端,控制器处于一个指定的初始状态。运行时有穷自动机一次读入一个字符,然后根据此字符和原状态将状态调整为新状态;再读入下一字符并更新状态;…… ; 反复进行,直至读完整个字符串。
(4) 如果读完整个字符串后状态处于指定的终结状态,则认为该字符串可接受。
该自动机接受的语言是它接受的所有字符串的集合
2. 有穷自动机的数学定义
确定型有穷自动机是一个五元组M=(K,Σ,δ,s, F), 其中K为有穷的状态集合, Σ为字母表,s 是初始状态, F K是终结状态集合, δ(·,·)是K ×Σ到K的函数(称为转移函数)。
转移函数就是每次读头读入一个字符后状态的调整规则。
2004-12-04 20:55
死海文书
Rank: 1
等 级:新手上路
帖 子:10
专家分:0
注 册:2004-11-21
收藏
得分:0 

唉找了好久了,看样子得从白纸开始了!

还是谢谢版主了,如果我搞出来了,会发到论坛上来的!

[此贴子已经被作者于2004-12-05 13:38:59编辑过]

2004-12-05 13:33
死海文书
Rank: 1
等 级:新手上路
帖 子:10
专家分:0
注 册:2004-11-21
收藏
得分:0 

花了我几天时间才搞出来了这个鬼东西,其实很简单,只是我说的吓人,live41你如果知道自动机是怎么回事一定很快就会搞出来.

这是我的拙作,我同学做的比我就好多了。

#include<iostream.h> main() { int s,c,i,j,k,x,y,m,n,o; int a[10][10]; int b[10],d[10]; cout<<"Enter how many state:"; cin>>s; for(j=1;j<=s;j++) { cout<<"Enter the state"<<j<<":"; cin>>b[j]; cout<<"State"<<j<<"="<<b[j]<<"\n"; } cout<<'\n'; cout<<"Which is the first state:"; cin>>n; cout<<n<<'\n'; cout<<"Which is the last state:"; cin>>m; cout<<m<<'\n';

cout<<"Enter the states connect.(0=no connect,1=a,2=b)"<<'\n'; for(i=1;i<=s;i++) { for(j=1;j<=s;j++) { cout<<"Enter the a["<<i<<"]["<<j<<"] state's connect:"; cin>>c; a[i][j]=c; cout<<"a["<<i<<"]["<<j<<"]"<<"="<<a[i][j]<<'\n'; } }

cout<<"Enter how many characters:"; cin>>y; for(k=1;k<=y;k++) { cout<<"Enter characters:"; cin>>x; d[k]=x; cout<<"d["<<k<<"]="<<x<<'\n'; cout<<'\n'; } o=n; for(k=1;k<=y;k++) { cout<<"d["<<k<<"]="<<d[k]<<'\n'; cout<<"k="<<k<<'\n'; for(i=o;i<=s;i++) { cout<<"D["<<k<<"]="<<d[k]<<'\n'; cout<<"i="<<i<<'\n'; int t=0; for(j=1;j<=s;j++) { cout<<"D["<<k<<"]="<<d[k]<<'\n'; cout<<"i="<<i<<",j="<<j<<'\n'; //int t=0; if(d[k]==a[i][j]) { o=b[j]; cout<<"d("<<k<<")="<<d[k]<<'\n'; cout<<"a["<<i<<"]["<<j<<"]"<<"="<<a[i][j]<<'\n'; cout<<o<<'\n'; cout<<'\n'; t=1; break; } //if (t=1) // break; else continue; } if(t=1) break; } } cout<<o<<'\n'; if(o==m) cout<<"The characters is accept by this zhidongji."<<'\n'; else cout<<"The characters isn't accept by this zhidongji."<<'\n'; return 0; }

2004-12-14 13:21
快速回复:求简单确定型自动机范例(C++的)
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.035570 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved