280 likes | 393 Views
Module 21. Closure Properties for LFSA using NFA’s From now on, when I say NFA, I mean any NFA including an NFA- l unless I add a specific restriction union (second proof) concatenation Kleene closure. LFSA closed under set union (again). LFSA closed under set union.
E N D
Module 21 • Closure Properties for LFSA using NFA’s • From now on, when I say NFA, I mean any NFA including an NFA-l unless I add a specific restriction • union (second proof) • concatenation • Kleene closure
LFSA closed under set union • Let L1 and L2 be arbitrary languages in LFSA • Let M1 and M2 be NFA’s s.t. L(M1) = L1, L(M2) = L2 • M1 and M2 exist by definition of L1 and L2 in LFSA and the fact that every FSA is an NFA • Construct NFA M3 from NFA’s M1 and M2 • Argue L(M3) = L1 union L2 • There exists NFA M3 s.t. L(M3) = L1 union L2 • L1 union L2 is in LFSA
L1 L1 union L2 L2 M1 M3 M2 NFA’s Visualization • Let L1 and L2 be arbitrary languages in LFSA • Let M1 and M2 be NFA’s s.t. L(M1) = L1, L(M2) = L2 • M1 and M2 exist by definition of L1 and L2 in LFSA and the fact that every FSA is an NFA • Construct NFA M3 from NFA’s M1 and M2 • Argue L(M3) = L1 union L2 • There exists NFA M3 s.t. L(M3) = L1 union L2 • L1 union L2 is in LFSA LFSA
A Algorithm Specification • Input • Two NFA’s M1 and M2 • Output • NFA M3 such that L(M3) = ? NFA M1 NFA M2 NFA M3
a l a,b l a,b a,b A M3 NFA M1 NFA M2 NFA M3 Use l-transition a M1 a,b a,b a,b M2
M2 M1 l l A M3 NFA M1 NFA M2 NFA M3 General Case *
Input NFA M1 = (Q1, S1, q1, d1, A1) NFA M2 = (Q2, S2, q2, d2, A2) Output NFA M3 = (Q3, S3, q3, d3, A3) What is Q3? Q3 = What is S3? S3 = S1 = S2 What is q3? q3 = A NFA M1 NFA M2 NFA M3 Construction *
Input NFA M1 = (Q1, S1, q1, d1, A1) NFA M2 = (Q2, S2, q2, d2, A2) Output NFA M3 = (Q3, S3, q3, d3, A3) What is A3? A3 = What is d3? d3 = A NFA M1 NFA M2 NFA M3 Construction
Comments • You should be able to execute this algorithm • You should understand the idea behind this algorithm • You should understand how this algorithm can be used to simplify design • You should be able to design new algorithms for new closure properties • You should understand how this helps prove result that regular languages and LFSA are identical • In particular, you should understand how this is used to construct an NFA M from a regular expression r s.t. L(M) = L(r) • To be seen later
LFSA closed under set concatenation • Let L1 and L2 be arbitrary languages in LFSA • Let M1 and M2 be NFA’s s.t. L(M1) = L1, L(M2) = L2 • M1 and M2 exist by definition of L1 and L2 in LFSA and the fact that every FSA is an NFA • Construct NFA M3 from NFA’s M1 and M2 • Argue L(M3) = L1concatenate L2 • There exists NFA M3 s.t. L(M3) = L1 concatenate L2 • L1 concatenate L2 is in LFSA
L1 L1 concatenate L2 L2 M1 M3 M2 NFA’s Visualization • Let L1 and L2 be arbitrary languages in LFSA • Let M1 and M2 be NFA’s s.t. L(M1) = L1, L(M2) = L2 • M1 and M2 exist by definition of L1 and L2 in LFSA and the fact that every FSA is an NFA • Construct NFA M3 from NFA’s M1 and M2 • Argue L(M3) = L1concatenate L2 • There exists NFA M3 s.t. L(M3) = L1 concatenate L2 • L1 concatenate L2 is in LFSA LFSA
A Algorithm Specification • Input • Two NFA’s M1 and M2 • Output • NFA M3 such that L(M3) = NFA M1 NFA M2 NFA M3
a l a,b a,b a,b A M3 NFA M1 NFA M2 NFA M3 Use l-transition a M1 a,b a,b a,b M2
M2 M1 l l A M3 NFA M1 NFA M2 NFA M3 General Case
Input NFA M1 = (Q1, S1, q1, d1, A1) NFA M2 = (Q2, S2, q2, d2, A2) Output NFA M3 = (Q3, S3, q3, d3, A3) What is Q3? Q3 = What is S3? S3 = S1 = S2 What is q3? q3 = A NFA M1 NFA M2 NFA M3 Construction
Input NFA M1 = (Q1, S1, q1, d1, A1) NFA M2 = (Q2, S2, q2, d2, A2) Output NFA M3 = (Q3, S3, q3, d3, A3) What is A3? A3 = What is d3? d3 = A NFA M1 NFA M2 NFA M3 Construction
Comments • You should be able to execute this algorithm • You should understand the idea behind this algorithm • You should understand how this algorithm can be used to simplify design • You should be able to design new algorithms for new closure properties • You should understand how this helps prove result that regular languages and LFSA are identical • In particular, you should understand how this is used to construct an NFA M from a regular expression r s.t. L(M) = L(r) • To be seen later
LFSA closed under Kleene Closure • Let L be arbitrary language in LFSA • Let M1 be an NFA s.t. L(M1) = L • M1 exists by definition of L1 in LFSA and the fact that every FSA is an NFA • Construct NFA M2 from NFA M1 • Argue L(M2) = L1* • There exists NFA M2 s.t. L(M2) = L1* • L1* is in LFSA
L1 L1* M1 M2 NFA’s Visualization • Let L be arbitrary language in LFSA • Let M1 be an NFA s.t. L(M1) = L • M1 exists by definition of L1 in LFSA and the fact that every FSA is an NFA • Construct NFA M2 from NFA M1 • Argue L(M2) = L1* • There exists NFA M2 s.t. L(M2) = L1* • L1* is in LFSA LFSA
A Algorithm Specification • Input • NFA M1 • Output • NFA M2 such that L(M2) = NFA M1 NFA M2
NFA M1 NFA M2 l a l M2 A Use l-transition a M1
NFA M1 NFA M2 l M1 l A l M3 General Case *
Input NFA M1 = (Q1, S1, q1, d1, A1) Output NFA M2 = (Q2, S2, q2, d2, A2) What is Q2? What is S2? S2 = S1 What is q2? q2 = NFA M1 NFA M2 A Construction
Input NFA M1 = (Q1, S1, q1, d1, A1) Output NFA M2 = (Q2, S2, q2, d2, A2) What is A2? A2 = What is d2? d2 = NFA M1 NFA M2 A Construction
Comments • You should be able to execute this algorithm • You should understand the idea behind this algorithm • Why do we need to make an extra state p? • You should understand how this algorithm can be used to simplify design • You should be able to design new algorithms for new closure properties • You should understand how this helps prove result that regular languages and LFSA are identical • In particular, you should understand how this is used to construct an NFA M from a regular expression r s.t. L(M) = L(r) • To be seen later