0% found this document useful (0 votes)
73 views29 pages

Formal Languages, Automata and Computability

The document discusses context-free grammars and pushdown automata. It begins by providing examples of languages that are context-free but not regular. It then defines pushdown automata formally and provides an example of a PDA that recognizes the language L={0^n 1^n | n>=0}. The document goes on to define context-free grammars formally and discusses how they generate languages. It also discusses parse trees and properties of context-free languages like the pumping lemma.
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PPT, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
73 views29 pages

Formal Languages, Automata and Computability

The document discusses context-free grammars and pushdown automata. It begins by providing examples of languages that are context-free but not regular. It then defines pushdown automata formally and provides an example of a PDA that recognizes the language L={0^n 1^n | n>=0}. The document goes on to define context-free grammars formally and discusses how they generate languages. It also discusses parse trees and properties of context-free languages like the pumping lemma.
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PPT, PDF, TXT or read online on Scribd
You are on page 1/ 29

15-453

FORMAL LANGUAGES,
AUTOMATA AND
COMPUTABILITY
CONTEXT-FREE GRAMMARS
AND PUSH-DOWN AUTOMATA
NONE OF THESE ARE REGULAR

Σ = {0, 1}, L = { 0n1n | n ≥ 0 }

Σ = {a, b, c, …, z}, L = { w | w = wR }

Σ = { (, ) }, L = { balanced strings of parens }

