有限状态机(FSM).docx

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
有限状态机(FSM)

?有限状态机(FSM)——《C++编程风格》读书笔记(六)分类:?C++2013-08-04 20:35?875人阅读?评论(0)?收藏?举报??有限状态机(FSM)——《C++编程风格》读书笔记(六)分类:?读书笔记2010-03-03 22:43?4191人阅读?评论(9)?收藏?举报编程读书c++transitioninputstruct??????这章主要研究的是一个有限状态机(finite state machine),简称FSM。当其获得一个字符时,FSM将发生转换,即从当前状态转换到另一状态。有限状态机(FSM)是一种抽象的机制,他在任意时刻都处以有限状态集合中的某一个状态。???? 我们研究的一个FSM的转换规则是(不能上图,口述下):?{1,A,2},{1,B,3},{1,C,4},{1,D,5},{2,E,2},{2,I,0},{3,F,3},{3,J,0},{3,M,4},{4,G,4},{4,K,0},{5,H,5},{5,L,0},{5,O,2},{5,N,4},{0,0,0},即在开始状态1时:输入A到状态2,B到状态3,0为结束状态。程序的目的是判断一个字符串是否能在FSM下由开始状态走到结束状态。??????????????????????????????????????????????????? 程序1 最初的FSM程序[cpp]?view plaincopy#include?string.h??#include?stdio.h????struct?parent??{??????static?char*?expression;??????static?int?index;??????static?int?end_state;??????static?int?doom_state;????????parent(char*?expr);??????virtual?parent*?transition()?{}??};????parent::parent(char*?expr)??{??????expression?=?new?char[strlen(expr)];??????strcpy(expression,expr);??????end_state?=?0;??????doom_state?=?0;??????index?=?0;??}????struct?state1:public?parent??{??????parent?*ptr2,*ptr3,*ptr4,*ptr5;??????state1():parent(expression)?{}??????parent*?transition();??};????struct?state2:public?parent??{??????parent?*ptr2;??????state2():parent(expression)?{}??????parent*?transition();??};????struct?state3:public?parent??{??????parent?*ptr3,*ptr4;??????state3():parent(expression)?{}??????parent*?transition();??};????struct?state4:public?parent??{??????parent?*ptr4;??????state4():parent(expression)?{}??????parent*?transition();??};????struct?state5:public?parent??{??????parent?*ptr2,*ptr4,*ptr5;??????state5():parent(expression)?{}??????parent*?transition();??};????parent*?state1::transition()??{??????switch(expression[index++])??????{??????????case?A:??????????????return?ptr2;??????????case?B:??????????????return?ptr3;??????????case?C:??????????????return?ptr4;??????????case?D:??????????????return?ptr5;??????????case?/0:??????????????doom_state?=?1;??????????default:??????????????doom_state?=?1;??????}??}????parent*

文档评论(0)

dajuhyy + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档