Presentation is loading. Please wait.

Presentation is loading. Please wait.

CSCI 2670 Introduction to Theory of Computing September 21, 2004.

Similar presentations


Presentation on theme: "CSCI 2670 Introduction to Theory of Computing September 21, 2004."— Presentation transcript:

1 CSCI 2670 Introduction to Theory of Computing September 21, 2004

2 Agenda Last week –Pumping lemma –Context-free grammars Examples, definition, strategies for building This week –More on CFG’s Ambiguity, Pushdown automata, pumping lemma for CFG’s Next week –Midterm (Chapters 1 & 2)

3 Announcement Homework due next Tuesday (9/28) –2.8, 2.9, 2.12, 2.13, 2.15, 2.18 d, 2.22

4 Ambiguity Consider the CFG ({S},{0,1},R,S), where the rules of R are S  0 | 1 | S + S | S * S Derive the string 0 * 1 + 1

5 Ambiguity S  0 | 1 | S + S | S * S 0 * 1 + 1 S SS* S+S 0 11 S SS+ S*S 1 01 Different parse trees!

6 Leftmost derivation & ambiguity A derivation of a string w in a grammar G is a leftmost derivation if every step of the derivation replaced the leftmost variable A string is derived ambiguously in CFG G if it has two or more different leftmost derivations The grammar G is ambiguous if it generates some string ambiguously –Some grammars are inherently ambiguous

7 Chomsky normal form Method of simplifying a CFG Definition: A context-free grammar is in Chomsky normal form if every rule is of one of the following forms A  BC A  a where a is any terminal and A is any variable, and B, and C are any variables or terminals other than the start variable the rule S  ε is permitted, where S is the start variable

8 CFG’s and Chomsky normal form Theorem: Any context-free language is generated by a context-free grammar in Chomsky normal form. Proof idea: Convert any CFG to one in Chomsky normal form by removing or replacing all rules in the wrong form 1.Add a new start symbol 2.Eliminate ε rules of the form A  ε 3.Eliminate unit rules of the form A  B 4.Convert remaining rules into proper form

9 Convert a CFG to Chomsky normal form 1.Add a new start symbol -Create the following new rule S 0  S where S is the start symbol and S 0 is not used in the CFG

10 Convert a CFG to Chomsky normal form 2.Eliminate all ε rules A  ε, where A is not the start variable -For each rule with an occurrence of A on the right-hand side, add a new rule with the A deleted R  uAv becomes R  uAv | uv R  uAvAw becomes R  uAvAw | uvAw | uAvw | uvw -If we have R  A, replace it with R  ε unless we had already removed R  ε

11 Convert a CFG to Chomsky normal form 3.Eliminate all unit rules of the form A  B -For each rule B  u, add a new rule A  u, where u is a string of terminals and variables, unless this rule had already been removed -Repeat until all unit rules have been replaced

12 Convert a CFG to Chomsky normal form 4.Convert remaining rules into proper form -What’s left? -Replace each rule A  u 1 u 2 …u k, where k  3 and u i is a variable or a terminal with k-1 rules A  u 1 A 1 A 1  u 2 A 2 … A k-2  u k-1 u k

13 Example S  S 1 | S 2 S 1  S 1 b | Ab | ε A  aAb | ab S 2  S 2 a | Ba | ε B  bBa | ba Step 1: Add a new start symbol

14 Example S 0  S S  S 1 | S 2 S 1  S 1 b | Ab A  aAb | ab | ε S 2  S 2 a | Ba B  bBa | ba | ε Step 2: Eliminate ε rules

15 Example S 0  S S  S 1 | S 2 S 1  S 1 b | Ab | b A  aAb | ab S 2  S 2 a | Ba | a B  bBa | ba Step 3: Eliminate all unit rules

16 Example S 0  S 1 b | Ab | b | S 2 a | Ba | a S  S 1 b | Ab | b | S 2 a | Ba | a S 1  S 1 b | Ab | b A  aAb | ab S 2  S 2 a | Ba | a B  bBa | ba Step 4: Convert remaining rules to proper form

17 Example S 0  S 1 b | Ab | b | S 2 a | Ba | a S  S 1 b | Ab | b | S 2 a | Ba | a S 1  S 1 b | Ab | b A  aA 1 | ab A 1  Ab S 2  S 2 a | Ba | a B  bB 1 | ba B 1  Ba

18 Tomorrow Pushdown automata


Download ppt "CSCI 2670 Introduction to Theory of Computing September 21, 2004."

Similar presentations


Ads by Google