Sometimes when designing more complex finite state machines with various states, it’s very likely that the initial design will not be as efficient as possible. This usually means that we end up using more states than is actually required, which leads to the use of more flip-flops than is necessary.
To solve this problem we can apply the partitioning minimization procedure to the states of the machine. This procedure consists in grouping the states in partitions. A partition consists of one or more equivalent states. We start by dividing the partitions considering the circuit output for each state. Then we divide even more, this time considering the next state for each state in the partitions. Considering following state table:
The steps to minimize the states are the followings:
So, we can represent the same circuit using only states, instead of the initial . The resulting table looks like that: