PDA (Push Down Automata)
Formal Defination:
Push Down Automata is a set of seven tupples.
PDA=(Q,Ξ£,π,q0,z0,F,Ξ΄)
where:
Q is a set of states
Ξ£ is set of input symbol
π(tau) is set of stack symbol.
q0 is initial state
z0 initial stack symbol
F set of final state
Ξ΄ is transition function
PDA (Push Down Automata)
A PDA is a way to implement a CFG in a similar way we design Finite Automata for Regular Grammar.It is more powerful than Finite State Machine.It is more powerful than Finite State Machine.Finite State Machine has a very limited memory but PDA has more memory.
PDA = FSM + Stack
# Transition function in the case of PUSH
(q,a,x) → (q',AX)
Previous top (x)
Current top (A)
Ex: (q,a,x) → (q',AX)
# Transition function in the case of POP
(q,b,A) → (q',Ξ΅)
# Skip representation
(q,x,z) → (q',z)
Ξ΄: Q x Ξ£ x π → Q x π*
where : π* (A,X,Ξ΅,z)
Example:
# Construct a Push Down Automata
1. {aβΏ bβΏ | n>=1}
Strings such as {ab , aabb , aaabbb ..... }
Flow chart for logic:
Suppose the string is aabb than Ξ΄ will be
Ξ΄( qβ , a , x ) → ( qβ , AX )
Ξ΄( qβ , a , A ) → ( qβ , AA )
Ξ΄( qβ , b , A ) → ( q₁ , Ξ΅ )
Ξ΄( q₁ , b , A ) → ( q₁ , Ξ΅ )
Ξ΄( q₁ , Ξ΅ , x ) → POP x (Accepted)
Now here stack is empty so string is accepted.
Note: Some rejected conditions are:
1. Number of b is more than a
Ξ΄( q₁ , b , X ) → Rejected
2. Number of a is more than b
Ξ΄( q₁ , Ξ΅ , A ) → Rejected
3. Ξ΄( qβ , b , X ) → Rejected
4. Ξ΄( q₁ , a , A ) → Rejected (a does not come in q₁
There are two method for implementing push down automata.
1. Empty stack method (It is a default method)
2. Final stack method
1. Empty stack method (It is a default method):
String is accepted when scanning is completed and stack is empty
F= Ο
2. Final stack method:
String is accepted or rejected on any final state.
F≠ Ο
Example:
Empty stack method (It is a default method)
1. Find whether aaabbb is accepted or not.
Solution:
Ξ΄( qβ , aaabbb , X ) → ( qβ , AX )
Ξ΄( qβ , aabbb , AX ) → ( qβ , AAX )
Ξ΄( qβ , abbb , AAX ) → ( qβ , AAAX )
Ξ΄( qβ , bbb , AAAX ) → ( q₁ , AAX )
Ξ΄( q₁ , bb , AAX ) → ( q₁ , AX )
Ξ΄( q₁ , bb , AX ) → ( q₁ , X )
Ξ΄( q₁ , Ξ΅ , X ) → POP X (Accepted)
where:
Ξ΄: Q x ( Ξ£ U Ξ΅ ) π → Q x π*
2. Find whether aaabb is accepted or not.
Solution:
Ξ΄( qβ , aaabb , X ) → ( qβ , AX )
Ξ΄( qβ , aabb , AX ) → ( qβ , AAX )
Ξ΄( qβ , abb , AAX ) → ( qβ , AAAX )
Ξ΄( qβ , bb , AAAX ) → ( q₁ , AAX )
Ξ΄( q₁ , b , AAX ) → ( q₁ , AX )
Ξ΄( q₁ , Ξ΅ , AX ) → Rejected (here stack is not empty)
3. Construct a PDA for
{aβΏ b²βΏ | n>=1}
Strings such as { abb , aabbbb ..... }
Flow chart for logic:
Suppose string is aabbbb than Ξ΄ will be
Ξ΄( qβ , a , x ) → ( qβ , AX )
Ξ΄( qβ , a , A ) → ( qβ , AAX )
Ξ΄( qβ , b , A ) → ( q₁ , AX )
Ξ΄( q₁ , b , A ) → ( q₂ , AX ) :No change /Skip
Ξ΄( q₂ , b , A ) → ( q₁ , AX ) :No change /Skip
Ξ΄( q₁ , b , A ) → ( q₂ , X ) :POP A
Ξ΄( q₂ , Ξ΅ , x ) → POP x (Accepted)
3. Construct a PDA for
Strings such as { aabbcc , aaabbccc ..... }
Flow chart for logic:
Ξ΄( qβ , a , x ) → ( qβ , AX )
Ξ΄( qβ , a , A ) → ( qβ , AAX )
Ξ΄( qβ , b , A ) → ( q₁ , AAX ) :No change /Skip
Ξ΄( q₁ , b , A ) → ( q₁ , AAX ) :No change /Skip
Ξ΄( q₁ , c , A ) → ( q₂ , AX ) :POP A
Ξ΄( q₂ , c , A ) → ( q₂ , X ) :POP A
Ξ΄( q₂ , Ξ΅ , x ) → POP X (Accepted)
4. Construct a PDA for
Strings such as
if w= aab than wr (reverse of w) =bba
So string will be
a a b c b a a (or) a b b c b b a
Flow chart for logic:
where :
Ξ΄( qβ , a , x ) → ( qβ , AX )
Ξ΄( qβ , a , A ) → ( qβ , AAX )
Ξ΄( qβ , b , AA ) → ( qβ , BAAX )
Ξ΄( qβ , c , B ) → ( q₁ , BAAX ) :No change /Skip
Ξ΄( q₁ , b , A ) → ( q₁ , AAX ) :POP B
Ξ΄( q₁ , a , A ) → ( q₁ , AX ) :POP A
Ξ΄( q₁ , a , A ) → ( q₁ , X ) :POP A
Ξ΄( q₁ , Ξ΅ , x ) → POP X (Accepted)
Suppose string is b b a c a b b than Ξ΄ will be
Ξ΄( qβ , b , x ) → ( qβ , BX )
Ξ΄( qβ , b , A ) → ( qβ , BBX )
Ξ΄( qβ , a , AA ) → ( qβ , ABBX )
Ξ΄( qβ , c , A ) → ( q₁ , ABBX ) :No change /Skip
Ξ΄( q₁ , a , A ) → ( q₁ , BBX ) :POP A
Ξ΄( q₁ , b , B ) → ( q₁ , BX ) :POP B
Ξ΄( q₁ , b , B ) → ( q₁ , X ) :POP B
Ξ΄( q₁ , Ξ΅ , x ) → POP X (Accepted)
5. Construct a PDA for
where :
Ξ΄( qβ , a , x ) → ( qβ , AX )
Ξ΄( qβ , b , A ) → ( qβ , BX )
Ξ΄( qβ , a , A ) → ( qβ , AA X) / ( qβ , Ξ΅ )
Ξ΄( qβ , a , B ) → ( qβ , ABX )
Ξ΄( qβ , b , A ) → ( qβ , BAX )
Ξ΄( qβ , b , B ) → ( qβ , B, B ) / ( q₁ , Ξ΅ )
Ξ΄( q₁ , Ξ΅ , X ) → ( q₁ , X ) :JUMP ON q₁
Ξ΄( q₁ , a , A ) → ( q₁ , Ξ΅ ) :POP A
Ξ΄( q₁ , b , B ) → ( q₁ , Ξ΅ ) :POP B
Ξ΄( q₁ , Ξ΅ , x ) → POP X (Accepted)
Question: What is difference between Deterministic and Non deterministic PDA with the help of example.?
Answer: do your self
Hint: Take example 4 from above for Deterministic. and example 5 for Non Deterministic.






No comments:
Post a Comment