 By now we should have an okay understanding of finite state automata, what they're used for, and how to read them. Let's try to create our own. First up, we need to define what we want this automaton to achieve. Let's go with this. This automaton is to accept any string of a's and b's that has no more than two b's in a row. Okay, we have our definition, now let's break it up to understand what it means. Any string of a's and b's. This tells us that in our alphabet we have two transition types, a and b. Accept no more than two b's in a row. This tells us that our language, or the set of strings our automaton will accept, is all strings with at most zero, one, or two b's in a row. So let's begin our diagram. A good starting point is the start state, a circle with an arrow into it. Let's call this state zero. That's great, what else can we do? Well, let's look at what we expect to happen if we give the automaton nothing. A string containing zero a's and zero b's. That may seem a bit odd, but an empty string denoted as epsilon, or sometimes lambda, is very useful for understanding how our automaton works. So we put in nothing. There are at most zero b's in a row in our string. Zero b's is obviously fewer than three b's, so the string is accepted. This means that our first state is also an accepting state. Let's give us another circle to show this.