Related Articles

Related Articles

Introduction to Queue Automata
  • Last Updated : 08 Jul, 2020

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 M = (Q, \sigma, \Gamma, \delta, q_0, F)


  1. Q is the set of finite states.
  2. \bf{\sigma} is the set of finite input alphabets.
  3. \bf{\Gamma} is the set of finite queue alphabets.
  4. \delta : Q \times \sigma_\epsilon \times \Gamma_\epsilon \rightarrow P(Q \times \Gamma_\epsilon ).
  5. q_0 \in Q is the start state.
  6. F \subseteq Q is the set of accept states.

Acceptance of a string

A QDA M = (Q, \sigma, \Gamma, \delta, q_0, F) accepts input w if w can be written as w= w_1w_2w_3 ... . w_m, where each w_i \in \sigma_\epsilon and there are states r_0, r_1, r_2, ... . ., r_m \in Q and strings s_0, s_1, s_2, ... . ., s_m \in \Gamma^* exist, such that they satisfy the following conditions:

  1. r_0 = q_0 and s_0 = \epsilon.
  2. For 0\leq i \leq m-1 ( r_{i+1}, b) = \delta(r_i, w_{i+1}, a), where\, a, b \in \Gamma_\epsilon and s_i = ta and s_{i+1} = bt and t \in \Gamma^*
  3. r_m \in F

Define the queue automata for language {a^nb^n | n \geq 0}

Q = {q0, q1, q2, q3} and \sigma={a, b} and \Gamma = {a, b, $}
And the transition functions are given by:
\delta(q0, a, \epsilon)={(q0, a)}
\delta(q0, \epsilon, \epsilon)={(q1, \$)}
\delta(q1, \epsilon, a)={(q2, \epsilon)}
\delta(q2, \epsilon, a)={(q2, a)}
\delta(q2, b, \$)={(q1, \$)}
\delta(q1, \epsilon, \$)={(q3, \$)}

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.

My Personal Notes arrow_drop_up
Recommended Articles
Page :