INTRODUCCION AL DISEÑO DE AUTOMATAS FINITOS

28
INTRODUCCION AL DISEÑO DE AUTOMATAS FINITOS Fundamentos de Computación II

Transcript of INTRODUCCION AL DISEÑO DE AUTOMATAS FINITOS

Page 1: INTRODUCCION AL DISEÑO DE AUTOMATAS FINITOS

INTRODUCCION AL DISEÑO DE AUTOMATAS FINITOS

Fundamentos de Computación II

Page 2: INTRODUCCION AL DISEÑO DE AUTOMATAS FINITOS

Autómata finito

RECORDAR:

✓ Los Lenguajes Regulares se representan por medio de Expresiones Regulares.

✓ Un Lenguaje Regular debe ser reconocido por algún objeto.

✓ Ese objeto existe y se lo denomina Autómata Finito.

¿Qué es un Autómata finito?

✓Es una herramienta abstracta que se utiliza para reconocer un determinado Lenguaje

Regular.

✓Es un modelo matemático de un sistema que recibe una cadena constituida por caracteres

de cierto alfabeto Σ y determina si esa cadena pertenece al lenguaje que el autómata

reconoce.

RECONOCER un lenguaje Regular es aceptar cada cadena que es una palabra del

lenguaje y rechazar cada cadena que no pertenece al lenguaje

Page 3: INTRODUCCION AL DISEÑO DE AUTOMATAS FINITOS

¿Cómo trabaja el Autómata?

1. El Autómata finito recorre uno por uno los caracteres que forman la cadena con la que

ha sido “alimentado”.

2. Cada carácter procesado produce un cambio de estado en el autómata.

3. Si al terminar de analizar todos los caracteres de la cadena el autómata se encuentra

en un estado especial llamado Estado Final o Estado de Aceptación, entones se afirma

que el autómata ha reconocido a la cadena y por lo tanto es una palabra del lenguaje.

4. En el caso contrario la cadena es rechazada porque no pertenece a ningún lenguaje.

NOTA1: un Autómata puede tener varios estados finales

NOTA2: Todo Autómata tiene un estado especial llamado Estado Inicial.

Este estado es único y es el estado en el que se encuentra antes de comenzar su

actividad.

Page 4: INTRODUCCION AL DISEÑO DE AUTOMATAS FINITOS

✓ Todo Autómata Finito tiene asociado un dígrafo llamado “ Diagrama de Transiciones” el

cual permite visualizar el funcionamiento del autómata.

✓ Nodos del dígrafo: representan los diferentes estados del autómata.

✓ Arcos del dígrafo: representan las transiciones entre los estados. Están etiquetadas con

símbolos del alfabeto. Informan cada cambio de estado que ocurre en el autómata.

✓ Estado del autómata: tiene un nombre representado por un entero no negativo o una

letra.

✓ Estado inicial: al nombre se le agrega un supra índice “menos” (-).

✓ Estado final: se le agrega el supra índice “mas” (+).

0 - 1 2 +a b

Diagrama de

Transiciones

Page 5: INTRODUCCION AL DISEÑO DE AUTOMATAS FINITOS

0 - 1 2 +a b

Sea el lenguaje regular finito denotado por la Expresión Regular ab. Este lenguaje

contiene solo la palabra ab.

El Autómata Finito que reconoce este lenguaje tiene asociado el siguiente Diagrama de

Transiciones:

Este Autómata esta formado por 3 estados y dos transiciones entre los estados.

Los estados son 0, 1 y 2.

Estado InicialEstado Final

Estado Intermedio

Autómata Finito. Ejemplo

Page 6: INTRODUCCION AL DISEÑO DE AUTOMATAS FINITOS

Descripción del Autómata Finito Ejemplo. Análisis 1

1. El Autómata Finito comienza su actividad estando en el

estado inicial (estado 0) y es alimentado por una cadena,

la cual debe reconocer o rechazar.

2. Para que el Autómata determine si la cadena ab pertenece o no al lenguaje que es

reconocido por el, debe leer el primer carácter (a) y desde el estado 0 transita al estado 1

(cambia de estado).

3. Estando el Autómata en el estado 1, lee el siguiente carácter de la cadena analizada (b),

