Intro to theory of computation
This presentation is the property of its rightful owner.
Sponsored Links
1 / 31

Intro to Theory of Computation PowerPoint PPT Presentation


  • 218 Views
  • Uploaded on
  • Presentation posted in: General

L ECTURE 7 Theory of Computation Context-free grammar (CFG) Equivalence of CFGs and PDAs. Intro to Theory of Computation. CS 464. Sofya Raskhodnikova. CONTEXT-FREE GRAMMARS (CFGs). production rules. start variable. A → 0 A 1. A → B. B → #. variables. terminals. A.  0A1.

Download Presentation

Intro to Theory of Computation

An Image/Link below is provided (as is) to download presentation

Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author.While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server.


- - - - - - - - - - - - - - - - - - - - - - - - - - E N D - - - - - - - - - - - - - - - - - - - - - - - - - -

Presentation Transcript


Intro to theory of computation

  • LECTURE7

  • Theory of Computation

  • Context-free grammar (CFG)

  • Equivalence of CFGs and PDAs

Intro to Theory of Computation

CS

464

Sofya Raskhodnikova

Sofya Raskhodnikova; based on slides by Nick Hopper


Intro to theory of computation

CONTEXT-FREEGRAMMARS (CFGs)

production

rules

start variable

A → 0A1

A → B

B → #

variables

terminals

A

 0A1

 00A11

 00B11

 00#11

Sofya Raskhodnikova; based on slides by Nick Hopper


Intro to theory of computation

VALLEY GIRL GRAMMAR

<PHRASE> → <FILLER><PHRASE>

<PHRASE> → <START><END>

<FILLER> → LIKE

<FILLER> → UMM

<START> → YOU KNOW

<START> → ε

<END> → GAG ME WITH A SPOON

<END> → AS IF

<END> → WHATEVER

<END> → LOSER

Sofya Raskhodnikova; based on slides by Nick Hopper


Intro to theory of computation

VALLEY GIRL GRAMMAR

<PHRASE> → <FILLER><PHRASE> | <START><END>

<FILLER> → LIKE | UMM

<START> → YOU KNOW | ε

<END> → GAG ME WITH A SPOON | AS IF | WHATEVER | LOSER

Sofya Raskhodnikova; based on slides by Nick Hopper


Formal definition

Formal Definition

A CFGis a 4-tuple G = (V, Σ, R, S)

Vis 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) is the set of strings generated by G

A language is context-free

if it is generated by a some CFG.

Sofya Raskhodnikova; based on slides by Nick Hopper


Formal definition1

Formal Definition

A CFGis a 4-tuple G = (V, Σ, R, S)

Vis 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

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

Example: G = {{S}, {0,1}, R, S}

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

Sofya Raskhodnikova; based on slides by Nick Hopper


Intro to theory of computation

CFG terminology

production

rules

start variable

A → 0A1

A → B

B → #

variables

terminals

A

 0A1

 00A11

 00B11

 00#11

uVwyields uvw if (V → v)  R.

A derives 00#11 in 4 steps.

Sofya Raskhodnikova; based on slides by Nick Hopper


Intro to theory of computation

Example

GIVE A CFG FOR EVEN-LENGTH PALINDROMES

S → S for all   Σ

S → ε

Sofya Raskhodnikova; based on slides by Nick Hopper


Intro to theory of computation

Example

GIVE A CFG FOR THE EMPTY SET

G = { {S}, Σ, , S }

Sofya Raskhodnikova; based on slides by Nick Hopper


Intro to theory of computation

GIVE A CFG FOR…

L3 = { strings of balanced parens }

L4 = { aibjck | i, j, k ≥ 0 and (i = j or j = k) }

Sofya Raskhodnikova; based on slides by Nick Hopper


Cfgs in the real world

CFGs in the real world

The syntactic grammar for the Java programming language

BasicForStatement:

for ( ; ; ) Statement

for ( ; ; ForUpdate ) Statement

for ( ; Expression ; ) Statement

for ( ; Expression ; ForUpdate ) Statement

for ( ForInit ; ; ) Statement

for ( ForInit ; ; ForUpdate ) Statement

for ( ForInit ; Expression ; ) Statement

for ( ForInit ; Expression ; ForUpdate ) Statement

Sofya Raskhodnikova; based on slides by Nick Hopper


Intro to theory of computation

COMPILER MODULES

LEXER

PARSER

SEMANTIC ANALYZER

TRANSLATOR/INTERPRETER

Sofya Raskhodnikova; based on slides by Nick Hopper


Intro to theory of computation

Parse trees

A

A

A

B

0

0

#

1

1

A

 0A1

 00A11

 00B11

 00#11

Sofya Raskhodnikova; based on slides by Nick Hopper


Intro to theory of computation

string

pop

push

PDAs: reminder

ε,ε → $

0,ε→ 0

1,0→ε

ε,$ → ε

1,0→ε

The language of P is the set of strings it accepts.

PDAs are nondeterministic.

Sofya Raskhodnikova; based on slides by Nick Hopper


Intro to theory of computation

Equivalence of CFGs & PDAs

A language is generated by a CFG

It is recognized by a PDA

Sofya Raskhodnikova; based on slides by Nick Hopper


Intro to theory of computation

Converting a CFG to a PDA

Suppose L is generated by a CFG G = (V, Σ, R, S).

Construct a PDA P = (Q, Σ, Γ, , q, F) that recognizes L.

Idea: P will guess steps of a derivation of its input w

and use its stack to derive it.

Sofya Raskhodnikova; based on slides by Nick Hopper


Intro to theory of computation

Algorithmic description of PDA

(1) Place the marker symbol $ and the start variable on the stack.

(2) Repeat forever:

If a variable V is on top of the stack, and (V ! s) 2 R,

pop V and

push string s on the stack

(b) If a terminal is on top of the stack,

pop it and match it with input.

in reverse order.

(3) On (ε,$), accept.

Sofya Raskhodnikova; based on slides by Nick Hopper


Intro to theory of computation

Designing states of PDA

(qstart) Push S$ and go to qloop

(qloop) Repeat the following steps forever:

(a) On (ε,V) where (V ! s) 2 R, push s and go to qloop

(b) On (,), pop  and go to qloop

(c) On (ε,$) go to qaccept

Otherwise, the PDA will get stuck!

Sofya Raskhodnikova; based on slides by Nick Hopper


Intro to theory of computation

Designing PDA

ε,ε → S$

ε,A → w for rule A → w

a,a → ε for terminal a

ε,$ → ε

Sofya Raskhodnikova; based on slides by Nick Hopper


Intro to theory of computation

S → aTb

T → Ta | ε

ε,ε → $

ε,ε → T

ε,S → b

ε,ε → T

ε,ε → S

ε,T → a

ε,$ → ε

ε,ε → a

ε,T → ε

a,a → ε

b,b → ε

Sofya Raskhodnikova; based on slides by Nick Hopper


Intro to theory of computation

A language is generated by a CFG

It is recognized by a PDA

Sofya Raskhodnikova; based on slides by Nick Hopper


Intro to theory of computation

Converting a PDA to a CFG

Given PDA P = (Q, Σ, Γ, , q, F)

Construct a CFG G = (V, Σ, R, S) with L(G)=L(P)

First, simplify P so that:

(1) It has a single accept state, qaccept

(2) It empties the stack before accepting

(3) Each transition either pushes a symbol or pops a symbol, but not both

Sofya Raskhodnikova; based on slides by Nick Hopper


Intro to theory of computation

SIMPLIFY

ε,ε → $

0,ε→ 0

q1

q0

1,0→ε

ε,ε → 0

ε,ε → ε

ε,$ → ε

q2

q3

1,0→ε

ε,ε → 0

ε,ε → ε

q4

ε,0 → ε

q5

Sofya Raskhodnikova; based on slides by Nick Hopper


Intro to theory of computation

From PDA to CFG: main idea

For each pair of states p and q in P,

add a variable Apq to CFG

that generates all strings that that can take P from p to q without changing the stack*

V = {Apq | p,qQ }

S = Aq0qaccept

*Starting from any stack S in p, including empty stack,

P has stack S at q.

Sofya Raskhodnikova; based on slides by Nick Hopper


Intro to theory of computation

ε,ε → $

0,ε→ 0

q1

q0

1,0→ε

ε,ε → 0

ε,$ → ε

q2

q3

1,0→ε

ε,ε → 0

q4

ε,0 → ε

q5

Example

What strings does Aq0q1 generate?

none

What strings does Aq1q2 generate?

{0n1n | n > 0}

What strings does Aq1q3 generate?

none

Sofya Raskhodnikova; based on slides by Nick Hopper


Intro to theory of computation

From PDA to CFG: main idea

Apq generates all strings that take P from p to q without changing the stack

Let x be such a string

  • P’s first move on x must be a push

  • P’s last move on x must be a pop

Consider the stack while reading x. Either:

New portion of the stack first empties

only at the end of x

2. New portion empties before the end of x

Sofya Raskhodnikova; based on slides by Nick Hopper


Intro to theory of computation

New portion of the stack first empties

only at the end of x

stack

height

r

s

a

b

input

string

p

q

Apq→ aArsb

Sofya Raskhodnikova; based on slides by Nick Hopper


Intro to theory of computation

2. New portion empties before the end of x

stack

height

input

string

p

r

q

Apq→ AprArq

Sofya Raskhodnikova; based on slides by Nick Hopper


Intro to theory of computation

CFG construction

V = {Apq | p,qQ }

S = Aq0qaccept

For each p,q,r,s Q, t  Γ and a,b  Σε

If (r,t)  (p,a,ε) and (q, ε)  (s,b,t)

Then add the rule Apq→ aArsb

For each p,q,r  Q,

add the rule Apq→ AprArq

For each p  Q,

add the rule App→ ε

Sofya Raskhodnikova; based on slides by Nick Hopper


Intro to theory of computation

ε,ε → $

0,ε→ 0

q1

q0

1,0→ε

ε,ε → 0

ε,$ → ε

q2

q3

1,0→ε

ε,ε → 0

q4

ε,0 → ε

q5

Aqq→ ε

Apq→ AprArq

Aq0q3 → εAq1q2ε

Aq1q2 → 0Aq1q21

Aq1q2 → 0Aq1q11

none

What strings does Aq0q1 generate?

{0n1n | n > 0}

What strings does Aq1q2 generate?

What strings does Aq1q3 generate?

none

Sofya Raskhodnikova; based on slides by Nick Hopper


Intro to theory of computation

Equivalence of CFGs & PDAs

A language is generated by a CFG

It is recognized by a PDA

Sofya Raskhodnikova; based on slides by Nick Hopper


  • Login