430 likes | 713 Views
CMPS 3223 Theory of Computation. Automata, Computability, & Complexity by Elaine Rich ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Slides provided by author Slides edited for use by MSU Department of Computer Science – R. Halverson. Finite State Machines & Regular Languages.
E N D
CMPS 3223Theory of Computation Automata, Computability, & Complexity by Elaine Rich ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Slides provided by author Slides edited for use by MSU Department of Computer Science – R. Halverson
Finite State Machines& Regular Languages Chapter 5B Pages 72 - ??
Sections to Omit from Study • P. 73 – A simulation algorithm • 5.4 – Will use method discussed in class, not Theorem 5.3 • 5.5, 5.6 – Omit • 5.7 – Omit • 5.7.1 – Learn definitions only • 5.8 - 5.12 - Omit
Epsilon Transitions () • An Epsilon Transition is a transition that allows movement from one state to another without consuming a character of input string • Epsilon Closure: eps(q) = set of states accessible from state q by epsilons • eps(q) = {pK : (q, w) |-*M (p, w)}
Epsilon Closure Example eps(S) = {q3} eps(q2) = { } eps(q1) = {q2} eps(q3) = { } q1 a b q2 S b q3
Epsilon Transitions () • Simple epsilon closure has limited use • Need an expanded closure… eps(q,a) = {pK : (q, aw) |-*M (p, w)} = set of all states accessible from state q by consuming only character a
Expanded Epsilon Closure eps(S,a) = {q1,q2,q3} eps(q2,a) = { } eps(q1,a) = { } eps(q3,a) = { } eps(S,b) = {q2} eps(q2,b) = { } eps(q1,b) = { } eps(q3,b) = {q2} q1 a b q2 S b q3
An Example of eps eps(q0) = eps(q1) = eps(q2) = eps(q3) =
Algorithm Simulating a NDFSMBut why do this?? Convert NDFSM to DFSM ndfsmsimulate(M: NDFSM, w: string) = • current-state = eps(s). • While any input symbols in w remain to be read do: • c = get-next-symbol(w). • next-state = . • For each state q in current-state do: For each state p such that (q, c, p) do: next-state = next-stateeps(p). • current-state = next-state. • If current-state contains any states in A, accept. Else reject.
5.4.4 Nondeterministic and Deterministic FSMs Clearly: {Languages accepted by a DFSM} {Languages accepted by a NDFSM} More interestingly: Theorem: For each NDFSM, there is an equivalent DFSM. What is meant by “proof by construction”?
Nondeterministic to Deterministic FSM Theorem: For each NDFSM, there is an equivalent DFSM. Proof:By construction: Given a NDFSM M = (K, , , s, A), we construct M' = (K', , ', s', A'), where K' = P(K) s' = eps(s) A' = {QK : QA} '(Q, a) = {eps(p): pK and (q, a, p) for some qQ}
An Algorithm for Constructing DFSM from NDFSM • Create a table with • A row for each state [s] • A column for each alphabet character [c] • Fill in body of table with eps(s,c) • If table contains any new combined states, create a new row for each & repeat step 2, until no new states are created. • Draw DFSM from table starting with state S and using only accessible states • Final states in NDFSM will be final in DFSM
Expanded Epsilon Closure q1 a b q2 q2 S b q3
Expanded Epsilon Closure q1 a b q2 q2 S b q3
Expanded Epsilon Closure Are the machines equivalent? Is the new DFSM Efficient? Minimal? q1 a 12 12 b q2 S q2 a s b q3 2 2 b
An Example Compare our table method to that of the author’s on page 76+
Another Example L = {w {a, b}* : the fourth character from the end is a}
The Real Meaning of “Determinism” Let M = Is M deterministic? An FSM is deterministic, in the most general definition of determinism, if, for each input and state, there is at most one possible transition. • DFSMs are always deterministic. Why? • NDFSMs can be deterministic (even with -transitions and implicit dead states), but the formalism allows nondeterminism, in general. • Determinism implies uniquely defined machine behavior.
Deterministic FSMs as Algorithms L = {w {a, b,c}* : w contains at most one b}
Deterministic FSMs as Algorithms until accept or reject do: S: s = get-next-symbol if s = end-of-file then accept else if s = a then go to S else if s = b then go to T T: s = get-next-symbol if s = end-of-file then accept else if s = a then go to T else if s = b then reject end But you have to write a new program for each different machine
Time Complexity • Length of Program: |K| (|| + 2) • Time required to analyze string w: O(|w| ||) • Explain!!
Simulator for DFSMSection 5.6 • Could we develop one? • What would it entail?
Simulator for DFSM What would it entail? 2 Parts • Read in the graph • How to represent the DFSM (graph)? • Build the table • Read in the string • How to systematically process a string?
Minimal DFSM Section 5.7.1 • Minimal DFSM: a DFSM is minimal iff there is no other DFSM which accepts the same language and has fewer states • Minimal refers to number of states • Relates to equivalence classes of strings & substrings
Collapsing States 1 a b 2 The front part of the machine c 3 d 4 Do you agree that we could combine states 1 & 4 and also states 2 & 3?
Collapsing States 14 a d b The front part of the machine c 23 You can ALSO collapse states at the initial end of the arrows. BUT, we need a clear strategy for determining which states can be collapsed.
Another Collapse Example 12 a s 2 b q1 a b q2 a,b S q2 s 1 b q3
Minimal DFSM Section 5.7.1 • Theorem 5.5: There exists a unique minimal DFSM for every regular language • There is no smaller machine (# of states) • If there is another machine with same number of states, the machines are equivalent except for names of states • There is an algorithm for developing the minimal DFSM. • First convert to deterministic, remove
Algorithm Overview for Minimizing • Group all states into 2 sets • Accepting & Rejecting • Process each set and split as necessary • Continue until no sets can be split • A set of one state is finished
Building of Regular Languages Fact: For every regular language, there exists a DFSM. Questions: If L & K are regular languages • Is L U K a regular language? • Is LK a regular language? • Is L* a regular language? • Is L+ a regular language? Can you prove it???
Is L U K a regular language? • Since L & M are a regular languages, there exist DFSMs M(L) & M(K) that recognize L & K. • Each has a distinct Start State, SL & SK. • Create a new state S & -transition from S to SL & SK. • The resulting machine is a NDFSM for L U K. • THUS, L U K is a regular language.
Is LK a regular language? • Since L & M are a regular languages, there exist DFSMs M(L) & M(K) that recognize L & K. • Each has a distinct Start State, SL & SK and each has at least one final state F. • Create -transition from all final states in L to SK. • Convert all final states in L to non-final states • The resulting machine is a NDFSM for LK. • THUS, LK is a regular language. • What if epsilon is in L or in K?
Is L* a regular language? • Since L is a regular language, there exists DFSM M(L) that recognizes L. • M(L) has a distinct Start State, and at least one final state F. • If S is not a final state, make it a final state. • Create -transition from each final state (except S) to S. (or create a new final state as before) • The resulting machine is a NDFSM for L*. • THUS, L* is a regular language.
Is L+ a regular language? • Since L is a regular language, there exists DFSM M(L) that recognizes L. • M(L) has a distinct Start State, and at least one final state F. • Create -transition from each final state to S. • The resulting machine is a NDFSM for L+. • THUS, L+ is a regular language. • Why not make S a final state?
Homework for 5B Page 123+ Problems 7 - 12 8 - can draw NDFSM & convert if you need to 9 – use method discussed in class 11 – Draw DFSM – minimize if necessary See posted handout for minimization problems.