Nondeterministic Finite Automata

Download Report

Transcript Nondeterministic Finite Automata

Non-Deterministic
Finite Automata
1
Nondeterministic Finite Automaton (NFA)
Alphabet = {a}
a
q0
q1 a
q2
a
q3
2
Alphabet = {a}
Two choices
a
q0
q1 a
q2
a
q3
3
Alphabet = {a}
Two choices
a
q0
q1 a
q2
No transition
a
q3
No transition
4
First Choice
a a
a
q0
q1 a
q2
a
q3
5
First Choice
a a
a
q0
q1 a
q2
a
q3
6
First Choice
a a
a
q0
q1 a
q2
a
q3
7
First Choice
a a
All input is consumed
a
q0
q1 a
q2
“accept”
a
q3
8
Second Choice
a a
a
q0
q1 a
q2
a
q3
9
Second Choice
a a
a
q0
q1 a
q2
a
q3
10
Second Choice
a a
a
q0
q1 a
a
q3
q2
No transition:
the automaton hangs
11
Second Choice
a a
Input cannot be consumed
a
q0
q1 a
q2
a
q3
“reject”
12
An NFA accepts a string:
when there is a computation of the NFA
that accepts the string
There is a computation:
all the input is consumed and the automaton
is in an accepting state
13
Example
aa is accepted by the NFA:
“accept”
a
q0
q1 a
q2
a
q0
a
q3
because this
computation
accepts aa
q1 a
a
q3
q2
“reject”
14
Rejection example
a
a
q0
q1 a
q2
a
q3
15
First Choice
a
a
q0
q1 a
q2
a
q3
16
First Choice
a
“reject”
a
q0
q1 a
q2
a
q3
17
Second Choice
a
a
q0
q1 a
q2
a
q3
18
Second Choice
a
a
q0
q1 a
q2
a
q3
19
Second Choice
a
a
q0
q1 a
q2
a
q3
“reject”
20
An NFA rejects a string:
when there is no computation of the NFA
that accepts the string.
For each computation:
• All the input is consumed and the
automaton is in a non final state
OR
• The input cannot be consumed
21
Three major differences
between FA & NFA
• Each entry in the table of NFA is a set.
• Allow  as the second argument of  .
This means that the NFA can make a
transition function without consuming an
input symbol.
• The set  (qi , a) may be empty.
22
Example
a
is rejected by the NFA:
“reject”
a
q0
q1 a
q2
a
q0
a
q3
“reject”
q1 a
q2
a
q3
All possible computations lead to rejection
23
Rejection example
a a a
a
q0
q1 a
q2
a
q3
24
First Choice
a a a
a
q0
q1 a
q2
a
q3
25
First Choice
a a a
a
q0
q1 a
a
q3
q2
No transition:
the automaton hangs
26
First Choice
a a a
Input cannot be consumed
a
q0
q1 a
q2
“reject”
a
q3
27
Second Choice
a a a
a
q0
q1 a
q2
a
q3
28
Second Choice
a a a
a
q0
q1 a
q2
a
q3
29
Second Choice
a a a
a
q0
q1 a
a
q3
q2
No transition:
the automaton hangs
30
Second Choice
a a a
Input cannot be consumed
a
q0
q1 a
q2
a
q3
“reject”
31
aaa
is rejected by the NFA:
“reject”
a
q0
q1 a
q2
a
q0
a
q3
q1 a
a
q3
q2
“reject”
All possible computations lead to rejection
32
Language accepted:
a
q0
q1 a
L  {aa}
q2
a
q3
33
Lambda Transitions
q0 a
q1 
q2 a
q3
34
a a
q0 a
q1 
q2 a
q3
35
a a
q0 a
q1 
q2 a
q3
36
(read head does not move)
a a
q0 a
q1 
q2 a
q3
37
a a
q0 a
q1 
q2 a
q3
38
all input is consumed
a a
“accept”
q0 a
String
q1 
q2 a
q3
aa is accepted
39
Rejection Example
a a a
q0 a
q1 
q2 a
q3
40
a a a
q0 a
q1 
q2 a
q3
41
(read head doesn’t move)
a a a
q0 a
q1 
q2 a
q3
42
a a a
q0 a
q1 
q2 a
q3
No transition:
the automaton hangs
43
Input cannot be consumed
a a a
“reject”
q0 a
String
aaa
q1 
q2 a
q3
is rejected
44
Language accepted:
q0 a
q1 
L  {aa}
q2 a
q3
45
Another NFA Example
q0
a
b
q1
q2

