Anda di halaman 1dari 2

Construccin de una e.r.

a partir de un autmata A (el Teorema de Kleene parte II)


Sea A un AFD entonces puede denotarse T(A) en trminos de e.r.
Demostracin:
Sea A=(K, , , q1, F) con K={q1,...,qn}
Definiremos las siguientes expresiones regulares:
ri,jn es una e.r. que denota al siguiente conjunto de cadenas:
L(ri,jn ) = { u / (qi,u)=qj
y
el AFD no pasa por ningn estado qm con m > n al consumir u
excepto posiblemente el primer estado y el ltimo estado }
Es decir, ri,jn denota todas las cadenas u que me llevan de qi a qj pero que son tales que al ir de qi a qj
no pisamos, no atravesamos, no pasamos por ningn estado qm cuyo subndice m sea mayor que n.
Esta restriccin de que m no sea mayor que n no incluye al estado de partida ni al estado de llegada.
Otra forma equivalente de indicar el conjunto de cadenas que denota esta expresin regular es as:
L(ri,jn ) = { es el conjunto de cadenas u=a1a2...apap+1 tales que
(qi,a1)=qj1
(qj1,a2)=qj2
...
(qjp-1,ap)=qjp
(qjp,ap+1)=qj
donde j1,j2,...,jp n }
Fjese que la restriccin j1,j2,...,jp n no afecta al estado de partida qi ni al de llegada qj
Cada L(ri,jn) puede obtenerse de lenguajes -conjuntos de cadenas- finitos a travs de un nmero finito
de aplicaciones de las operaciones , * y . (unin, estrella de Kleene y concatenacin ) permitidas
sobre lenguajes.
La prueba del enunciado se hace por induccin sobre n:
Caso base:
Para n=0 el resultado es evidente puesto que L(ri,j0) es un conjunto finito de cadenas.
L(ri,j0) = { a / (qi,a)=qj } si i j.
L(ri,i ) = { a / (qi,a)=qi } {} si i = j
0

Puesto que cualquier cadena de longitud mayor a 1 atravesar por algn estado cuyo subndice es
mayor que 0 (recuerde que nuestros subndices empiezan en 1).
Es claro que estos son conjuntos finitos de cadenas.
Hiptesis inductiva:
Asumimos que el enunciado es cierto para n=k
Paso inductivo:
Para n=k+1 tenemos esta ingeniosa relacin que prueba lo deseado y que se autoexplica:
L(ri,jk+1) = L(ri,jk ) { L(ri,k+1k) . (L(rk+1,k+1k))*. L(rk+1,jk) }
Finalmente el broche de oro est cuando notamos que
T(A) =
q j F
L(r1,jn)

Slo nos resta probar que para cada L(ri,jn) existe una e.r.
Para n=0
ri,j0 = aj1 + ... + ajm si i j y (qi,ajh)=qj
ri,i0 = aj1 + ... + ajm + si i = j y (qi,ajh)=qi
Y asumiendo que para n=k el enunciado es cierto se tiene
para n=k+1
ri,jk+1 = { ri,jk } + { [ri,k+1k] . (rk+1,k+1k)*. [rk+1,jk] }
donde hemos usado llaves, parntesis y corchetes slo con fines de claridad.
La e.r s para T(A)=L(s) sera as: s = r1,j1n + ... + r1,jhn para todo qji F
La anterior prueba no es otra cosa que un instrumento para hallar T(A) de manera mecnica, en
trminos de expresiones regulares, sin embargo se advierte que la e.r. resultante puede ser muy larga y
se recomienda su simplificacin haciendo uso de las equivalencias ya conocidas.
Ejemplo:
Sea el AFD A=({q1,q2}, {a,b}, , q1, {q1})
:
(q1,a)=q1
(q1,b)=q2
(q2,a)=q1
(q2,b)=q2
T(A)=L(s) donde la e.r. s = r1,12
Cuando se pueda es mejor simplificar las e.r. resultantes a travs de las equivalencias conocidas.
r1,10 = a+
r1,11 = r1,10 + [r1,10].(r1,10)*.[r1,10]
= a+ + [a+](a+)*[a+] = a+{(a+)*[ a+]} = (a+)(a+)* = (a+)* = a*
0
r1,2 = b
r1,21 = r1,20 + [r1,10].(r1,10)*.[r1,20]
= b + [a+](a+)*[b] = {[a+](a+)*}b = {(a+)*}b = a*b
0
r2,1 = a
r2,11 = r2,10 + [r2,10].(r1,10)*.[r1,10]
= a + [a](a+)*[a+] = a{(a+)*[ a+]} = a(a+)* = aa*
r2,20 = b+
r2,21 = r2,20 + [r2,10].(r1,10)*.[r1,20]
= b+ + [a](a+)*[b] = +b + a(a+)*b = + [ + a(a+)*]b = + [+aa*]b = +a*b
r1,1 = r1,11 + [r1,21].(r2,21)*.[r2,11]
2

= a* + [a*b](+a*b)*[aa*] = a* + [a*b](a*b)*[aa*]
= a* + [a*b](a*b)*[ a*a] = a* + a*b (a*b)*a* a = a* + a*b (a+b)* a = a*[+ b(a+b)*a]

Anda mungkin juga menyukai