有限状态自动机-守卫版
2019-10-26 本文已影响0人
wenyu7980
有限状态自动机概述
有限状态自动机-守卫版
状态机实战-监听
github: https://github.com/wenyu7980/statemachine
守卫版状态机
上一篇文章 有限状态自动机概述 简单的介绍了有限状态自动机。而这一篇文章将介绍带有守卫功能的状态机。
守卫
什么是守卫,守卫就判断条件,符合条件的允许通过,不符合条件的将被拒之门外。
守卫版和无守卫版的区别
先上张图比较下守卫版和无守卫版状态机的区别
无守卫版:
image.png守卫版:
image.png守卫版中的菱形就是守卫。
从状态机的五要素进行比较
M=(Q, Σ, δ, q0, F)
状态机要素 | 比较 |
---|---|
Q 状态集合 | 一致 |
q0 始状态 | 一致 |
F 结束状态 | 一致 |
Σ 事件集合 | 不一致,守卫版的事件比无守卫版的少,但是守卫版需要上下文 |
δ 状态转移函数 | 一致(线的总数,源状态与目标状态连线都是一致的) |
守卫上下文
什么是上下文
百度百科
上下文,即语境、语意,是语言学科(语言学、社会语言学、篇章分析、语用学、符号学等)的概念。
语意分析(semantic analysis)技术系指将一长串的文字或内容,从其中分析出该个段落的摘要以及大意,甚至更进一步,将整篇文章的文意整理出来。此项技术可以应用在解读影片、音讯等档案,使得搜索引擎能够搜寻到文字以外的物件,方便使用者省去大量时间观看影片、聆听音讯,同时也可以帮助使用者提前了解影片与音讯的内容。
简单点说就是,我们经常会用一些代词,比如,这个,那个,this,that 等;如果只听这句话你是听不懂的。 这其中的这句话是哪句话呢?如果没有前言后语的话,我们是不知道的。而这些前言后语组成的就是语境,或者说上下文。
守卫版的状态机状态迁移表(状态转移函数)
源状态 | 事件 | 守卫条件 | 目标状态 |
---|---|---|---|
待审核 | 审核 | 通过 | 审核通过 |
待审核 | 审核 | 拒绝 | 审核拒绝 |
比无守卫版多了一个守卫条件
总结
守卫版状态机通过引入上下文,可以减少事件的数量,但又没有改变状态机的状态转移,这样可以更加灵活的设计程序和编程代码。