Automata and Formal Languages
Automata and Formal Languages
Outline
From NFA to NFA
From DFA to RE
Closed operators for Regular Languages
NFA
NFA:
q0
,b
a
q0
a a, b
a
q1
q1
a, b
q2
q2
q0
,b
a
q1
q2
NFA:
q0
state
q1
q2
,b
a
q0
qi
qk
qi
q1
a q
m
q2
a q
j
?
NFA:
q0
q1
?
q2
qj
,b
a
q0
q0
q1
q1
a
q0
q2
q0
q0
a
NFA:
q0
q1
?
q2
,b
a
q0
q0
NFA:
q0
q1
q0
q1
a
a
a a, b
q2
q1
q0
q1
q1
q0
q1
q1
?
q2
,b
a
q0
q0
NFA:
q0
q1
q1 a q1 q2
q0
a a, b
q2
q1
a, b
q2
q0 b q1 q2
b
q0
q2
q2
NFA:
q0
,b
a
q0
a a, b
a
q1
q1
a, b
q2
q2
q0
,b
a
q1
q2
(4) The accepting states of the NFA are all states that can reach
some accepting state of NFA using only -transitions
NFA:
q0
a a, b
a
q1
a, b
q2
Outline
From NFA to NFA
From DFA to RE
Closed operators for Regular Languages
From DFA to RE
-- General construction
We inductively define Rijk as:
Rii0 = ai1 + ai2 + + ait +
(all loops around qi
and )
Rij0 = ai + ai + + ai
1
(all qi qj)
qi
if i j
qi
ai1,ai2,,ait
ai1,ai2,,ait
qj
qk
qi
a path in M qj
From DFA to RE
-- an example (1/3)
1
q
1
q2
R110 = {, 1} = 1
+
R120 = {0} = 0
R21 = {0} = 0
q2
q2
q
0
1
q2
R
From DFA to RE
-- an example (2/3)
1
q1
0
0
ij
= Rijk-1 + Rikk-1(Rkkk-1)*Rkj
1
q2
R110 = {, 1} = 1 + ;
R120 = {0} R111 = {, 1, 11,
111, ...}
=0
= 1*
10
0
01
0
R
=
R
+
R
= {0} = 0;
R2222 = {,
R21
22
12 = R12 +
R210(R110)*R120
1}
1 11
+0)*R
120
R11=0(R
1
1
1
R122=
=0R+
+ R12)1+(R
12 (1+
0 22 )*R22 = (1 + ) + 0(1+
)*+
0 (1+ )+0) ((1 + ) +
= (0 + (1+ )+0) + (0
0(1+ )*0)+
= (0 + (1+ )+0) ((1 + ) + 0(1+ )*0)*
= (1+ )*0 ((1 + ) + 01*0)*
R1j1n + R1j2n + .. +
1
q1
R1jtn
0
0
1
q2
R122=1*0
(1+01*0)*
Outline
From NFA to NFA
From DFA to RE
Closed operators for Regular Languages
Main idea:
Example(2).
n,m = 0,1,2,
w=ux
A DFA for L:
qj
qk