状态机实践

有限状态自动机-守卫版

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 等;如果只听这句话你是听不懂的。 这其中的这句话是哪句话呢?如果没有前言后语的话,我们是不知道的。而这些前言后语组成的就是语境,或者说上下文

守卫版的状态机状态迁移表(状态转移函数)

源状态 事件 守卫条件 目标状态
待审核 审核 通过 审核通过
待审核 审核 拒绝 审核拒绝

比无守卫版多了一个守卫条件

总结

守卫版状态机通过引入上下文,可以减少事件的数量,但又没有改变状态机的状态转移,这样可以更加灵活的设计程序和编程代码。

上一篇下一篇

猜你喜欢

热点阅读