DFA State Minimization

 DFA minimization algorithm, which is used to convert a given DFA into an equivalent minimal DFA (i.e., a DFA with the least number of states that accepts the same language).

This process is crucial in compiler design, lexical analysis, and automata theory. 

🎯 Goal:

To minimize the number of states in a DFA without changing the language it accepts.


📌 Key Ideas:

  • States that behave identically (i.e., cannot be distinguished by any string) are equivalent.

  • Merge such equivalent states.


🧠 Two Main Steps:

Step 1: Remove Unreachable States

Start from the initial state and perform a reachability analysis using transitions. Remove any state not reachable from the start state.


Step 2: Merge Equivalent States

There are multiple methods. The the Partitioning (table-filling) method is often taught first for its clarity.


🧪 Table-Filling (Partitioning) Method :

Let DFA = (Q, Σ, δ, q₀, F)

Step-by-step:

  1. Create a table of all unordered pairs of states (p, q) where p ≠ q.

  2. Mark pairs where one state is final and the other is not. These are distinguishable.

  3. Iteratively mark other pairs:

    • For unmarked pair (p, q) and for each input symbol a ∈ Σ, do:

      • Let δ(p, a) = p′ and δ(q, a) = q′

      • If (p′, q′) is already marked, then mark (p, q)

  4. Repeat Step 3 until no new pairs are marked

  5. Unmarked pairs are equivalent states ⇒ merge them

    Pair TypeMarked 
    Final + Non-final✅ Yes
    Non-final + Non-final❌ No
    Final + Final❌ No


✏️ Example:

Given a DFA:

  • Q = {A, B, C, D}

  • F = {C, D}

  • Σ = {0, 1}

  • Transition table:

State    0    1
A    B    C
B    A    D
C    D    A
D    C    B





🔹 Step 1: List all pairs of states

We need to consider all unordered pairs:


(A, B), (A, C), (A, D), (B, C), (B, D), (C, D)

🔹 Step 2: Mark pairs with one final and one non-final

Final states: C, D
So mark any pair where only one of the two is final.

Marked pairs:

  • (A, C) ✅

  • (A, D) ✅

  • (B, C) ✅

  • (B, D) ✅

Unmarked:

  • (A, B)

  • (C, D)


🔹 Step 3: Iteratively mark more pairs

Let’s examine (C, D):

  • On input 0:

    • δ(C, 0) = D

    • δ(D, 0) = C
      → (D, C) = (C, D) — already unmarked ✅

  • On input 1:

    • δ(C, 1) = A

    • δ(D, 1) = B
      → (A, B) — currently unmarked

So we do NOT mark (C, D) yet.

Now look at (A, B):

  • On input 0:

    • δ(A, 0) = B

    • δ(B, 0) = A
      → (A, B) again — same pair ✅

  • On input 1:

    • δ(A, 1) = C

    • δ(B, 1) = D
      → (C, D) — currently unmarked

So we do NOT mark (A, B) either.


🔹 No more marking → We found equivalent pairs

Equivalent pairs:

  • (A, B)

  • (C, D)


🔹 Step 4: Merge equivalent states

  • Merge A and B[A/B]

  • Merge C and D[C/D]


🔹 Minimized DFA:

New States:

  • [A/B] → Start state

  • [C/D] → Final state

Transition Table:

State        0                    1
[A/B]        [A/B]                [C/D]
[C/D]        [C/D]                [A/B]

✅ Final DFA: Only 2 states!

From original 4 states ➡️ Reduced to 2 states ✅

Example : minimize DFA 

States: {A, B, C, D, E, F}
Input symbols: {0, 1}
Start state: A
Final states: {E, F}
Transitions:

State        Input 0        Input 1
A            B            C
B            D            E
C            F            C
D            D            E
E            E            E
F            E            C

🧮 Step 1: Create a table of all state pairs (lower triangle)

Fill only these pairs:
(B,A), (C,A), (C,B), (D,A), (D,B), (D,C), (E,A), (E,B), ..., (F,E)

🟨 Step 2: Mark distinguishable pairs where one is final and one is not

Final states = E, F
Initial mark (×) for all pairs like (A,E), (B,E), etc., where only one is a final state.

So we mark:

  • (A,E)

  • (A,F)

  • (B,E)

  • (B,F)

  • (C,E)

  • (C,F)

  • (D,E)

  • (D,F)

✔️ Remaining unmarked:

  • (A,B)

  • (A,C)

  • (A,D)

  • (B,C)

  • (B,D)

  • (C,D)

  • (E,F)


🔁 Step 3: Iteratively mark based on transitions

🧩 Process Unmarked Pairs

(A, B):

  • A→0: B, B→0: D → Check (B,D) – not marked yet

  • A→1: C, B→1: E → (C, E) = marked → So mark (A,B)

(A, C):

  • A→0: B, C→0: F → (B, F) = marked → Mark (A, C)

(A, D):

  • A→0: B, D→0: D → (B, D) unmarked

  • A→1: C, D→1: E → (C, E) = marked → So mark (A, D)

(B, C):

  • B→0: D, C→0: F → (D, F) = marked → Mark (B, C)

(B, D):

  • B→0: D, D→0: D → (D, D) = unmarked

  • B→1: E, D→1: E → (E, E) = unmarked
    So keep (B,D) unmarked ✅

(C, D):

  • C→0: F, D→0: D → (F, D) = marked → Mark (C, D)

(E, F):

  • E→0: E, F→0: E → both → E → same → OK

  • E→1: E, F→1: C → (E, C) = marked → Mark (E, F)


✅ Final Unmarked Pairs

Unmarked:

  • (B, D)

All others are marked → So equivalent states are:

  • B ≡ D


🧾 Final Groupings:

  • Group1: {A}

  • Group2: {B, D}

  • Group3: {C}

  • Group4: {E}

  • Group5:{F}

Note: one state is reduced

Example: Minimize the DFA


Lets do the initial markings

🔁 Iteratively mark based on transitions

🧩 Process Unmarked Pairs

(A, B):

  • A→0: B, B→0: A → Check (B,A) – not marked yet

  • A→1: D, B→1: C → Check (D,C) = not marked yet 

  • → So keep (B,D) unmarked ✅

(A, F):

  • A→0: B, F→0: F → Check (B,F) – not marked yet

  • A→1: D, F→1: F →Check (D,F) = marked → So mark (A, F)

(B, F):

  • B→0: A, F→0: F → Check (B,F) – not marked yet

  • B→1: C, F→1: F → Check(C,F) = marked → So mark (B,F)

(C, D):

  • C→0:E, D→0: E → Check (E,E) =same state

  • C→1: F, D→1: F → Check(F,F) = same sate

  • → So keep (C,D) unmarked ✅

(C, E):

  • C→0:E, E→0: E → Check (E,E) =same state

  • C→1: F, E→1: F → Check(F,F) = same sate

  • → So keep (C,E) unmarked ✅

(D, E):

  • D→0:E, E→0: E → Check (E,E) =same state

  • D→1: F, E→1: F → Check(F,F) = same sate

  • → So keep (D,E) unmarked ✅

we have got state combinations {a, b} {c, d} {c, e} {d, e} that are unmarked.

We can recombine {c, d} {c, e} {d, e} into {c, d, e}

Hence we got two combined states as − {a, b} and {c, d, e}

So the final minimized DFA will contain three states {f}, {a, b} and {c, d, e}




    Comments

    Popular posts from this blog

    Theory Of Computation PCCST302 KTU Semester 3 BTech 2024 Scheme

    Non deterministic Finite Automata NFA

    Example DFAs University Questions