Skip to content

状态机

State machine · Transition system

用状态集合、初始状态和转移关系描述系统可能执行轨迹的模型。

条目类型
模型

形式陈述

最基础的状态机是无标签转移系统

T=(S,I,),

其中 S 是状态集,IS 是初始状态集,S×S 是转移关系。有限或无限执行是状态序列 s0,s1,,满足 s0I 且每一步都有 sisi+1。若状态 s 没有后继,即不存在 s 使 ss,则称 s 为终止状态;不能再延长的执行称为最大执行。状态 s 可达,指存在从某个初始状态出发、以 s 结束的有限执行。

需要记录动作名称时,可把上述骨架扩展为标号转移系统

TA=(S,I,A,A),AS×A×S,

并写 sas。这里仅说明它与无标号骨架的接口;动作轨迹、可见事件与等价关系由标号转移系统专页展开。忽略标签便得到前述无标签投影。对确定性的输入输出状态机,还可把一步写成函数

δ:S×CmdS×Out,δ(s,c)=(s,o),

表示在状态 s 执行命令 c 后进入 s 并返回输出 o。若某些命令在某些状态不可用,则将 δ 定义为部分函数,或显式返回错误结果。

直觉

状态应是对未来行为充分的历史摘要:一旦当前状态和后续输入相同,模型允许的未来不应再依赖已被状态遗忘的历史。无标签关系适合只研究可达性和轨迹;动作标签说明“哪一步发生了”;输入输出函数则同时保留外部调用与可观察结果。确定性表示同一状态和命令给出唯一后继与输出,非确定性则保留多种允许演化,用来表示环境、调度、随机选择或抽象尚未决定的细节。

状态机:初始状态、执行与终止状态
例子与边界

互斥锁可有 unlockedlocked 状态,并用 lockunlock 标记转移。若遗漏影响未来的隐藏信息,所选“状态”就不充分,模型可能错误地合并不同执行历史。

计数器状态为整数 n,可定义 δ(n,inc)=(n+1,ok),以及 δ(n,read)=(n,n);若还需限制溢出,位宽必须纳入状态。协议若只记录“当前 leader”却不记录任期,会把来自不同历史的同名 leader 合并,无法判断旧消息是否合法。有限状态机可穷举可达图;无限状态机通常需归纳不变量或有限抽象。并非每条执行都必须无限:终止程序产生有限最大执行,持续服务则通常研究无限执行。

推论与应用

状态集合转移关系给出最一般的无标号状态机骨架,动作和输入输出再按观察需求逐层加入。轨迹与路径语义从最大执行提取可观察行为;若还要解释状态命题,可在其上建立Kripke 结构。这些语义对象支撑模型检查安全—活性证明:安全性常归约为所有可达状态都满足某个归纳不变式

状态机复制让多个副本按同一命令序列运行,要求输入输出转移确定;分布式系统则把局部状态机与信道状态组合成全局状态机。

算法序列也可产生状态转移,但评价目标不同。在线算法在请求到达后立刻选择动作并与离线最优比较,动态数据结构则按 update/query 操作序列报告成本;追溯数据结构甚至允许编辑过去操作并重算其后的逻辑历史。这里的状态机提供语义骨架,不替代它们的竞争比、更新界或历史编辑接口。

参考资料
  • Nancy A. Lynch, Distributed Algorithms, Morgan Kaufmann, 1996, Chapter 8.
  • Leslie Lamport, Specifying Systems, Addison-Wesley, 2002, Chapters 1–2.
关系图谱106 个相邻概念 · 1 类关系

拖动节点调整位置。

显示关系

显示:依赖

  1. 前置三跳
  2. 前置二跳
  3. 前置一跳
  4. 当前条目
  5. 后续一跳
  6. 后续二跳
  7. 后续三跳
文字版关系按与当前条目的最短距离分组