Mealy v/s.穆尔

20 state-machine

Mealy和Moore类型的有限状态机有什么区别?

Jac*_*ack 27

在摩尔机器中,产生的输出与机器的当前状态相关联,并且仅与其相关联.相反,在Mealy机器中,它与状态和特定输入相关联.

从实际的角度来看,你可以将输出置于Moore机器中的状态(因此每个状态都有其输出),而后者则在转换时有输出(因此输出由当前状态和输出转换决定) )

  • 任何Mealy机器都可以转换为Moore机器. (5认同)
  • @dekpos:是的,你可以.对摩尔来说,Mealy需要将每个Mealy状态分成输入数量不同的输入.因此,如果Mealy状态有两个具有两个不同输出的输入,您可以将一个Mealy状态分成Moore机器中的两个状态,其中每个新状态的输出将匹配Mealy机器中两个转换输出之一.对于相反的情况,您只需将状态的输出移动到传入的转换.这是_理论上的. (2认同)

Orb*_*bit 6

摩尔机器输出仅是机器状态的函数,Mealy机器输出是机器状态及其输入的函数.


Ioa*_*dis 5

摩尔机是离散动力系统,可以使用TLA+语法表示如下:

/\ x[k + 1] = f[x[k], u[k]]
/\ y[k] = g[x[k]]
Run Code Online (Sandbox Code Playgroud)

其中x状态、u输入、y输出f描述了转换关系(离散动态)和g输出图(此处为状态标签)并k表示时间(序列中的索引)。

Mealy 机器的形式稍微更通用一些:

/\ x[k + 1] = f[x[k], u[k]]
/\ y[k] = g[x[k], u[k]]
Run Code Online (Sandbox Code Playgroud)

请注意,现在g不再是状态标记,而是边缘标记。

它们并不等同,特别是 Moore 机器是严格因果关系的,而 Mealy 机器则不是。

有关更多详细信息,请参阅 Lee 和 Seshia,《嵌入式系统简介》,LeeSeshia.org,第 58 页。


BKS*_*eon 5

举例说明/轶事。

这也许最好用一个例子和一个轶事来说明。

我讨厌机场,也讨厌去机场,但我喜欢在飞机上。在上飞机之前,我必须进入三种不同的状态:

  1. 状态:在出租车中(事件:然后我支付车费,并过渡到下一个状态:)
  2. 状态:在休息室(事件:等待 2 小时,然后转换到下一个状态:)
  3. 状态:在平面内

但结果如何?

在 Mealy 机器中,您来自的先前状态会有所不同 -您如何到达某个地方非常重要。在摩尔机器中,你如何达到一个状态没有区别。

让我们在上面添加一个结果来创建状态机的摩尔表示:

状态机的摩尔表示示例:

  1. 状态:在出租车中(事件:支付车费然后转换到下一个状态)。(结果:不开心)。
  2. 状态:In Lounge(事件:等待2小时,然后过渡到下一个状态)(结果:不开心)
  3. 状态:在平面内(结果:快乐)。

使用 Moore 表示,结果直接附加到状态。使用 Mealy 表示 - 特定的结果/输出取决于您来自哪里。例如,如果我能上飞机而不必乘坐出租车在休息室等待,那么我会很高兴。输入有所不同。在这里你来是很重要的。Mealy 表示状态机允许将其显示在图中。换句话说,在转换期间,输出/结果显示在状态之外。