Seguramente habrás oído alguna vez esta palabra, consiente o inconscientemente puesto que en el mundo de las ciencias de la computación o del cine en ciencia ficción se habla mucho del tema de autómatas, basta con que veas la reciente película llamada "ex machina", ahí hacen mención de este tema, y día a día interactúas con ella también consiente o inconscientemente.
La teoría de autómatas es una rama de las ciencias de la computación que estudia las máquinas abstractas y los problemas que éstas son capaces de resolver. La teoría de autómatas está estrechamente relacionada con la teoría del lenguaje formal ya que los autómatas son clasificados a menudo por la clase de lenguajes formales que son capaces de reconocer.
Un autómata es un modelo matemático para una máquina de estado finito (FSM sus siglas en inglés).
Una FSM es una máquina que, dada una entrada de símbolos, "salta" a una función de transición (que puede ser expresada como una tabla).
En la variedad común "Mealy" de FSMs, esta función de transición dice al autómata a qué estado cambiar dados unos determinados estados y símbolos
La entrada es leída símbolo por símbolo, hasta que es "consumida" completamente (piense en ésta como una cinta con una palabra escrita en ella, que es leída por una cabeza lectora del
autómata; la cabeza se mueve a lo largo de la cinta, leyendo un símbolo a la vez) una vez la entrada se ha agotado, el autómata se detiene
En este ejemplo validaremos una expresión aritmética ejemplo 12+3 o tal vez 23*3/5-8+1, sea cual sea la expresión el autómata será capaz de decidir si es o no una expresión aritmética.
La función del autómata será leer la cadena ingresada y dependiendo el carácter leído avanzara por los estados. Por ejemplo si ingresamos esta cadena = 34*5, el autómata comienza en el estado 0, leerá el primer alfabeto "3" y vera que el "3" es un dígito y avanzara al estado 1, comenzará a leer el siguiente alfabeto que es un "4", ahora el autómata está en el estado 1, lee el "4" y como es un dígito se mantiene en el estado 1, lee el tercer alfabeto "*" ahora el autómata continua en el estado 1, lee que es un "*" y como es un operador avanza al estado 2, continua leyendo el siguiente alfabeto "5", ahora el autómata está en el estado 2, lee que es "5" y como es un dígito avanza al estado 3, ahora esta en estado 3, continua leyendo y recibe un fin de cadena y valora si 3 es un estado de aceptación, si lo es, manda aceptación como cadena valida.