Go语言实现有限状态机(FSM)
有限状态机又简称 FSM(Finite-State Machine 的首字母缩写),也可以称为有限状态自动机。它是为研究有限内存的计算过程和某些语言类而抽象出的一种计算模型。有限状态机拥有有限数量的状态,每个状态可以迁移到零个或多个状态,输入字串决定执行哪个状态的迁移。
现实生活中,状态是随处可见的,并且通过不同的状态来做不同的事。比如冷了加衣服、饿了吃饭、困了睡觉等。这里的冷了、饿了、困了是三种不同的状态,并且根据这三个状态的转变驱动了不同行为的产生(加衣服、吃饭和睡觉)。
有限状态机的组成
有限状态机有两个必要的特点,一是离散的,二是有限的。基于这两点,现实世界上绝大多数事物因为复杂的状态而无法用有限状态机表示。
而描述事物的有限状态机模型的元素由以下组成:
- 状态(State):事物的状态,包括初始状态和所有事件触发后的状态。
- 事件(Event):触发状态变化或者保持原状态的事件。
- 行为或转换(Action/Transition):执行状态转换的过程。
- 检测器(Guard):检测某种状态要转换成另一种状态的条件是否满足。
有限状态机的应用领域
除了应用于数学模型外,有限状态机在许多不同领域都有重要应用,包括电气工程、语言学、计算机科学、哲学、生物学、数学和逻辑学。有限状态机归属于自动机理论,下面的自动机理论的领域分层图中就可以看出,越是外层的概念越复杂。
发表评论