欢迎来到163文库! | 帮助中心 精品课件PPT、教案、教学设计、试题试卷、教学素材分享与下载!
163文库
全部分类
  • 办公、行业>
  • 幼教>
  • 小学>
  • 初中>
  • 高中>
  • 中职>
  • 大学>
  • 各类题库>
  • ImageVerifierCode 换一换
    首页 163文库 > 资源分类 > PPT文档下载
    分享到微信 分享到微博 分享到QQ空间

    有限状态机教学课件.ppt

    • 文档编号:4296114       资源大小:694.50KB        全文页数:28页
    • 资源格式: PPT        下载积分:22文币     交易提醒:下载本文档,22文币将自动转入上传用户(晟晟文业)的账号。
    微信登录下载
    快捷注册下载 游客一键下载
    账号登录下载
    二维码
    微信扫一扫登录
    下载资源需要22文币
    邮箱/手机:
    温馨提示:
    快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。
    如填写123,账号就是123,密码也是123。
    支付方式: 支付宝    微信支付   
    验证码:   换一换

    优惠套餐(点此详情)
     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、试题类文档,标题没说有答案的,则无答案。带答案试题资料的主观题可能无答案。PPT文档的音视频可能无法播放。请谨慎下单,否则不予退换。
    3、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者搜狗浏览器、谷歌浏览器下载即可。。

    有限状态机教学课件.ppt

    1、 第五讲第五讲 有限状态机有限状态机12022-11-26通通第第2页页1.有限状态机的基本概念有限状态机的基本概念2.有限状态机编程方法有限状态机编程方法主要内容主要内容2022-11-26通通第第3页页状态机的引入状态机的引入n状态机理论最初的发展在数字电路设计领域。状态机理论最初的发展在数字电路设计领域。n在数字电路方面,根据输出是否与输入信号有关,状在数字电路方面,根据输出是否与输入信号有关,状态机可以划分为态机可以划分为Mealy型和型和Moore型状态机。型状态机。Moore型状态机的输出只和当前状态有关,和输入无关。型状态机的输出只和当前状态有关,和输入无关。Mealy型状态机的

    2、输入是由当前状态和输入共同决定。型状态机的输入是由当前状态和输入共同决定。n而在软件设计领域,状态机的理论俨然已经自成一体,而在软件设计领域,状态机的理论俨然已经自成一体,它经常用来描述一些复杂的算法,表明一些算法的内它经常用来描述一些复杂的算法,表明一些算法的内部的结构和流程,更多的关注于程序对象的执行顺序。部的结构和流程,更多的关注于程序对象的执行顺序。2022-11-26通通第第4页页n静态顺序结构静态顺序结构n动态结构动态结构2022-11-26通通第第5页页有限状态机有限状态机n有限自动机(有限自动机(Finite Automata Machine)是计算机科学)是计算机科学的重要基

    3、石,它在软件开发领域内通常被称作有限状态的重要基石,它在软件开发领域内通常被称作有限状态机(机(Finite State Machine),是一种应用非常广泛的软),是一种应用非常广泛的软件设计模式。件设计模式。n有限状态机的作用主要是有限状态机的作用主要是描述对象在它的生命周期内所描述对象在它的生命周期内所经历的状态序列,以及如何响应来自外界的各种事件经历的状态序列,以及如何响应来自外界的各种事件。n在现实中,有许多事情可以用有限个状态来表达,如在现实中,有许多事情可以用有限个状态来表达,如:红绿灯、电话机等等。红绿灯、电话机等等。其实,在资讯领域中,很多事情其实,在资讯领域中,很多事情都是

    4、由有限的状态所组成,再由于不同的输入而衍生出都是由有限的状态所组成,再由于不同的输入而衍生出各个状态。各个状态。2022-11-26通通第第6页页有限状态机有限状态机n有限状态机有限状态机FSM思想广泛思想广泛应用应用于于硬件控制硬件控制电路设计,也电路设计,也是是软件软件上常用的一种处理方法上常用的一种处理方法(软件软件上称为上称为FMM-有限有限消息机消息机)。它把复杂的。它把复杂的控制控制逻辑分解成逻辑分解成有限个有限个稳定状态,稳定状态,在每个状态上判断事件,变连续处理为在每个状态上判断事件,变连续处理为离散离散数字数字处理,处理,符合计算机的工作特点。符合计算机的工作特点。n同时,因

    5、为有限状态机具有有限个状态,所以可以在实同时,因为有限状态机具有有限个状态,所以可以在实际的工程上实现。但这并不意味着其只能进行有限次的际的工程上实现。但这并不意味着其只能进行有限次的处理,相反,有限状态机是闭环系统,有限无穷,可以处理,相反,有限状态机是闭环系统,有限无穷,可以用有限的状态,处理无穷的事务。用有限的状态,处理无穷的事务。2022-11-26通通第第7页页有限状态机有限状态机例例1n红绿灯红绿灯 红绿灯运作的原理相当简单,从一开始绿灯,经过一段时间后,红绿灯运作的原理相当简单,从一开始绿灯,经过一段时间后,将变为黄灯,将变为黄灯,再隔一会儿,就会变成红灯,如此不断反覆。再隔一会

    6、儿,就会变成红灯,如此不断反覆。其其FSM如下。如下。2022-11-26通通第第8页页有限状态机有限状态机例例2n自动贩售机自动贩售机 假设有简单的一自动贩卖机贩售两类商品,一类售价假设有简单的一自动贩卖机贩售两类商品,一类售价20元,元,另一类售价另一类售价50元。元。如果该贩卖机只能辨识如果该贩卖机只能辨识10元及元及50元硬币。元硬币。一一开始机器处于开始机器处于Hello的状态,当投入的状态,当投入10元时,机器会进入余额不足元时,机器会进入余额不足的状态,直到投入的金额大于的状态,直到投入的金额大于20元为止。元为止。如果一次投入如果一次投入50元,则元,则可以选择所有的产品,否则

    7、就只能选择可以选择所有的产品,否则就只能选择20元的产品。元的产品。完成选择后,完成选择后,将会卖出商品并且找回剩余的零钱,随后,机器又将返回初始的状将会卖出商品并且找回剩余的零钱,随后,机器又将返回初始的状态。态。其其FSM如下。如下。2022-11-26通通第第9页页基本概念基本概念n在描述有限状态机时,常会碰到的几个基本概念:在描述有限状态机时,常会碰到的几个基本概念:n状态(状态(State)指的是对象在其生命周期中的一种状况,处于指的是对象在其生命周期中的一种状况,处于某个特定状态中的对象必然会满足某些条件、执行某些动作或某个特定状态中的对象必然会满足某些条件、执行某些动作或者是等待

    8、某些事件。者是等待某些事件。n事件(事件(Event)指的是在时间和空间上占有一定位置,并且对指的是在时间和空间上占有一定位置,并且对状态机来讲是有意义的那些事情。事件通常会引起状态的变迁,状态机来讲是有意义的那些事情。事件通常会引起状态的变迁,促使状态机从一种状态切换到另一种状态。促使状态机从一种状态切换到另一种状态。n转换(转换(Transition)指的是两个状态之间的一种关系,表明对指的是两个状态之间的一种关系,表明对象将在第一个状态中执行一定的动作,并将在某个事件发生同象将在第一个状态中执行一定的动作,并将在某个事件发生同时某个特定条件满足时进入第二个状态。时某个特定条件满足时进入第

    9、二个状态。n动作(动作(Action)指的是状态机中可以执行的那些原子操作,指的是状态机中可以执行的那些原子操作,所谓原子操作指的是它们在运行的过程中不能被其他消息所中所谓原子操作指的是它们在运行的过程中不能被其他消息所中断,必须一直执行下去。断,必须一直执行下去。2022-11-26通通第第10页页有限状态机模型有限状态机模型n通信协议建模通信协议建模n基本出发点:认为通信协议主要是由响应多个基本出发点:认为通信协议主要是由响应多个“事件事件”的相对的相对简单的处理过程组成。简单的处理过程组成。n状态转移图状态转移图n优点:简单明了,比较精确。优点:简单明了,比较精确。n缺点:对许多复杂的协

    10、议,事件数和状态数会剧增,处理困难。缺点:对许多复杂的协议,事件数和状态数会剧增,处理困难。2022-11-26通通第第11页页为什么使用有限状态机为什么使用有限状态机n在面向对象的软件系统中,一个对象无论多么简单或者多么复杂,都在面向对象的软件系统中,一个对象无论多么简单或者多么复杂,都必然会经历一个从开始创建到最终消亡的完整过程,这通常被称为对必然会经历一个从开始创建到最终消亡的完整过程,这通常被称为对象的象的生命周期生命周期。n对象在其生命期内是不可能完全孤立的,它必须通过发送消息来影响对象在其生命期内是不可能完全孤立的,它必须通过发送消息来影响其它对象,或者通过接受消息来改变自身。其它

    11、对象,或者通过接受消息来改变自身。2022-11-26通通第第12页页为什么使用有限状态机为什么使用有限状态机n在银行客户管理系统中,客户类(在银行客户管理系统中,客户类(Customer)的实例在需要的时候,)的实例在需要的时候,可能会调用帐户(可能会调用帐户(Account)类中定义的)类中定义的getBalance()方法。在这种简方法。在这种简单的情况下,类单的情况下,类Customer并不需要一个有限状态机来描述自己的行为,并不需要一个有限状态机来描述自己的行为,主要原因在于它当前的行为并不依赖于过去的某个状态。主要原因在于它当前的行为并不依赖于过去的某个状态。n并不是所有情况都会如

    12、此简单,事实上许多实用的软件系统都必须维并不是所有情况都会如此简单,事实上许多实用的软件系统都必须维护一两个非常关键的对象,它们通常具有非常复杂的状态转换关系,护一两个非常关键的对象,它们通常具有非常复杂的状态转换关系,而且需要对来自外部的各种事件进行响应。而且需要对来自外部的各种事件进行响应。n例如,在例如,在VoIP电话系统(找状态图)电话系统(找状态图)中,电话类(中,电话类(Telephone)的实例)的实例必须能够响应来自对方的随机呼叫,来自用户的按键事件,以及来自必须能够响应来自对方的随机呼叫,来自用户的按键事件,以及来自网络的信令等。在处理这些消息时,类网络的信令等。在处理这些消

    13、息时,类Telephone所要采取的行为完全所要采取的行为完全依赖于它当前所处的状态,此时使用状态机将是一个不错的选择。依赖于它当前所处的状态,此时使用状态机将是一个不错的选择。2022-11-26通通第第13页页为什么使用有限状态机为什么使用有限状态机n游戏引擎是有限状态机最为成功的应用领域之一,由于设计良好的状游戏引擎是有限状态机最为成功的应用领域之一,由于设计良好的状态机能够被用来取代部分的人工智能算法,因此游戏中的每个角色或态机能够被用来取代部分的人工智能算法,因此游戏中的每个角色或者器件都有可能内嵌一个状态机。者器件都有可能内嵌一个状态机。n考虑考虑RPG(Role-playing

    14、Game)游戏中城门这样一个简单的对象,它)游戏中城门这样一个简单的对象,它具有打开(具有打开(Opened)、关闭()、关闭(Closed)、上锁()、上锁(Locked)、解锁)、解锁(Unlocked)四种状态。当玩家到达一个处于状态)四种状态。当玩家到达一个处于状态Locked的门时,如的门时,如果此时他已经找到了用来开门的钥匙,那么他就可以利用它将门的当果此时他已经找到了用来开门的钥匙,那么他就可以利用它将门的当前状态转变为前状态转变为Unlocked,进一步还可以通过旋转门上的把手将其状态,进一步还可以通过旋转门上的把手将其状态转变为转变为Opened,从而成功进入城内。,从而成功

    15、进入城内。2022-11-26通通第第14页页控制城门的状态机控制城门的状态机 2022-11-26通通第第15页页1.有限状态机的基本概念有限状态机的基本概念2.有限状态机编程方法有限状态机编程方法主要内容主要内容2022-11-26通通第第16页页确定的有限状态机确定的有限状态机n一个一个DFA M是一个五元组,记作是一个五元组,记作 M=(S,f,S0,Z),其中,其中1)S=状态状态i,S是一个有限集,其中的每一个元素称为一个状态是一个有限集,其中的每一个元素称为一个状态2)=输入字符输入字符i,是一个有穷字母表,它的每一个元素称为一个是一个有穷字母表,它的每一个元素称为一个输入字符输

    16、入字符3)f:S S,f 是转换函数,表示某状态接受某个是转换函数,表示某状态接受某个输入字符输入字符所到所到达的状态,如:达的状态,如:f(p,a)=q,p,q S,a4)S0 S,S0是是S中的元素,是唯一的一个初态中的元素,是唯一的一个初态 5)Z S,且,且 Z ,Z是是S的一个子集,是一个终态集,或叫结束集的一个子集,是一个终态集,或叫结束集 2022-11-26通通第第17页页确定的有限状态机确定的有限状态机左侧的状态图,在数学上称作左侧的状态图,在数学上称作DFA,其形式化定义为:其形式化定义为:M=(S,f,S0,Z)其中,其中,S =0,1,2,3 =a,b,c,d S0=0

    17、 Z =3 源状态源状态输入输入目的状态目的状态0a10C21d11b32d3f:013abcdd22022-11-26通通第第18页页手工编写状态机手工编写状态机 n与其他常用的设计模式有所不同,程序员想要在自己的软件系统与其他常用的设计模式有所不同,程序员想要在自己的软件系统中加入状态机时,必须再额外编写一部分用于逻辑控制的代码,中加入状态机时,必须再额外编写一部分用于逻辑控制的代码,如果系统足够复杂的话,这部分代码实现和维护起来还是相当困如果系统足够复杂的话,这部分代码实现和维护起来还是相当困难的。难的。n在实现有限状态机时,使用在实现有限状态机时,使用switch语句语句是最简单也是最

    18、直接的一是最简单也是最直接的一种方式,其基本思路是为状态机中的每一种状态都设置一个种方式,其基本思路是为状态机中的每一种状态都设置一个case分支,专门用于对该状态进行控制。分支,专门用于对该状态进行控制。n学习学习doorFSM工程,如何编程实现有限状态机。工程,如何编程实现有限状态机。2022-11-26通通第第19页页手工编写状态机手工编写状态机n在很长一段时期内,使用在很长一段时期内,使用switch语句一直是实现有限状态机的唯一语句一直是实现有限状态机的唯一方法,甚至像编译器这样复杂的软件系统,大部分也都直接采用这方法,甚至像编译器这样复杂的软件系统,大部分也都直接采用这种实现方式。

    19、但之后随着状态机应用的逐渐深入,构造出来的状态种实现方式。但之后随着状态机应用的逐渐深入,构造出来的状态机越来越复杂,这种方法也开始面临各种严峻的考验。如果状态机机越来越复杂,这种方法也开始面临各种严峻的考验。如果状态机中的状态非常多,或者状态之间的转换关系异常复杂,那么简单地中的状态非常多,或者状态之间的转换关系异常复杂,那么简单地使用使用switch语句构造出来的状态机将是不可维护的。语句构造出来的状态机将是不可维护的。2022-11-26通通第第20页页doorFSM程序实例程序实例(1)新建一个)新建一个Win32 Console Application的简单应用程序,并利的简单应用程

    20、序,并利用用ClassWiard建立建立doorFSM类,用类,用doorFSM实现状态机。实现状态机。(2)编写)编写doorFSM.h头文件头文件(3)编写)编写doorFSM.cpp源程序源程序 添加状态、事件、转化函数等添加状态、事件、转化函数等(4)添加测试程序)添加测试程序Test.cpp2022-11-26通通第第21页页DoorFSM类类class DoorFSM public:enum Event Lock,Unlock,Open,Close;/Eventsprotected:void enterOpened();void enterLocked();void enterUn

    21、locked();void enterClosed();public:enum States Closed,Unlocked,Locked,Opened;/states States doorState;public:DoorFSM()doorState=Opened;/Constructor virtual DoorFSM()/Destructor States currentState()return doorState;/Get current FSM state,returns current FSM state void processEvent(Event e);/perform

    22、event static const char*eventName(Event e);/Get symbolic name of an event static const char*stateName(States s);/Get symbolic name of a state;2022-11-26通通第第22页页doorFSM.cpp实现文件实现文件nvoid DoorFSM:processEvent(Event e)nn States yOld=doorState;n bool pass=false;n switch(yOld)n /transitions n case Closed:

    23、n if(e=Open)n /outcome actionsn doorState=Opened;n pass=true;n n else if(e=Lock)n /outcome actionsn doorState=Locked;n pass=true;n n break;case Unlocked:if(e=Lock)/outcome actions doorState=Locked;pass=true;else if(e=Open)/outcome actions doorState=Opened;pass=true;break;case Locked:if(e=Unlock)/out

    24、come actions doorState=Unlocked;pass=true;break;2022-11-26通通第第23页页自动生成状态机自动生成状态机 n为实用的软件系统编写状态机并不是一件十分轻松的事情,特别是为实用的软件系统编写状态机并不是一件十分轻松的事情,特别是当状态机本身比较复杂的时候尤其如此。人们开始尝试开发一些工当状态机本身比较复杂的时候尤其如此。人们开始尝试开发一些工具来自动生成有限状态机的框架代码,而在具来自动生成有限状态机的框架代码,而在Linux下就有一个挺不下就有一个挺不错的选择错的选择FSME(Finite State Machine Editor)。)。n

    25、FSME是一个是一个基于基于Qt的有限状态机工具的有限状态机工具,它能够让用户通过图形化,它能够让用户通过图形化的方式来对程序中所需要的状态机进行建模,并且还能够自动生成的方式来对程序中所需要的状态机进行建模,并且还能够自动生成用用C+或者或者Python实现的状态机框架代码。实现的状态机框架代码。2022-11-26通通第第24页页可视化的可视化的FSME2022-11-26通通第第25页页状态机建模状态机建模 首先运行首先运行fsme命令命令来启动状态机编辑器,然来启动状态机编辑器,然后单击工具栏上后单击工具栏上 New按钮来创建一个新的状态按钮来创建一个新的状态机。机。FSME中用于构建

    26、状中用于构建状态机的基本元素一共有五态机的基本元素一共有五种:事件(种:事件(Event)、输)、输入(入(Input)、输出)、输出(Output)、状态)、状态(State)和转换)和转换(Transition),在界面),在界面左边的树形列表中可以找左边的树形列表中可以找到其中的四种。到其中的四种。2022-11-26通通第第26页页小结小结 n在面向对象的软件系统中,有些对象具有非常复杂的生命周期模在面向对象的软件系统中,有些对象具有非常复杂的生命周期模型,使用有限状态机是描述这类对象最好的方法。型,使用有限状态机是描述这类对象最好的方法。n作为一种软件设计模式,有限状态机的概念虽然不

    27、算复杂,实现作为一种软件设计模式,有限状态机的概念虽然不算复杂,实现起来也并不困难,但它的问题是当状态机的模型复杂到一定的程起来也并不困难,但它的问题是当状态机的模型复杂到一定的程度之后,会带来实现和维护上的困难。度之后,会带来实现和维护上的困难。nFSME是一个可视化的有限状态机建模工具,而且支持状态机框架是一个可视化的有限状态机建模工具,而且支持状态机框架代码的自动生成,借助它可以更加轻松地构建基于有限状态机的代码的自动生成,借助它可以更加轻松地构建基于有限状态机的应用系统。应用系统。2022-11-26通通第第27页页练习:练习:2022-11-26通通第第28页页实验要求实验要求n上机内容上机内容n编写一个成绩转换函数,要求:编写一个成绩转换函数,要求:1)用户输入分数,程序自动转化成相应的等级。用户输入分数,程序自动转化成相应的等级。2)分数分数90,等级为优,等级为优 90分数分数80,等级为良,等级为良 80分数分数70,等级为中,等级为中 70分数分数60,等级为及格,等级为及格 60分数,等级为不及格分数,等级为不及格n思考题思考题n举例说明有限状态机在生活中的应用,并画出其状态图。举例说明有限状态机在生活中的应用,并画出其状态图。


    注意事项

    本文(有限状态机教学课件.ppt)为本站会员(晟晟文业)主动上传,其收益全归该用户,163文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上传内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知163文库(点击联系客服),我们立即给予删除!




    Copyright@ 2017-2037 Www.163WenKu.Com  网站版权所有  |  资源地图   
    IPC备案号:蜀ICP备2021032737号  | 川公网安备 51099002000191号


    侵权投诉QQ:3464097650  资料上传QQ:3464097650
       


    【声明】本站为“文档C2C交易模式”,即用户上传的文档直接卖给(下载)用户,本站只是网络空间服务平台,本站所有原创文档下载所得归上传人所有,如您发现上传作品侵犯了您的版权,请立刻联系我们并提供证据,我们将在3个工作日内予以改正。

    163文库