We already know about Finite Automata which can be used to accept regular languages and Pushdown Automata that can be used to recognize Context Free Languages.

Queue Automata(QDA) is a non-deterministic automata that is similar to Pushdown Automata but has a queue instead of a stack which helps Queue automata to recognize languages beyond Context Free Languages.

A QDA is a 6 – tuple

Where

**Q**is the set of finite states.- is the set of finite input alphabets.
- is the set of finite queue alphabets.
- .
- is the start state.
**F**Q is the set of accept states.

**Acceptance of a string**

A QDA accepts input if can be written as , where each and there are states and strings exist, such that they satisfy the following conditions:

- and .
- For and and and

**Example:**

Define the queue automata for language

**Solution:**

Q = {q0, q1, q2, q3} and ={a, b} and = {a, b, $}

And the transition functions are given by:

Let us see how this automata works for aabb.

Row | State | Input | Transition function | Queue(Input from left) | State after move |
---|---|---|---|---|---|

1 | q0 | aabb |
δ(q0, a, ε)={(q0, a)} | a | q0 |

2 | q0 | aabb |
δ(q0, a, ε)={(q0, a)} | aa | q0 |

3 | q0 | ε | δ(q0, ε, ε)={(q1, $)} | $aa | q1 |

4 | q1 | ε | δ(q1, ε, a)={(q2, ε)} | $a | q2 |

5 | q2 | ε | δ(q2, ε, a)={(q2, a)} | a$ | q2 |

6 | q2 | aabb |
δ(q2, b, $)={(q1, $)} | $a | q1 |

7 | q1 | ε | δ(q1, ε, a)={(q2, ε)} | $ | q2 |

8 | q2 | aabb |
δ(q2, b, $)={(q1, $)} | $ | q1 |

9 | q1 | ε | δ(q1, ε, $)={(q3, $)} | $ | q3 |

Attention reader! Don’t stop learning now. Get hold of all the important CS Theory concepts for SDE interviews with the **CS Theory Course** at a student-friendly price and become industry ready.