Vous êtes sur la page 1sur 5

Scientia et Technica Ao XIII, No 2, Abril de 2011. Universidad Tecnolgica de Pereira.

ISSN 0122-1701 1

Fecha de Recepcin:
Fecha de Aceptacin:
ELIMINACIN DE _TRANSICIONES EN AUTMATAS FINITOS NO DETERMINISTAS
Elimination of _ transition in nondeterministic finite automaton

RESUMEN
Al momento de reconocer un lenguaje regular por medio de un Autmata Finito
(AF), la forma ms fcil de construir tal AF en la mayora de los casos, es
utilizando los Autmatas Finitos No Determinista con _transiciones (AFND-)
para reconocer dicho lenguaje, sin embargo los AFND- tienen un gran coste
computacional, por lo tanto es recomendable eliminar tales _transiciones para
obtener un mejor rendimiento.

PALABRAS CLAVES: AFD, AFND, Autmata, computacional, lenguaje,
transicin.

ABSTRACT
When we need recognize a regular language by a Finite Automaton (FA), the
easiest way to build the FA in most cases is to use nondeterministic finite
automaton with _transitions (NFA-) to recognize that language, however, the
NFA- have a large computational cost, therefore it is advisable to remove such
_transitions for a better performance.

KEYWORDS: Automaton, computational, DFA, NFA, language, transition.
LUIS MIGUEL ALVAREZ A.
Ing. de Sistemas y Computacin
Universidad Tecnolgica de Pereira
luigui2.1@hotmail.com






1. INTRODUCCIN

Los Autmatas Finitos No Deterministas con
_transiciones (AFND-) son autmatas que pueden
realizar una transicin sin procesar ningn smbolo de
entrada, dicha transicin se denota con una (lambda),
aunque esta tambin se conoce como transicin nula o
transicin (psilon) (ver ejemplo Figura 1, se puede
llegar a cualquier estado sin utilizar ningn smbolo de
entrada), estas transiciones le dan una gran capacidad al
autmata, si se tiene _transiciones el autmata puede
quedarse donde est o cambiar de estado, por tanto se
puede interpretar que se puede estar en varios estados a la
vez, generando una ramificacin de posibilidades en
algn momento dado.


Figura 1. Autmata Finito No Determinista con _transiciones.

Tal capacidad del AFND- de estar en varios estados
simultneamente, genera gran complejidad
computacional, dicha complejidad en un Autmata
Finito(AF) de tamao reducido no es un gran problema,
pero al crecer el tamao del AF la complejidad se vuelve
demasiado grande, generando un rendimiento muy pobre,
por lo tanto se debe de eliminar las _transiciones del
AFND- y llevarlo a la forma de un AFND sin
_transiciones, para despus de transformarlo en un
AFD, o en el mejor de los casos transformarlo a un AFD
directamente.

Para lograr eliminar _transiciones, se desarrollaran
varios algoritmos, que recibirn como entrada un AFND-
y generar un AFND sin _transiciones equivalente y
otro que genera directamente a un nuevo AFD,
ahorrndose la transformacin de AFND a AFD.

2. CONTENIDO

2.1 Definiciones Bsicas

Definicin: Sea un Autmata finito (AF) M una 5-tupla,
M=(Q, , s, F, ), donde:
Q es un conjunto de estados.
es un alfabeto finito.
s es el estado inicial (s Q)
F es el conjunto de estado de aceptacin (F Q)
es la funcin o relacin de transicin
(:_Q_x_*Q)

Esta es la forma generalizada del AF, que ser la base de
siguientes definiciones.

Definicin: Sea un Autmata Finito Determinista (AFD),
M=(Q, , s, F, ), donde es la funcin de transicin
:_Q_x_Q

Definicin: Sea un Autmata Finito No Determinista
(AFND) M==(Q, , s, F, ), donde es la relacin de
transicin :_Q_x_Q

Scientia et Technica Ao XIII, No x, Mes de 200x. Universidad Tecnolgica de Pereira.


2
Definicin: Sea un Autmata Finito No Determinista con
_transiciones (AFND-), M==(Q, , s, F, ), donde
es la relacin de transicin :_Q_x_*Q

