Skip to content

Moore 机

Moore machine · Moore automaton

把输出标在状态上,并在初态及每次状态更新后观察输出的确定有限状态机器。

条目类型
模型

形式陈述

Moore 机是六元组

M=(Q,Σ,Γ,δ,μ,q0),

其中 δ:Q×ΣQ 为总转移函数,μ:QΓ 为状态输出函数。对输入 w=a1an,令 qi=δ(qi1,ai)。本页采用经典“初态可观察”约定,完整输出轨迹为

μ(q0)μ(q1)μ(qn),

长度因而是 n+1。若应用只记录每次读入后的状态,就丢弃首字符 μ(q0),得到长度 n 的延迟约定;比较机器时必须先固定其中一种。

Moore 机属于有限状态转导器,但输出时机与Mealy 机相反:输入只决定转到哪里,输出仅由当前状态决定。这里同样没有接受集合或终态补写;机器对每个输入前缀都给出可观察状态标签。

直觉

把 Moore 状态想成控制面板的稳定模式,灯号贴在模式上而非事件边上。机器尚未收到任何输入时,面板已经显示初态输出;收到事件后先更新模式,再显示新模式。这使输出在状态驻留期间保持不变,代价是对事件的反应在表示上经过一次状态更新。

一个状态不能因“刚读到的字符不同”而同时显示两个输出。若同一逻辑状态会从不同入边携带不同输出,就必须把它拆成多个带不同 μ 值的副本。这正是从 Mealy 转换为 Moore 时状态数可能增加的原因。

初始字符并非无关装饰。若一台机器输出 LOCKED 后才接收事件,另一台只在第一个事件后输出,两者在空输入上的可观察行为已经不同。教材、硬件描述语言和测试框架常采用不同采样约定,忽略这一点会制造一个位置的错位。

例子与边界

用两状态转门说明输出轨迹。状态 L 表示锁定、输出 L;状态 U 表示解锁、输出 U。输入 coin 使 L 转到 U,在 U 中再次投币仍留在 U;输入 push 使 U 回到 L,在 L 推门仍保持 L

L 读取 coin push push,状态依次为

LcoinUpushLpushL,

故经典输出轨迹为 LULL;若只采样读入后的输出,则是 ULL。这两个字都能复算,但对应不同接口,不能把前者声称成长度保持变换。

将它改成 Mealy 机时,可在边 qaq 上输出 μ(q),于是得到 Moore 轨迹去掉初始字符的版本。反向转换则按“目标状态、该入边输出”拆分状态,并加一个承载初始约定的状态;最坏可出现约 |Q||Γ| 个副本。两模型经时机对齐后能表示同类同步有限状态行为,却不意味着原始输出字逐字相等。

Moore 机仍无法保存无界计数或在读完整个任意长输入后倒序吐出原文。增加一个巨大状态表可以覆盖固定上限,不会跨越有限记忆边界;增加终态字符串输出则已经改变了本页定义。

推论与应用

Moore 表示适合状态可视化、交通灯相位、微程序控制和只允许寄存器输出的同步电路。测试可以在每个输入后只断言当前状态标签,不必同时区分多条入边,因此规范通常更容易检查。

最小化时,初始划分首先按 μ(q) 分组:输出不同的两个状态绝不等价;随后反复按各输入的后继分组细化。这个过程与接受器最小化相似,只是“接受/拒绝”二分被一般输出标签替代。

Moore 到 Mealy 的转换通常不增状态,Mealy 到 Moore 可能拆状态。状态数差异因此更多反映输出放置方式,而非一方拥有更强的有限记忆。工程选择还需计入时钟边界、组合逻辑毛刺和外部协议何时采样输出。

两台 Moore 机的等价可直接追踪状态对:先比较初态输出,再对每个输入同步走一步并比较新状态输出。若某个可达状态对标签不同,通往它的输入字就是反例;若有限状态对全部检查完仍一致,则所有未来轨迹一致。这里包含初始输出的检查,遗漏它会把空输入上的差异藏掉。

参考资料
  • Edward F. Moore, “Gedanken-Experiments on Sequential Machines,” in Automata Studies, Princeton University Press, 1956, pp. 129–153.
  • Zvi Kohavi and Niraj K. Jha, Switching and Finite Automata Theory, 3rd ed., Cambridge University Press, 2010, Chapter 14.
  • John E. Hopcroft, Rajeev Motwani, and Jeffrey D. Ullman, Introduction to Automata Theory, Languages, and Computation, 3rd ed., Pearson, 2006, §2.7.
关系图谱4 个相邻概念 · 3 类关系

拖动节点调整位置。

显示关系

显示:依赖

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

上位 / 更一般

下位 / 直接特例

暂未标注直接特例。

类型化关系

并列辨析