陕西恒业建设集团网站,常州知名网站建设公司,wordpress 又拍云 缓存,网站的月度流量统计报告怎么做前言
本文梳理状态机概念#xff0c;在实操中状态机和状态模式类似#xff0c;只是被封装起来#xff0c;可以很方便的实现状态初始化和状态转换。
概念
有限状态机#xff08;finite-state machine#xff09;又称有限状态自动机#xff08;英语#xff1a;finite-s…前言
本文梳理状态机概念在实操中状态机和状态模式类似只是被封装起来可以很方便的实现状态初始化和状态转换。
概念
有限状态机finite-state machine又称有限状态自动机英语finite-state automaton简称状态机。是表示有限个状态以及在这些状态之间的转移和动作等行为的数学计算模型。 即状态机是有限状态自动机的简称是现实事物运行规则抽象而成的一个数学模型。
状态机四大术语
状态机中有几个术语state(状态) 、transition(转移) 、action(动作) 、transition condition(转移条件) 。
state(状态) 将一个系统离散化可以得到很多种状态当然这些状态是有限的。 例如门禁闸机可以划分为开启状态、关闭状态电扇可以划分为关、一档、二档、三档等状态。transition(转移) 一个状态接收一个输入执行了某些动作到达了另外一个状态的过程就是一个transition(转移)。 定义transition(转移)就是在定义状态机的转移流程。transition condition(转移条件) 也叫做Event(事件)在某一状态下只有达到了transition condition(转移条件)才会按照状态机的转移流程转移到下一状态并执行相应的动作。action(动作) 在状态机的运转过程中会有很多种动作。 如进入动作(entry action)[在进入状态时进行]、退出动作(exit action)[在退出状态时进行]、转移动作[在进行特定转移时进行]。
状态机分类
状态机可以被分成两大类接受器Acceptors 和 变换器Transducers。
接受器Acceptors
acceptors(接收器) 是指产生一个二值的输出指示接收的输入是否能被接受。 acceptors(接收器)的每一种状态都是接受或不接受的。如果一组所有的输入都被接受并且当前的状态是接受状态那么这一组输入就是可接受的。 有限状态机的acceptors(接收器)这一类在正则引擎的实现中用得非常多。 变换器Transducers
transducers(转换器) 是根据当前的状态和(或)给定的输入产生输出输出的同时可能也伴随着状态的转移(不是必须)。 转换器型有限状态机可以分为两种子类型moore machine (摩尔型有限状态机)和mealy machine (米利型有限状态机) 。
moore machine摩尔型有限状态机
Moore型状态机的输出只与当前状态有关与当前输入无关。 输出会在一个完整的时钟周期内保持稳定即使此时输入信号有变化输出也不会变化。输入对输出的影响要到下一个时钟周期才能反映出来。这也是 Moore 型状态机的一个重要特点输入与输出是隔离开来的。
mealy machine 米利型有限状态机
Mealy型状态机的输出不仅与当前状态有关还取决于当前的输入信号。 Mealy 型状态机的输出是在输入信号变化以后立刻发生变化且输入变化可能出现在任何状态的时钟周期内。因此同种逻辑下Mealy 型状态机输出对输入的响应会比 Moore 型状态机早一个时钟周期。 Mealy有限状态机的输出直接受输入信号的当前值影响而输入信号可能在一个时钟周期内任意时刻变化这使得Mealy有限状态机对输入的响应发生在当前时钟周期比Moore有限状态机对输入信号的响应要早一个周期。因此输入信号的噪声可能影响在输出的信号。
状态机表示方式
状态机有State/Event table(状态转移表)、UML state machines、SDL state machines等表示方法这里主要介绍状态转移表这种表示方法用的最多也比较方便。
状态机实践
StateMachine 一个swift和kotlin写的状态机SDK只有一个文件代码清晰易懂 官方示例对物理的三大状态进行封装和转换一看就会。 参考 Verilog 状态机 什么是状态机 什么是状态机