0% found this document useful (0 votes)
104 views78 pages

Non-Deterministic Finite Automata

The document describes non-deterministic finite automata (NFAs) using examples. It shows how NFAs can accept strings using multiple possible state transition sequences, including lambda transitions where the read head does not move. NFAs accept a string if any computation path reaches an accepting state having consumed all input. They reject a string if no computation path does so. Languages accepted by NFAs can include strings of varying lengths matching a pattern.

Uploaded by

api-20012397
Copyright
© Attribution Non-Commercial (BY-NC)
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PPT, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
104 views78 pages

Non-Deterministic Finite Automata

The document describes non-deterministic finite automata (NFAs) using examples. It shows how NFAs can accept strings using multiple possible state transition sequences, including lambda transitions where the read head does not move. NFAs accept a string if any computation path reaches an accepting state having consumed all input. They reject a string if no computation path does so. Languages accepted by NFAs can include strings of varying lengths matching a pattern.

Uploaded by

api-20012397
Copyright
© Attribution Non-Commercial (BY-NC)
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PPT, PDF, TXT or read online on Scribd

Non-Deterministic

Finite Automata

1
Nondeterministic Finite Automaton (NFA)

Alphabet = {a}

q1 a q2
a
q0
a
q3

2
Alphabet = {a}

Two choices q1 a q2
a
q0
a
q3

3
Alphabet = {a}

Two choices q1 a q2 No transition


a
q0
a
q3 No transition

4
First Choice

a a

q1 a q2
a
q0
a
q3

5
First Choice

a a

q1 a q2
a
q0
a
q3

6
First Choice

a a

q1 a q2
a
q0
a
q3

7
First Choice

a a
All input is consumed
q1 a q2 “accept”
a
q0
a
q3

8
Second Choice

a a

q1 a q2
a
q0
a
q3

9
Second Choice

a a

q1 a q2
a
q0
a
q3

10
Second Choice

a a

q1 a q2
a
q0
a
No transition:
q3
the automaton hangs

11
Second Choice

a a
Input cannot be consumed
q1 a q2
a
q0
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”
q1 a q2 q1 a q2
a a
q0
a
q0
a
q3 q3 “reject”
because this
computation
accepts aa 14
Rejection example

q1 a q2
a
q0
a
q3

15
First Choice

q1 a q2
a
q0
a
q3

16
First Choice

a
“reject”
q1 a q2
a
q0
a
q3

17
Second Choice

q1 a q2
a
q0
a
q3

18
Second Choice

q1 a q2
a
q0
a
q3

19
Second Choice

q1 a q2
a
q0
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”
q1 a q2 q1 a q2
a a
q0 q0
a a
q3
“reject” q3

All possible computations lead to rejection


22
Rejection example

a a a

q1 a q2
a
q0
a
q3

23
First Choice

a a a

q1 a q2
a
q0
a
q3

24
First Choice

a a a

q1 a q2
a
q0 No transition:
a
the automaton hangs
q3

25
First Choice

a a a
Input cannot be consumed
q1 a q2 “reject”
a
q0
a
q3

26
Second Choice

a a a

q1 a q2
a
q0
a
q3

27
Second Choice

a a a

q1 a q2
a
q0
a
q3

28
Second Choice

a a a

q1 a q2
a
q0
a
No transition:
q3
the automaton hangs

29
Second Choice

a a a
Input cannot be consumed
q1 a q2
a
q0
a
q3 “reject”

30
aaa is rejected by the NFA:

“reject”
q1 a q2 q1 a q2
a a
q0
a
q0
a
q3 q3 “reject”

All possible computations lead to rejection


31
Language accepted: L  {aa}

q1 a q2
a
q0
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 q1  q2 a q3

String aaa is rejected


43
Language accepted: L  {aa}

q0 a q1  q2 a q3

44
Another NFA Example

q0 a q1 b q2  q3


45
a b

q0 a q1 b q2  q3


46
a b

q0 a q1 b q2  q3


47
a b

q0 a q1 b q2  q3


48
a b

“accept”
q0 a q1 b q2  q3


49
Another String

a b a b

q0 a q1 b q2  q3


50
a b a b

q0 a q1 b q2  q3


51
a b a b

q0 a q1 b q2  q3


52
a b a b

q0 a q1 b q2  q3


53
a b a b

q0 a q1 b q2  q3


54
a b a b

q0 a q1 b q2  q3


55
a b a b

q0 a q1 b q2  q3


56
a b a b

“accept”
q0 a q1 b q2  q3


57
Language accepted

L   ab, abab, ababab, ...



  ab

q0 a q1 b q2  q3


58
Another NFA Example

0
q0 q1 0, 1 q2
1

59
Language accepted

L(M ) = { λ, 10, 1010, 101010, ...}


= { 10} *
0
q0 q1 0, 1 q2
1 (redundant
state)

60
Remarks:
•The  symbol never appears on the
input tape

•Simple automata:

M1 M2
q0 q0

L(M1 ) = {} L(M 2 ) = {λ}


61
•NFAs are interesting because we can
express languages easier than FAs

NFA M1 FA M2 a
q2
q0 a q1
a
q0 a q1

L( M1 ) = {a} L( M 2 ) = {a}
62
Formal Definition of NFAs
M   Q, ,  , q0 , F 

Q : Set of states, i.e.  q0 , q1, q2 


 : Input aplhabet, i.e.  a, b
: Transition function

q0 : Initial state

F : Accepting states
63
Transition Function 

  q0 , 1   q1

0
q0 q1 0, 1 q
2
1

64
 (q1,0)  {q0 , q2}

0
q0 q1 0, 1 q
2
1

65
 (q0 ,  )  {q0 , q2}

0
q0 q1 0, 1 q
2
1

66
 (q2 ,1)  

0
q0 q1 0, 1 q
2
1

67
Extended Transition Function  *

 *  q0 , a    q1

q4 q5
a a
q0 a q1 b q2  q3

68
 *  q0 , aa    q4 , q5 

q4 q5
a a
q0 a q1 b q2  q3

69
 *  q0 , ab    q2 , q3 , q0 

q4 q5
a a
q0 a q1 b q2  q3

70
Formally
q j   *  qi , w : there is a walk from qi to q j
with label w

qi w qj

w   1 2  k
1 2 k
qi qj

71
The Language of an NFA M
F   q0 ,q5 
q4 q5
a a
q0 a q1 b q2  q3

 *  q0 , aa    q4 , q5 aa  L(M )
F
72
F   q0 ,q5 
q4 q5
a a
q0 a q1 b q2  q3

 *  q0 , ab    q2 , q3 , q0  ab  L M 
F
73
F   q0 ,q5 
q4 q5
a a
q0 a q1 b q2  q3

 *  q0 , abaa    q4 , q5 aaba  L(M )


F
74
F   q0 ,q5 
q4 q5
a a
q0 a q1 b q2  q3

 *  q0 , aba    q1 aba  L M 


F
75
q4 q5
a a
q0 a q1 b q2  q3

L M       ab * {aa}

76
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)


77
w L M   * (q0 , w)
qi
w

q0
qk qk  F
w
w qj

78

You might also like