Python 有限状态机

介绍

有限状态机(FSM) 是计算机中的数学模型,它与状态、转换、输入和输出相关。状态机始终处于一种状态,并且可以使用转换条件移动到其他状态。转换将状态机的状态更改为另一个状态。

可以使用有限状态机来建模大量问题。现代生活中使用的状态机的简单例子是自动售货机,电梯和交通信号灯。高级用法是人工智能、语言解析和通信协议设计。

有限状态机示例

首先安装 Fysom 模块,

pip install fysom

我们可以定义一个有状态机(FSM),它有两种状态:睡眠和清醒。要在状态之间移动,我们将定义转换 wakeup() 和 sleep()

有限状态机。状态:清醒,睡觉。过渡:睡觉,醒来

例:

from fysom import *
 
fsm = Fysom({'initial': 'awake',
             'final': 'red',
             'events': [
                 {'name': 'wakeup', 'src': 'sleeping', 'dst': 'awake'},
                 {'name': 'sleep',  'src': 'awake',   'dst': 'sleeping'}]})
 
print(fsm.current)   # awake
fsm.sleep()
print(fsm.current)   # sleeping
fsm.wakeup()
print(fsm.current)   # awake

结果:

awake
sleeping
awake

有限状态机

Python 中有几种有限状态机的实现: