Skip to content

模型Model

状态机

施工中 · 内容逐步修订

State machine · Transition system

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

形式陈述 ​

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

T=(S,I,→),

其中 S 是状态集,I⊆S 是初始状态集,→⊆S×S 是转移关系。有限或无限执行是状态序列 s0,s1,…,满足 s0∈I 且每一步都有 si→si+1。若状态 s 没有后继,即不存在 s′ 使 s→s′,则称 s 为终止状态;不能再延长的执行称为最大执行。状态 s 可达,指存在从某个初始状态出发、以 s 结束的有限执行。这里“终止”只指无后继;它究竟是正常完成还是死锁,要由额外的成功状态谓词区分,转移图本身并不知道程序员的意图。

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

TA=(S,I,A,→A),→A⊆S×A×S,

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

δ:S×Cmd→S×Out,δ(s,c)=(s′,o),

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

直觉

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

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

若只观察是否占用,互斥锁可有 unlocked 与 locked 两个状态;若还要检查释放者合法性,就须细化成 owned(P)、owned(Q) 等状态。历史“P 获锁”与“Q 获锁”都投影成 locked,但下一步 unlock(P) 在两者中的合法性不同。这个具体差别说明:状态是否充分,取决于要保留的操作接口,不能只看图是否简洁。

计数器状态为整数 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.
关系图谱182 个相邻概念 · 2 类关系

拖动节点调整位置。

显示关系

显示:依赖

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

上位 / 更一般

暂未标注直接上位概念。

下位 / 直接特例