--- id: 20251223171835 title: Moore Machines type: permanent created: 2025-12-23T22:18:35Z modified: 2025-12-23T22:39:56Z 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.