In the Theory of automata, languages can be defined with different techniques. Some of these are mentioned below;

- Language definition by using the Descriptive definition
- Language definition by using the Recursive definition
- Language definition by using the Regular Expressions (RE)
- Language definition by using the Finite Automaton(FA)

\What is Finite State Automata or finite state machine?

The finite state machine is also famous with the following names;

- Finite state automata (FSA)
- Finite automata (FA)
- Finite machines
- Finite state machines

The finite state machine is designed for accepting and rejecting the different strings of the languages from the machine. All regular languages can be represented by the FA.

## Symbols of Finite Automata (Finite State Machine FSM)

The finite state machine has the following parts;

**Start state:** Representing the start of the machine.

**Final state:** Representing the successful end of the machine

**Dead/Dummy State:** Having no meaning in the generation of the string. It is only designed to full the requirements of the finite state machines that every state has one transition for each alphabet.

**Transition:** Representing the reading of the alphabets from the finite state machine.

**Strings:** Strings are characters or a set of characters that can be accepted or rejected by finite state machines.

## Rules of Finite Automata (Finite State Machine FSM)

1.Every state has strictly one transition for each alphabet. Suppose there two alphabets in the languages L={a,b}, then each state has strictly had two transitions. One transition for alphabet a and one transition for alphabet b. Let’s have another example, Suppose there three alphabets in the languages L={a,b,c}, then each state has strictly three transitions. One transition for alphabet a, one transition for alphabet b and one transition for alphabet c.

2.If the generation of any alphabet from a transition is the cause of generating some strings that are not the part of the language, and it becomes very necessary to put that alphabet on some transition, then generates the alphabet and move the machine to the dead/dummy state. Dummy state means that machine will not generate any string.

3.Every string that is part of the language should be accepted by the FSA and every string that is not part of the language should be rejected by the FSA.

4.Every language that can be generated by a regular expression can be generated by FSA.

Finite automata for single a0 is the starting state. 1 is the ending state. 2 is the dummy state.

From state 0 we will start and read a and move to the state a and this is ending state and now we are at ending state. So, it means that the strings is accepted.

Why we generate a transition of a from state 1 to state 2?Its only to fulfill the rule that every state must have one transition of each alphabet of the langauge. No more transition, no less transition.

**Deterministic Finite automata for a or b**

**Deterministic Finite automata for a or b whole asterisk (a+b)***

**Deterministic Finite automata for a(a+b)***

## Deterministic finite automata examples and solutions

**Example 1**

Language of all those strings follows the following rules;

- can’t have odd a’s except single a
- can have many b with even a’s or no a’s.

**Example 2**

Language of all those strings follows the following rules;

- can’t have odd a’s except single a
- can have many b with even a’s or no a’s.

**Example 3**

Language of all those strings follows the following rules;

- can have many b or many or no aa but all strings must ends with only ba or a.

**Example 4**

Language of all those strings follows the following rules;

- must starts with a and then can have no or many a’s or b’s and ends with only ba or a

**Example 5**

Language of all those strings follows the following rules;

- starts with aba and then can have no or many aa and many b and always ends with ba.

**Example 6**

Language of all those strings follows the following rules;

- many b’s but only at the begining
- many or no aaa or bbb and then always ends with bs.

**Example 7**

Language of all those strings follows the following rules;

- can have no or many aaa’s or bbb’s and always end with ba.

**Example 8**

Language of all those strings follows the following rules;

- always starts with aa or bb and then can have no or many aa’s or b’s and then always must end with ba.

**Example 9**

Language of all those strings follows the following rules;

- only two strings are accepted, 11000 or 11100 and no more string.

**Example 10**

Language of all those strings follows the following rules;

always ends with 000 or 100 and can have no or many 11’s in the starting of the string.

**Example 11**

**Example 12**

**Example 13**

Language of all those strings follows the following rules;

**Example 14**

Language of all those strings follows the following rules;

**Example 15**

Language of all those strings follows the following rules;

**Example 16**

Language of all those strings follows the following rules;

**Example 17**

Language of all those strings follows the following rules;

**Example 18**

Language of all those strings follows the following rules;

**Example 19**

Language of all those strings follows the following rules;

**Example 20**

Language of all those strings follows the following rules;

**Example 21**

Language of all those strings follows the following rules;

**Example 22**

**Example 23**

**Example 24**

**Example 25**

**Example 26**

**Example 27**

**Example 28**

**Valid string’s**

*Examples of some(not all) valid strings are mentioned below;*

Length 1= { no strings}

Length 2= {no strings}

