640 likes | 1.46k Vues
PushDown Automata. What is a stack?. A stack is a Last In First Out data structure where I only have access to the last element inserted in the stack. In order to access other elements I have to remove those that are on top one by one. Stack. Stack. Stack. Stack. Stack. Stack. Stack.
E N D
What is a stack? • A stack is a Last In First Out data structure where I only have access to the last element inserted in the stack. • In order to access other elements I have to remove those that are on top one by one.
What is a PDA? • A PDA is en enhanced finite automaton that also contains an infinite stack. • The transitions in a PDA are of the form a, x ⟶ y meaning that if you see an a in the input string and the stack contains the symbol x on top then you remove the x and add a y. • The stack gives us extra power to recognize non-regular languages.
Transitions • Transitions of the form a, x ⟶ y require that the next input symbol should be a and the top stack symbol should be x. a, x⟶ y a, x⟶ y q’ q q’ q x w y w ...abb... ...abb... Stack Input Stack Input
Transitions • Transitions of the form ε, x ⟶ y require that the top stack symbol is x. ε, x⟶ y ε, x⟶ y q’ q q’ q x w y w ...abb... ...abb... Stack Input Stack Input
Transitions • Transitions of the form a, ε⟶ y require that the next input symbol is a. a, ε ⟶ y a, ε ⟶ y q’ q q’ q x w y x w ...abb... ...abb... Stack Input Stack Input
Transitions • Transitions of the form ε, ε⟶ ycan be followed without restrictions. ε, ε ⟶ y ε, ε ⟶ y q’ q q’ q x w y x w ...abb... ...abb... Stack Input Stack Input
PDA Accept – Reject Status • The PDA accepts when there exists a computation path such that: • The computation path ends in an accept state • All the input is consumed • (no requirement for the stack) • The PDA rejects when all the paths: • Either end in a non-accepting state • Or are incomplete (meaning that at some point there is no possible transition under the current input and stack symbols)
A PDA for {anbn : n ≥ 0} • We usually use the stack for counting. • For this language for example, you first insert all the as in the stack until you start seeing bs . • When you see the first b start removing as from the stack. • When you have consumed the whole string you check the stack: if it’s empty then this means that the number of as equals the number of bs.
Is the stack empty? How can you check if the stack is empty? • What we usually do is to place a special symbol (for example a $) at the bottom of the stack. • Whenever we find the $ again we know that we reached the end of the stack. • In order to accept a string there is no need for the stack to be empty.
A PDA for {anbn : n ≥ 0} a, ε ⟶ a ε, ε ⟶ $ q0 q1 b, a⟶ ε ε, $ ⟶ ε q3 q2 b, a⟶ ε
Visualization of {anbn:n ≥ 0} aaabbb a, ε ⟶ a ε, ε ⟶ $ q0 q1 b, a⟶ ε ε, $ ⟶ ε q3 q2 b, a⟶ ε
Visualization of {anbn:n ≥ 0} aaabbb a, ε ⟶ a $ ε, ε ⟶ $ q0 q1 b, a⟶ ε ε, $ ⟶ ε q3 q2 b, a⟶ ε
Visualization of {anbn:n ≥ 0} aaabbb a, ε ⟶ a a $ ε, ε ⟶ $ q0 q1 b, a⟶ ε ε, $ ⟶ ε q3 q2 b, a⟶ ε
Visualization of {anbn:n ≥ 0} aaabbb a, ε ⟶ a a a $ ε, ε ⟶ $ q0 q1 b, a⟶ ε ε, $ ⟶ ε q3 q2 b, a⟶ ε
Visualization of {anbn:n ≥ 0} aaabbb a, ε ⟶ a a a a $ ε, ε ⟶ $ q0 q1 b, a⟶ ε ε, $ ⟶ ε q3 q2 b, a⟶ ε
Visualization of {anbn:n ≥ 0} aaabbb a, ε ⟶ a a a $ ε, ε ⟶ $ q0 q1 b, a⟶ ε ε, $ ⟶ ε q3 q2 b, a⟶ ε
Visualization of {anbn:n ≥ 0} aaabbb a, ε ⟶ a a $ ε, ε ⟶ $ q0 q1 b, a⟶ ε ε, $ ⟶ ε q3 q2 b, a⟶ ε
Visualization of {anbn:n ≥ 0} aaabbb a, ε ⟶ a $ ε, ε ⟶ $ q0 q1 b, a⟶ ε ε, $ ⟶ ε q3 q2 b, a⟶ ε
Visualization of {anbn:n ≥ 0} aaabbb a, ε ⟶ a ε, ε ⟶ $ q0 q1 b, a⟶ ε ε, $ ⟶ ε q3 q2 b, a⟶ ε
Visualization of {anbn:n ≥ 0} aab a, ε ⟶ a ε, ε ⟶ $ q0 q1 b, a⟶ ε ε, $ ⟶ ε q3 q2 b, a⟶ ε
Visualization of {anbn:n ≥ 0} aab a, ε ⟶ a $ ε, ε ⟶ $ q0 q1 b, a⟶ ε ε, $ ⟶ ε q3 q2 b, a⟶ ε
Visualization of {anbn:n ≥ 0} aab a, ε ⟶ a a $ ε, ε ⟶ $ q0 q1 b, a⟶ ε ε, $ ⟶ ε q3 q2 b, a⟶ ε
Visualization of {anbn:n ≥ 0} aab a, ε ⟶ a a a $ ε, ε ⟶ $ q0 q1 b, a⟶ ε ε, $ ⟶ ε q3 q2 b, a⟶ ε
Visualization of {anbn:n ≥ 0} aab a, ε ⟶ a a $ ε, ε ⟶ $ q0 q1 b, a⟶ ε ε, $ ⟶ ε q3 q2 b, a⟶ ε
Visualization of {anbn:n ≥ 0} aab a, ε ⟶ a a $ ε, ε ⟶ $ q0 q1 b, a⟶ ε ε, $ ⟶ ε q3 q2 b, a⟶ ε
Visualization of {anbn:n ≥ 0} abb a, ε ⟶ a ε, ε ⟶ $ q0 q1 b, a⟶ ε ε, $ ⟶ ε q3 q2 b, a⟶ ε
Visualization of {anbn:n ≥ 0} abb a, ε ⟶ a $ ε, ε ⟶ $ q0 q1 b, a⟶ ε ε, $ ⟶ ε q3 q2 b, a⟶ ε
Visualization of {anbn:n ≥ 0} abb a, ε ⟶ a a $ ε, ε ⟶ $ q0 q1 b, a⟶ ε ε, $ ⟶ ε q3 q2 b, a⟶ ε
Visualization of {anbn:n ≥ 0} abb a, ε ⟶ a $ ε, ε ⟶ $ q0 q1 b, a⟶ ε ε, $ ⟶ ε q3 q2 b, a⟶ ε
Visualization of {anbn:n ≥ 0} abb a, ε ⟶ a $ ε, ε ⟶ $ q0 q1 b, a⟶ ε ε, $ ⟶ ε q3 q2 b, a⟶ ε
PDA formally • A PDA is a sextuple (Q, Σ, Γ, δ, q0, F), where: • Q is the set of states • Σ is the input alphabet • Γ is the alphabet for the stack • δ is the transition function • q0 is the start state • F is the set of accepting states About Γ: The stack alphabet can contain any symbol you want. It can be completely disjoint from Σ.
L() : proper opening and closing parenthesis ε, ε ⟶ $ (, ε ⟶ * q0 q1 ), *⟶ ε ε, $ ⟶ ε
Try it yourself • Create a PDA for the language: L= = {w : w contains an equal number of 0s and 1s}
L= : equal number of 0s and 1s 0, ε ⟶ * 1, *⟶ ε q2 ε, $ ⟶ ε 0, ε ⟶ * ε, ε ⟶ $ q0 q1 1, ε ⟶ * ε, $ ⟶ ε 1, ε ⟶ * 0, *⟶ ε q3
L= : equal number of 0s and 1s NPDA for this language ε, ε ⟶ $ 0, ε ⟶ 0 0, 1⟶ ε 1, ε ⟶ 1 1, 0 ⟶ ε q0 q1 ε, $ ⟶ ε
PDA and Regular Languages • Regular languages can be recognized by PDA: • For every regular language there is an NFAεrecognizing it. • Simply add ε⟶ε in every transition for the stack (i.e just don’t use it at all). • The languages recognized by PDA is a superset of regular languages. • As we saw the language L = {anbn : n≥0} is recognized by some PDA. • L is not regular.
Non-Determinism • Non- determinism means that we can have more than one choices. • Non-Deterministic: q2 0, a⟶ 1 q1 0, a⟶ 1 q3
Non-Determinism • Non- determinism means that we can have more than one choices. • Non-Deterministic: q2 0, a⟶ 0 q1 0, a⟶ 1 q3
Non-Determinism • Non- determinism means that we can have more than one choices. • Non-Deterministic: 0, a⟶ 0 0, a⟶ 1 q1 q2
Non-Determinism • Non- determinism means that we can have more than one choices. • Non-Deterministic: q2 0, ε⟶ 0 q1 0, a⟶ 1 q3
Non-Determinism • Non- determinism means that we can have more than one choices. • Non-Deterministic: q2 ε, b⟶ 0 q1 0, b⟶ 1 q3