280 likes | 402 Vues
This module explores the closure properties of Regular Languages and Linear Finite State Automata (LFSA) using Non-Deterministic Finite Automata (NFA). It details the algorithms for constructing new NFAs from given NFAs for operations like union, concatenation, and Kleene closure. The existence of NFAs and their languages is demonstrated through formal proofs. Understanding these properties is crucial for designing algorithms that facilitate the construction and simplification of automata, showcasing the equivalence between regular languages and LFSA.
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