Máquina de estado finito con salida sin salida - …mtovar/doc/MatDisc/MaquinaEstadoFinito.pdf ·...

Post on 22-Sep-2018

261 views 0 download

Transcript of Máquina de estado finito con salida sin salida - …mtovar/doc/MatDisc/MaquinaEstadoFinito.pdf ·...

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