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