400 likes | 636 Vues
Deterministic Finite State Machines. Chapter 5. Languages and Machines. Regular Languages. Regular Language. L. Regular Expression. Accepts. Finite State Machine. Finite State Machines. Vending Machine: An FSM to accept $.50 in change Drink is 25 cents
E N D
Deterministic Finite State Machines Chapter 5
Regular Languages Regular Language L Regular Expression Accepts Finite State Machine
Finite State Machines Vending Machine: An FSM to accept $.50 in change Drink is 25 cents No more than 50 cents can be deposited X Other FSM examples?
Definition of a DFSM M = (K, , , s, A), where: K is a finite set of states is an alphabet sK is the initial state AK is the set of accepting states, and is the transition function from (K) to K state input symbol state Quintuple Cartesian product
Accepting by a DFSM Informally, Maccepts a string w iff M winds up in some element of A when it has finished reading w. The language accepted by M, denoted L(M), is the set of all strings accepted by M.
Configurations of DFSMs A configuration of a DFSM M is an element of: K* It captures the two things that can make a difference to M’s future behavior: • its current state • the input that is still left to read. The initial configuration of a DFSM M, on input w, is: (sM, w), where sM is the start state of M
The Yields Relations The yields-in-one-step relation |-M : (q, w) |-M (q', w') iff • w = aw' for some symbol a, and • (q, a) = q' The relation yields, |-M*, is the reflexive, transitive closure of |-M. C1 |-M* C2 : M can go from C1 to C2 in 0 or more steps.
Computations Using FSMs A computation by M is a finite sequence of configurations C0, C1, …, Cn for some n 0 such that: • C0 is an initial configuration, • Cn is of the form (q, ), for some state qKM, • C0 |-MC1 |-MC2 |-M … |-MCn.
Accepting and Rejecting A DFSM Maccepts a string w iff: (s, w) |-M * (q, ), for some qA. A DFSM Mrejects a string w iff: (s, w) |-M* (q, ), for some qAM. The language accepted byM, denoted L(M), is the set of all strings accepted by M. Theorem: Every DFSM M, on input s, halts in |s| steps.
An Example Computation An FSM to accept odd integers: even odd even q0q1 odd On input 235, the configurations are: (q0, 235) |-M (q0, 35) |-M |-M Thus (q0, 235) |-M* (q1, )
Regular Languages A language is regular iff it is accepted by some FSM.
A Very Simple Example L = {w {a, b}* : every a is immediately followed by a b}.
A Very Simple Example L = {w {a, b}* : every a is immediately followed by a b}.
A Very Simple Example L = {w {a, b}* : every a is immediately followed by a b}. M = (K, , , s, A) = ({q0, q1, q2}, {a, b}, , q0, {q0}), where = {((q0, a), q1), ((q0, b), q0), ((q1, a), q2), ((q1, b), q0), ((q2, a), q2), ((q2, b), q2)}
Parity Checking L = {w {0, 1}* : w has odd parity}.
Parity Checking L = {w {0, 1}* : w has odd parity}. M = (K, , , s, A) = ({q0, q1}, {0, 1}, , q0, {q1}), where = {((q0, 0), q0), ((q0, 1), q1), ((q1, 0), q1), ((q1, 1), q0)}
No More Than One b L = {w {a, b}* : w contains no more than one b}.
No More Than One b L = {w {a, b}* : w contains no more than one b}. M = (K, , , s, A)
Checking Consecutive Characters L = {w {a, b}* : no two consecutive characters are the same}.
Checking Consecutive Characters L = {w {a, b}* : no two consecutive characters are the same}.
Dead States L = {w {a, b}* : every a region in w is of even length}
Dead States L = {w {a, b}* : every a region in w is of even length} M = (K, , , s, A)
Dead States L = {w {a, b}* : every b in w is surrounded by a’s}
The Language of Floating Point Numbers is Regular Example strings: +3.0, 3.0, 0.3E1, 0.3E+1, -0.3E+1, -3E8 The language is accepted by the DFSM:
Programming FSMs Cluster strings that share a “future”. Let L = {w {a, b}* : w contains an even number of a’s and an odd number of b’s} What states are needed? How many states are there?
Vowels in Alphabetical Order L = {w {a - z}* : all five vowels, a, e, i, o, and u, occur in w in alphabetical order}.
Vowels in Alphabetical Order L = {w {a - z}* : all five vowels, a, e, i, o, and u, occur in w in alphabetical order}. u O
Programming FSMs L = {w {a, b}* : w does not contain the substring aab}.
Programming FSMs L = {w {a, b}* : w does not contain the substring aab}. Start with a machine for L: How must it be changed?
Programming FSMs L = {w {a, b}* : w does not contain the substring aab}. Start with a machine for L: How must it be changed?
A Building Security System L = {event sequences such that the alarm should sound}
FSMs Predate Computers The Chinese Abacus, 14 century AD The Jacquard Loom, invented in 1801 The Prague Orloj, originally built in 1410
Finite State Representations in Software Engineering A high-level state chart model of a digital watch.
The Missing Letter Language Let = {a, b, c, d}. Let LMissing= {w : there is a symbol ai not appearing in w}. Try to make a DFSM for LMissing: