Obsidian/Zettelkasten/Permanent Notes/20251223171835-moore-machines.md
Dane Sabo fd636222b8 Auto sync: 2025-12-23 17:52:41 (2 files changed)
M  .task/taskchampion.sqlite3

M  "Zettelkasten/Permanent Notes/20251223171835-moore-machines.md"
2025-12-23 17:52:41 -05:00

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.