Máquina de estado finito con salida sin salida Máquina de estado finito Máquinas de estados finitos se utilizan ampliamente en aplicaciones en ciencias de la computación y redes de datos. Por ejemplo, las máquinas de estados finitos son la base para los programas de corrección ortográfica, la comprobación de la gramática, la indexación o la búsqueda de grandes volúmenes de texto, reconocimiento de voz, la transformación de texto utilizando lenguajes de marcado como XML y HTML, y los protocolos de red que especifican cómo las computadoras se comunican Máquinas de estado finito con salida Ejemplo, máquina vendedora de jugo de naranja y manzana, costo $30. Recibe: 5, 10, 25. Tabla de estados para una máquina vendedora Definición Una máquina de estado finito M = (S, I, O, f, g, so) consiste de un conjunto finito de estados, un alfabeto finito de entrada I, un alfabeto finito de salida O, una función de transición f que asigna a cada par de estados y entrada un nuevo estado, una función de salida g que asigna a cada par de estados y entrada una salida, y un estado inicial so. Ejemplo Ejercicio Construye el grafo de estados de la siguiente tabla: Solución Ejercicio: Encuentra la cadena de salida que produce la máquina de estado de la cadena de entrada 101011 Solución Ejercicio En un cierto esquema de código, cuando tres consecutivos 1’s aparecen en un mensaje, el recibidor del mensaje sabe que hay un error en la transmisión. Construye una máquina de estado finito que da un 1 como salida actual si y sólo sí los últimos tres bits recibidos son 1’s. Solución Definición Sea M= (S, I, O, f, g, so) una máquina de estado finito y L I*. Decimos que M reconoce (o acepta) L si una cadena de entrada x pertenece a L si y sólo sí el bit de la ultima salida producida por M (cuando x es dada como entrada ) es un 1. Tipos de máquinas de estado finito Las máquinas vistas son llamadas máquinas de Mealy, porque fue introducido por G. H. Mealy en 1955. Las máquinas de estado finito sin salida, o autómatas de estado finito, tienen un conjunto de estados finales y reconocen una cadena si y solo sí esta se produce desde el estado inicial hasta el estado final. Ejercicio Produce una máquina de estado finito que sume dos enteros positivos usando su expansión binaria. Nota: como las entradas son pares de bits, hay cuatro posibles entradas: 00 si ambos números tienen 0, la salida es 0 01 si el primero es 0 y el segundo es 1, la salida es 1 10 si el primero es 1 y el segundo es 0, la salida es 1 11 si ambos son 1’s, la salida es 0 y se acumula el acarreo en el siguiente (1 se suma a los siguientes pares de números ). Solución Máquinas de estado finito sin salida Una de las aplicaciones más importantes de las máquinas de estado finito es en reconocimiento de lenguajes. Esto es importante en el diseño y construcción de compiladores para lenguajes de programación. Cadenas Suponga que A y B son subconjuntos de V*, donde V es un vocabulario. La concatenación de A y B, denotada por AB, es el conjunto de todas las cadenas de la forma xy, donde x es una cadena en A y y es una cadena en B. Ejemplo: Sea A={0,11} y B={1,10,110}. Encontrar AB y BA. AB={01,010,0110, 111, 1110, 11110} BA={10,111,100,1011,1100,11011} Definición An n= 0, 1, 2, … A0 = {λ} An+1 = AnA, para n=0, 1, 2, … Ejercicio Sea A={1,00}. Encuentra An para n=0, 1, 2, 3. Solución A0={λ} A1 = A0A = {λ}A = {1, 00} A2 = {11,100,001,0000} A3={111,1100,1001,10000,0011,00100,00 001,000000}. Definición Suponga que A es un subconjunto de V*. Entonces la cerradura de Kleene de A, denotado por A*, es el conjunto que consiste de concatenación de muchas cadenas arbitrarias de A. Es decir, Ejercicio ¿Cuál es la Cerradura de Kleene de los conjuntos A={0}, B={0,1}, y C={11}? Solución A* = {0n | n=0, 1, 2, …} B*={0,1}* C*={12n | n=0, 1, 2, …} Autómata de estado finito Un autómata de estado finito M = (S, I, f, so, F) consiste de un conjunto finito de estados S, un alfabeto de entrada I, una función de transición f que asigna una estado siguiente a cada par de estados y entrada (así que f: S X I → S), un estado inicial so, y un subconjunto F de S que consiste de estados finales o de aceptación. Ejemplo Extensión de la función de transición La función de transición f de una máquina de estado finito M=(S, I , f, so, F) puede extenderse a pares formados por estados y cadenas, es decir, f: S X I* → S. Sea x= x1x2…xk una cadena en I*. Entonces f(s1, x) es el estado obtenido al usar cada símbolo de x, de izquierda a derecha, como entrada, etc. La función f se define recursivamente por: Definición Una cadena x se dice ser reconocida o aceptada por el autómata M, si esta toma el estado inicial a un estado final, es decir, f(so, x) es un estado en F. El lenguaje L es el conjunto de todas las cadenas que son aceptadas por M. Ejemplo Determina el lenguaje que reconoce el autómata M1. Solución M1 = {1n | n=0, 1, 2, …} Ejercicio L(M2) = {1, 01} L(M3) = {0n, 0n10x | n=0, 1, 2, …, y x es cualquier cadena} Ejemplo Diseña un AFD que reconozca el conjunto de cadenas de bits que inician con dos 0’s. Ejercicios (b) el conjunto de cadenas de bits que contienen dos 0’s consecutivos. (c) el conjunto de cadenas que no contienen dos consecutivos 0’s (d) el conjunto de cadenas de bits que terminan con dos 0’s. (e) El conjunto de cadenas de bits con al menos dos 0’s Solución