280 likes | 291 Views
Learn Thompson Construction in Regular Expressions, NFA to DFA subset construction, relation between machines and regular expressions, example problems, proof techniques, and more. Improve your understanding with concrete examples and practical exercises.
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.