170 likes | 189 Views
Deterministic Finite Automata. CS 130: Theory of Computation HMU textbook, Chapter 2 (Sec 2.2). State-driven programs. Many applications carry out actions only when particular conditions apply at the given moment conditions => state Examples:
E N D
Deterministic Finite Automata CS 130: Theory of Computation HMU textbook, Chapter 2 (Sec 2.2)
State-driven programs • Many applications carry out actions only when particular conditions apply at the given moment • conditions => state • Examples: • Buying items online: a payment can be made only after checkout • Performing a simple arithmetic calculation using a calculator: an operator character should be pressed only after some sequence of digits have been entered for the first operand
Model: finite automaton • At any point in time, the “program” or automaton will be in one state from a set of states • In the calculator example, the states are: • reading the first operand • first operand read (+ or - is pressed) • reading the second operand • result displayed/ready for next calculation(= is pressed) • A transition from one state to another state occurs on a given input symbol
Accepting valid calculator input • We want the automaton to allow (accept) input strings like this • 123+456= • 3333-5= • But “reject” string like this • +-2=2 • 567-= • Symbols are read from left to right and cause transitions from one state to another based on the current state and current input symbol
Deterministic Finite Automata • A DFA or deterministic finite automaton M is a 5-tuple, M = (Q, , , q0, F), where: • Q is a finite set of states of M • is the finite input alphabet of M • : Q Q is the state transition function • q0 is the start state of M • F Q is the set of accepting states or final states of M
0 0 q0 1 q1 1 DFA example 1 M • State diagram • Q = { q0, q1 } = { 0, 1 }F = { q1 } StateTable
State table &state transition function • State table • State transition function(q0, 0) = q0, (q0, 1) = q1(q1, 0) = q1, (q1, 1) = q0
A DFA processing a string • Given a string of input symbolsw = a1a2 … an • A DFA M processes the string w as follows: • Start with state qx = q0 • For each input symbol ai : qx = (qx, ai) • If resulting qx F, then w is accepted;otherwise w is rejected
Extending for strings • Let w be a string over andlet M = (Q, , , q0, F) be a DFA • Define ^: Q X * Q as follows • If w = , then^(q, w) = ^(q, ) = q • If w ≠, i.e., w = xa,(where x is a string and a is a symbol) then^(q, w) = ^(q, xa) = (^(q, x), a) • A DFA M accepts a string wwhen ^(q0, w) F
Language recognized by a DFA • The language L(M) that is recognized by a DFA M = (Q, , , q0, F), is the set of all strings accepted by M. • That is, L(M) = { w * | M accepts w } = { w * | ^(q0, w) F } • Example: For the previous DFA, L(M) is the set of all strings of 0s and 1s with odd parity, that is, odd number of 1s.
1 B 0 1 1 C A 0 0 D 0,1 DFA Example 2 • Recognizer for 11*01* * means zero or moreoccurrences of thepreceding symbol Trap
DFA Example 2 • M = (Q, , , q0, F), L(M) = 11*01*Q = { q0=A, B, C, D } = { 0, 1 }F = { C }
DFA Example 3 0 • Modulo 3 counter B 1 0 2 A 1 2 2 C 1 0
DFA Example 3 • M = (Q, , , q0, F)Q = { q0=A, B, C } = { 0, 1, 2 }F = { A }
DFA Example 4 • Recognizing simple calculator expressions • M = (Q, , , q0, F)Q = { q0=ready, readingop1, op1read, readingop2 } = { 0…9, +, -, = }F = { ready } • See course website for a sample Java program that simulates this DFA (study how the transition function is implemented)
Regular Languages and DFAs • A language L * is called regular if there exists a DFA M such that L(M)=L • Examples of regular languages • Binary strings with odd parity • Language described by 11*01* • Strings that form integers divisible by 3 • Simple calculator expressions
Next • Variations on Finite Automata(rest of Chapter 2) • Nondeterministic Finite Automata (NFAs) • Equivalences of these variations with DFAs • Regular expressions as an alternative model for regular languages(Chapter 3)