entonces el Autómata cambia al estado 2.

4. El Autómata no encuentra mas caracteres en la cadena analizada y termina su actividad

estando en un estado final o estado de aceptación, por lo que el Autómata ha

detectado que la cadena ab es una palabra del lenguaje que este autómata reconoce.

0 - 1 2 +a b

La actividad del Autómata puede ser descripta de la siguiente forma:

0 → a → 1 → b →2+

Page 7: INTRODUCCION AL DISEÑO DE AUTOMATAS FINITOS

Análisis 2

Supóngase el mismo Autómata.

El Autómata ahora es alimentado por la cadena a.

El Autómata tiene una transición desde su estado inicial (estado 0) por el carácter a, al

estado 1.

En este momento, el Autómata se encuentra en el estado 1 y no tiene mas caracteres para

leer, por lo tanto, la actividad del Autómata termina en el estado 1 que no es un estado

final.

En este caso , se afirma que el Autómata rechaza a la cadena a porque no forma parte del

lenguaje reconocido.

La actividad del Autómata puede ser descripta de la siguiente forma:

0 → a → 1

Page 8: INTRODUCCION AL DISEÑO DE AUTOMATAS FINITOS

Análisis 3

Se alimenta al Autómata Finito con la cadena abab para que determine si esta es una

palabra o no del lenguaje reconocido por el.

1. El Autómata comienza en el estado 0, lee la primera a y transita al estado 1.

2. Luego, lee la primera letra b y cambia al estado 2.

3. Continua la actividad del Autómata y lee el tercer carácter de la cadena, la segunda a. Pero

desde el estado 2 no existen transiciones, por lo que el Autómata no puede seguir

“trabajando”.

Po r lo tanto, la cadena abab no es reconocida por el Autómata, a pesar de tener un estado

final, ya que la cadena tiene mas caracteres que todavía no fueron tratados por el Autómata,

pero éste no sabe como procesarlos.

La actividad del Autómata puede ser descripta de la siguiente forma:

0 → a → 1 → b → 2 → a →??

Page 9: INTRODUCCION AL DISEÑO DE AUTOMATAS FINITOS

Análisis 4

Otra situación de rechazo se produce si la cadena comienza con b como, por ejemplo, baa.

El autómata inicia su actividad en el estado 0, el estado inicial, y no encuentra transición

alguna por el símbolo b.

Por lo tanto, el Autómata no puede “trabajar” la cadena con la que se lo ha alimentado y no

la reconoce.

La actividad del Autómata puede ser descripta de la siguiente forma:

0 → b → ??

Page 10: INTRODUCCION AL DISEÑO DE AUTOMATAS FINITOS

Estos cuatro análisis presentan las diferentes situaciones por las que puede atravesar un

Autómata Finito.

Cada Autómata Finito reconoce un único Lenguaje Regular.

Para un Lenguaje Regular pueden existir muchos autómatas que lo reconozcan.

Page 11: INTRODUCCION AL DISEÑO DE AUTOMATAS FINITOS

Autómatas finitos que reconocen Lenguajes Regulares Finitos

RECORDAR: los Lenguajes Regulares finitos se representan mediante Expresiones Regulares

que utilizan, si necesitan, de los operadores concatenación, unión y potencia.

El Diagrama de Transiciones de un Autómata Finito es una transición concatenada con otra

transición.

0 - 1 2 +a b

La concatenación de los caracteres a y b que forman la palabra ab se “transforma” en dos transiciones consecutivas, la primera etiquetada con el carácter a y la segunda con el carácter b.

NOTA: El diagrama para el operador “unión” es más complicado porque de un estado

deben partir dos transiciones a diferentes estados.

El diagrama para el operador “potencia” se reduce a la aplicación reiterada del operador

“concatenación”

Page 12: INTRODUCCION AL DISEÑO DE AUTOMATAS FINITOS

Ejemplo

1. Sea la Expresión Regular ab + aab que representa a un Lenguaje Regular con dos palabras.

Dado que ambas palabras comienzan con el carácter a, esta expresión puede escribirse como :

a ( b + ab). El Diagrama de Transición del Autómata finito que reconoce este lenguaje será:

