Está en la página 1de 6

Instituto Politécnico Nacional

Escuela Superior de Cómputo

Práctica 2 Autómatas finitos


Teoría Computacional

𝜑
Profesora: Luz María Sánchez García
Alumno: Hernández Reséndiz Brandon Iván
Boleta: 2018630101
Fecha de entrega: marzo 16, 2019
Introducción
Una vez analizada la estructura de una expresión regular, es posible hacer una representación gráfica de esta
mediante el uso de los autómatas finitos, esto en orden a contar con un modelo matemático que defina de
manera más formal el comportamiento de nuestra expresión regular.

Los autómatas se conforman por estados y transiciones (f1.a), los estados se representan mediante círculos,
los cuales son regularmente designados con números enteros partiendo del cero. Un estado inicial se denota
con un triángulo o una flecha y el/los estados finales mediante un circulo dentro de otro. Las transiciones son
curvas o rectas las cuales unen a los estados, sobre estas se indica la función de transición.

El cambio de estados mediante transiciones, se da a través de una función de transición (f.1.b), la cual, dado
un símbolo del lenguaje, si este es válido dentro de la expresión “permite” a la cadena avanzar a su siguiente
estado correspondiente.

f.1.a. Representación de estados y transiciones f.1.b. Función de transición

Estos estados y transiciones definen el camino de una cadena a lo largo del autómata. Sí dicha cadena logra
llegar de un estado inicial a un final, pasando entre estos estados mediante sus respectivas transiciones,
decimos que la cadena es aceptada por el autómata y por lo tanto pertenece a un lenguaje especifico, el cual
podría estar descrito por una expresión regular.

Existen dos tipos de autómatas los autómatas finitos no deterministas (AFND) y los autómatas finitos
deterministas (AFD). La diferencia primordial que encontramos entre estos es que, en un AFND, es posible
estar en más de un estado a la vez.

Ejemplo de AFND[1]
Dada la siguiente expresión regular: [0|1]*01, el AFND correspondiente es:
Observamos que la expresión regular acepta cualquier cadena conformada por ceros y unos precedida por la
cadena 01. En el autómata la primera parte está representada por la transición recursiva en el estado inicial y
las segunda por las transiciones a los estados q1 y q2 con 0 y 1 como función de transición, respectivamente.

Método Thompson
A la hora de construir un autómata que represente el comportamiento de una expresión regular o el de un
lenguaje en particular, se puede generar de distintas formas. Una manera de obtener un autómata más
específico o estandarizado, es mediante el método de Thompson, el cual hace uso de transiciones con la
cadena vacía épsilon 𝜀 (o 𝜆) y de un par de reglas para el uso de cerraduras y operaciones sobre las cadenas,
para construir los autómatas.

A continuación, se muestran la forma de implementar ciertas expresiones haciendo uso del método de
Thompson. Se utilizará el alfabeto 0,1 para ello.

Expresión regular AFND

0 Transición

10 Concatenación

0|1 Or

0∗ Cerradura de kleen

1+ Cerradura positiva

0? Cerradura opcional

Construcción de una AFND mediante Thompson


Considerando la expresión regular de la práctica 1 (expresión que válida números enteros y decimales), se
construye el autómata correspondiente haciendo uso del método de Thompson. Dicha construcción se hace
por partes obedeciendo a los casos que la conforman y mediante el uso del software JFLAP (v.7.1).

Recordando la expresión regular, tenemos:

([-]?[1-9]+[0-9]*[.][0-9]+)|([-][0][.][0-9]+)|([0]?[.][0-9]+)|([-]?[1-9]+[0-9]*)|[0]

Como ya se ha analizado, la expresión regular que valida numero enteros y decimales, positivos y negativos,
consta de cinco casos incluyendo al cero como cadena valida. Cada uno de estos caminos los podemos
representar mediante un ANFD por caso, y unirlos en un solo OR para formar el autómata correspondiente a
la expresión regular. Designaremos cada caso con las letras A,B,C,D,E.
Nota: Los rangos indicados en las transiciones de los casos individuales son solo ilustrativos, dado que el software no permite la expresión
de rangos. En la implementación final se hace uso de múltiples transiciones, la cuales se ven reflejadas en la pila de números,
correspondientes a los rangos, sobre la flecha de transición.

Caso A
Corresponde al fragmento de la expresión regular que valida los números decimales negativos o positivos. El
autómata constará de una cerradura opcional, cerradura positiva, cerradura kleen, un punto y los rangos de
números [0-9] y [1-9].

([-]?[1-9]+[0-9]*[.][0-9]+)

Caso B

Esta parte de la expresión acepta números decimales menores a 1 negativos. Dicha expresión consta del
signo menos (-), el número cero, un punto decimal y el rango [0-9].
([-][0][.][0-9]+)

Caso C

Acepta números decimales positivos con o sin cero a la izquierda del punto.

([0]?[.][0-9]+)

Caso D

Este caso de la expresión válida números enteros negativos o positivos, siempre y cuando no exista un cero
como primera cifra. Se conforma por el signo menos y los rangos [1-9] y [0-9].

([-]?[1-9]+[0-9]*)
Caso E

La expresión regular acepta el digito 0.

[0]

Dados los casos anteriores, se agrega un estado inicial con 5 transiciones de cadena vacía (siguiendo la regla
OR de Thompson) a cada uno de estos casos y después un estado común, seguido del estado final
resultando en el siguiente autómata.

Pruebas
Para comprobar el funcionamiento del autómata, se utilizó la función multiple run de JFLAP, como se
muestra en la siguiente figura.
Aceptadas
Rechazadas
En conclusión, los autómatas finitos no deterministas nos proporcionan una herramienta de análisis del
comportamiento de una expresión regular o lenguaje, pues a través de estos se facilita el seguimiento paso a
paso del recorrido de una cadena a lo largo de las opciones y combinaciones posibles de símbolos que suponen
un lenguaje, y por supuesto de una forma estandarizada en el caso de los autómatas desarrollados con el
método de Thompson. Aunado a lo anterior, software como JFLAP permite un análisis más a fondo gracias a
sus herramientas como el “trace”, el cual nos brinda información detallada del recorrido de una cadena.

Referencias y bibliografía
James A. Anderson (2006). Automata theory with modern aplications. Cambridge university press.

Autómata finito. (2019, 23 de enero). Wikipedia, La enciclopedia libre.


https://es.wikipedia.org/wiki/Aut%C3%B3mata_finito

También podría gustarte