code

Deterministic Finite Automaton

The Deterministic Finite Automaton algorithm
aut.c
#include "include/AUTOMATON.h"

int search(unsigned char *x, int m, unsigned char *y, int n) {
   int j, state, count;
   int *ttransSMA;
   count = 0;

   /* Preprocessing */
   ttransSMA = (int *)malloc((m+1)*SIGMA*sizeof(int));
   memset(ttransSMA, -1, (m+1)*SIGMA*sizeof(int));
   preSMA(x, m, ttransSMA);
    
   /* Searching */
   for (state = 0, j = 0; j < n; ++j) {
      state = getSMA(state, y[j]);
      if (state==m) OUTPUT(j - m + 1);
   }
   free(ttransSMA);
   return count;
}