0 - 1 2 +a b

3 4+

a

b

La primera a, común a ambas palabras, “mueve” al autómata del estado inicial al estado

intermedio 1. Aquí aparece la bifurcación que implementa el operador “unión”: un camino

conduce al estado final 2 para reconocer la palabra ab y el otro camino conduce al estado final

4 para reconocer el camino aab.

Page 13: INTRODUCCION AL DISEÑO DE AUTOMATAS FINITOS

Ejercicio:

Sea la Expresión Regular a + ab + aab. Esta expresión se ha formado agregándole la

palabra a a la Expresión del ejemplo anterior.

¿Cómo le parece que sería el Diagrama de Transición?

Considere que ahora el estado 1 debe ser un estado final para que se pueda reconocer a la

palabra a.

Recuerde que la denominación “estado final” no significa necesariamente el “ ultimo

estado del autómata” sino un “estado de aceptación o reconocimiento”.

Page 14: INTRODUCCION AL DISEÑO DE AUTOMATAS FINITOS

0 - 1+ 2 +a b

3 4+

a

b

Respuesta :

ATENCION: No es obligatorio que exista un Estado final para cada palabra del lenguaje.

Page 15: INTRODUCCION AL DISEÑO DE AUTOMATAS FINITOS

Ejemplo

Se construye el siguiente Autómata Finito sobre el alfabeto {0,1} que reconoce un lenguaje

que tienen dos palabras. El autómata tiene un solo estado final.

A - B C+0 1

D

1 0

CONCLUSION:

✓Una palabra de longitud 1 es reconocida por un autómata con una transición y dos

estados.

✓Una palabra de longitud 2 es aceptada por un autómata con dos transiciones y tres

estados, etc.

Page 16: INTRODUCCION AL DISEÑO DE AUTOMATAS FINITOS

Autómatas finitos que reconocen Lenguajes Regulares Infinitos

RECORDAR:

1. Las Expresiones Regulares que representan lenguajes infinitos requieren la utilización del

operador Clausura de Kleene.

2. El término finito que se agrega a la palabra autómata no significa que estas herramientas

solo pueden reconocer lenguajes finitos, sino que el número de estados de un autómata es

finito.

3. En un Autómata Finito implementar la Clausura de Kleeen aplicado a un solo carácter

implica un ciclo sobre un solo estado.

4. Cada transición tiene un estado de partida y un estado de llegada. En un ciclo, el estado de

partida coincide con el de llegada.

Page 17: INTRODUCCION AL DISEÑO DE AUTOMATAS FINITOS

Ejemplo

2. El lenguaje que debe aceptar este autómata incluye a la palabra vacía. Eso significa que sin

leer ningún carácter el autómata debe “colocarse” en un estado final que reconozca esta

palabra tan particular. Esto se puede lograr si el estado inicial también es estado final lo que

se representa con el símbolo ± que superindica el estado 0.

-

0a

±

La descripción de la actividad del autómata es:

1) Cadena vacía : 0 →→0+ (reconoce la palabra vacía)

2) Cadena aa: 0 →→ a → 0 →a → 0+ (reconoce a la palabra aa)

Como el alfabeto es {a} este autómata reconocerá cualquier cadena con la que sea alimentado

1. Este autómata tiene un solo estado pero es mas poderoso que

los autómatas con varios estados porque reconoce un lenguaje

infinito.

Page 18: INTRODUCCION AL DISEÑO DE AUTOMATAS FINITOS

Ejemplos

1.Supongamos el lenguaje denotado por la expresión a*b, las tres primeras palabras de este

lenguaje son b, ab y aab.

Para dibujar el Diagrama de Transición hay que tener en cuenta que el autómata debe

funcionar para cualquier cadena que comience con un numero indeterminado de aes y que

termine con una b.

-

0

a

-

-

+1b

Observar la actividad del autómata en el reconocimiento de ciertas palabras del lenguaje y

en el rechazo de algunas cadenas que no pertenecen al lenguaje:

Page 19: INTRODUCCION AL DISEÑO DE AUTOMATAS FINITOS

-0 -

-+1

b

1) Reconocimiento de la palabra b: 0 → b →1+

