A first-draft state machine often has more states than it needs. State minimization finds the equivalent states and merges each group into one, leaving a machine that behaves identically from the outside with as few states as possible.
The simple method, row matching:
- Write the state table.
- Find two rows with the same outputs and the same next states for every input.
- Merge them: delete one row and replace every reference to it with the other.
- Repeat until no two rows match.
Row matching can miss pairs that are equivalent only because their next states are equivalent to each other. An implication table handles those systematically.
The payoff: fewer states can mean fewer flip-flops (going from 5 states to 4 saves one), simpler next-state logic, and a design that's easier to understand.