q3

46
a b
q0
a
b
q1
q2

q3

47
a b
q0
a
b
q1
q2

q3

48
a b
q0
a
b
q1
q2

q3

49
a b
“accept”
q0
a
b
q1
q2

q3

50
Another String
a b a b
q0
a
b
q1
q2

q3

51
a b a b
q0
a
b
q1
q2

q3

52
a b a b
q0
a
b
q1
q2

q3

53
a b a b
q0
a
b
q1
q2

q3

54
a b a b
q0
a
b
q1
q2

q3

55
a b a b
q0
a
b
q1
q2

q3

56
a b a b
q0
a
b
q1
q2

q3

57
a b a b
“accept”
q0
a
b
q1
q2

q3

58
Language accepted
L  ab, abab, ababab, ...

 ab
q0
a
b
q1
q2

q3

59
Another NFA Example
0
q0
1
q1
0, 1 q2

60
Language accepted
L(M ) = {λ, 10, 1010, 101010, ...}
= {10} *
0
q0
1
q1

0, 1 q2
(redundant
state)
61
Remarks:
•The  symbol never appears on the
input tape
•Simple automata:
M1
q0
M2
L(M1) = {}
L(M 2 ) = {λ}
q0
62
•NFAs are interesting because we can
express languages easier than FAs
NFA
q0
a
M1
FA
q2
q1
a
q0
L( M1) = {a}
a
M2
a
q1
L( M 2 ) = {a}
63
Formal Definition of NFAs
M  Q, ,  , q0 , F 
Q : Set of states, i.e. q0 , q1, q2 
 : Input aplhabet, i.e. a, b
:
q0 :
Transition function
Initial state
F : Accepting states
64
Transition Function 
 q0 , 1  q1
0
q0
1
q1
0, 1 q
2

65
 (q1,0)  {q0 , q2}
0
q0
1
q1
0, 1 q
2

66
Do a transition diagram!!
 (q0 ,  )  {q0 , q2}
0
q0
1
q1
0, 1 q
2

67
 (q2 ,1)  
0
q0
1
q1
0, 1 q
2

68
Extended Transition Function  *
 * q0 , a   q1
q5
q4
a
q0
a
a
b
q1
q2

q3

69
 * q0 , aa   q4 , q5
q5
q4
a
q0
a
a
b
q1
q2

q3

70
 * q0 , ab  q2 , q3 , q0
q5
q4
a
q0
a
a
b
q1
q2

q3

71
Formally
q j   * qi , w : there is a walk from qi to q j
with label
w
w
qi
qj
w  1 2  k
qi
1
2
k
qj
72
The Language of an NFA M
F  q0 ,q5
q5
q4
a
q0
a
a
b
q1
q2

q3

 * q0 , aa   q4 , q5
aa  L(M )
F
73
F  q0 ,q5
q5
q4
a
q0
a
a
b
q1
q2

q3

 * q0 , ab   q2 , q3 , q0 
F
ab LM 
74
F  q0 ,q5
q5
q4
a
q0
a
a
b
q1
q2

q3

 * q0 , abaa  q4 , q5
aaba L(M )
F
75
F  q0 ,q5
q5
q4
a
q0
a
a
b
q1
q2

q3

 * q0 , aba  q1
F
aba LM 
76
q5
q4
a
q0
a
a
b
q1
q2

q3

LM     ab* {aa}
77
Formally
The language accepted by NFA
M is:
LM   w1, w2 , w3 ,...
where
 * (q0 , wm )  {qi , q j ,..., qk ,}
and there is some
qk  F
(accepting state)
78
w LM 
 * (q0 , w)
qi
w
q0
qk
w
w
qk  F
qj
79