Search⌘ K

Finite State Machines

Understand how finite state machines operate by processing input symbols one at a time while transitioning through states. Learn to design machines that accept specific patterns, such as strings with even lengths or ending in certain symbols. Gain practical insights through examples, including machines that remove comments from code, and follow Python implementations to deepen your knowledge of automata in computation.

Transition graphs

We design our computations to only consider one symbol at a time, making decisions based only on the current “state” and the current input symbol. Consider the language LL:

L={λ,aa,ab,ba,bb,aaaa,aaab,aaba,aabb,abaa,}L=\{ \lambda, aa, ab, ba, bb, aaaa, aaab, aaba, aabb, abaa,\cdots \}

For this language, we only need to know whether or not the number of symbols consumed at any point is even.

Since integers are either even or odd, we have only two states (evenness vs. oddness) to consider. The transition graph in the figure below depicts a two-state, abstract machine that will solve our problem; we have only to observe whether or not an input string causes the machine to halt in the “even” state, EE.

A transition graph for a machine that accepts the language L
A transition graph for a machine that accepts the language L

The start state is EE, indicated by an incoming arrow from “out of nowhere.” The edges between states E ...