![finite state automata questions and answers finite state automata questions and answers](https://image.slideserve.com/345177/finite-state-automata-18-23-l.jpg)
Moreoever, by constructing it in this fashion, you guarantee that you have a minimal FA. Once each state has a transition for each symbol in the alphabet, you have a complete (and correct) FA. The other transitions are found similarly: on either an a or a b, the dead state transitions to itself, and the third state loops on b and transitions to the start/initial state on an a. Similarly, we need a transition from the start/initial state to the third state on the symbol b. In other words, since the string a is formed by adding the character a to the end of the empty string, we need a transition from the start/initial state (corresponding to the empty string) to the dead state (corresponding to the string a) which occurs when the FA reads the symbol a. To get the transitions, all we need to do is to make sure that all the states lead to the correct place. Since we have exhausted all strings of length 2 and not added any new states, we know that these are all the states that we need in the FA we could add others, but they'd be unnecessary. You should find that the strings aa and ab are both already covered by our dead state (we can't add any strings to the end of these to get anything in our language), and that the string ba is covered by the start/initial state (we can only add to this strings already in the language to get other strings in the language), and that bb corresponds to the third state we identified (adding any string, or a single a followed by any string, will result in a string also in the language). You should try the strings aa, ab, ba, and bb. It will be accepting, since the string b is a string in the language. The set of strings which we can add is therefore a set we haven't seen before, and we will need a new state to represent this string - the string b - and strings like it. For instance, we can add the string a followed by bbabb to get babbabb, which is also in the language. However, we can also add an a followed by any string in the language, and get another string in the language. We can also trivially add any other string in the language to the end of this string, and get another string in the language. This string is in the language, and so we can add the empty string to it. To recap, we have identified two states: an accepting start/initial state, and what we call a "dead" state - a state that is not accepting and which does not ever lead to an accepting state. The set of strings we can add to this to get a string in the language is the empty set, and therefore, we will need a state distinct from the one we've already identified to remember this string and strings like it - strings to which we cannot add anything to get a string in the language. This is an example of a string not in the language, and there's nothing we can add to the end of this string to cause it to be in the language we've already violated the condition that all a's in the string are preceded by b's. Answer to A finite-state automaton is given by a transition diagram.
![finite state automata questions and answers finite state automata questions and answers](https://demo.fdocuments.in/img/378x509/reader022/reader/2020053104/5e7555e1bf309f631b1d8cc0/r-1.jpg)
We will need at least one state to remember the empty string (and strings like it - strings to which we can append the empty string or any other string in the language and still have a string in the language) this will be the start/initial state, and since the empty string is in the language (we check this easily), we know the start/initial state will be accepting. Additionally, we can append any string in the language we are going for to the empty string, and we will get a string in the language (trivially). What can you append to this to get a string in the language? Well, the empty string is in the language, so we can append the empty string (i.e., nothing) and also have a string in the language. Let's start with a few small strings and see what I mean. One consequence is that the state we created a transition to i.e $(x_2,y_3)$, will be an accepting state.A good way to think about FAs is by trying to think about how many different situations you can be in, in terms of how you are going to get to a string in the language. The start state will be a state constructed from the two original start states, i.eĭue to these facts we make the transition $\delta((x_1,y_1),a) = (x_2,y_3)$.Īny state pair $(x_i,y_j)$ where $x_i$ was an accepting state in automata 1, or $y_j$ was an accepting state in automata 2, i.e any state where $x_2$ or $y_2$ is mentioned. Therefore you need to remember a pair of states." To keep track of both simulation with finite memory you need to remember the state that each machine would be in if it had read up to this point in the input. "We construct $M$ from $M_1$ and $M_2$ (the two original DFAs). Hint from "Introduction to the Theory of Computation" by Michael Sipser (bible of theory of computation):