Program to construct a DFA which accept the language L = {anbm | n mod 2=0, m≥1}

14 Nov, 2019
Prerequisite – Finite Automata IntroductionProblem: Design a deterministic finite automata (DFA) for accepting the language 
Regular expression for above language L is,
L = (aa)*.b+
Examples:
Input:  a a b b b           
Output:  ACCEPTED
// n = 2 (even) m=3 (>=1)

Input:  a a a b b b         
Output:  NOT ACCEPTED
 // n = 3 (odd), m = 3

Input:  a a a a        
Output:  NOT ACCEPTED
// n = 4, m = 0( must be >=1)

Approaches:There are 3 steps involve which results in acceptance of string:
Construct FA for  means having even number of a’s.Construct FA for  means having any number of b’s greater than one.Concatenate the two FA and make single DFA.Any other combination result is the rejection of the input string.Description:Given DFA has following states. State 3 leads to the acceptance of the string, whereas states 0, 1, 2 and 4 leads to the rejection of the string.DFA State Transition Diagram:Let’s see code for the demonstration:C/C++JavaPython 3C#PHPC/C++// C program to implement DFS that accepts// all string which follow the language// L = { a^n b^m ; (n)mod 2=0, m>=1 }#include <stdio.h>#include <string.h>  // dfa tells the number associated// string end in which state.int dfa = 0;  // This function is for// the starting state (Q0)of DFAvoid start(char c){    if (c == 'a') {        dfa = 1;    }    else if (c == 'b') {        dfa = 3;    }      // -1 is used to check for any invalid symbol    else {        dfa = -1;    }}  // This function is for the first state (Q1) of DFAvoid state1(char c){    if (c == 'a') {        dfa = 2;    }    else if (c == 'b') {        dfa = 4;    }    else {        dfa = -1;    }}  // This function is for the second state (Q2) of DFAvoid state2(char c){    if (c == 'b') {        dfa = 3;    }    else if (c == 'a') {        dfa = 1;    }    else {        dfa = -1;    }}  // This function is for the third state (Q3)of DFAvoid state3(char c){    if (c == 'b') {        dfa = 3;    }    else if (c == 'a') {        dfa = 4;    }    else {        dfa = -1;    }}  // This function is for the fourth state (Q4) of DFAvoid state4(char c){    dfa = -1;}  int isAccepted(char str[]){    // store length of string    int i, len = strlen(str);      for (i = 0; i < len; i++) {        if (dfa == 0)            start(str[i]);          else if (dfa == 1)            state1(str[i]);          else if (dfa == 2)            state2(str[i]);          else if (dfa == 3)            state3(str[i]);          else if (dfa == 4)            state4(str[i]);        else            return 0;    }    if (dfa == 3)        return 1;    else        return 0;}  // driver codeint main(){    char str[] = "aaaaaabbbb";    if (isAccepted(str))        printf("ACCEPTED");    else        printf("NOT ACCEPTED");    return 0;}  // This code is contributed by SHUBHAMSINGH10.Java// Java program to implement DFS that accepts// all string which follow the language// L = { a^n b^m ; (n)mod 2=0, m>=1 }class GFG{      // dfa tells the number associated// string end in which state.static int dfa = 0;  // This function is for// the starting state (Q0)of DFAstatic void start(char c){    if (c == 'a')    {        dfa = 1;    }    else if (c == 'b')     {        dfa = 3;    }      // -1 is used to check for    // any invalid symbol    else    {        dfa = -1;    }}  // This function is for the// first state (Q1) of DFAstatic void state1(char c){    if (c == 'a')     {        dfa = 2;    }    else if (c == 'b')    {        dfa = 4;    }    else     {        dfa = -1;    }}  // This function is for the // second state (Q2) of DFAstatic void state2(char c){    if (c == 'b')     {        dfa = 3;    }    else if (c == 'a')    {        dfa = 1;    }    else     {        dfa = -1;    }}  // This function is for the// third state (Q3)of DFAstatic void state3(char c){    if (c == 'b')     {        dfa = 3;    }    else if (c == 'a')    {        dfa = 4;    }    else     {        dfa = -1;    }}  // This function is for the// fourth state (Q4) of DFAstatic void state4(char c){    dfa = -1;}  static int isAccepted(char str[]){    // store length of string    int i, len = str.length;      for (i = 0; i < len; i++)    {        if (dfa == 0)            start(str[i]);          else if (dfa == 1)            state1(str[i]);          else if (dfa == 2)            state2(str[i]);          else if (dfa == 3)            state3(str[i]);          else if (dfa == 4)            state4(str[i]);        else            return 0;    }    if (dfa == 3)        return 1;    else        return 0;}  // Driver codepublic static void main(String []args) {    char str[] = "aaaaaabbbb".toCharArray();    if (isAccepted(str) == 1)        System.out.printf("ACCEPTED");    else        System.out.printf("NOT ACCEPTED");}}  // This code is contributed by 29AjayKumarPython 3# Python3 program to implement DFS that accepts   # all Stringing which follow the language   # L = {a ^ n b ^ m (n)mod 2 = 0, m>= 1 }      # This function is for the dfa = starting  # dfa = state (zeroth) of DFA   def start(c):      if (c == 'a'):          dfa = 1    elif (c == 'b'):          dfa = 3              # -1 is used to check for any      # invalid symbol       else:          dfa = -1    return dfa        # This function is for the first   # dfa = state of DFA   def state1(c):       if (c == 'a'):          dfa = 2    elif (c == 'b'):          dfa = 4    else:          dfa = -1    return dfa        # This function is for the second   # dfa = state of DFA   def state2(c):      if (c == 'b'):          dfa = 3    elif (c == 'a'):          dfa = 1    else:          dfa = -1    return dfa        # This function is for the third   # dfa = state of DFA   def state3(c):      if (c == 'b'):          dfa = 3    elif (c == 'a'):          dfa = 4    else:          dfa = -1    return dfa        # This function is for the fourth  # dfa = state of DFA   def state4(c):      dfa = -1    return dfa        def isAccepted(String):                # store length of Stringing       l = len(String)                # dfa tells the number associated      # with the present dfa = state      dfa = 0    for i in range(l):           if (dfa == 0):               dfa = start(String[i])                 elif (dfa == 1):               dfa = state1(String[i])                 elif (dfa == 2) :              dfa = state2(String[i])                 elif (dfa == 3) :              dfa = state3(String[i])                 elif (dfa == 4) :              dfa = state4(String[i])           else:              return 0    if(dfa == 3) :          return 1    else:          return 0      # Driver code   if __name__ == "__main__" :      String = "aaaaaabbbb"    if (isAccepted(String)) :          print("ACCEPTED")       else:          print("NOT ACCEPTED")        # This code is contributed by SHUBHAMSINGH10.C#// C# program to implement DFS that accepts// all string which follow the language// L = { a^n b^m ; (n)mod 2=0, m>=1 }using System;      class GFG{      // dfa tells the number associated// string end in which state.static int dfa = 0;  // This function is for// the starting state (Q0)of DFAstatic void start(char c){    if (c == 'a')    {        dfa = 1;    }    else if (c == 'b')     {        dfa = 3;    }      // -1 is used to check for    // any invalid symbol    else    {        dfa = -1;    }}  // This function is for the// first state (Q1) of DFAstatic void state1(char c){    if (c == 'a')     {        dfa = 2;    }    else if (c == 'b')    {        dfa = 4;    }    else    {        dfa = -1;    }}  // This function is for the // second state (Q2) of DFAstatic void state2(char c){    if (c == 'b')     {        dfa = 3;    }    else if (c == 'a')    {        dfa = 1;    }    else    {        dfa = -1;    }}  // This function is for the// third state (Q3)of DFAstatic void state3(char c){    if (c == 'b')     {        dfa = 3;    }    else if (c == 'a')    {        dfa = 4;    }    else    {        dfa = -1;    }}  // This function is for the// fourth state (Q4) of DFAstatic void state4(char c){    dfa = -1;}  static int isAccepted(char []str){    // store length of string    int i, len = str.Length;      for (i = 0; i < len; i++)    {        if (dfa == 0)            start(str[i]);          else if (dfa == 1)            state1(str[i]);          else if (dfa == 2)            state2(str[i]);          else if (dfa == 3)            state3(str[i]);          else if (dfa == 4)            state4(str[i]);        else            return 0;    }    if (dfa == 3)        return 1;    else        return 0;}  // Driver codepublic static void Main(String []args) {    char []str = "aaaaaabbbb".ToCharArray();    if (isAccepted(str) == 1)        Console.Write("ACCEPTED");    else        Console.Write("NOT ACCEPTED");}}  // This code is contributed by 29AjayKumarPHP<?php// PHP program to implement DFS that accepts // all string which follow the language // L = { a^n b^m ;(n)mod 2=0, m>=1 }   // This function is for the starting // state (zeroth) of DFA function start($c, &$dfa){    if($c == 'a')         $dfa = 1;               elseif ($c == 'b')         $dfa = 3;           // -1 is used to check for any     // invalid symbol     else $dfa = -1; }  // This function is for the first // state of DFA function state1($c, &$dfa){    if ($c == 'a')        $dfa = 2;     elseif ($c == 'b')         $dfa = 4;     else        $dfa = -1;   }  // This function is for the second // state of DFA function state2($c, &$dfa){    if ($c == 'b')         $dfa = 3;     elseif ($c == 'a')         $dfa = 1;     else         $dfa = -1; }  // This function is for the third // state of DFA function state3($c, &$dfa){    if ($c == 'b')         $dfa = 3;     elseif ($c == 'a')         $dfa = 4;     else         $dfa = -1; }  // This function is for the fourth // state of DFA function state4($c, &$dfa){    $dfa = -1; }    function isAccepted($str,&$dfa){    // store length of string     $i = 0; $len = sizeof($str);     for ($i = 0; $i < $len; $i++)     {         if ($dfa == 0)             start($str[$i], $dfa);           elseif ($dfa == 1)             state1($str[$i], $dfa);           elseif ($dfa == 2)             state2($str[$i], $dfa);           elseif ($dfa == 3)             state3($str[$i], $dfa);           elseif ($dfa == 4)             state4($str[$i], $dfa);         else            return 0;                   }     if($dfa == 3)         return 1;     else    return 0; }  // Driver Code   // dfa tells the number associated // with the present state $dfa = 0;$str = array("a", "a", "a", "a", "a",              "a", "b", "b", "b", "b");  if (isAccepted($str, $dfa) != 0)     echo "ACCEPTED"; else    echo "NOT ACCEPTED";   // This code is contributed // by Adesh Singh?>Output:ACCEPTEDMy Personal Notes
arrow_drop_upSave
Construct FA for  means having even number of a’s.
Construct FA for  means having any number of b’s greater than one.
Concatenate the two FA and make single DFA.
Any other combination result is the rejection of the input string.
Description:Given DFA has following states. State 3 leads to the acceptance of the string, whereas states 0, 1, 2 and 4 leads to the rejection of the string.DFA State Transition Diagram:Let’s see code for the demonstration:C/C++JavaPython 3C#PHPC/C++// C program to implement DFS that accepts// all string which follow the language// L = { a^n b^m ; (n)mod 2=0, m>=1 }#include <stdio.h>#include <string.h>  // dfa tells the number associated// string end in which state.int dfa = 0;  // This function is for// the starting state (Q0)of DFAvoid start(char c){    if (c == 'a') {        dfa = 1;    }    else if (c == 'b') {        dfa = 3;    }      // -1 is used to check for any invalid symbol    else {        dfa = -1;    }}  // This function is for the first state (Q1) of DFAvoid state1(char c){    if (c == 'a') {        dfa = 2;    }    else if (c == 'b') {        dfa = 4;    }    else {        dfa = -1;    }}  // This function is for the second state (Q2) of DFAvoid state2(char c){    if (c == 'b') {        dfa = 3;    }    else if (c == 'a') {        dfa = 1;    }    else {        dfa = -1;    }}  // This function is for the third state (Q3)of DFAvoid state3(char c){    if (c == 'b') {        dfa = 3;    }    else if (c == 'a') {        dfa = 4;    }    else {        dfa = -1;    }}  // This function is for the fourth state (Q4) of DFAvoid state4(char c){    dfa = -1;}  int isAccepted(char str[]){    // store length of string    int i, len = strlen(str);      for (i = 0; i < len; i++) {        if (dfa == 0)            start(str[i]);          else if (dfa == 1)            state1(str[i]);          else if (dfa == 2)            state2(str[i]);          else if (dfa == 3)            state3(str[i]);          else if (dfa == 4)            state4(str[i]);        else            return 0;    }    if (dfa == 3)        return 1;    else        return 0;}  // driver codeint main(){    char str[] = "aaaaaabbbb";    if (isAccepted(str))        printf("ACCEPTED");    else        printf("NOT ACCEPTED");    return 0;}  // This code is contributed by SHUBHAMSINGH10.Java// Java program to implement DFS that accepts// all string which follow the language// L = { a^n b^m ; (n)mod 2=0, m>=1 }class GFG{      // dfa tells the number associated// string end in which state.static int dfa = 0;  // This function is for// the starting state (Q0)of DFAstatic void start(char c){    if (c == 'a')    {        dfa = 1;    }    else if (c == 'b')     {        dfa = 3;    }      // -1 is used to check for    // any invalid symbol    else    {        dfa = -1;    }}  // This function is for the// first state (Q1) of DFAstatic void state1(char c){    if (c == 'a')     {        dfa = 2;    }    else if (c == 'b')    {        dfa = 4;    }    else     {        dfa = -1;    }}  // This function is for the // second state (Q2) of DFAstatic void state2(char c){    if (c == 'b')     {        dfa = 3;    }    else if (c == 'a')    {        dfa = 1;    }    else     {        dfa = -1;    }}  // This function is for the// third state (Q3)of DFAstatic void state3(char c){    if (c == 'b')     {        dfa = 3;    }    else if (c == 'a')    {        dfa = 4;    }    else     {        dfa = -1;    }}  // This function is for the// fourth state (Q4) of DFAstatic void state4(char c){    dfa = -1;}  static int isAccepted(char str[]){    // store length of string    int i, len = str.length;      for (i = 0; i < len; i++)    {        if (dfa == 0)            start(str[i]);          else if (dfa == 1)            state1(str[i]);          else if (dfa == 2)            state2(str[i]);          else if (dfa == 3)            state3(str[i]);          else if (dfa == 4)            state4(str[i]);        else            return 0;    }    if (dfa == 3)        return 1;    else        return 0;}  // Driver codepublic static void main(String []args) {    char str[] = "aaaaaabbbb".toCharArray();    if (isAccepted(str) == 1)        System.out.printf("ACCEPTED");    else        System.out.printf("NOT ACCEPTED");}}  // This code is contributed by 29AjayKumarPython 3# Python3 program to implement DFS that accepts   # all Stringing which follow the language   # L = {a ^ n b ^ m (n)mod 2 = 0, m>= 1 }      # This function is for the dfa = starting  # dfa = state (zeroth) of DFA   def start(c):      if (c == 'a'):          dfa = 1    elif (c == 'b'):          dfa = 3              # -1 is used to check for any      # invalid symbol       else:          dfa = -1    return dfa        # This function is for the first   # dfa = state of DFA   def state1(c):       if (c == 'a'):          dfa = 2    elif (c == 'b'):          dfa = 4    else:          dfa = -1    return dfa        # This function is for the second   # dfa = state of DFA   def state2(c):      if (c == 'b'):          dfa = 3    elif (c == 'a'):          dfa = 1    else:          dfa = -1    return dfa        # This function is for the third   # dfa = state of DFA   def state3(c):      if (c == 'b'):          dfa = 3    elif (c == 'a'):          dfa = 4    else:          dfa = -1    return dfa        # This function is for the fourth  # dfa = state of DFA   def state4(c):      dfa = -1    return dfa        def isAccepted(String):                # store length of Stringing       l = len(String)                # dfa tells the number associated      # with the present dfa = state      dfa = 0    for i in range(l):           if (dfa == 0):               dfa = start(String[i])                 elif (dfa == 1):               dfa = state1(String[i])                 elif (dfa == 2) :              dfa = state2(String[i])                 elif (dfa == 3) :              dfa = state3(String[i])                 elif (dfa == 4) :              dfa = state4(String[i])           else:              return 0    if(dfa == 3) :          return 1    else:          return 0      # Driver code   if __name__ == "__main__" :      String = "aaaaaabbbb"    if (isAccepted(String)) :          print("ACCEPTED")       else:          print("NOT ACCEPTED")        # This code is contributed by SHUBHAMSINGH10.C#// C# program to implement DFS that accepts// all string which follow the language// L = { a^n b^m ; (n)mod 2=0, m>=1 }using System;      class GFG{      // dfa tells the number associated// string end in which state.static int dfa = 0;  // This function is for// the starting state (Q0)of DFAstatic void start(char c){    if (c == 'a')    {        dfa = 1;    }    else if (c == 'b')     {        dfa = 3;    }      // -1 is used to check for    // any invalid symbol    else    {        dfa = -1;    }}  // This function is for the// first state (Q1) of DFAstatic void state1(char c){    if (c == 'a')     {        dfa = 2;    }    else if (c == 'b')    {        dfa = 4;    }    else    {        dfa = -1;    }}  // This function is for the // second state (Q2) of DFAstatic void state2(char c){    if (c == 'b')     {        dfa = 3;    }    else if (c == 'a')    {        dfa = 1;    }    else    {        dfa = -1;    }}  // This function is for the// third state (Q3)of DFAstatic void state3(char c){    if (c == 'b')     {        dfa = 3;    }    else if (c == 'a')    {        dfa = 4;    }    else    {        dfa = -1;    }}  // This function is for the// fourth state (Q4) of DFAstatic void state4(char c){    dfa = -1;}  static int isAccepted(char []str){    // store length of string    int i, len = str.Length;      for (i = 0; i < len; i++)    {        if (dfa == 0)            start(str[i]);          else if (dfa == 1)            state1(str[i]);          else if (dfa == 2)            state2(str[i]);          else if (dfa == 3)            state3(str[i]);          else if (dfa == 4)            state4(str[i]);        else            return 0;    }    if (dfa == 3)        return 1;    else        return 0;}  // Driver codepublic static void Main(String []args) {    char []str = "aaaaaabbbb".ToCharArray();    if (isAccepted(str) == 1)        Console.Write("ACCEPTED");    else        Console.Write("NOT ACCEPTED");}}  // This code is contributed by 29AjayKumarPHP<?php// PHP program to implement DFS that accepts // all string which follow the language // L = { a^n b^m ;(n)mod 2=0, m>=1 }   // This function is for the starting // state (zeroth) of DFA function start($c, &$dfa){    if($c == 'a')         $dfa = 1;               elseif ($c == 'b')         $dfa = 3;           // -1 is used to check for any     // invalid symbol     else $dfa = -1; }  // This function is for the first // state of DFA function state1($c, &$dfa){    if ($c == 'a')        $dfa = 2;     elseif ($c == 'b')         $dfa = 4;     else        $dfa = -1;   }  // This function is for the second // state of DFA function state2($c, &$dfa){    if ($c == 'b')         $dfa = 3;     elseif ($c == 'a')         $dfa = 1;     else         $dfa = -1; }  // This function is for the third // state of DFA function state3($c, &$dfa){    if ($c == 'b')         $dfa = 3;     elseif ($c == 'a')         $dfa = 4;     else         $dfa = -1; }  // This function is for the fourth // state of DFA function state4($c, &$dfa){    $dfa = -1; }    function isAccepted($str,&$dfa){    // store length of string     $i = 0; $len = sizeof($str);     for ($i = 0; $i < $len; $i++)     {         if ($dfa == 0)             start($str[$i], $dfa);           elseif ($dfa == 1)             state1($str[$i], $dfa);           elseif ($dfa == 2)             state2($str[$i], $dfa);           elseif ($dfa == 3)             state3($str[$i], $dfa);           elseif ($dfa == 4)             state4($str[$i], $dfa);         else            return 0;                   }     if($dfa == 3)         return 1;     else    return 0; }  // Driver Code   // dfa tells the number associated // with the present state $dfa = 0;$str = array("a", "a", "a", "a", "a",              "a", "b", "b", "b", "b");  if (isAccepted($str, $dfa) != 0)     echo "ACCEPTED"; else    echo "NOT ACCEPTED";   // This code is contributed // by Adesh Singh?>Output:ACCEPTEDMy Personal Notes
arrow_drop_upSave
DFA State Transition Diagram:
Let’s see code for the demonstration:
C/C++
Java
Python 3
C#
PHP
// C program to implement DFS that accepts// all string which follow the language// L = { a^n b^m ; (n)mod 2=0, m>=1 }#include <stdio.h>#include <string.h>  // dfa tells the number associated// string end in which state.int dfa = 0;  // This function is for// the starting state (Q0)of DFAvoid start(char c){    if (c == 'a') {        dfa = 1;    }    else if (c == 'b') {        dfa = 3;    }      // -1 is used to check for any invalid symbol    else {        dfa = -1;    }}  // This function is for the first state (Q1) of DFAvoid state1(char c){    if (c == 'a') {        dfa = 2;    }    else if (c == 'b') {        dfa = 4;    }    else {        dfa = -1;    }}  // This function is for the second state (Q2) of DFAvoid state2(char c){    if (c == 'b') {        dfa = 3;    }    else if (c == 'a') {        dfa = 1;    }    else {        dfa = -1;    }}  // This function is for the third state (Q3)of DFAvoid state3(char c){    if (c == 'b') {        dfa = 3;    }    else if (c == 'a') {        dfa = 4;    }    else {        dfa = -1;    }}  // This function is for the fourth state (Q4) of DFAvoid state4(char c){    dfa = -1;}  int isAccepted(char str[]){    // store length of string    int i, len = strlen(str);      for (i = 0; i < len; i++) {        if (dfa == 0)            start(str[i]);          else if (dfa == 1)            state1(str[i]);          else if (dfa == 2)            state2(str[i]);          else if (dfa == 3)            state3(str[i]);          else if (dfa == 4)            state4(str[i]);        else            return 0;    }    if (dfa == 3)        return 1;    else        return 0;}  // driver codeint main(){    char str[] = "aaaaaabbbb";    if (isAccepted(str))        printf("ACCEPTED");    else        printf("NOT ACCEPTED");    return 0;}  // This code is contributed by SHUBHAMSINGH10.
// Java program to implement DFS that accepts// all string which follow the language// L = { a^n b^m ; (n)mod 2=0, m>=1 }class GFG{      // dfa tells the number associated// string end in which state.static int dfa = 0;  // This function is for// the starting state (Q0)of DFAstatic void start(char c){    if (c == 'a')    {        dfa = 1;    }    else if (c == 'b')     {        dfa = 3;    }      // -1 is used to check for    // any invalid symbol    else    {        dfa = -1;    }}  // This function is for the// first state (Q1) of DFAstatic void state1(char c){    if (c == 'a')     {        dfa = 2;    }    else if (c == 'b')    {        dfa = 4;    }    else     {        dfa = -1;    }}  // This function is for the // second state (Q2) of DFAstatic void state2(char c){    if (c == 'b')     {        dfa = 3;    }    else if (c == 'a')    {        dfa = 1;    }    else     {        dfa = -1;    }}  // This function is for the// third state (Q3)of DFAstatic void state3(char c){    if (c == 'b')     {        dfa = 3;    }    else if (c == 'a')    {        dfa = 4;    }    else     {        dfa = -1;    }}  // This function is for the// fourth state (Q4) of DFAstatic void state4(char c){    dfa = -1;}  static int isAccepted(char str[]){    // store length of string    int i, len = str.length;      for (i = 0; i < len; i++)    {        if (dfa == 0)            start(str[i]);          else if (dfa == 1)            state1(str[i]);          else if (dfa == 2)            state2(str[i]);          else if (dfa == 3)            state3(str[i]);          else if (dfa == 4)            state4(str[i]);        else            return 0;    }    if (dfa == 3)        return 1;    else        return 0;}  // Driver codepublic static void main(String []args) {    char str[] = "aaaaaabbbb".toCharArray();    if (isAccepted(str) == 1)        System.out.printf("ACCEPTED");    else        System.out.printf("NOT ACCEPTED");}}  // This code is contributed by 29AjayKumar
# Python3 program to implement DFS that accepts   # all Stringing which follow the language   # L = {a ^ n b ^ m (n)mod 2 = 0, m>= 1 }      # This function is for the dfa = starting  # dfa = state (zeroth) of DFA   def start(c):      if (c == 'a'):          dfa = 1    elif (c == 'b'):          dfa = 3              # -1 is used to check for any      # invalid symbol       else:          dfa = -1    return dfa        # This function is for the first   # dfa = state of DFA   def state1(c):       if (c == 'a'):          dfa = 2    elif (c == 'b'):          dfa = 4    else:          dfa = -1    return dfa        # This function is for the second   # dfa = state of DFA   def state2(c):      if (c == 'b'):          dfa = 3    elif (c == 'a'):          dfa = 1    else:          dfa = -1    return dfa        # This function is for the third   # dfa = state of DFA   def state3(c):      if (c == 'b'):          dfa = 3    elif (c == 'a'):          dfa = 4    else:          dfa = -1    return dfa        # This function is for the fourth  # dfa = state of DFA   def state4(c):      dfa = -1    return dfa        def isAccepted(String):                # store length of Stringing       l = len(String)                # dfa tells the number associated      # with the present dfa = state      dfa = 0    for i in range(l):           if (dfa == 0):               dfa = start(String[i])                 elif (dfa == 1):               dfa = state1(String[i])                 elif (dfa == 2) :              dfa = state2(String[i])                 elif (dfa == 3) :              dfa = state3(String[i])                 elif (dfa == 4) :              dfa = state4(String[i])           else:              return 0    if(dfa == 3) :          return 1    else:          return 0      # Driver code   if __name__ == "__main__" :      String = "aaaaaabbbb"    if (isAccepted(String)) :          print("ACCEPTED")       else:          print("NOT ACCEPTED")        # This code is contributed by SHUBHAMSINGH10.
// C# program to implement DFS that accepts// all string which follow the language// L = { a^n b^m ; (n)mod 2=0, m>=1 }using System;      class GFG{      // dfa tells the number associated// string end in which state.static int dfa = 0;  // This function is for// the starting state (Q0)of DFAstatic void start(char c){    if (c == 'a')    {        dfa = 1;    }    else if (c == 'b')     {        dfa = 3;    }      // -1 is used to check for    // any invalid symbol    else    {        dfa = -1;    }}  // This function is for the// first state (Q1) of DFAstatic void state1(char c){    if (c == 'a')     {        dfa = 2;    }    else if (c == 'b')    {        dfa = 4;    }    else    {        dfa = -1;    }}  // This function is for the // second state (Q2) of DFAstatic void state2(char c){    if (c == 'b')     {        dfa = 3;    }    else if (c == 'a')    {        dfa = 1;    }    else    {        dfa = -1;    }}  // This function is for the// third state (Q3)of DFAstatic void state3(char c){    if (c == 'b')     {        dfa = 3;    }    else if (c == 'a')    {        dfa = 4;    }    else    {        dfa = -1;    }}  // This function is for the// fourth state (Q4) of DFAstatic void state4(char c){    dfa = -1;}  static int isAccepted(char []str){    // store length of string    int i, len = str.Length;      for (i = 0; i < len; i++)    {        if (dfa == 0)            start(str[i]);          else if (dfa == 1)            state1(str[i]);          else if (dfa == 2)            state2(str[i]);          else if (dfa == 3)            state3(str[i]);          else if (dfa == 4)            state4(str[i]);        else            return 0;    }    if (dfa == 3)        return 1;    else        return 0;}  // Driver codepublic static void Main(String []args) {    char []str = "aaaaaabbbb".ToCharArray();    if (isAccepted(str) == 1)        Console.Write("ACCEPTED");    else        Console.Write("NOT ACCEPTED");}}  // This code is contributed by 29AjayKumar
<?php// PHP program to implement DFS that accepts // all string which follow the language // L = { a^n b^m ;(n)mod 2=0, m>=1 }   // This function is for the starting // state (zeroth) of DFA function start($c, &$dfa){    if($c == 'a')         $dfa = 1;               elseif ($c == 'b')         $dfa = 3;           // -1 is used to check for any     // invalid symbol     else $dfa = -1; }  // This function is for the first // state of DFA function state1($c, &$dfa){    if ($c == 'a')        $dfa = 2;     elseif ($c == 'b')         $dfa = 4;     else        $dfa = -1;   }  // This function is for the second // state of DFA function state2($c, &$dfa){    if ($c == 'b')         $dfa = 3;     elseif ($c == 'a')         $dfa = 1;     else         $dfa = -1; }  // This function is for the third // state of DFA function state3($c, &$dfa){    if ($c == 'b')         $dfa = 3;     elseif ($c == 'a')         $dfa = 4;     else         $dfa = -1; }  // This function is for the fourth // state of DFA function state4($c, &$dfa){    $dfa = -1; }    function isAccepted($str,&$dfa){    // store length of string     $i = 0; $len = sizeof($str);     for ($i = 0; $i < $len; $i++)     {         if ($dfa == 0)             start($str[$i], $dfa);           elseif ($dfa == 1)             state1($str[$i], $dfa);           elseif ($dfa == 2)             state2($str[$i], $dfa);           elseif ($dfa == 3)             state3($str[$i], $dfa);           elseif ($dfa == 4)             state4($str[$i], $dfa);         else            return 0;                   }     if($dfa == 3)         return 1;     else    return 0; }  // Driver Code   // dfa tells the number associated // with the present state $dfa = 0;$str = array("a", "a", "a", "a", "a",              "a", "b", "b", "b", "b");  if (isAccepted($str, $dfa) != 0)     echo "ACCEPTED"; else    echo "NOT ACCEPTED";   // This code is contributed // by Adesh Singh?>
ACCEPTED
AdeshSingh1
29AjayKumar
Akanksha_Rai
GATE CS
Theory of Computation & Automata
Writing code in comment?
Please use ide.geeksforgeeks.org,
generate link and share the link here.