2) Reconocimiento de la palabra aab: 0 → a → 0 →a →0 →b → 1+

3) Rechazo de la cadena aaba: 0 → a →0 →a →>0 →b → 1 → a → ??

4) Rechazo de la cadena aaa: 0 → a → 0 →a →0 → a→ 0 ( y el estado 0 no es un EF)

5) Rechazo de la cadena baa: 0→b → 1 → a→ ??

a

2. Sea la Expresión Regular a 3 b + , forma abreviada de la expresión aaabb*.

0- 1 2 3 4+

a a a bb

Ejercicio: Describa las actividades de este autómata.

Page 20: INTRODUCCION AL DISEÑO DE AUTOMATAS FINITOS

Ejemplos más complejos. Trabajando con ER Universales

1) Sea la Expresión Regular Universal ( 0 + 1) +. El Autómata finito mas simple que reconoce a

esta expresión es:

0,1

1. La notación 0,1 que etiqueta la única transición de este autómata, un ciclo, simplifica la

existencia de dos transiciones: una etiquetada con el carácter 0 y otra con el símbolo 1.

2. Reconocimiento de la palabra vacía A →→ A +

3. Reconocimiento de la palabra 0: A → 0 →A+

4. Reconocimiento de la palabra 1 1 1 : A →1 →A → 1→A → 1 →A+

5. Reconocimiento de la palabra 01101: A→0 →A→1→A→1→A→0→A→1→A+

Este autómata reconoce a un Lenguaje Universal sobre cierto alfabeto

Page 21: INTRODUCCION AL DISEÑO DE AUTOMATAS FINITOS

NOTA: Si el autómata finito reconoce a un Lenguaje Universal sobre cierto alfabeto ninguna

cadena podrá ser rechazada porque son cadenas formadas por caracteres del mismo alfabeto

2) Sea la Expresión Regular a ( a + b) * c, en la que la Expresión Regular Universal sobre

{a,b,c} es uno de sus factores. El autómata mas simple que reconoce este lenguaje tiene el

siguiente diagrama de transiciones:

10- 2+

a

a,b

c

Este diagrama muestra que :

✓Cualquier palabra reconocida por esta autómata debe comenzar con a ( transición del estado

0 al 1) y que debe terminar con el carácter c ( transición del estado 1 al 2).

✓También se observa que hay un ciclo en el estado 1, transición que solo se llevara a cabo si el

autómata lee una a o si lee una b.

Page 22: INTRODUCCION AL DISEÑO DE AUTOMATAS FINITOS

Descripción de la actividad del autómata:

1) Reconocimiento de la palabra ac (palabra mínima): 0→a → 1 →c → 2+

2) Reconocimiento de la palabra abaac: 0→a →1→b→1→a→1→a→1→c→2+

3) Rechazo de la cadena abb: 0→a → 1→b→1→b →1 (no es un estado final)

4) Rechazo de la cadena vacía: 0→→0 ( no es un estado final)

5) Rechazo de la cadena acc: 0→a→1→c→2→c→??

3) Observe el siguiente ejemplo: el operador clausura actúa sobre una concatenación en la

Expresión Regular (ab)*.

Esta expresión representa al lenguaje que contiene la palabra vacía y toda otra que se forma

con secuencias del par de caracteres ab. Por lo tanto, el autómata finito que implemente a

esta expresión debe reconocer tanto la palabra vacía ( caso particular) como el caso general.

El diagrama de transición es:

10- 2+

a

a,b

c

Page 23: INTRODUCCION AL DISEÑO DE AUTOMATAS FINITOS

0± 1 2+a b

a

Observe el ciclo formado por las transiciones que relaciones el estado 1 y 2

Descripción de la actividad el autómata:

1) Reconocimiento de la palabra vacía: 0→→0+

2) Reconocimiento de la palabra ab: 0→a → 1 → b → 2+

3) Reconocimiento de la palabra abab: 0→a → 1 → b → 2→a → 1 → b → 2+

4) Rechazo de la cadena aba: : 0→a → 1 → b → 2→a→1 ( no es estado final)

5) Rechazo de la cadena abb: : 0→a → 1 → b → 2→b→??

