Languages and Finite Automata

Download Report

Transcript Languages and 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
q 2 No transition
a
q 3 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
q3
a
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
q3
a
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
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
22
Rejection example
a
a
a
a
q0
q1
a
q2
a
q3
23
First Choice
a
a
a
a
q0
q1
a
q2
a
q3
24
First Choice
a
a
a
a
q0
q1
a
q3
a
q2
No transition:
the automaton hangs
25
First Choice
a
a
a
Input cannot be consumed
a
q0
q1
a
q2
“reject”
a
q3
26
Second Choice
a
a
a
a
q0
q1
a
q2
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
q3
a
q2
No transition:
the automaton hangs
29
Second Choice
a
a
a
Input cannot be consumed
a
q0
q1
a
q2
a
q3
“reject”
30
aaa is rejected by the NFA:
“reject”
a
q0
q1
a
q2
a
q0
a
q3
q1
a
q3
a
q2
“reject”
All possible computations lead to rejection
31
Language accepted: L  {aa }
a
q0
q1
a
q2
a
q3
32
Lambda Transitions
q0
a
q1

q2
a
q3
33
a
a
q0
a
q1

q2
a
q3
34
a
a
q0
a
q1

q2
a
q3
35
(read head does not move)
a
a
q0
a
q1

q2
a
q3
36
a
a
q0
a
q1

q2
a
q3
37
all input is consumed
a
a
“accept”
q0
a
q1

q2
a
q3
String aa is accepted
38
Rejection Example
a
a
a
q0
a
q1

q2
a
q3
39
a
a
a
q0
a
q1

q2
a
q3
40
(read head doesn’t move)
a
a
a
q0
a
q1

q2
a
q3
41
a
a
a
q0
a
q1

q2
a
q3
No transition:
the automaton hangs
42
Input cannot be consumed
a
a
a
“reject”
q0
a
String aaa
q1

q2
a
q3
is rejected
43
Language accepted: L  {aa }
q0
a
q1

q2
a
q3
44
Another NFA Example
q0
a
b
q1
q2

q3

45
a b
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
“accept”
q0
a
b
q1
q2

q3

49
Another String
a b a b
q0
a
b
q1
q2

q3

50
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
“accept”
q0
a
b
q1
q2

q3

57
Language accepted
L  ab , abab , ababab , ... 
 ab 
q0
a

b
q1
q2

q3

58
Another NFA Example
0
q0
1
q1
0, 1
q2

59
Language accepted
L ( M ) = {λ , 10 , 1010 , 101010 , ... }
= {10 } *
0
q0
1
q1

0, 1
q2
(redundant
state)
60
Remarks:
•The  symbol never appears on the
input tape
•Simple automata:
M1
M2
q0
q0
L ( M 1 ) = {}
L ( M 2 ) = {λ}
61
•NFAs are interesting because we can
express languages easier than FAs
NFA M 1
q0
a
FA
q2
q1
a
q0
L ( M 1 ) = {a}
a
M2
a
q1
L ( M 2 ) = {a}
62
Formal Definition of NFAs
M  Q ,  ,  , q 0 , F 
Q : Set of states, i.e. q 0 , q1 , q 2 
:
Input aplhabet, i.e. a , b 
 : Transition function
q 0 : Initial state
F : Accepting states
63
Transition Function 
  q 0 , 1   q1 
0
q0
1
q1
0, 1
q2

64
 ( q1 , 0 )  { q 0 , q 2 }
0
q0
1
q1
0, 1
q2

65
 ( q0 ,  )  {q0 , q 2 }
0
q0
1
q1
0, 1
q2

66
 ( q 2 ,1)  
0
q0
1
q1
0, 1
q2

67
Extended Transition Function  *
 *  q 0 , a   q1 
q5
q4
a
q0
a
a
b
q1
q2

q3

68
 *  q 0 , aa   q 4 , q 5 
q5
q4
a
q0
a
a
b
q1
q2

q3

69
 *  q 0 , ab   q 2 , q 3 , q 0 
q5
q4
a
q0
a
a
b
q1
q2

q3

70
Formally
q j   *  q i , w  : there is a walk from q i to q j
with label w
w
qi
qj
w   1 2   k
qi
1
2
k
qj
71
The Language of an NFA M
F  q 0 , q 5 
q5
q4
a
q0
a
a
b
q1
q2

q3

 *  q 0 , aa   q 4 , q 5 
aa  L ( M )
F
72
F  q 0 , q 5 
q5
q4
a
q0
a
a
b
q1
q2

q3

 *  q 0 , ab   q 2 , q 3 , q 0 
ab  L  M 
F
73
F  q 0 , q 5 
q5
q4
a
q0
a
a
b
q1
q2

q3

 *  q 0 , abaa   q 4 , q 5 
aaba  L ( M )
F
74
F  q 0 , q 5 
q5
q4
a
q0
a
a
b
q1
q2

q3

 *  q 0 , aba   q1 
aba  L  M 
F
75
q5
q4
a
q0
a
a
b
q1
q2

q3

L  M      ab  * { aa }
76
Formally
The language accepted by NFA M
is:
L  M   w1 , w 2 , w 3 ,... 
where
 * ( q 0 , w m )  { q i , q j ,..., q k ,  }
and there is some
q k  F (accepting state)
77
w  L M 
 * (q0 , w )
qi
w
q0
qk
w
w
qk  F
qj
78