北邮-有限状态机应用_第1页
北邮-有限状态机应用_第2页
北邮-有限状态机应用_第3页
北邮-有限状态机应用_第4页
北邮-有限状态机应用_第5页
已阅读5页,还剩19页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、1,2,什么是有限状态自动机?,Finite State Machine,又称有限状态机或简称状态机,是表示有限个状态以及在这些状态之间的转移和动作等行为的数学模型。 状态:存储关于过去的信息,就是说,它反映从系统开始到现在时刻的输入变化。 转移:指示状态变更,并且用必须满足来确使转移发生的条件来描述它。 动作:是在给定时刻要进行的活动的描述。有多种类型的动作: 进入动作(Entry action)-在进入状态时进行 退出动作 -在退出状态时进行 输入动作 -依赖于当前状态和输入条件进行 转移动作 -在进行特定转移时进行,3,为了描述一个有限状态机的工作状况,可采用状态转换图。状态转换图是一个

2、有向图,图中的每个节点表示一种状态,一条边(或弧)表示一个转换关系。 初始状态通常用 “没有起点的箭头” 指向它来表示。 终止状态是机器 完成了它的程序之后 的状态,它通常表示 为双重圆圈。,状态转换图,a,4,状态表,除了状态转换图以外,还可以使用多种类型的状态转移表。最常见的表示如下: 当前状态和条件的组合指示出下一个状态。 完整的动作信息可以只使用脚注来增加。,5,FSM有两个不同的类别:接受器识别器和变换器。 接受器产生一个二元输出,说要么“是”要么“否”来回答输入是否被机器接受。 在所有输入都被处理了的时候, 如果当前状态是接受状态,输入被接受; 否则被拒绝。 作为规则,输入是符号

3、(字符);动作不使用。,接受器状态机,Err,非a或b,a,6,变换器使用动作基于给定输入和或状态生成输出。常分为两种类型:Moore机和Mealy机。 Moore机-只使用进入动作的FSM,就是说输出只依赖于状态。Moore 模型的好处是行为的简单性。 例:一个电梯门的 Moore FSM。 状态“Opening”中的进入 动作 (E:) 开启电机开门, 在状态“Closing”中的进入 动作以反方向开启电机关门。 状态“Opened”和“Closed” 不进行任何动作。,变换器状态机(1),q0,opening,cmd_open,cmd_close,closeing,开门,关门,opene

4、d,closed,7,Mealy机-只使用输入动作的FSM,就是说输出依赖于输入和状态。 Mealy FSM 的使用经常导致状态数目的简约。 例:电梯门的Mealy FSM 有两个输入动作:“开启电机 关门如果 command_close 下达” 和“反向开启电机开门如果 command_open 下达”。,变换器状态机(2),q0,opened,cmd_open/开门,cmd_close/关门,closed,8,FSM的类型,在实践中经常使用混合模型。 进一步可区分为确定型(DFA)和非确定型(NDFA、GNFA)自动机。在确定型自动机中,每个状态对每个可能输入只有精确的一个转移。在非确定型

5、自动机中,给定状态对给定可能输入可以没有或有多于一个转移。 这个区分在实践而非理论中更有用,因为存在算法把任何 NDFA 转换成等价的 DFA,尽管这种转换一般会增加自动机的复杂性。,9,有限状态自动机的应用,有限状态自动机在很多不同领域中都是重要的,包括电子工程、 语言学、计算机科学、哲学、生物学、数学和逻辑学。有限状态机是在自动机理论和计算理论中研究的一类自动机。在计算机科学中,有限状态机被广泛用于建模应用行为、硬件电路系统设计、软件工程,编译器、网络协议、和计算与语言的研究。 针对许多类型的编程问题,建立有限状态自动机模型,可以为分析、求解带来很大的帮助。,10,例1:串口通信 两台微机

6、通过串口通信, 需在两台机器间建立好连接后,才可以传递数据,可以使用有限状态自动机,描述串口通信的状态。,q0:空闲状态 q1: 等待应答状态 q2:通信状态,11,例2:打电话 (状态机在通信领域的应用)。 在一次呼叫中,从建立连接到通话完毕,要经历摘机,拨号,应答,进行通话等过程,话机的状态及状态迁移如下所示。,状态迁移,状态,12,接受器有限状态机的形式化定义 一个五元组 其中: :有限的状态集合; :有限的输入字母表; : 转换函数,是 到 的映射; : 初始状态, ; : 终止状态集, ;,接受器的形式化定义,(初始状态只有一个),13,a,转换函数,例3:用于识别输入的字符串是否是

7、 或者 形式的有限自动机。,14,程序设计实例研究,应用有限状态机模型求解问题,关键就是抽象出状态,描述出状态转移图和状态转移函数 应用有限状态机解题步骤 1、确定输入集 2、绘制状态迁移图(确定状态,在每一个状态下对输入进行分类,确定下一个状态) 3、确定状态转移函数(在某状态下,接收到某一字符后,自动机要执行的操作,以及迁移到的下一状态),15,程序设计实例研究,例4 检验输入是否是合法的C语言注释/*/ 导论教材P172,图10.10,注意读程序实例,q1:等待*状态 q2:注释开始状态 q3: 等待/以结束注释状态 q4:已接收注释结束状态,16,程序设计实例研究,转换函数分析 sta

8、rt状态下: 输入/:state=q1 输出非/:state=ERROR q1状态下: 输入*:state=q2 输出非*:state=ERROR q2状态下: 输入*:state=q3 输入EOF:state=ERROR 输出其他: state=q2,17,6.2 程序设计实例研究,转换函数分析(续) q3状态下: 输入*:状态不变 输入/:state=q4 输入EOF:state=ERROR 输出其他: state=q2 q4状态下: 输入EOF:state=ACCEPT 输出其他: state=ERROR,18,6.2 程序设计实例研究,例5 去除C语言注释,19,有限状态机解题通用处理

9、模式,有限状态机解题通用处理模式,#define START 1 . int state=START; . while (state!=END) ch=getch(); switch(state) case START: if (ch=?) state=Q1; break; .,20,为什么要用状态机?,有限状态机到底有什么好处?怎样才算应用状态机解题? 1、状态机用数学模型来设计解题思路,准确可靠、简练,而程序员仅仅依靠自己的脑力和复杂的程序结构。 2、状态机模型的思路和人解决问题的思路是一致的,都是把复杂的问题逐步分解为简单的步骤。所以状态机模型是程序员的好助手,不是你的竞争对手。 3、状

10、态机解题的特征:在连续输入的逻辑判断过程中,有清楚的状态分段,各状态段之间的逻辑跳转有严谨的迁移规则。 4、应用状态机设计的程序最终表现出的清晰严谨的逻辑结构,而不是可读性很差的“聪明”代码。,21,例6: 输入一个字符串,以#结束,要求判断其是否满足anbncn形式。 程序运行效果如下: 例1: Please input string consist of a/b/c, #to end: aabbcc# the string is acceptable 例2: Please input string consist of a/b/c,#to end: aabbc# the string is not acceptable,22,为什么要引入状态?-问题示例,main() int count1=0,count2=0,count3=0; char ch; ch=getch() while (ch=a) count1+; ch=getch(); while (ch=b) count2+; ch=getch(); while (ch=c) count3+; ch=getch(); if (ch=#) if (count1=count2) ,导论教材P168 图10.6程序实例不是好的状态机实例,同学不要学!,2

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论