Wednesday, April 20, 2011

Program Musings - The Power of Finite State Machines

As I sit here writing a program for my Intro to Programming class, I feel the urge to blog about a topic that has become ever so important to handle dealing with strings.  I know, it's such a fun topic and everyone is waiting to hear about working with strings and such, but the main point of this blog right now is to talk about the power of the finite state machine.

For those of you who do not know what a finite state machine is, you can search for it on Google or get the basics at Wikipedia.  I will not be talking about what a finite state is, but how powerful they are as a tool to solving engineering problems.

The power of finite state machines, or FSMs (not to be confused with the Flying Spaghetti Monster, the diety of Pastafarianism), is that they can encapsulate output behavior based upon previous actions.  This gives the ability to make decisions in the present based upon past actions.  In terms of robotics, this is a powerful tool since we can encapsulate chains of actions and behaviors that can appear to do jobs on their own.  In computers, it allows for dynamic chaining of events based upon user input, etc.

If you haven't studied too much on FSMs and you are an engineer, please consider touching this topic as it appears to have many practical applications in problem solving, and for the non-engineer, I would recommend it as well since FSMs are so abstract that they can apply to anything from economics to sociology to business, or anything that has different states that encapsulate behavior and next states are dependent on previous actions.

No comments:

Post a Comment