Definicin: Para q Q y

(q, )={|


} , pQ
La generalizacin de para un conjunto de estados:
({q
0
,q
1
,q
2
,..,q
n
}, ) =

(q
k
, )

Definicin: Para todo estado q Q, la _cerradura de q
se define como:
_c(q) = {|


} , pQ
Caso especifico:
_c() = {}
La generalizacin de _cerradura para un conjunto de
estados:
_c({q
0
,q
1
,q
2
,,q
n
}) =

_c(q
k
)


2.2 Desarrollo de ejemplos

Para el desarrollo de los diferentes mtodos para eliminar
las _transiciones, se propone el siguiente ejemplo:

Sea un AFND-, M=(Q, , s, F, ), donde:
Q={q0, q1, q2, q3, q4, q5}
={a, b}
s=q
0

F={q2, q4}
Relacin :_Q_x_*Q (definida en la Tabla
1)
a b
q0 {} {} {q1}
q1 {q1} {} {q2}
q2 {q3} {q5} {q0}
q3 {q3} {} {}
q4 {q0, q4} {q5} {}
q5 {q4} {q3} {}
Tabla 1. Relaciones del AFND-

Representado grficamente (Ver Figura 2):

Figura 2. Representacin grafica del AFND-


2.2.1 Algoritmo 1: Transformacin de AFND- a
AFND

Definicin: Sea q Q y , se define la clave para la
eliminacin de _transiciones:
( (()

))


Donde la clave se resuelve desde adentro hacia afuera.

Algoritmo
Sea un AFND-, M=(Q, , s, F, ):

