- 1、本文档共38页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
《5_有限状态机
第五讲 有限状态机 主要内容 1. 有限状态机的基本概念 2. 有限状态机编程方法 状态机的引入 状态机理论最初的发展在数字电路设计领域。 在数字电路方面,根据输出是否与输入信号有关,状态机可以划分为Mealy型和Moore型状态机。 Moore型状态机的输出只和当前状态有关,和输入无关。 Mealy型状态机的输入是由当前状态和输入共同决定。 而在软件设计领域,状态机的理论俨然已经自成一体,它经常用来描述一些复杂的算法,表明一些算法的内部的结构和流程,更多的关注于程序对象的执行顺序。 静态顺序结构 动态结构 有限状态机 有限自动机(Finite Automata Machine)是计算机科学的重要基石,它在软件开发领域内通常被称作有限状态机(Finite State Machine),是一种应用非常广泛的软件设计模式。 有限状态机的作用主要是描述对象在它的生命周期内所经历的状态序列,以及如何响应来自外界的各种事件。 在现实中,有许多事情可以用有限个状态来表达,如: 红绿灯、电话机等等。 其实,在资讯领域中,很多事情都是由有限的状态所组成,再由于不同的输入而衍生出各个状态。 有限状态机 有限状态机FSM思想广泛应用于硬件控制电路设计,也是软件上常用的一种处理方法(软件上称为FMM--有限消息机)。它把复杂的控制逻辑分解成有限个稳定状态,在每个状态上判断事件,变连续处理为离散数字处理,符合计算机的工作特点。同时,因为有限状态机具有有限个状态,所以可以在实际的工程上实现。但这并不意味着其只能进行有限次的处理,相反,有限状态机是闭环系统,有限无穷,可以用有限的状态,处理无穷的事务。 有限状态机—例1 红绿灯 红绿灯运作的原理相当简单,从一开始绿灯,经过一段时间后,将变为黄灯, 再隔一会儿,就会变成红灯,如此不断反覆。 其FSM如下。 有限状态机—例2 自动贩售机 假设有简单的一自动贩卖机贩售两类商品,一类售价20元,另一类售价50元。 如果该贩卖机只能辨识10元及50元硬币。 一开始机器处于Hello的状态,当投入10元时,机器会进入余额不足的状态,直到投入的金额大于20元为止。 如果一次投入50元,则可以选择所有的产品,否则就只能选择20元的产品。 完成选择后,将会卖出商品并且找回剩余的零钱,随后,机器又将返回初始的状态。 其FSM如下。 基本概念 在描述有限状态机时,常会碰到的几个基本概念: 状态(State) 指的是对象在其生命周期中的一种状况,处于某个特定状态中的对象必然会满足某些条件、执行某些动作或者是等待某些事件。 事件(Event) 指的是在时间和空间上占有一定位置,并且对状态机来讲是有意义的那些事情。事件通常会引起状态的变迁,促使状态机从一种状态切换到另一种状态。 转换(Transition) 指的是两个状态之间的一种关系,表明对象将在第一个状态中执行一定的动作,并将在某个事件发生同时某个特定条件满足时进入第二个状态。 动作(Action) 指的是状态机中可以执行的那些原子操作,所谓原子操作指的是它们在运行的过程中不能被其他消息所中断,必须一直执行下去。 有限状态机模型 通信协议建模 基本出发点:认为通信协议主要是由响应多个“事件”的相对简单的处理过程组成。 状态转移图 优点:简单明了,比较精确。 缺点:对许多复杂的协议,事件数和状态数会剧增,处理困难。 为什么使用有限状态机 在面向对象的软件系统中,一个对象无论多么简单或者多么复杂,都必然会经历一个从开始创建到最终消亡的完整过程,这通常被称为对象的生命周期。 对象在其生命期内是不可能完全孤立的,它必须通过发送消息来影响其它对象,或者通过接受消息来改变自身。 为什么使用有限状态机 在银行客户管理系统中,客户类(Customer)的实例在需要的时候,可能会调用帐户(Account)类中定义的getBalance()方法。在这种简单的情况下,类Customer并不需要一个有限状态机来描述自己的行为,主要原因在于它当前的行为并不依赖于过去的某个状态。 并不是所有情况都会如此简单,事实上许多实用的软件系统都必须维护一两个非常关键的对象,它们通常具有非常复杂的状态转换关系,而且需要对来自外部的各种事件进行响应。 例如,在VoIP电话系统(找状态图)中,电话类(Telephone)的实例必须能够响应来自对方的随机呼叫,来自用户的按键事件,以及来自网络的信令等。在处理这些消息时,类Telephone所要采取的行为完全依赖于它当前所处的状态,此时使用状态机将是一个不错的选择。 为什么使用有限状态机 游戏引擎是有限状态机最为成功的应用领域之一,由于设计良好的状态机能够被用来取代
文档评论(0)