Length 3= {aba , bab, no more string}

Length 4= {abaa, abab, baba, babb, no more string}

**Invalid strings**

*Examples of some(not all) invalid strings are mentioned below;*

Length 1= { a,b, no more string}

Length 2= {ab, ba, aa, bb, no more string}

Length 3= { aaa, bbb, baa, abb, bba,………and many other similar strings }

Length 4= {aaaa, bbbb, bbaa, aabb,……. and many other similar strings}

**Example 29**

**Example 30**

**Example 31**

**Example 32**

**Example 33**

**Example 34**

**Example 35**

**Example 36**

**VALID STRINGS**

*Examples of some(not all) valid strings are mentioned below;*

Strings of length 1={10,11, and no more}

Strings of length4 ={1000,1011,1100,1111, and no more strings}

Strings of length 8={10000000,11000000,11111111,….. and many other similar strings}

**INVAID STRING**

*Examples of some(not all) invalid strings are mentioned below;*

Strings of length 2={00, and no more strings}

Strings of length 3={001,100,and more strings}

Strings of length 8={11011111,110100,and more strings}

**Example 37**

**Example 38**

**Example 39**

**Example 40**

**Example 41**

**Example 42**

**Valid strings:**

*Examples of some(not all) valid strings are mentioned below;*

Length 1: {No possible valid strings of length 1}

Length 2: {ab, bb, cc, dd and no more possible valid string of length 2}

Length 3: {No possible valid strings of length 3}

Length 4: {abbb, abcc, abdd, bbcc, bbdd, bbab, ccdd, and many more possible strings of length 4}

**Invalid strings:**

*Examples of some(not all) invalid strings are mentioned below;*

Length 1: {a, b, c, d, and no possible invalid strings of length 1}

Length 2: {aa, ba, bc, cb,……. and many other similar strings}

Length 3: {aba, abb, acc, abd, add, bcd, dba……. and many other similar strings}

Length 4: {babb, cbba, dcba, ddbc, bbcd……. and many other similar strings}

**Example 43**

**Example 44**

**Example 45**

**Example 46**

**Example 47**

**Example 48**

**Example 49**

**Regular Expression: **ad (a + b + c) * bacd

**Valid Strings**

*Examples of some(not all) valid strings are mentioned below;*

Valid Strings of Length 2 = No Possible Strings

Valid Strings of Length 3 = No Possible Strings

Valid Strings of Length 4 = No Possible Strings

**Invalid Strings**

*Examples of some(not all) invalid strings are mentioned below;*

Invalid Strings of Length 1 = {a, b, c, d, No More Possible Strings}

Invalid Strings of Length 2 = {ad, aa, ac, ad,…. and many other similar strings}

Invalid Strings of Length 3 = {adc, adb, ada,…. and many other similar strings}

Invalid Strings of Length 4 = {adac, abdc, aabac,…. and many other similar strings}

## Finite Automata Exercise Solution

Here I am showing you a list of some more important Deterministic Finite Automata used in the theory of automata and theory of computation.

- DFA for (a+b)* (a+b)a .
- DFA for (bb)*(aa)* .
- DFA for b+a(a+b)*+a.
- DFA for (a+b)*b+(bb)*a.
- DFA for bb+a(a+b)*+aa.
- DFA for a(a+b)*+bb(a)* .
- DFA for a(a+b)b*+bb(a)*.
- DFA for b(aa)*a+a(bb)*b.
- DFA for a+a(aa+b)*(aa)b.
- DFA for a+a(aa+b)*+(aa)b.
- DFA for (a+b)b(a+b)*+(aa)*b.
- FA for strings starting with a and ending with a.
- FA for the language of all those strings starting with a.
- FA for the language of all those strings containing aa as a substring.
- DFA for the language of all those strings starting and ending with the same letters.
- DFA for the language of all those strings starting and ending with different letters.
- DFA for the language of all those strings having double 0 or double 1.
- DFA for the language of all those strings starting and ending with b.
- DFA for ending with b.
- DFA for the string of even A’s and even b’s.
- DFA for the regular expression of a(a+b)*+(bb)+a(ba)*+aba+bb*(a+b)*.
- RegExp and DFA for strings having triple a’s or triple b’s.
- Finite Automata of all strings divisible by 4
- Finite automata for all strings with at least one a
- Finite automata for all strings with at least two a
- Finite automata for all strings with exactly two b
- Finite automata for at least one a and at least one b
- Finite automata for strings end in a double letter (two a’s or two b’s)
- Finite Automata for All strings containing exactly one a