M .task/taskchampion.sqlite3 M "Zettelkasten/Permanent Notes/20251223171835-moore-machines.md"
40 lines
1.2 KiB
Markdown
40 lines
1.2 KiB
Markdown
---
|
|
id: 20251223171835
|
|
title: Moore Machines
|
|
type: permanent
|
|
created: 2025-12-23T22:18:35Z
|
|
modified: 2025-12-23T22:52:38Z
|
|
tags: []
|
|
---
|
|
|
|
# Moore Machines
|
|
Moore machines are a type of finite state machine whose
|
|
output only depends on output state. Moore machines are
|
|
useful because they simplify the behavior of a system to the
|
|
simplest behaviours possible. They can be defined as a
|
|
six-tuple:
|
|
|
|
|
|
$$(S, S_0, \Sigma, \Lambda, T, G)$$
|
|
|
|
where
|
|
- S is the finite set of states
|
|
- S_0 is the start state
|
|
- $\Sigma$ is the input alphabet
|
|
- $\Lambda$ is the output alphabet
|
|
- $T : S \times \Sigma \rightarrow S$ is the state
|
|
transition function
|
|
- $G : S \rightarrow \Lambda$ is the output
|
|
function
|
|
|
|
Moore machines do not have exit actions. They can only
|
|
change their output based on a change of state. This means
|
|
for systems with physical characteristics, such as a door
|
|
opening or closing system, the intermediate states of
|
|
opening and closing have to exist in a Moore machine. It is
|
|
not possible to go from Open to Closed directly, because
|
|
Open can't generate the output Closed. Instead, Open + the
|
|
input 'open_door' or similar goes to the state 'closing',
|
|
which can then create an action of 'motor_on' or similar,
|
|
and then finally get to the final state Closed.
|