(), ()(), (()()) are in L, (, ()), ())(() are not in L


PUSHDOWN AUTOMATA (PDA)

FINITE INPUT
STATE
CONTROL

STACK
(Last in,
first out)
input pop push

ε,ε → $
0011 11
0011
011 0,ε → 0

1,0 → ε

ε,$ → ε
1 1,0 → ε

STACK 0 0
$ $ $

Non-deterministic
input pop push

ε,ε → $
001 1
001
01 0,ε → 0

1,0 → ε

ε,$ → ε
1,0 → ε

STACK 0 0
$ $ $

PDA that recognizes L = { 0n1n | n ≥ 0 }


Definition: A (non-deterministic) PDA is a tuple
P = (Q, Σ, Γ, , q0, F), where:

Q is a finite set of states


Σ is the input alphabet
Γ is the stack alphabet
 : Q  Σε  Γε → 2 Q  Γε
q0  Q is the start state
F  Q is the set of accept states

2Q is the set of subsets of Q and Σε = Σ  {ε}


Let w Σ* and suppose w can be written as
w1... wn where wi  Σε (recall Σε = Σ  {ε})
Then P accepts w if there are
r0, r1, ..., rn  Q and
s0, s1, ..., sn  Γ* (sequence of stacks) such that
1. r0 = q0 and s0 = ε (P starts in q0 with empty stack)

2. For i = 0, ..., n-1:


(ri+1 , b) (ri, wi+1, a), where si =at and si+1 = bt for
some a, b  Γε and t  Γ*
(P moves correctly according to state, stack and symbol read)

3. rn  F (P is in an accept state at the end of its input)


ε,ε → $
q0 q1 0,ε → 0

1,0 → ε

ε,$ → ε
q3 q2 1,0 → ε

Q = {q0, q1, q2, q3} Σ = {0,1} Γ = {$,0,1}

 : Q  Σε  Γε → 2 Q  Γε
(q1,1,0) = { (q2,ε) } (q2,1,1) = 
EVEN-LENGTH PALINDROMES
Σ = {a, b, c, …, z}

ε,ε → $
q0 q1 ,ε → 

ε,ε → ε

ε,$ → ε
q3 q2  , → ε
Build a PDA to recognize
L = { aibjck | i, j, k ≥ 0 and (i = j or i = k) }

b,a → ε c,ε → ε

q0 ε,$ → ε
q2 q3

ε,ε → $ choose i=j

choose i=k
q1 q4 q5 q6
ε,ε → ε ε,ε → ε ε,$ → ε

a,ε → a b,ε → ε c,a → ε


CONTEXT-FREE GRAMMARS
production
start variable
rules
A → 0A1
A→B
B→#
variables
terminals
A  0A1  00A11  00B11  00#11
(yields) Derivation
A * 00#11
(derives) We say: 00#11 is
generated by the
Non-deterministic Grammar
CONTEXT-FREE GRAMMARS

A → 0A1
A→B
B→#

A → 0A1 | B
B→#
CONTEXT-FREE GRAMMARS
A context-free grammar (CFG) is a tuple
G = (V, Σ, R, S), where:

V is a finite set of variables


Σ is a finite set of terminals (disjoint from V)
R is set of production rules of the form A → W,
where A  V and W  (VΣ)*
S  V is the start variable

L(G) = {w  Σ* | S * w} Strings Generated by G


CONTEXT-FREE LANGUAGES
A context-free grammar (CFG) is a tuple
G = (V, Σ, R, S), where:

V is a finite set of variables


Σ is a finite set of terminals (disjoint from V)
R is set of production rules of the form A → W,
where A  V and W  (VΣ)*
S  V is the start variable

G = { {S}, {0,1}, R, S } R = { S → 0S1, S → ε }

L(G) =
CONTEXT-FREE LANGUAGES
A context-free grammar (CFG) is a tuple
G = (V, Σ, R, S), where:

V is a finite set of variables


Σ is a finite set of terminals (disjoint from V)
R is set of production rules of the form A → W,
where A  V and W  (VΣ)*
S  V is the start variable

G = { {S}, {0,1}, R, S } R = { S → 0S1, S → ε }

L(G) = { 0n1n | n ≥ 0 } Strings Generated by G


WRITE A CFG FOR EVEN-LENGTH
PALINDROMES
S → S for all   Σ
S→ε
WRITE A CFG FOR THE EMPTY SET
G = { {S}, Σ, , S }
PARSE TREES
A

A
A

0 0 # 1 1

A  0A1  00A11  00B11  00#11


<EXPR> → <EXPR> + <EXPR>
<EXPR> → <EXPR> x <EXPR>
<EXPR> → ( <EXPR> )
<EXPR> → a
Build a parse tree for a + a x a

<EXPR> <EXPR>

<EXPR> <EXPR>
<EXPR> <EXPR>
<EXPR> <EXPR> <EXPR> <EXPR>

a + a x a a + a x a
Definition: a string is derived ambiguously
in a context-free grammar if it has more
than one parse tree

Definition: a grammar is ambiguous if it


generates some string ambiguously

See G4 for unambiguous standard


arithmetic precedence
NOT REGULAR
Σ = {0, 1}, L = { 0n1n | n ≥ 0 }

But L is CONTEXT FREE


A → 0A1
A→ε

WHAT ABOUT?
Σ = {0, 1}, L1 = { 0n1n 0m| m,n ≥ 0 }
Σ = {0, 1}, L2 = { 0n1m 0n| m,n ≥ 0 }

Σ = {0, 1}, L3 = { 0m1n 0n| m=n ≥ 0 }


THE PUMPING LEMMA FOR CFGs
Let L be a context-free language

Then there is a P such that


if w  L and |w| ≥ P
then can write w = uvxyz, where:
1. |vy| > 0
2. |vxy| ≤ P
3. For every i ≥ 0, uvixyiz  L
Idea of Proof: If w is long enough, then
any parse tree for w must have a path that
contains a variable more than once

T T

R R
R R
R
u v x y z u v y z
v x y
Formal Proof:
Let b be the maximum number of symbols on
the right-hand side of any rule
If the height of a parse tree is h, the length of
the string generated by that tree is at most: bh
Let |V| be the number of variables in G
Define P = b|V|+2
Let w be a string of length at least P
Let T be a parse tree for w with a minimum
number of nodes.
T must have height at least |V|+2
The longest path in T must have ≥ |V|+1 variables
Select R to be the variable that repeats among
the lowest |V|+1 variables (in the path)
T T
1. |vy| > 0
2. |vxy| ≤ PR R
R R
Let T be a parse tree for w with a minimum
R
number
u v ofxnodes.
y Tzmust have
u v height at y z
least |V|+2
v x y
WHAT ABOUT?

Σ = {0, 1}, L1 = { 0n1n 0m| m, n ≥ 0 }

Σ = {0, 1}, L2 = { 0n1m 0n| m, n ≥ 0 }

Σ = {0, 1}, L3 = { 0m1n 0n| m=n ≥ 0 }


EQUIVALENCE OF CFGs and PDAs

A Language L is generated by a CFG



L is recognized by a PDA
Read the rest of Chapter 2 for next time

You might also like

pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy