博客
关于我
什么是状态机(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/

    你可能感兴趣的文章
    qt调用vs2008编写的dll动态库(隐式调用)
    查看>>
    Qt读取注册表默认值
    查看>>
    poj 1679 判断MST是不是唯一的 (次小生成树)
    查看>>
    POJ 1703 Find them, Catch them
    查看>>
    POJ 1703 Find them, Catch them 并查集
    查看>>
    POJ 1738 An old Stone Game(石子合并)
    查看>>
    POJ 1740 A New Stone Game(博弈)题解
    查看>>
    Qt网络编程之实例二POST方式
    查看>>
    POJ 1765 November Rain
    查看>>
    poj 1860 Currency Exchange
    查看>>
    POJ 1961 Period
    查看>>
    POJ 2019 Cornfields (二维RMQ)
    查看>>
    poj 2057 The Lost House 贪心思想在动态规划上的应用
    查看>>
    poj 2057 树形DP,数学期望
    查看>>
    poj 2112 最优挤奶方案
    查看>>
    Qt编写自定义控件12-进度仪表盘
    查看>>
    SpringBoot主启动原理在SpringApplication类《第六课》
    查看>>
    poj 2186 Popular Cows :求能被有多少点是能被所有点到达的点 tarjan O(E)
    查看>>
    POJ 2186:Popular Cows Tarjan模板题
    查看>>
    POJ 2229 Sumsets(递推,找规律)
    查看>>