当前位置首页 > 百科资料> 正文

有限状态机

2022-07-11 17:39:17 百科资料

有限状态机,(英语:Finite-state machine, FSM),又称有限状态自动机,简称状态机,是表示有限个状态以及在这些状态之间的转移和动作等行为的数学模型。

  • 中文名称 有限状态机
  • 外文名称 Finite-state machine, FSM
  • 别称 有限状态自动机
  • 功能 时序逻辑电路模块

概念术语

  状态存储关于过去的信息,就是说:它反映从系统开始到现在时刻的输入变化。转移指示状态变更,并且用必须满足来确使转移发生的条件来描述它。动作是在给定时刻要进行的活动的描述。有多种类型的动作:

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

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

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

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

  下面展示最常见的表示:当前状态(B)和条件(Y)的组合指示出下一个状态(C)。完整的动作信息可以只使用脚注来增加。包括完整动作信息的 FSM 定义可以使用状态表。

状态转移表

  当前状态 →

  条件 ↓

  状态 A

  状态 B

  状态 C

  条件 X

  …

  …

  …

  条件 Y

  …

  状态 C

  …

  条件 Z

  …

  …

  …

  除了建模这里介绍的反应系统之外,有限状态自动机在很多不同领域中是重要的,包括电子工程、 语言学、计算机科学、哲学、生物学、数学和逻辑学。有限状态机是在自动机理论和计算理论中研究的一类自动机。在计算机科学中,有限状态机被广泛用于建模应用行为、硬件电路系统设计、软件工程,编译器、网络协议、和计算与语言的研究。

地位

  在数字电路系统中,有限状态机是一种十分重要的时序逻辑电路模块

作用

  它对数字系统的设计具有十分重要的作用。

  有限状态机是指输出取决于过去输入部分和当前输入部分的时序逻辑电路。一般来说,除了输入部分和输出部分外,有限状态机还含有一组具有"记忆"功能的寄存器,这些寄存器的功能是记忆有限状态机的内部状态,它们常被称为状态寄存器。在有限状态机中,状态寄存器的的下一个状态不仅与输入信号有关,而且还与该寄存器的当前状态有关,因此有限状态机又可以认为是组合逻辑和寄存器逻辑的一种组合。其中,寄存器逻辑的功能是存储有限状态机的内部状态;而组合逻辑又可以分为次态逻辑和输出逻辑两部分,次态逻辑的功能是确定有限状态机的下一个状态,输出逻辑的功能是确定有限状态机的输出。

分类

  在实际的应用中,根据有限状态机是否使用输入信号,设计人员经常将其分为Moore型有限状态机和Mealy型有限状态机两种类型。1 Moore型有限状态机 其输出信号仅与当前状态有关,即可以把Moore型有限状态的输出看成是当前状态的函数。2 Mealy型有限状态机 其输出信号不仅与当前状态有关,而且还与所有的输入信号有关,即可以把Mealy型有限状态机的输出看成是当前状态和所有输入信号的函数。

编程

  有限状态机体现了两点:首先是离散的,然后是有限的。

  State:

  状态这个词有些难以定义,状态存储关于过去的信息,就是说它反映从系统开始到现在时刻的输入变化。

  Actions & Transitions:

  转换指示状态变更,并且用必须满足来确使转移发生的条件来描述它。动作是在给定时刻要进行的活动的描述。

  Guards:

  检测器出现的原因是为了检测是否满足从一个状态切换到另外一个状态的条件。

  Event:

  事件,又见事件,笼统说来,对系统重要的某件事情被称为事件。

  恩,就这些了,有些迷惑么:),恩,我们来理清一下思路:先从事件说起,事件是有生命

  的,它经历:

  1).被产生(被接受,等待被处理,一般放入事件队列)

  2).被分发(从事件队列取出,分发到响应的状态机处理)

  3).死亡(当状态机处理了该事件,它随之死亡)

  从一个状态切换到另外一个状态被称为状态转换,而引起它的事件称为触发事件.(可以看到,不是所有的事件都会引起状态的转换).

  提到状态转换,不能不提及检测器(Guards),只有当检测器的值为TRUE时候,才能启动转换

应用

  常见的计算机就是使用有限状态机作为计算模型的:对于内存的不同状态,CPU通过读取内存值进行计算,更新内存中的状态。CPU还通过消息总线接受外部输入设备(如键盘、鼠标)的指令,计算后更改内存中的状态,计算结果输出到外部显示设备(如显示器),以及持久化存储在硬盘。

  电脑游戏设计中也经常使用有限状态机模型。以水果忍者游戏为例,游戏中水果的状态是有限状态,其运行轨迹是由模拟物理运动规律的计算公式运算而成的,一个香蕉抛起来后会按照抛物线运行,其每一帧位置变化都是一个状态的改变,状态改变通过计算公式来决定。当然作为游戏不会仅仅这么简单,如果这么简单就是动画了,游戏还有复杂的人机交互事件,比如用手在屏幕上"切"了水果,水果感知到这个事件后,会按照程序逻辑进入爆炸状态。

声明:此文信息来源于网络,登载此文只为提供信息参考,并不用于任何商业目的。如有侵权,请及时联系我们:baisebaisebaise@yeah.net