Presentation is loading. Please wait.

Presentation is loading. Please wait.

CSCI 2670 Introduction to Theory of Computing September 20, 2005.

Similar presentations


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

1 CSCI 2670 Introduction to Theory of Computing September 20, 2005

2 Agenda Last week –Context-free grammars Examples, definition, strategies for building This week –More on CFG’s Chomsky normal form, Pushdown automata, pumping lemma for CFG’s

3 Announcement Recommended problems to do prior to next Tuesday (9/27) –2.8, 2.9, 2.12, 2.13, 2.15, 2.16, 2.30 d I will post solutions to these problems on Friday Midterm next Tuesday –Chapters 1 & 2 I will hand out practice midterm tomorrow and solutions the next day I will hold extra office hours on Friday 11:00 – 12:30

4 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 if S is the start variable then the rule S  ε is the only permitted  rule

5 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

6 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

7 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  ε

8 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

9 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

10 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

11 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

12 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

13 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

14 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

15 Pushdown automata Similar to finite automata, but for CFG’s Finite automata are not adequate for CFG’s because we cannot keep track of what we’ve done –At any point, we only know the current state, not previous states Need memory –PDA’s are finite automata with a stack

16 Finite automata and PDA schematics State control a a b b State control a a b b xyzxyz FA PDA Stack: Infinite LIFO (last in first out) device

17 Example read 0 & push 0 on stack read ε & push ε on stack read ε & push $ on stack read 1 & pop 0 off stack read ε & pop $ off stack Language accepted: {0 n 1 n | n  0}

18 Differences between PDA’s and NFA’s Transitions read a symbol of the string and push a symbol onto or pop a symbol off of the stack Stack alphabet is not necessarily the same as the alphabet for the language –e.g., $ marks bottom of stack in previous (0 n 1 n ) example


Download ppt "CSCI 2670 Introduction to Theory of Computing September 20, 2005."

Similar presentations


Ads by Google