1. Inicializar Q=Q, F=F, ={}, s=s
2. Si {F _c(s)} {}
3. entonces F = F {q0}
4. Para cada elemento de Q, A Q
5. _c((_c(A), 1) = A1
6. _c((_c(A), 2) = A2
7.
8. _c((_c(A), n) = An
9. Aadir a , una relacin por cada elemento
de cada subconjunto Ak {A1,A2,,An}.

Ejemplo
Aplicando el siguiente algoritmo, con el ejemplo que se
propuso anteriormente:

Q={Q}, F={F}, ={}, s=s
_c((_c(q0), a) = {q0, q1, q2, q3}
_c((_c(q0), b) = {q5}
: Ver tabla 2
a b
q0 {q0, q1, q2, q3} {q5}
Tabla 2.

_c((_c(q1), a) ={q0, q1, q2, q3}
_c((_c(q1), b) ={q5}
: Ver tabla 3
a b
q0 {q0, q1, q2, q3} {q5}
q1 {q0, q1, q2, q3} {q5}
Tabla 3.

_c((_c(q2), a) ={q0, q1, q2, q3}
_c((_c(q2), b) ={q5}
: Ver tabla 4
a b
q0 {q0, q1, q2, q3} {q5}
q1 {q0, q1, q2, q3} {q5}
q2 {q0, q1, q2, q3} {q5}
Tabla 4.

_c((_c(q3), a) ={q3}
_c((_c(q3), b) ={}
: Ver tabla 5

Scientia et Technica Ao XIII, No x, Mes de 200x. Universidad Tecnolgica de Pereira.

3



a b
q0 {q0, q1, q2, q3} {q5}
q1 {q0, q1, q2, q3} {q5}
q2 {q0, q1, q2, q3} {q5}
q3 {q3} {}
Tabla 5.

_c((_c(q4), a) ={q0, q1, q2, q4}
_c((_c(q4), b) ={q5}
: Ver tabla 6
a b
q0 {q0, q1, q2, q3} {q5}
q1 {q0, q1, q2, q3} {q5}
q2 {q0, q1, q2, q3} {q5}
q3 {q3} {}
q4 {q0,q1, q2, q4} {q5}
Tabla 6.

_c((_c(q5), a) ={q4}
_c((_c(q5), b) ={q3}
: Ver tabla 7
a b
q0 {q0, q1, q2, q3} {q5}
q1 {q0, q1, q2, q3} {q5}
q2 {q0, q1, q2, q3} {q5}
q3 {q3} {}
q4 {q0,q1, q2, q4} {q5}
q5 {q4} {q3}
Tabla 7.

Al recorrer todos los estados de Q, entonces se da por
terminado el algoritmo, por lo que tendremos como
resultado un AFND, M==(Q, , s, F, ), donde:
Q={q0, q1, q2, q3, q4, q5}
={a, b}
s=q
0

F={q2, q4}
Relacin :_Q_x_*Q (definida en la Tabla
8)
a b
q0 {q0, q1, q2, q3} {q5}
q1 {q0, q1, q2, q3} {q5}
q2 {q0, q1, q2, q3} {q5}
q3 {q3} {}
q4 {q0,q1, q2, q4} {q5}
q5 {q4} {q3}
Tabla 8. Relaciones del AFND.

Representado grficamente por (ver Figura 3)

Figura 3. Representacin grafica del AFND.



2.2.2 Algoritmo 2: Transformacin de AFND- a
AFD

Definicin: Sea el estado P Q, sin marcar por defecto,
pero P una vez marcado no se tendr en cuenta en las
siguientes iteraciones. En el seguimiento del algoritmo,
denotaremos los estados como ya marcados con
subrayado ({P}).

Algoritmo
Sea un AFND-, M==(Q, , s, F, ):

1. Inicializar Q={}, F={}, ={}
2. p0 = _c(s)
3. Q= Q {p0}
4. s= p0
5. Si {F p0} {}
6. entonces F = F {p0}
7. Repita hasta que no existan estados sin marcar
8. Si A no est marcado, A Q,
9. Marcar a A
10. _c((A, 1)) = A1
11. _c((A, 2)) = A2
12.
13. _c((A, n)) = An
14. Aadir a A1,A2,...,An al conjunto Q (sin
marcar) si no existen
15. Si en algn estado nuevo contiene algn
elemento de F
16. Aadir el estado a F
17. Aadir las nuevas funciones a
18. (A, 1) = A1
19. (A, 2) = A2
20.
21. (A, n) = An

Con lo que dar como resultado un nuevo AFD, dado
por:
M=(Q, , s, F, )



Scientia et Technica Ao XIII, No x, Mes de 200x. Universidad Tecnolgica de Pereira.


4
Ejemplo
Aplicando el siguiente algoritmo, con el ejemplo que se
propuso anteriormente:

Q={}, F={}, ={}
_c(s)={q0, q1, q2} = p0
Q={p0}
s=p0
Como en Q esta p0 sin marcar
A=p0
_c((A, a)) = {q0, q1, q2, q3} = p1
_c((A, b)) = {q3} = p2
Q = {p0, p1, p2}
F = {p0, p1}
: Ver tabla 9
a b
p0 p1 p2
Tabla 9.

Como en Q esta p1 sin marcar
A=p1
_c((A, a)) = {q0, q1, q2, q3} = p1
_c((A, b)) = {q5} = p3
Q = {p0, p1, p2, p3}
F = {p0, p1}
: Ver tabla 10
a b
p0 p1 p2
p1 p1 p3
Tabla 10.

Como en Q esta p2 sin marcar
A=p2
_c((A, a)) = {q4 } = p4
_c((A, b)) = {q3} = p5
Q = {p0, p1, p2, p3, p4, p5}
F = {p0, p1, p4}
: Ver tabla 11
a b
p0 p1 p2
p1 p1 p3
p2 p4 p5
Tabla 11.

Como en Q esta p3 sin marcar
A=p3
_c((A, a)) = {q4 } = p4
_c((A, b)) = {q3} = p5
Q = {p0, p1, p2, p3, p4, p5}
F = {p0, p1, p4}
: Ver tabla 12
a b
p0 p1 p2
p1 p1 p3
p2 p4 p5
p3 p4 p5
Tabla 12.

Como en Q esta p4 sin marcar
A=p4
_c((A, a)) = {q0, q1, q2, q4 } = p6
_c((A, b)) = {q5} = p3
Q = {p0, p1, p2, p3, p4, p5, p6}
F = {p0, p1, p4, p6}
: Ver tabla 13
a b
p0 p1 p2
p1 p1 p3
p2 p4 p5
p3 p4 p5
p4 p6 p3
Tabla 13.

Como en Q esta p5 sin marcar
A=p5
_c((A, a)) = {q3} = p5
_c((A, b)) = {}
Q = {p0, p1, p2, p3, p4, p5, p6}
F = {p0, p1, p4, p6}
: Ver tabla 14
a b
p0 p1 p2
p1 p1 p3
p2 p4 p5
p3 p4 p5
p4 p6 p3
p5 p5
Tabla 14.

Como en Q esta p6 sin marcar
A=p6
_c((A, a)) = {q0, q1, p2, q3, q4} = p7
_c((A, b)) = {q5} = p3
Q = {p0, p1, p2, p3, p4, p5, p6, p7}
F = {p0, p1, p4, p6, p7}
: Ver tabla 15
a b
p0 p1 p2
p1 p1 p3
p2 p4 p5
p3 p4 p5
p4 p6 p3
p5 p5
p6 p7 p3
Tabla 15.

Como en Q esta p7 sin marcar
A=p7
_c((A, a)) = {q0, q1, p2, q3, q4} = p7
_c((A, b)) = {q5} = p3
Q = {p0, p1, p2, p3, p4, p5, p6, p7}
F = {p0, p1, p4, p6, p7}
: Ver tabla 16



Scientia et Technica Ao XIII, No x, Mes de 200x. Universidad Tecnolgica de Pereira.

5
a b
p0 p1 p2
p1 p1 p3
p2 p4 p5
p3 p4 p5
p4 p6 p3
p5 p5
p6 p7 p3
p7 p7 p3
Tabla 16.

Como en Q no hay ms estados sin marcar, se da por
terminado el algoritmo, entonces tendremos como
resultado un AFD:
M==(Q, , s, F, ), donde:
Q={ p0, p1, p2, p3, p4, p5, p6, p7}
={a, b}
s=q
0

F={ p0, p1, p4, p6, p7}
Funcin :_Q_x_Q (definida en la Tabla
17)
a b
p0 p1 p2
p1 p1 p3
p2 p4 p5
p3 p4 p5
p4 p6 p3
p5 p5
p6 p7 p3
p7 p7 p3
Tabla 17.

Representado grficamente por (ver Figura 4)

Figura 4. Representacin grafica del AFD





3. CONCLUSIONES Y RECOMENDACIONES

Despus de haber descrito los dos procedimientos, que se
desarrollaron paso a paso para eliminar las _transiciones
del AFND- propuesto, donde nos genera en cada uno de
los mtodos unos AF sin estas transiciones nulas, en el
caso del Algoritmo 1, nos genera un AFND sin
_transiciones, en el segundo, nos genera directamente
un AFD, este algoritmo tiene la peculiaridad de que nos
ahorra la necesidad de usar otro mtodo para quitar el
indeterminismo del autmata que es necesario en el
resultado del Algoritmo1 en el caso de que se quiera
obtener un AFD. Cabe destacar que al utilizar algn
algoritmo para pasar de AFND a AFD tienen una
complejidad alta.



4. BIBLIOGRAFA

[1] Pedro Garca, Toms Prez, Jos Ruiz, Encarna,
Segarra, Jos M. Sempere, y Manuel Vsquez
de Parga, Teora de Autmatas y Lenguajes
Formales, Alfaomega, Captulo 2, pginas 46-
48, 2001.
[2] Nicols Kovac Neumann, Teora de Autmatas
y Lenguajes Formales, paginas 36-38, 2005,
[Online].
Available:
http://es.scribd.com/doc/48305961/Automatas-
y-lenguajes
[3] Marcelo Silva, Teora de Lenguajes, pginas
14-17, 2004, [Online].
Available:
http://es.scribd.com/doc/30735538/Teorico-
TeoLeng-2004
[4] Luis M. Pardo, Domingo Gmez, Teora de
Autmatas y Lenguajes Formales (para
Informticos), Universidad de Cantabria,
pginas 44-46, 2010.
[5] Gertjan Van Noord, Treatment of epsilon moves
in subset construction, COLI - Computational
Linguistics, vol. 26, 2000.

Vous aimerez peut-être aussi