24
Conversion of an NFA to a DFA using Subset Construction Algorithm

Conv Nfa Dfa

  • Upload
    suhas

  • View
    252

  • Download
    2

Embed Size (px)

DESCRIPTION

nfa to dfa

Citation preview

  • Conversion of an NFA to a DFAusing

    Subset Construction Algorithm

  • Algorithm of Subset construction`

  • Operations on NFA States

  • By using subset construction algorithm convert the following NFA

    N for (alb) * abb to DFA

    Example:

  • we need to remove :

    1. transition That require to construct closure (s)

    2. A multiple transition on input symbol from some state s in T:Mov(T,a)

    Example: To apply subset construction

  • {0 , 1, 2, 4, 7}{0} =

    {1, 2, 4}{1} =

    {2}{2} =

    {1, 2, 3, 4, 6, 7}{3} =

    {4}{4} =

    {1, 2, 4, 5, 6, 7}{5} =

    {1, 2, 4, 6, 7}{6} =

    {7}{7} =

    {8}{8} =

    {9}{9} =

    {10}{10} =

    Example: First step: construct closure (s)

  • The start state A of the equivalent DFA is closure (0)

    The closure (0) = {0, 1, 2, 4, 7}

    Then the starting state A = {0, 1, 2, 4, 7}

    Example: Second step: Looking for the start state for the DFA

    {0, 1, 2, 4, 7}A

    a

    b

  • First determine the input alphabet

    here input alphapet = {a,b} Second compute:

    1. Dtran[A,a] = -closure(move(A,a))

    2. Dtran[A,b] = -closure(move(A,b))

    Example: Third step: Compute U = -closure(move(T,a)

    Remember:

    A = {0, 1, 2, 4, 7}

  • 1. Dtran[A,a] = -closure(move(A,a))

    Among the state 0, 1, 2, 4, 7, only 2 and 7 have transitions on a to 3 and 8, respectively.

    Thus move(A,a) = {3, 8}

    Also, - closure ({3,8} = {1, 2, 3, 4, 6, 7, 8}

    So we conclude:

    Dtran[A,a] = -closure(move(A,a)) = - closure ({3,8} = {1, 2, 3, 4, 6, 7, 8}

    Let us call this set B so:

    Dtran[A,a] = B

    {1, 2, 3, 4, 6, 7, 8}

    B

    aA

  • 2. Dtran[A,b] = -closure(move(A,b))

    Among the states in A, only 4 has a transition on b, and it goes to 5

    Thus:

    Dtran[A,b] = -closure(move(A,b)) = - closure ({5} = {1, 2, 4, 5, 6, 7 }

    Let us call this set C so:

    Dtran[A,b] = C

    {1, 2, 4, 5, 6, 7 }

    C

    bA

  • Third compute:

    3. Dtran[B,a] = -closure(move(B,a))

    4. Dtran[B,b] = -closure(move(B,b))

  • 3. Dtran[B,a] = -closure(move(B,a))

    Among the states in B, only 2, 7 has a transition on a, and it goes to {3, 8} respectively

    Thus:

    Dtran[B,a] = -closure(move(B,a)) = - closure ({3,8} = {1, 2, 3, 4, 6, 7, 8 }

    Dtran[B,a] = B

    {1, 2, 3, 4, 6, 7, 8 }

    B

    aA

    a

  • 4. Dtran[B,b] = -closure(move(B,b))

    Among the states in B, only 4, 8 has a transition on b, and it goes to {5, 9} respectively

    Thus:

    Dtran[B,b] = -closure(move(B,b)) = - closure ({5,9} = {1, 2, 4, 5, 6, 7,9}

    Dtran[B,b] = D

    {1, 2, 4, 5, 6, 7,9}

    B

    aA

    a

    bB

    D

  • Fourth compute:

    5. Dtran[C,a] = -closure(move(C,a))

    6. Dtran[C,b] = -closure(move(C,b))

  • 5. Dtran[C,a] = -closure(move(C,a))

    Among the states in C, only 2, 7 has a transition on a, and it goes to {3, 8} respectively

    Thus:

    Dtran[C,a] = -closure(move(C,a)) = - closure ({3,8} = {1, 2, 3, 4, 6, 7, 8 }

    Dtran[C,a] = B

    {1, 2, 4, 5, 6, 7 }

    CA Bab

  • 6. Dtran[C,b] = -closure(move(C,b))

    Among the states in C, only 4 has a transition on b, and it goes to {5} respectively

    Thus:

    Dtran[C,b] = -closure(move(C,b)) = - closure ({5} = {1, 2, 4, 5, 6, 7}

    Dtran[C,b] = C

    {1, 2, 4, 5, 6, 7}b

    AC

    b

  • Fifth compute:

    7. Dtran[D,a] = -closure(move(D,a))

    8. Dtran[D,b] = -closure(move(D,b))

  • 7. Dtran[D,a] = -closure(move(D,a))

    Among the states in D, only 2, 7 has a transition on a, and it goes to {3, 8} respectively

    Thus:

    Dtran[D,a] = -closure(move(D,a)) = - closure ({3,8} = {1, 2, 3, 4, 6, 7, 8 }

    Dtran[D,a] = B

    {1, 2, 4, 5, 6, 7,9}

    DBb

    a

  • 8. Dtran[D,b] = -closure(move(D,b))

    Among the states in D, only 4 and 9 has a transition on b, and it goes to {5, 10} respectively

    Thus:

    Dtran[D,b] = -closure(move(D,b)) = - closure ({5,10} = {1,2, 4, 5, 6, 7, 10}

    Dtran[D,b] = E

    {1, 2, 4, 5,6, 7, 10}

    bB

    b

    {1, 2, 4, 5, 6, 7, 9}Da E

  • Finally compute:

    9. Dtran[E,a] = -closure(move(E,a))

    10. Dtran[E,b] = -closure(move(E,b))

  • 9. Dtran[E,a] = -closure(move(E,a))

    Among the states in E, only 2, 7 has a transition on a, and it goes to {3, 8} respectively

    Thus:

    Dtran[E,a] = -closure(move(E,a)) = - closure ({3,8} = {1, 2, 3, 4, 6, 7, 8 }

    Dtran[E,a] = B

    {1, 2, 4, 5, 6, 7,9}

    EDb Ba

  • 10. Dtran[E,b] = -closure(move(E,b))

    Among the states in E, only 4 has a transition on b, and it goes to {5} respectively

    Thus:

    Dtran[E,b] = -closure(move(E,b)) = - closure ({5} = {1,2, 4, 5, 6, 7}

    Dtran[E,b] = C

    {1, 2, 4, 5,6, 7, 10}b

    DE

    bC

  • Transition table Dtran for DFA D

  • Result of applying the subset Construction NFA for (alb) * abb