有限状态机FSM

概念

finite-state machine(FSM),有限状态机;又称有限状态自动机(finite-state automation:FSA)。
表示有限个状态以及在这些状态之间的转移和动作等行为的数学计算模型。
有限状态机(有时称为有限状态Automaton)是可以使用硬件或软件实现的计算模型,可用于模拟顺序逻辑和一些
计算机程序。有限状态自动机会生成常规语言。有限状态机可用于模拟许多领域的问题,包括数学,人工智能,
游戏和语言学。

有两种类型的有限状态机(FSMs):确定性有限状态机,通常称为确定性有限自动机,以及非确定性有限状态机,
通常被称为非确定性有限自动机。状态机在视觉上表示的方式有轻微的变化,但它们背后的想法源于相同的计算思想。
我们一般讨论的有限状态机就是确定性有限状态机(deterministic finite automaton:DFA)。
有限状态机包含五个概念:

  • 一组有限的状态
  • 有限,非空的输入
  • 一系列 transition functions
  • start 状态
  • 一组结束状态

broadcasting

FSM的软件设计

对应五元素,一个DFA的软件表达可以是:


type oDfa struct {
    currentState string
    inputOpt     interface{}
    transaction  func() bool 
    targetState  string
}

type DFA struct {
    starteState  string
    stateSet     []oDfa
}

在实际实现时,需要考虑的地方会比较多:

  • 将transaction分解为多个阶段,比如:Go Fsm中实现的那样(下图示)
  • 需要考虑transaction执行如何满足原子性
  • 需要考虑在transaction中执行失败的解决机制
  • 需要考虑最终一致性的解决方案
  • 。。。 正因为中间需要解决的实际问题非常多,所以在Fsm的库一般也只是满足一些基本状态迁移的特性。
    broadcasting

使用Fsm方式进行软件分析

为了完整的把业务状态和它们之间的迁移关系表现出来,需要整理一份下面这样的的表格:
broadcasting

参考

  1. Finite State Machines
  2. 有限状态机 wiki


blog comments powered by Disqus
—  原创作品许可 — 署名-非商业性使用-禁止演绎 3.0 未本地化版本 — CC BY-NC-ND 3.0   —