FLAT - UNIT 1 Notes
FLAT - UNIT 1 Notes
Syllabus: Introduction to Finite Automata, Structural Representations, Automata and Complexity, the
Central Concepts of Automata Theory – Alphabets, Strings, Languages, Problems. Deterministic
Finite Automata, Nondeterministic Finite Automata, an application: Text Search, Finite Automata
with Epsilon-Transitions.
-------------------------------------------------------------------------------------------------------------
An automaton with a finite number of states is called a Finite Automaton (FA) or Finite State
Machine (FSM).
Alphabet
Definition: An alphabet is any finite set of symbols. It is denoted by Σ
String
Definition: A string is a finite sequence of symbols taken from Σ.
It is not the case that a string over some alphabet should contain all the symbols from the
alphabet. For example, the string cc over the alphabet { a, b, c } does not contain the symbols
a and b. Hence, it is true that a string over an alphabet is also a string over any superset of
that alphabet.
Length of a String
Definition : It is the number of symbols present in a string. (Denoted by |S|).
Examples:
o If S=‘cabcad’, |S|= 6
Representation: Σ+ = Σ1 U Σ2 U Σ3 U…….
Σ+ = Σ* − { λ }
Example : If the language takes all possible strings of length 2 over Σ = {a, b},
then L = { ab, bb, ba, bb}
In NDFA, for a particular input symbol, the machine can move to any combination of the
states in the machine. In other words, the exact state to which the machine moves cannot
be determined. Hence, it is called Non-deterministic Automaton. As it has finite number of
states, the machine is called Non-deterministic Finite Machine or Non- deterministic Finite
Automaton.
q0 is the initial state from where any input is processed (q0 ∈ Q).
a b
0, 1 0, 1
0 0, 1
DFA vs NDFA
The following table lists the differences between DFA and NDFA.
DFA NDFA
The transition from a state is to a single The transition from a state can be to
particular next state for each input multiple next states for each input symbol.
symbol. Hence it is called deterministic. Hence it is called non-deterministic.
Acceptor (Recognizer)
An automaton that computes a Boolean function is called an acceptor. All the states of an
acceptor is either accepting or rejecting the inputs given to it.
Classifier has more than two final states and it gives a single output when it terminates.
Transducer: An automaton that produces outputs based on current input and/or previous
state is called a transducer. Transducers can be of two types:
Mealy Machine The output depends both on the current state and the current
input.
δ*(q0, S) ∈ F
{S | S ∈ Σ* and δ*(q0, S) ∈ F}
δ*(q0, S′) ∉ F
Example
Let us consider the DFA shown in Figure 1.3. From the DFA, the acceptable strings can be
derived.
0 1
Strings accepted by the above DFA: {0, 00, 11, 010, 101, ...........}
Strings not accepted by the above DFA: {1, 011, 111, ........}
NDFA to DFA Conversion
Problem Statement
Let X = (Qx, Σ, δx, q0, Fx) be an NDFA which accepts the language L(X). We have to design
an equivalent DFA Y = (Qy, Σ, δy, q0, Fy) such that L(Y) = L(X). The following procedure
converts the NDFA to its equivalent DFA:
Algorithm
Input: An NDFA
Step 2 Create a blank state table under possible input alphabets for the equivalent
DFA.
Step 3 Mark the start state of the DFA by q0 (Same as the NDFA).
Step 4 Find out the combination of States {Q0, Q1,... , Qn} for each possible input
alphabet.
Step 5 Each time we generate a new DFA state under the input alphabet columns,
we have to apply step 4 again, otherwise go to step 6.
Step 6 The states which contain any of the final states of the NDFA are the final
states of the equivalent DFA.
Example
Let us consider the NDFA shown in the figure below.
q δ(q,0) δ(q,1)
a {a,b,c,d,e} {d,e}
b {c} {e}
c ∅ {b}
d {e} ∅
e ∅ ∅
Using the above algorithm, we find its equivalent DFA. The state table of the DFA is
shown in below.
q δ(q,0) δ(q,1)
[d,e] [e] ∅
[e] ∅ ∅
[c,e] ∅ [b]
[c] ∅ [b]
Algorithm
Input DFA
Step 1 Draw a table for all pairs of states (Qi, Qj) not necessarily connected directly
[All are unmarked initially]
Step 2 Consider every state pair (Qi, Qj) in the DFA where Qi ∈ F and Qj ∉ F or vice
versa and mark them. [Here F is the set of final states]
If there is an unmarked pair (Qi, Qj), mark it if the pair {δ(Qi, A), δ (Qi, A)} is marked for
some input alphabet.
Step 4 Combine all the unmarked pair (Qi, Qj) and make them a single state in the
reduced DFA.
Example
Let us use Algorithm 2 to minimize the DFA shown below.
a b c d e f
a
b
c
d
e
f
a b c d e f
a
b
c ✓ ✓
d ✓ ✓
e ✓ ✓
f ✓ ✓ ✓
Step 3 : We will try to mark the state pairs, with green colored check mark, transitively.
If we input 1 to state ‘a’ and ‘f’, it will go to state ‘c’ and ‘f’ respectively. (c, f) is already
marked, hence we will mark pair (a, f). Now, we input 1 to state ‘b’ and ‘f’; it will go to
state ‘d’ and ‘f’ respectively. (d, f) is already marked, hence we will mark pair (b, f).
a b c d e f
a
b
c ✓ ✓
d ✓ ✓
e ✓ ✓
f ✓ ✓ ✓ ✓ ✓
After step 3, we have got state combinations {a, b} {c, d} {c, e} {d, e} that are
unmarked.
Algorithm 3
Step 1: All the states Q are divided in two partitions: final states and non-final states and
are denoted by P0. All the states in a partition are 0th equivalent. Take a
counter k and initialize it with 0.
Step 2: Increment k by 1. For each partition in Pk, divide the states in Pk into two partitions
if they are k-distinguishable. Two states within this partition X and Y are k-
distinguishable if there is an input S such that δ(X, S) and δ(Y, S) are (k-
1)-distinguishable.
Step 4: Combine kth equivalent sets and make them the new states of the reduced
DFA.
Example
Let us consider the following DFA:
q δ(q,0) δ(q,1)
a b c
b a d
c e f
d e f
e e f
f f f
P0 = {(c,d,e), (a,b,f)}
P1 = {(c,d,e), (a,b),(f)}
P2 = {(c,d,e), (a,b),(f)}
Hence, P1 = P2.
There are three states in the reduced DFA. The reduced DFA is as follows:
Q δ(q,0) δ(q,1)
Finite automata may have outputs corresponding to each transition. There are two types of finite
state machines that generate output:
Mealy Machine
Moore machine
Mealy Machine
A Mealy Machine is an FSM whose output depends on the present state as well as the
present input.
Next state
Present
state input = 0 input = 1
State Output State Output
a b 𝑥1 c 𝑥1
b b 𝑥2 d 𝑥3
c d 𝑥3 c 𝑥1
d d 𝑥3 d 𝑥2
0 /x3, 1
The state diagram of the above Mealy Machine is:
Moore Machine
Moore machine is an FSM whose outputs depend on only the present state.
Next State
Present State Output
Input = 0 Input = 1
a b c 𝑥2
b b d 𝑥1
c c d 𝑥2
d d d 𝑥3
0, 1
b/x1
a/x2 /x
c/x2
Mealy Machine vs. Moore Machine
The following table highlights the points that differentiate a Mealy Machine from a Moore
Machine.
Output depends both upon present Output depends only upon the present
state and present input. state.
Generally, it has fewer states than Generally, it has more states than Mealy
Moore Machine. Machine.
Algorithm 4
Input: Moore Machine
Step 2 Copy all the Moore Machine transition states into this table format.
Step 3 Check the present states and their corresponding outputs in the Moore
Machine state table; if for a state Qi output is m, copy it into the output
columns of the Mealy Machine state table wherever Q i appears in the next
state.
Example
Let us consider the following Moore machine:
a d b 1
b a d 0
c c c 0
d b a 1
State table of a Moore Machine
Step 3:
Next State
Present State a=0 a=1
State Output State Output
=> a d 1 b 0
b a 1 d 1
c c 0 c 0
d b 0 a 1
Algorithm 5:
Input: Mealy Machine
Step 1 Calculate the number of different outputs for each state (Qi) that are
available in the state table of the Mealy machine.
Step 2 If all the outputs of Qi are same, copy state Qi. If it has n distinct outputs,
break Qi into n states as Qin where n = 0, 1, 2.......
Step 3 If the output of the initial state is 1, insert a new initial state at the beginning
which gives 0 output.
Example
Let us consider the following Mealy Machine:
Next State
Present
a=0 a=1
State
Next Next
Output Output
State State
a d 0 b 1
b a 1 d 0
c c 1 c 0
d b 0 a 1
State table of a Mealy Machine
Here, states ‘a’ and ‘d’ give only 1 and 0 outputs respectively, so we retain states ‘a’ and ‘d’. But
states ‘b’ and ‘c’ produce different outputs (1 and 0). So, we divide b into b 0, b1 and c into c0, c1.
======oooOOOooo======