Post on 29-Dec-2019
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