280 likes | 284 Vues
Lecture 9 NFA Subset Construction & Epsilon Transitions. CSCE 355 Foundations of Computation. Topics: Thompson Construction Examples Thompson Construction Test 1. Sept 24, 2008. Last Time: Readings 2.3 Mutual Induction Proof revisited Languages denoted by regular expressions Examples
E N D
Lecture 9NFA Subset Construction & Epsilon Transitions CSCE 355 Foundations of Computation Topics: • Thompson Construction • Examples Thompson Construction • Test 1 Sept 24, 2008
Last Time: Readings 2.3 • Mutual Induction Proof revisited • Languages denoted by regular expressions • Examples • Ruby Regular Expressions TEST 1 – September 29th New: Readings section 2.2.3-2.4 • Sample Test 1new • Theorem 2.12 Proof • Author’s Website Solutions Online • ε-NFA NFA • ε-NFA DFA subset construction • Regular Expressions • Relations Machines and Regular expressions • Ruby: regular expressions • Ruby Pickaxe Book • Ruby: showmatch.rb
Regular Expressions & Ken Thompson • http://en.wikipedia.org/wiki/Regular_expression • http://en.wikipedia.org/wiki/Ken_Thompson
Grep • Unix utility • man grep • man –k regexp
Thompson Construction • Based on recursive (inductive) definition of regular expressions • We describe NFAs (with epsilon moves) that recognize the base cases. • Then assuming we have NFAs for smaller expressions r and s we construct NFAs for • r + s • rs • r*
Recall Recursive Definition of RegExpr Definition of regular expressions over an alphabet Σ • Base cases: • if a εΣ then A is a regular expression and denotes L(a) = { a } • ε is a regular expression and denotes L(ε) = { ε } • Recursive definition • If r and s are regular expressions denoting the languages L(r) and L(s) then • rs is a regular expression denoting L(r)L(s) • r+s is a regular expression denoting L(r) L(s) • r* is a regular expression denoting [L(r)]* =
Sample test 1 outline • Proof Techniques • Inductive proof • mutual induction proof • Given DFA • Transition diagram • Input “abaa” • L(M) • Give DFA for L • NFA • NFA for L • NFA DFA (Subset) • εNFA • εNFA for L • ε-closure (ECLOSE in text) • εNFA DFA (Subset) • Ruby regular expressions
Design DFA that accepts Language L • Example • For a DFA D how do you prove L(D) = L ?
Mutual Induction Proof • Define three statements for a mutual induction proof that could help in proving that L(M) = L ={x ε {0, 1}* | that x has a number of zeroes divisible by 3 }
2.5.3 a,b • The set of strings consisting of zero or more a’s followed by zero or more b’s followed by zero or more c’s • The set of strings consisting of either 01 repeated one or more times or 010 repeated one of more times
2.3.2 Subset NFA without ε • NFA • DFA
2.3.4 Done before • The set of strings over {0,1, … 9} such that the final digit has appeared before • The set of strings over {0,1, … 9} such that the final digit has not appeared before • The set of strings of 0’s and 1’s such that there are two 0’s separated by a number of positions that is a multiple of 4. Note 0 is allowable multiple.
Homework: • 2.5.1 • 2.5.3 a,b • Extra Credit (20pts): Modify dfa1.rb to print all strings of length<8 that would be accepted by that DFA.