博客
关于我
什么是状态机(Finite-state machine)?
阅读量:529 次
发布时间:2019-03-08

本文共 1073 字,大约阅读时间需要 3 分钟。

有限状态机 (FSM)

什么是状态?

状态(State)是有限状态机的核心概念之一。它描述了一件事物在某一时刻所处的条件或位置。例如,一个自动门的状态可能是开启(open)或关闭(closed)。

状态机是将这些状态和它们之间的转换规则抽象而成的一个数学模型。它不仅适用于机器设计,例如自动门和交通灯,还广泛应用于电子商务、软件编程、硬件设计等领域。

四大概念解析

有限状态机由四大核心概念构成:

  • 状态(State)

    状态是有限状态机的基础,表示当前系统的运行情况。

    • 最少需要两个状态。例如,自动门有开启(open)和关闭(closed)两个状态。
  • 事件(Event)

    事件是触发转移的条件或动作。

    • 例如,按下开门按钮是一个事件。
  • 动作(Action)

    事件发生后执行的具体操作。

    • 动作通常对应软件中的函数或逻辑语句。
  • 状态转换(Transition)

    从一个状态变为另一个状态的过程。

    • 例如,从关闭状态变为开启状态是一次状态转换。
  • 状态机图的绘制

    有限状态机可以通过图形化的方式表示为状态转换图。该图包括以下要素:

    • 现态(Current State):当前所处的状态。
    • 条件(Condition):触发状态转换的具体标准或事件。
    • 动作(Action):条件满足后执行的操作。
    • 次态(Next State):条件满足后将迁移到的新状态。

    状态机图的绘制可以通过以下方式:

  • 左侧纵坐标为初始状态,横坐标为终止状态。
  • 右侧纵坐标为动作条件,横坐标为终止状态。
  • 例如,以下是单审批人文件状态流转的简单示意图:

    ___当前状态 → 输入事件 → 动作 → 下一个状态初始状态 → 去审核 → 审核通过 → 审核通过后的状态(此处可根据具体需求继续添加更多状态和转换)___

    状态表的绘制

    状态表的绘制同样有多种方法,具体取决于表格的布局。以下是两种常见的绘制方式:

  • 左侧纵坐标为初始状态,右侧为终止状态。
  • 右侧纵坐标为动作条件,左侧为终止状态。
  • 例如,基于上述状态流转图,可以绘制如下状态表:

    当前状态 事件 动作 下一个状态
    初始状态 去审核 审核通过 审核通过后的状态

    通过以上六要素(起始、终止、现态、次态、动作、条件)的清晰定义,就能完成一个完整的有限状态机图。

    注意事项

  • 避免混淆动作与状态
    • 动作是短时间内执行的操作,而状态是长时间保持的条件。
  • 确保状态完整性
    • 需要反复核对状态图,确保所有可能的状态转换都被涵盖。
  • 保持设计的一致性
    • 状态定义应严格遵循系统的规则和流程。
  • 通过以上方法,可以系统化地设计和优化有限状态机,从而更好地解决实际问题。

    转载地址:http://dtuiz.baihongyu.com/

    你可能感兴趣的文章
    Objective-C实现fibonacci search斐波那契查找算法(附完整源码)
    查看>>
    Objective-C实现fibonacci斐波那契算法(附完整源码)
    查看>>
    Objective-C实现fibonacci斐波那契算法(附完整源码)
    查看>>
    Objective-C实现FIFO(附完整源码)
    查看>>
    Objective-C实现FigurateNumber垛积数算法(附完整源码)
    查看>>
    Objective-C实现finding bridges寻找桥梁算法(附完整源码)
    查看>>
    Objective-C实现first come first served先到先得算法(附完整源码)
    查看>>
    Objective-C实现FIR滤波器(附完整源码)
    查看>>
    Objective-C实现fischer yates shuffle洗牌算法(附完整源码)
    查看>>
    Objective-C实现FisherYates Shuffle洗牌算法(附完整源码)
    查看>>
    Objective-C实现fisherYates洗牌算法(附完整源码)
    查看>>
    Objective-C实现FloodFill洪水填充函数算法(附完整源码)
    查看>>
    Objective-C实现Floyd-Warshall算法(附完整源码)
    查看>>
    Objective-C实现FPmax算法(附完整源码)
    查看>>
    Objective-C实现frequency finder频率探测器算法(附完整源码)
    查看>>
    Objective-C实现FTP上传文件(附完整源码)
    查看>>
    Objective-C实现FTP文件上传(附完整源码)
    查看>>
    Objective-C实现FTP文件下载(附完整源码)
    查看>>
    Objective-C实现fuzzy operations模糊运算算法(附完整源码)
    查看>>
    Objective-C实现Gale-Shapley盖尔-沙普利算法(附完整源码)
    查看>>