1 / 18

CSCI 2670 Introduction to Theory of Computing

Explore context-free grammars (CFGs) and Chomsky normal form, including definitions, example strategies, and conversion methods. Learn about Pushdown automata and how they relate to CFGs. Recommended problems and midterm details included.

bson
Download Presentation

CSCI 2670 Introduction to Theory of Computing

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. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. CSCI 2670Introduction 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 • Add a new start symbol • Eliminate ε rules of the form A  ε • Eliminate unit rules of the form A  B • Convert remaining rules into proper form

  6. Convert a CFG to Chomsky normal form • Add a new start symbol • Create the following new rule S0 S where S is the start symbol and S0 is not used in the CFG

  7. Convert a CFG to Chomsky normal form • 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 • 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 • Convert remaining rules into proper form • What’s left? • Replace each rule A  u1u2…uk, where k  3 and ui is a variable or a terminal with k-1 rules A  u1A1 A1  u2A2 … Ak-2  uk-1uk

  10. Example S  S1 | S2 S1 S1b | Ab A  aAb | ab | ε S2 S2a | Ba B  bBa | ba| ε Step 1: Add a new start symbol

  11. Example S0  S S  S1 | S2 S1 S1b | Ab A  aAb | ab | ε S2 S2a | Ba B  bBa | ba | ε Step 2: Eliminate ε rules

  12. Example S0  S S  S1 | S2 S1 S1b | Ab | b A  aAb | ab S2 S2a | Ba | a B  bBa | ba Step 3: Eliminate all unit rules

  13. Example S0  S1b | Ab | b | S2a | Ba | a S  S1b | Ab | b | S2a | Ba | a S1 S1b | Ab | b A  aAb | ab S2 S2a | Ba | a B  bBa | ba Step 4: Convert remaining rules to proper form

  14. Example S0  S1b | Ab | b | S2a | Ba | a S  S1b | Ab | b | S2a | Ba | a S1 S1b | Ab | b A  aA1 | ab A1  Ab S2 S2a | Ba | a B  bB1| ba B1  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. a a b b a a b b x y z Finite automata and PDA schematics State control FA State control PDA Stack: Infinite LIFO (last in first out) device

  17. Example read ε & pop $ off stack read ε & push $ on stack read ε & push ε on stack read 0 & push 0 on stack read 1 & pop 0 off stack Language accepted: {0n1n | 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 (0n1n) example

More Related