Está en la página 1de 5

Apunte de Compiladores 1 Autómatas Finitos No Deterministas

UNIVERSIDAD DE MAGALLANES
FACULTAD DE INGENIERÍA
DEPARTAMENTO DE COMPUTACIÓN

AUTÓMATAS FINITOS NO
DETERMINISTAS
Elaborado el Martes 31 de Julio de 2004

I.- AUTÓMATAS
(extraído de “Compiladores: Principios, técnicas y Herramientas”, Aho, Sethi y Ullman)

Un reconocedor de un lenguaje es un programa que toma como entrada una


cadena x y responde “sí” si x es una frase del programa, y “no”, si no lo es. Se
compila una expresión regular en un reconocedor construyendo un diagrama de
transiciones generalizado llamado autómata finito. Un autómata finito puede ser
determinista o no determinista, donde “no determinista” significa que en un estado
se puede dar el caso de tener más de una transición para el mismo símbolo de
entrada.

Frase de
Entrada Sí o No
AUTÓMATA

Tanto los autómatas finitos deterministas como los no deterministas pueden


reconocer con precisión a los conjuntos regulares. Por tanto ambos pueden
reconocer con precisión lo que denotan las expresiones regulares. Sin embargo
hay un conflicto entre espacio y tiempo; mientras que un autómata finito
determinista puede dar reconocedores más rápidos que uno no determinista, un
autómata finito determinista puede ser mucho mayor que un autómata no
determinista equivalente.

Universidad de Magallanes Julio Águila


Apunte de Compiladores 2 Autómatas Finitos No Deterministas

II.- AUTÓMATAS FINITOS NO DETERMINISTAS


(extraído de “Compiladores: Principios, técnicas y Herramientas”, Aho, Sethi y Ullman)

Un autómata finito no determinista (abreviado, AFN) es un modelo matemático


formado por:

1. Un conjunto de estados S.
2. Un conjunto de símbolos de entrada Σ (el alfabeto de símbolos de entrada).
3. Una función de transición mueve() (denotada por ∆) que transforma pares
estado-símbolo en conjuntos de estados. (∆: S x Σ  S)
4. Un estado s0 que se considera el estado de inicio (o estado inicial).
5. Un conjunto de estados F considerados como estados de aceptación (o
estados finales).

Un AFN se puede representar diagramáticamente mediante un grafo dirigido


etiquetado, llamado grafo de transiciones, en el que los nodos son los estados y
las aristas etiquetadas representan la función de transición. Este grafo se parece
a un diagrama de transiciones, pero el mismo carácter puede etiquetar dos o más
transiciones fuera de un estado, y las aristas pueden etiquetarse con el símbolo
especial ε y con símbolos de entrada.

Sea entonces M un AFN, tal que M = {S, Σ, ∆, s, F} donde:

S = {0,1,2,3}
Σ = {a,b}
∆ = {{0, a, {0,1}}, {0, b, {0}}, {1, b, {2}}, {2, b, {3}}}
s = {0}
F = {3}

Define el siguiente grafo de transiciones:


a

Inicio a b b
0 1 2 3

Universidad de Magallanes Julio Águila


Apunte de Compiladores 3 Autómatas Finitos No Deterministas

Cuando se describe un AFN, se utiliza la representación de grafo de transiciones.


En un computador, puede aplicarse la función de transición de un AFN de varias
formas. La implantación más sencilla es una tabla de transiciones en donde hay
una fila por cada estado y una columna por cada símbolo de entrada y ε, si es
necesario.

Símbolo de Entrada
Estado
a b
0 {0,1} {0}
1 - {2}
2 - {3}

La representación en forma de tabla de transiciones tiene la ventaja de que


proporciona rápido acceso a las transiciones de un determinado estado en un
carácter dado; su inconveniente es que puede ocupar gran cantidad de espacio
cuando el alfabeto de entrada es grande y la mayoría de las transiciones son hacia
el conjunto vacío.

Un AFN acepta una cadena de entrada x si, y sólo sí, hay algún camino en el grafo
de transiciones desde el estado de inicio a algún estado de aceptación, de forma
que las etiquetas de las aristas a lo largo de dicho camino deletreen x. Se puede
representar un camino mediante una secuencia de transiciones llamada
movimientos. El siguiente diagrama muestra los movimientos para dos cadenas
de entrada; primero aabb, luego aaba.

a a b b
00123

a a b a
00000

En general puede haber más de una secuencia de movimientos que conduzca a


un estado de aceptación. Obsérvese que pueden realizarse otras secuencias de
movimientos en la cadena de entrada aabb, pero ocurre que ninguna de dichas
secuencias termina en un estado de aceptación.

a a b b
00000

El lenguaje definido por un AFN es el conjunto de cadenas de entrada que acepta.

El siguiente grafo de transiciones reconoce aa*|bb*. La cadena aaa es aceptada


recorriendo los estados 0, 1, 2, 2, y 2. Las etiquetas de estas aristas son ε, a, a y
a, cuya concatenación es aaa. Obsérvese que los símbolos ε “desaparecen” en
una concatenación.

Universidad de Magallanes Julio Águila


Apunte de Compiladores 4 Autómatas Finitos No Deterministas

a
1 2

b
Inicio
0

ε
b
3 4

aaa se reconoce mediante:

ε a a a
01222

III.- EJERCICIOS PROPUESTOS

Dibuje los grafos de transiciones para las siguientes expresiones regulares.


Muestre la secuencia de movimientos realizada para procesar la cadena de
entrada ababbab:

1. (ab)*
2. (ba)*
3. ε
4. (a|b)*
5. (a*|b*)*
6. ((ε|a)b*)*
7. (a|b)*abb(a|b)*

Cuáles de las siguientes cadenas son aceptadas por el AFN:

1. aa
2. aba
3. abb
4. ab
5. abab

Universidad de Magallanes Julio Águila


Apunte de Compiladores 5 Autómatas Finitos No Deterministas

Inicio a b a
0 1 2 3

b ε
a b

b
4 5

Cuáles de las siguientes cadenas son aceptadas por el AFN:

1. ba
2. ab a
3. bb
4. b
5. bba

Inicio b b
0 1 2

a
3 4

Universidad de Magallanes Julio Águila

También podría gustarte