100 likes | 258 Views
Are DFAs and NFAs Equivalent. It turns out DFAs and NFAs accept exactly the same languages. To show this we must prove every DFA can be converted into an NFA which accepts the same language, and vice-versa. Power of a class of machines.
E N D
Are DFAs and NFAs Equivalent • It turns out DFAs and NFAs accept exactly the same languages. • To show this we must prove every DFA can be converted into an NFA which accepts the same language, and vice-versa
Power of a class of machines • We can simulate DFA's by C programs: For every DFA A over (say) {0,1}, there exists a C program which takes binary strings w as inputs and returns a boolean value TrueiffwL(A). • Thus, C programs are at least as powerful as DFAs (big surprise). • We will see later that the converse is not true: there exist C programs whose languages of accepted strings are not the languages of any DFA.
Comparing DFA and NFA • Here we will compare the powers of DFAs and NFAs. Since every DFA is at the same time an NFA, the latter are at least as powerful. Surprisingly, they are not more powerful. • Theorem.For every NFA N, there exists a DFA D such that L(D)=L(N). • Thus, a language L is accepted by some NFA if and only if it is accepted by some DFA. • Given N, we can effectively construct the corresponding D.
0,1 Q0 Q1 Q2 Q3 0 1 1 Example • Consider the NFA that accepts binary strings ending with 011. • The key idea for building an equivalent DFA is to consider the set of all states this NFA can reach after reading any particular string. We'll examine all strings starting with the shortest.
0,1 0 0 {q0,q1} {q0} {q0,q1} Q0 Q1 Q2 Q3 0 1 1 1 1 0 {q0} {q0,q1} {q0,q2} 1 0 {q0,q3} {q0,q1} 1 {q0} When processing if we see a set exactly the same as a set constructed earlier we mark it in red.
0 0 {q0,q1} {q0} {q0,q1} 1 1 1 0 0 {q0} {q0,q1} {q0,q2} 0 0 01 1 0 {q0,q3} {q0,q1} 1 1 {q0} 0 02 0 1 1 03 By “bending” the arrows to the red sets back to the first known set with those elements we construct a DFA. Each state of the DFA corresponds to a set of states of the NFA
General Construction • Given an NFA: • N =(Q,S,s,F,) • The associated DFA is • D =(P(Q),S,{s}, F’, d), • Where • In the DFA constructed each state is labeled with a set of states from the NFA. Thus the start state is just the singleton set {s} • F' is the set of {subsets of Q} that contain an element of F. Thus F’ P(Q) • d is defined byd(S,a) = {qÎ S}(q,a)
0,1 0 1 1 Q0 Q1 Q2 Q3 Example • Let's compute two transitions of D, where N is as in the previous example. • d({q0,q2},1) = D(q0,1)ÈD(q2,1) • = {q0}È{q3} • = {q0,q3} • d({q0,q1,q3},0) • = D(q0,0)È D(q1,0)È D(q3,0) • = {q0,q1}ÈÆÈÆ • = {q0,q1}
Exponential Blowup • Note that if the NFA N has n states, then the corresponding DFA D has 2n states. • Many of those states can usually be discarded; • we must keep only those states that are reachable from the initialstate. • There are cases, however, when there is no state to discard;
Note, Original NFA has 4 states The computed DFA has 16 states Only some of the 16 are reachable from the start state {Q0}