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");
		}

	}

}

 

Acerca del autor:

Mi nombre es Jorge Villalobos, soy Colombiano de nacimiento y resido en México desde 2005,actualmente soy el creador de codigoprogramacion.com Soy ingeniero en tecnologías de información y comunicaciones y trabajo de tiempo completo desarrollando aplicaciones web. En general me considero un tipo normal, me gusta salir, divertirme, y uno de mis hobbies es programar y hacer tutoriales para compartir conocimiento, me gusta la pizza, el ajedrez y tomar una que otra cerveza los fines de semana. Espero que este proyecto ayude a ayudar a los demás.

Twitter del autor:

11 comments

  1. juan reyes ortega says:

    Programar la expresión regular 1(0|1)*0 a través de un autómata finito en java

  2. Oscar says:

    Sea el lenguaje A = {a, b, c}, hacer el aut�mata finito determinista que acepte las cadenas donde las apariciones de a�s no pueden ir seguidas de c, las apariciones de b�s no pueden ir seguidas de a�s, y las apariciones de c�s no pueden ir seguidas de b.

  3. angel says:

    brother soy fan, eres un chingon, me has salvado muchas veces en progra, saludos.

  4. Ana says:

    Hola amigo,muchas felicidades explicas de maravilla tengo una duda este autómata se puede realizar en un interfaz grafico en java te agradecería una pequeña asesoría :)

  5. Adrian Ivan says:

    muy buen codigo vaya que sabes lo que haces te felicito por que tu manera de explicar es buena sigue asi

  6. Adrian Ivan says:

    vaya codigo amigo sobre automatas esta genial me agrada tu forma de compartir tus conocimientos gracias amigo

  7. Hi, yup this paragraph is genuinely fastidious and I have learned
    lot of things from it concerning blogging. thanks.

  8. karla says:

    Y EN SI QUE ES LO QUE HACE ESTE PROGRAMITA?

  9. karim says:

    contestame en mi e-mail gracias

  10. karim says:

    ola jorge soy karim tengo 13 años vivo en la ciudad de mexico quisiera irte a conoser ojala medes esta oportunidad te dejo mi e-mail:passobo2000@hotmail.com gracias y sigues siendo el mejor en programacion.

  11. Hola jorge solo te escribo para felicitarte por tu pagina que a mi punto de vista esta muy pero muy buena, éxito…!!!

Leave a Reply to Adrian Ivan Cancel reply

Your email address will not be published. Required fields are marked *