| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 988 人关注过本帖
标题:有状态自动机是什么?如何用于实际?
只看楼主 加入收藏
墨清扬
Rank: 8Rank: 8
等 级:蝙蝠侠
威 望:1
帖 子:294
专家分:817
注 册:2011-10-4
结帖率:100%
收藏
已结贴  问题点数:10 回复次数:3 
有状态自动机是什么?如何用于实际?
做题时遇到一题要求用有限状态自动机解,那是什么?上网查过一些资料,可是看得糊里糊涂的,是不是就是在某一个状态下,输入特定的数据什么的就会跳到特定的另一个状态?
我知道不能求作业,但我真不知道怎样才算用有限状态自动机解,请大家原谅一下……题目如下:
输入一串连续的字符串,由abc组成,判断是否符合连续的n个an个bn个c的形式,如aaabbbccc,aaabbbcc就不行
我想到的方法就是先计算a有多长,然后再看bc是否符合,可是这样好像不是有限状态自动机……
谢谢各位啦
搜索更多相关主题的帖子: 自动机 字符串 如何 资料 
2011-12-10 09:32
绿茶盖儿
Rank: 10Rank: 10Rank: 10
等 级:青峰侠
威 望:1
帖 子:363
专家分:1852
注 册:2011-9-3
收藏
得分:5 
这相当于一个序列检测器,如果在输入端检测到连续的n个a、n个b、n个c,则输出为1,否则输出一直为0。用状态机求解时首先要画出状态转移图,你这个应该设3*n个状态,每次根据输入的情况要发生一次状态的跳变…学过数电吧,去看看序列检测器的原理你就明白了
2011-12-10 19:17
BlueGuy
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:29
帖 子:4476
专家分:4055
注 册:2009-4-18
收藏
得分:5 
楼上说的很不错

有 switch/case 的地方就有状态机,
网络游戏可以完全由状态机实现,不止是 AI


电源开关就是最简单的 有限状态机,有开/关两个状态,
程序设计上所说的状态机的基本实现是 if/else 或者 switch/case 语句,

由于 c 语言不支持多态,所以只能用 switch/case 实现,
eg:

switch(state)
{
    case ON:
        
        if (按下开关按扭);
         {
             state = OFF;
         }
         
        break;
    case OFF:

         if (按下开关按扭);
         {
             state = ON;
         }

         break;
    default:
        break;
}

每个状态会有三个 接口
enter();
excute()
exit();

class state
{
     virtual enter();
     virtual excute();
     virtual exit();
}

changeState();

还有更复杂的实现, 自己网上找点资料看看吧..

你也不用纠结怎么用状态机解题了, 我估计出题的人自己也不会, 呵呵..

[ 本帖最后由 BlueGuy 于 2011-12-11 16:20 编辑 ]

我就是真命天子,顺我者生,逆我者死!
2011-12-11 15:48
墨清扬
Rank: 8Rank: 8
等 级:蝙蝠侠
威 望:1
帖 子:294
专家分:817
注 册:2011-10-4
收藏
得分:0 
感谢两位~~

酱油实习生
2011-12-13 12:39
快速回复:有状态自动机是什么?如何用于实际?
数据加载中...
 
   



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

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