This is the code inside the FREE Android App: https://play.google.com/store/apps/details?id=com.mountainreacher.automata
This app implements an algorithm to reduce a finite state machine.
After you run the test/Main.java class you will see an example of how the algorthm reduces a simple fsm of 5 nodes into one of 4 nodes. For the result you will obtain the partitions scheme where you can see witch nodes have merged, and the transitions table, to build the new fsm.
i.e.: P(final) = {{5}{4}{2}{1,3}} Node 1 and 3 have merged into one.
Finite-state machines can model a large number of problems, among which are electronic design automation, communication protocol design, language parsing and other engineering applications. In biology and artificial intelligence research, state machines or hierarchies of state machines have been used to describe neurological systems and in linguistics—to describe the grammars of natural languages.
Optimization is just one of the algorithms to take advantage from the use of this mathematical models, nevertheless there are other algorithms that can be implemented in order to achieve a goal to facilitate the work in any of the fields listed above. Help us to build a better world, contribute with your work in any case if you use a fsm model to solve a problem.