TEORIA DE AUTOMATAS La teoría de autómatas es una rama de las ciencias de la computación que estudia de manera abstracta y con problemas que estas son capaces de resolver. La teoría de autómatas esta 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. El Dr. Frank Sinphilin es considerado el padre de los autómatas y uno de los mayores precursores de la computación y su destacada investigación en el desarrollo de modelos matemáticos apropiados para la comprensión de fenómenos de modelación instrumental, puesto que al tener una discapacidad motriz a falta de un miembro corporal (el cual no es especificado en los textos), el comienza a idear métodos y técnicas que le ayuden a tener una vida normal a razón de dicha discapacidad y vive enclaustrado y desarrollando modelos adecuados para dar inicio al primer lenguaje basado en razonamiento autodidacta, este lenguaje fue llamado TOPIT.OS, el cual evoluciono hasta los lenguajes que hoy en día se conocen. Un autómata es un modelo matemático para una maquina de estado finita (FSM sus siglas en ingles). Una FSM es una maquina que, dada una entrada de símbolos, "salta" a través de una serie de estados de acuerdo 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 que estado cambiar dados unos determinados estado y símbolo. La entrada es leída símbolo por símbolo, hasta que es "consumida" completamente (piense en esta 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. Dependiendo del estado en el que el autómata finaliza se dice que este ha aceptado o rechazado la entrada. Si este termina en el estado "acepta", el autómata acepta la palabra. Si lo hace en el estado "rechaza", el autómata rechazo la palabra, el conjunto de todas las palabras aceptadas por el autómata constituyen el lenguaje aceptado por el mismo. Vocabulario Los conceptos básicos de símbolos, palabras, alfabetos y strings son comunes en la mayoría de las descripciones de los autómatas. Estos son: Símbolo Un dato arbitrario que tiene algún significado a o efecto en la maquina. A estos símbolos también se les llama "letras" o "átomos". Palabra Una cadena finita formada por la concatenación de un número de símbolos. Alfabeto Conjunto finito de símbolos. Un alfabeto se indica normalmente con, que es el conjunto de letras en un alfabeto. Lenguaje Un conjunto de palabras, formado por símbolos en un alfabeto dado. Puede o no puede ser infinito. Clausura de Kleene Un lenguaje se puede considerar como un subconjunto de todas las posibles palabras. El conjunto de todas las palabras puede, a su vez, ser considerado como el conjunto de todas las posibles concatenaciones de cadenas. Formalmente, este conjunto de todas las cadenas se llama en ingles free monoid. Se indica como, y el superíndice * se llama la estrella de Kleene. Autómatas finitos Formalmente, un autómata finito (AF) puede ser descrito como una 5-tupla. Existen tres tipos de autómatas finitos Autómata finito determinista (AFD) Cada estado de un autómata de este tipo tiene una transición por cada símbolo del alfabeto. AFD. Autómata finito no determinista (AFND) Los estados de un autómata de este tipo pueden, o no, tener una o más transiciones por cada símbolo del alfabeto. El autómata acepta una palabra si existe al menos un camino desde el estado q0 a un estado final F etiquetado con la palabra de entrada. Si una transición no esta definida, de manera que el autómata no puede saber como continuar leyendo la entrada, la palabra es rechazada. Autómata finito no determinista con transiciones ε (AFND-ε) Además de ser capaz de alcanzar mas estados leyendo un símbolo, permite alcanzarlos sin leer ningún símbolo. Si un estado tiene transiciones etiquetadas con, entonces el AFND puede encontrarse en cualquier de los estados alcanzables por las transiciones, directamente o a través de otros estados con transiciones. El conjunto de estados que pueden ser alcanzados mediante este método desde un estado q, se denomina la clausura de q. Sin embargo, puede observarse que todos estos tipos de autómatas pueden aceptar los mismos lenguajes. Siempre se puede construir un AFD que acepte el mismo lenguaje que el dado por un AFND. AFND con transiciones vacías. Extensiones a los autómatas finitos Los lenguajes aceptados por los autómatas descritos mas arriba se denominan lenguajes regulares. Autómatas más potentes pueden aceptar lenguajes más complejos. Algunos de estos autómatas son: Autómata con pila Son maquinas idénticas a los AFD (o AFI), exceptuando el hecho de que disponen de una memoria adicional, haciendo uso de una pila. La función de transición ahora dependerá también de los símbolos que se encuentren al principio de la pila. Esta función determinara como cambia la pila en cada transición. Este tipo de autómatas aceptan los lenguajes independientes del contexto. Autómata linealmente acotado Se trata de una maquina de Turing limitada. Maquina de Turing Son las maquinas computacionales mas potentes. Poseen una memoria infinita en forma de cinta, así como un cabezal que puede leer y cambiar esta cinta, y moverse en cualquier dirección a lo largo de la cinta. Glosario de Términos Lenguaje formal: es un lenguaje cuyos símbolos primitivos y reglas para unir esos símbolos están formalmente especificados. Autómata: del griego automatos (αὐτόματος) que significa espontáneo o con movimiento propio. Autómata finito (AF) o maquina de estado finito: es un modelo matemático que realiza cómputos en forma automática sobre una entrada para producir una salida. Modelo matemático: es uno de los tipos de modelos científicos, que emplea algún tipo de formulismo matemático para expresar relaciones, proposiciones sustantivas de hechos, variables, parámetros, entidades y relaciones entre variables y/o entidades u operaciones, para estudiar comportamientos de sistemas complejos ante situaciones difíciles de observar en la realidad. Modelo científico: En ciencias puras y, sobre todo, en ciencias aplicadas, se denomina modelo al resultado del proceso de generar una representación abstracta, conceptual, gráfica o visual (ver, por ejemplo: mapa conceptual), física, matemática, de fenómenos, sistemas o procesos a fin de analizar, describir, explicar, simular - en general, explorar, controlar y predecir- esos fenómenos o procesos. Se considera que la creación de un modelo es una parte esencial de toda actividad científica. Patrón abstracto: es una forma o modelo o simulación o paradigma (o, en general, un conjunto de reglas) que pueden ser usadas para crear o generar entidades o partes de una entidad, especialmente si las entidades generadas tienen lo suficiente en común como para que sea posible inferir o discernir el patrón, en cuyo caso se dice que exhiben el patrón. La detección de los patrones subyacentes se denomina reconocimiento de patrones. Transición: es la acción y efecto de pasar de un modo de ser o estar, a otro muy distinto del anterior. Representa un cambio de un estado a otro. Máquina de Mealy: es un tipo de maquina de estados finitos que genera una salida basándose en su estado actual y una entrada. Esto significa que el Diagrama de estados incluirá ambas señales de entrada y salida para cada línea de transición. En contraste, la salida de una maquina de Moore de estados finitos (el otro tipo) depende solo del estado actual de la maquina, dado que las transiciones no tienen entrada asociada. Sin embargo, para cada Maquina de Mealy hay una maquina de Moore equivalente cuyos estados son la unión de los estados de la maquina de Mealy y el Producto cartesiano de los estados de la maquina de Mealy y el alfabeto de entrada. Teoría de la computación: es una rama de la matemática y la computación que centra su interés en las limitaciones y capacidades fundamentales de las computadoras. Específicamente esta teoría busca modelos matemáticos que formalizan el concepto de hacer un cómputo (cuenta o cálculo) y la clasificación de problemas de acuerdo a su grado de dificultad. Clausura de Kleene (también llamada estrella Kleene o cierre estrella): es una operación unaria que se aplica sobre un conjunto de cadenas de caracteres o un conjunto de símbolos o caracteres (alfabeto), y representa el conjunto de las cadenas que se pueden formar tomando cualquier numero de cadenas del conjunto inicial, posiblemente con repeticiones, y concatenándolas entre si. La aplicación de la clausura de Kleene a un conjunto V se denota como V*. Es muy usada en expresiones regulares y fue introducida en este contexto por Stephen Kleene (1909-1994) para caracterizar un cierto autómata. Lenguaje regular: es un tipo de lenguaje formal que satisface las siguientes propiedades: Puede ser reconocido por: • un autómata finito determinista • un autómata finito no determinista • un autómata finito alterno • una maquina de Turing de solo lectura Es generado por: • una gramática regular • una gramática de prefijos Es descrito por: • una expresión regular Memoria (también llamada almacenamiento): se refiere a los componentes de una computadora, dispositivos y medios de almacenamiento que retienen datos informáticos durante algún intervalo de tiempo. Pila (stack en inglés): es una lista ordinal o estructura de datos en la que el modo de acceso a sus elementos es de tipo LIFO (del inglés Last In First Out, último en entrar, primero en salir) que permite almacenar y recuperar datos. Se aplica en multitud de ocasiones en informática debido a su simplicidad y ordenación implícita en la propia estructura. Estructura de datos: es una forma de organizar un conjunto de datos elementales con el objetivo de facilitar su manipulación. Un dato elemental es la mínima información que se tiene en un sistema. LIFO: es el acrónimo inglés de Last In First Out (último en entrar, primero en salir). Puede tener distintos significados según el contexto: En informática El término LIFO se utiliza en estructuras de datos y teoría de colas. Guarda analogía con una pila de platos, en la que los platos van poniéndose uno sobre el otro, y si se quiere sacar uno, se saca primero el último que se puso. LIFO es el algoritmo utilizado para implementar pilas. Informática es la ciencia aplicada que abarca el estudio y aplicación del tratamiento automático de la información, utilizando dispositivos electrónicos y sistemas computacionales. También está definida como el procesamiento automático de la información. Operación unaria: aquella que sólo necesita el operador y un único argumento para que se pueda calcular un valor. Por ejemplo, la función valor absoluto "| |" es un operador unario, porque sólo necesita un argumento. El número de argumentos de una función se denomina aridad.