A finite state machine is genuinely simple: a fixed set of states, and rules for which state to move to next based on what symbol arrives. That's it. What varies is what the machine actually produces, and that distinction is the entire point of this page.
This machine has exactly one job: read the whole input, then say yes or no. It accepts any binary string with an even number of 1s. Type a string and step through it.
This machine never accepts or rejects anything, it just produces an output symbol on every single transition. This one outputs a 1 exactly when the current symbol and the previous symbol were both 1 (overlapping pairs count).
| Property | FSM without output | Mealy machine (FSM with output) |
|---|---|---|
| Produces on each transition | Nothing, just changes state | An output symbol |
| What matters at the end | Which state it finished in (accept or not) | The entire sequence of outputs produced along the way |
| Needs an accept state | Yes | No, there's no concept of accepting or rejecting |
| Typical use | Recognising a pattern (does this string match?) | Transforming a stream (parity generators, simple encoders) |
Both machines you stepped through above have exactly 2 states and exactly the same input alphabet, {0, 1}. The only structural difference is whether transitions carry an output symbol.