文档章节

【讲古堂】状态机(二)

如比如比
 如比如比
发布于 2016/04/05 06:36
字数 985
阅读 150
收藏 6

状态机

状态机的概念是来自硬件的。描述一系列状态转换的电路叫状态机。主要用来实现一个数字系统设计中的控制部分。运行模式类似于CPU,但和CPU相比,具有结构简单、易读易懂等特点。

对于无限个状态(无限状态机,Infinite State Machine,ISM)是难以检证的,所以这里所说的状态机通常是指有限状态机或有穷状态机,即Finite State Machine,FSM。

状态模式可以允许客户端改变状态的转换行为,而状态机则是能够自动改变状态,状态机是一个比较独立的而且复杂的机制。

状态机看上去就像是一个有向图,其中状态是图的节点,而状态转换则是图的边。

此外这些状态中还必须有一个初始状态和至少一个接受状态。

但是由于一些原因并不会执行初始化(initialization),而是直接通过一个节点进入状态是允许的,则此节点称之为进入节点(Entry Point)。

进入终了状态的节点称为退出节点(Exit Point)

 

转移(Transitions)是两个状态之间的一种关系,表示对象将在源状态(Source State)中,因为预先定义的触发器的发生导致警界条件满足时进入目标状态(Target State)。

触发器(Trigger):是转移的诱因,可以是一个信号,事件、条件变化(a change in some condition)和时间表达式。

警界条件(Guard Condition):当警界条件满足时,事件才会引发转移(Transition)。

结果(Effect):对象状态转移后的结果。

状态可以有返回自身状态的转移,称之为自身转移(Self-Transitions)。

 

动作(Actions)是一个可执行的原子操作,也就是说动作是不可中断的,其执行时间是可忽略不计的。

 

源状态 Source State :即受转换影响的状态

目标状态 Target State :当转换完成后,对象的状态

触发事件 (Trigger) Event :用来为转换定义一个事件,包括调用、改变、信号、时间四类事件

监护条件 (Guard Condition) :布尔表达式,决定是否激活转换、

动作 (Action) :转换激活时的操作

 

对象状态转移后的结果显示在转移线上,如果目标状态有许多转移,而且每个转移有相同的结果,这时把转移后的结果(Effect)展示在目标状态中(Target State)更好一些,可以定义进入动作(Entry Action )和退出动作(Exit Action)

嵌套在另外一个状态中的状态称之为子状态(sub-state),一个含有子状态的状态被称作组合状态(Compound States)。

历史状态(History States)是一个伪状态(Pseudostate),其目的是记住从组合状态中退出时所处的子状态,当再次进入组合状态,可直接进入这个子状态,而不是再次从组合状态的初态开始。

并发区域(Concurrent Regions)

状态图可以分为区域,而区域又包括退出或者当前执行的子状态。说明组合状态在某一时刻可以同时达到多个子状态。

 

状态,存储了关于过去的信息,就是说:它反映从系统开始到现在时刻的输入变化。

转移指示状态变更,并且用必须满足确使转移发生的条件来描述它。

动作是在给定时刻要进行的活动的描述。有多种类型的动作:

进入动作(entry action):在进入状态时进行

退出动作:在退出状态时进行

输入动作:依赖于当前状态和输入条件进行

转移动作:在进行特定转移时进行

 

© 著作权归作者所有

如比如比
粉丝 126
博文 178
码字总数 286951
作品 0
日本
程序员
私信 提问
【讲古堂】状态机(一)

状态(State) 状态,指在对象的生命周期中的某个条件下的状况,在此期间对象将满足某些条件、执行某些活动活活等待某些事件。 所有对象都有状态,状态是对象执行了一系列活动的结果,当某个事...

壶漏子
2016/04/04
123
0
【讲古堂】浮点数

【讲古堂】浮点数 (dubenju@126.com 2015/12/19) 众所周知,由于用高低电平的电路很容易实现二进制,所以在计算机中普遍采用二进制来存储数据。对应的二进制的位用Bit来表示。1字节=8Bits,...

壶漏子
2015/12/19
74
0
【讲古堂】表达式求值

【讲古堂】表达式求值 (dubenju@126.com 2015/12/27) 什么是表达式 表达式是由数字,操作符,变量,常量等有意义地组合而成并能求得结果的式子。 例如: 32 + ( ( 9 * Celsius ) / 5 ) 4 +...

壶漏子
2015/12/27
107
0
初体验react的状态机

一、什么是状态机 状态机可归纳为4个要素,即现态、条件、动作、次态。这样的归纳,主要是出于对状态机的内在因果关系的考虑。“现态”和“条件”是因,“动作”和“次态”是果。详解如下: ...

fir01
2016/03/03
525
0
unity3d Ai 角色控制状态机设计

一:需求 二设计 ![在此输入图片描述][1][1]: http://static.oschina.net/uploads/space/2015/0227/132157_jV0j_186074.png 首先确定有多少种大的AI状态,继承AIState 产生基本状态子类 ![在...

李勇2
2015/02/27
615
0

没有更多内容

加载失败,请刷新页面

加载更多

nginx访问日志/日志切割/静态文件过期时间/防盗链

Nginx访问日志主要记录部署在nginx上的网站访问数据,日志格式定义在nginx主配置文件中。 nginx主配置文件:/etc/nginx/nginx.conf 查看nginx主配置文件: ```markup [root@linux ~]# cat /e...

asnfuy
9分钟前
4
0
JS_高程4.变量,作用域和内存问题(2)执行环境及作用域

本文转载于:专业的前端网站➨JS_高程4.变量,作用域和内存问题(2)执行环境及作用域 1.执行环境:执行环境定义了变量或函数有权访问的其他数据,决定了它们各自的行为,       每个执...

前端老手
13分钟前
3
0
手机迅雷下载的文件,电脑上找不到问题

不知道手机迅雷怎么做到的,手机迅雷下载的文件,手机上可以看的到 但连电脑后, 电脑上看不到文件 . 尝试了打开查看隐藏文件, 但没有效果 . 手机上查询文件权限 也是对的 . 可读,可写, 不隐藏 ...

ol_O_O_lo
15分钟前
3
0
python学习11:Python tuple元组详解

元组是 Python 中另一个重要的序列结构,和列表类似,也是由一系列按特定顺序排序的元素组成。和列表不同的是,列表可以任意操作元素,是可变序列;而元组是不可变序列,即元组中的元素不可以...

太空堡垒185
27分钟前
3
0
Java实现数据结构之线性结构

一、顺序表 顺序表本质是使用数组储存数组的一种数据结构,在计算机的储存中是连续的分配内存的。 下面是我自己使用java实现的简单顺序表结构 package list; public class MyArrayList<E> { ...

daxiongdi
30分钟前
5
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部