Page 24: INTRODUCCION AL DISEÑO DE AUTOMATAS FINITOS

4) Otro autómata que reconoce a la misma Expresión Regular (ab)* tiene el siguiente

diagrama de transiciones:

0± 1a

b

Ejercicio: Describa la actividad del autómata para las mismas palabras y cadenas del ejemplo

anterior.

El ejemplo siguiente el Autómata Finito reconoce a una expresión regular en la que uno de

sus factores es una clausura.

5) Sea la expresión 1 ( 10)* 0. Un autómata finito que la reconoce tiene el siguiente diagrama

de transiciones:

Page 25: INTRODUCCION AL DISEÑO DE AUTOMATAS FINITOS

A- B

D+

C

11

0

0

Descripción de la actividad:

1. Reconocimiento de la palabra 10 ( palabra mínima) : A→1→B→0→D+

2. Reconocimiento de la palabra 1100: A→1→B→1→C→0 →B →0 → D+

3. Rechazo de la palabra 110: A→1 → B → 1 → C → 0 → B ( no es un estado final)

4. Rechazo de la cadena 01: A→0 → ??

RECORDAR: un Autómata finito reconoce a un Lenguaje Regular cuando acepta cada palabra

del lenguaje y rechaza toda cadena que no es una palabra del lenguaje

1 ( 10)* 0

Page 26: INTRODUCCION AL DISEÑO DE AUTOMATAS FINITOS

Resumen

✓ Los Autómatas Finitos son herramientas abstractas diseñadas para reconocer Lenguajes

Regulares.

✓ Reconocer un Lenguaje significa aceptar las cadenas que pertenecen al lenguaje (palabras) y

rechazar las que no son elementos del mismo.

✓ Todo Autómata Finito tiene un único estado inicial y uno o mas estados finales o de

aceptación.

✓ Cada Autómata Finito puede reconocer un solo Lenguaje Regular.

✓ Un Lenguaje Regular puede ser reconocido por mas de un Autómata Finito

✓ Estado final no significa “ ultimo estado del autómata”.

✓ Todo Autómata Finito se construye sobre un alfabeto que coincide con el alfabeto del

lenguaje que debe reconocer. Un autómata no puede leer caracteres que no pertenezcan a este

alfabeto.

✓ Si el estado inicial es también final, el Autómata finito reconoce la palabra vacía.

✓ El operador clausura de Kleene de una Expresión Regular se implementa mediante un ciclo

en el Autómata Finito.

Page 27: INTRODUCCION AL DISEÑO DE AUTOMATAS FINITOS

Ejercicios:

1.Sea el lenguaje regular finito denotado por la Expresión Regular ab. Este lenguaje

contiene solo la palabra ab. Describa la actividad del autómata cuando lee la cadena abb.

2.Sea la Expresión Regular ab + aab que representa a un Lenguaje Regular con dos

palabras. Dado que ambas palabras comienzan con el carácter a, esta expresión puede

escribirse como : a ( b + ab). Describa la actividad del autómata cuando lee la cadena aab

y aaa.

3. Sea la Expresión Regular a + ab + aab. Describa la actividad del autómata cuando lee la

cadena a.

4. Se construye el Autómata Finito sobre el alfabeto {0,1} que reconoce un lenguaje que

tienen dos palabras. Escriba la Expresión Regular del lenguaje reconocido.

5. Supongamos el lenguaje denotado por la expresión a*b, las tres primeras palabras de

este lenguaje son b, ab y aab. Describa la actividad del autómata cuando lee la cadena

aaba.

Page 28: INTRODUCCION AL DISEÑO DE AUTOMATAS FINITOS

6. Describa el Diagrama de Transiciones de un Autómata finito que reconoce el lenguaje

a*bb.

7. Sea la Expresión Regular a 3 b + , forma abreviada de la expresión aaabb*. Describa sus

actividades para la cadena aaab, aaabbb, aaaba, aab y €.

8. Dibuje el Diagrama de Transiciones de un Autómata finito que reconoce el lenguaje

bba*.

9. Dibuje el Diagrama de Transiciones de un Autómata finito que reconoce el lenguaje

a ( a+ b ) *.