Tag Archive for implementarse

Una introducción a Automatas finitos deterministicos (Maquinas de estado)

Screen Shot 2013-07-10 at 18.37.07

En este tutorial haremos una pequeña introducción a los automatas finitos deterministicos, esto quiere decir que hablamos de maquinas de estado donde los estados siguientes a un estado actual estan predeterminados sin equivocación alguna. Para ello he preparado el siguiente video que espero les pueda servir para comprenderlo de una manera sencilla.

Codigo fuente (ejemplo de automata finito):

Implementación del siguiente automata para evaluar cadenas de numeros binarios (1 y 0 ).

Screen Shot 2013-07-10 at 18.37.07
El siguiente codigo esta en Java, sin embargo el concepto deberia ser valido para implementarse en otros lenguajes.

public class Main {

	/**
	 * @param args
	 */
	public static void main(String[] args) {

		int[] input = {1,0,0,0,0};
		int inicio = 1;
		int finalizar = 1;
		int actual = inicio;

		boolean fin = false;

		int contador = 0;
		while(fin==false)
		{
			if(contador > input.length-1)
			{
				fin = true;
				break;
			}
			if(actual==1)
			{
				if(input[contador]==1)
				{
					actual=1;
				}
				if(input[contador]==0)
				{
					actual=2;
				}
				contador++;
				continue;
			}
			if(actual==2)
			{
				if(input[contador]==1)
				{
					actual=2;
				}
				if(input[contador]==0)
				{
					actual=1;
				}
				contador++;
				continue;
			}
		}

		if(actual==finalizar)
		{
			System.out.println("La cadena es correcta");
		}
		else
		{
			System.out.println("La cadena es incorrecta");
		}

	}

}