340 likes | 637 Views
Non-Deterministic Finite Automata. Formal Definition of DFA. A DFA consists of: Alphabet A set of states Q A transition function δ : Q Q One start state q 0 One or more accepting states F Q
E N D
Formal Definition of DFA • A DFA consists of: • Alphabet • A set of statesQ • A transition functionδ : Q Q • One start state q0 • One or more accepting states F Q • Language accepted by a DFA is the set of strings such that DFA ends at an accepting state • Each string is c1c2…cn with ci • States are qi = δ(qi-1,ci ) for i=1…n • qn is an accepting state
q2 1 q1 q1 q2 q3 1 empty string transition nondeterministic transition NFA and -NFA • Nondeterministic Finite Automata • Same input may produce multiple paths • Allows transition with an empty string or transition from one state to different states given a character
Accept strings containing a 1 in the third position from the back 0,1 0, 1 1 2 3 4 1 0,1 Another Example
RECAP: How does NFA work? • Start in start state • Read a symbol, clone a machine for each matching transition • If a symbol is read and there is no way to exit from a state, then that machine dies • At end of input if any machine accepts then accept
RECAP Definition: NFA • An NFA is defined by a 5-tuple, with • Alphabet • A set of statesQ • A transition functionδ : Q Σ P(Q) • One start stateq0 • One or more accepting states F Q • Notation: P(Q) is power set of Q • What is the difference from DFA?
RECAP Nondeterministic Transition • The functionδ : Q Σ P(Q)is the key difference! • When reading symbol `a’ while in state q, it may go to one of the states in δ(q,a)Q. • Can δ(q,a) map to empty set?
RECAP Languages • Language accepted by a NFA is the set of strings such that NFA ends at an accepting state • Each string of language is c1c2…cn with ciΣ(possibly with ε) • States are qi δ(qi-1,ci) for i=1…n • qn is an accepting state
RECAP DFA = NFA • Theorem: For every language L accepted by an NFA, there is a DFA that accepts L. • In other words, DFA and NFA are equivalent computational models. • Proof idea: When keeping track of nondeterministic computation of NFA N, use many ‘fingers’ to point at the set of states of N that can be reached on a given input string. We can simulate this computation with a DFA M with state space P(Q).
0,1 0, 1 1 2 3 4 1 0,1 Proof of DNA=NFA • More formal proof: Let A be the language recognized by the NFA N = (Q,Σ,δ,q0,F). Define the DFA M = (Q’,Σ,δ’,q’0,F’) by • Q’ = P(Q) • δ’(R,a) = { qQ | qδ(r,a) for an rR } • q’0 = { q0 } • F’ = {RQ’ | R contains an accept state of N}
How does NFA work? • Start in start state • If any transitions, clone a machine for each transition • Read a symbol, clone a machine for each matching transition • If a symbol is read and there is no way to exit from a state, then that machine dies • At end of input if any machine accepts then accept
0,1 0,1 0, 1 1 2 3 4 1 Example • Accept strings containing either 101 or 11 as a substring
How would this NFA work? 0,1 0,1 0, 1 1 2 3 4 1 Example: Read: 010110
1 0 1 1 1 2 3 0 1 3 1 1 2 3 4 1 2 1 3 4 4 0 1 4 4 Read: 010110
Definition: εNFA • An NFA is defined by a 5-tuple, with • Alphabet • A set of statesQ • A transition functionδ : Q Σε P(Q) • One start stateq0 • One or more accepting states F Q • Notation: Σε = Σ{ε}; P(Q) is power set of Q • What is the difference from DFA?
Nondeterministic Transition • The functionδ : Q Σε P(Q)is the key difference! • When reading symbol `a’ while in state q, it may go to one of the states in δ(q,a)Q. • ε in Σε allows empty-string transitions • Can δ(q,a) map to empty set?
Languages • Language accepted by a NFA is the set of strings such that NFA ends at an accepting state • Each string of language is c1c2…cn with ciΣε (possibly with ε) • States are qi δ(qi-1,ci) for i=1…n • qn is an accepting state
The Golden Chain εNFA NFA DFA REGEX