有限状态自动机概述
有限状态自动机-守卫版
状态机实战-监听
github: https://github.com/wenyu7980/statemachine
有限状态自动机
有限状态自动机(FSM "finite state machine" 或者FSA "finite state automaton" )是为研究有限内存的计算过程和某些语言类而抽象出的一种计算模型。有限状态自动机拥有有限数量的状态,每个状态可以迁移到零个或多个状态,输入字串决定执行哪个状态的迁移。有限状态自动机可以表示为一个有向图。有限状态自动机是自动机理论的研究对象
其主要特点有以下几个方面:
- 系统具有有限个状态,不同的状态代表不同的意义。按照实际的需要,系统可以在不同的状态下完成规定的任务。
- 我们可以将输入字符串中出现的字符汇集在一起构成一个字母表。系统处理的所有字符串都是这个字母表上的字符串。
- 系统在任何一个状态下,从输入字符串中读入一个字符,根据当前状态和读入的这个字符转到新的状态。
- 系统中有一个状态,它是系统的开始状态。
- 系统中还有一些状态表示它到目前为止所读入的字符构成的字符串是语言的一个句子。
形式定义
定义:有限状态自动机(FA—finite automaton)是一个五元组:
M=(Q, Σ, δ, q0, F)
其中,
- Q :状态的非空有穷集合。∀q∈Q,q称为M的一个状态。
- Σ :输入字母表。
- δ :状态转移函数,有时又叫作状态转换函数或者移动函数,δ:Q×Σ→Q,δ(q,a)=p。
- q0 :M的开始状态,也可叫作初始状态或启动状态。q0∈Q。
- F :M的终止状态集合。F被Q包含。任给q∈F,q称为M的终止状态。
例:
文字描述:
- Q 状态集合: START,WALKING,RUNNING,STOP
- q0 始状态:START
- F 结束状态:[STOP] (集合)
- Σ 事件集合:[WALK,RUN,STOP]
- δ 状态转移函数: 参考下表
表:
源状态 | 事件 | 目标状态 |
---|---|---|
START | WALK | WALKING |
WALKING | RUN | RUNNING |
RUNNING | WALK | WALKING |
WALKING | STOP | STOP |
图:
(visio UML状态机图)
image.png
图表关系
表中每一行线都代表者图中的每一条线
网友评论