Teoría de Autómatas y Lenguajes Formales …users.dsic.upv.es/~jsempere/temas/propreg.pdfTeoría...
Transcript of Teoría de Autómatas y Lenguajes Formales …users.dsic.upv.es/~jsempere/temas/propreg.pdfTeoría...
Teoría de Autómatas y Lenguajes Formales
Propiedades de los lenguajes regulares
José M. Sempere
Departamento de Sistemas Informáticos y Computación
Universidad Politécnica de Valencia
Propiedades de los lenguajes regulares
1. Algunos conceptos previos de las propiedades sobre lenguajes.
2. Propiedades de cierre.
3. Propiedades de decisión.
Bibliografía
• John Hopcroft, Jeffrey D. Ullman, Rajeev Motwani.
Introducción a la teoría de autómatas, lenguajes y computación
Addison Wesley, 2002.
• P. García, E. Segarra, T. Pérez, J.M. Sempere, J. Ruiz, M. Vázquez de Parga.
Apuntes sobre la Teoría de Autómatas y Lenguajes Formales. Editorial UPV.
Servicio de Publicaciones SPUPV-96.846. 1996.
Conceptos previos sobre las operaciones sobre lenguajes
Una operación sobre lenguajes es n-aria si toma n elementos como argumentos.
Operaciones 1-arias: Clausura (estrella), Reverso, Clausura positiva,
Homomorfismos, etc.
Operaciones 2-arias (binarias): Unión, Intersección, Producto, etc.
etc.
Una operación n-aria es de cierre para una clase de lenguajes L si el resultado de
aplicar la operación sobre n lenguajes cualesquiera de la clase L proporciona como
resultado un lenguaje de la clase L.
Una operación n-aria de cierre para una clase de lenguajes L es constructiva si
existe un algoritmo que toma como entrada n lenguajes de la clase L en una
representación predefinida y proporciona como salida el lenguaje resultado de
aplicar la operación a los lenguajes de entrada en la representación predefinida.
Nota: En los lenguajes regulares las posibles representaciones serían los autómatas
finitos (no) deterministas, las expresiones regulares o las gramáticas lineales por
la derecha (o por la izquierda)
Previo a las operaciones constructivas:
Cómo obtener un AFD completo equivalente a un AFD arbitrario:
(1) Añadir un nuevo estado no final (estado de absorción o sumidero)
(2) Añadir las transiciones que faltaban en el AFD arbitrario de partida
hacia el nuevo estado
(3) Añadir las transiciones con todos los símbolos del alfabeto desde el
estado sumidero hacia él mismo
Ejemplo
q p
r
a
b a
a
q p
r
a
b a
a
b
b
a,b
s
AFD arbitrario AFD completo equivalente
Previo a las operaciones constructivas:
Cómo obtener un AF con un único estado final equivalente a un AF arbitrario:
(1) Añadir un nuevo estado final
(2) Añadir transiciones vacías desde los antiguos estados finales al nuevo
estado final
(3) Convertir los antiguos estados finales en estados no finales
Ejemplo
q p
r
a
b a
a
q p
r
a
b a
a
s
AF arbitrario AF con un único estado final equivalente
Unión de lenguajes: }:{ 21
*
21 LxLxxLL
Teorema: La unión de dos lenguajes regulares arbitrarios es un lenguaje regular
Sean L1 = L(A1) y L2 = L(A2) siendo A1 y A2 dos AFDs completos (mejor si
con mínimos) con A1 = (Q1,,d1,q1,F1) y A2 = (Q2,,d2,q2,F2)
Definición de un AFD A tal que L(A) = L(A1) L(A2)
A = (Q1Q2, , d, [q1,q2], F1Q2 Q1 F2) donde d([q,p],a)=[ d1(q,a), d2(p,a)]
Ejemplo
qb
b
r
a
sa
a,b
t
b
[q,s]b
a
a
[q,t]
[r,s]
[r,t]
a
ab
b
a
b
Intersección de lenguajes: }:{ 21
*
21 LxLxxLL
Teorema: La intersección de dos lenguajes regulares arbitrarios es un lenguaje regular
Sean L1 = L(A1) y L2 = L(A2) siendo A1 y A2 dos AFDs (mejor si son mínimos
y sin sumideros) con A1 = (Q1,,d1,q1,F1) y A2 = (Q2,,d2,q2,F2)
Definición de un AFD A tal que L(A) = L(A1) L(A2)
A = (Q1Q2, , d, [q1,q2], F1 F2) donde d([q,p],a)=[ d1(q,a), d2(p,a)]
Ejemplo
qb
r
a
sa
a,b
t
b
[q,s]b
a
a
[q,t]
[r,s]
[r,t]
a
a
b
a
Concatenación de lenguajes: }:{ 21
*
21 LyLxxyLL
Teorema: La concatenación de dos lenguajes regulares arbitrarios es
un lenguaje regular
Sean L1 = L(A1) y L2 = L(A2) siendo A1 y A2 dos AFs (no necesariamente
deterministas) con A1 = (Q1,,d1,q1,F1) y A2 = (Q2,,d2,q2,F2)
Definición de un AF A tal que L(A) = L(A1)·L(A2)
A = (Q1Q2, , d, q1,F2) donde d(q,a)=d1(q,a) ( q Q1-F1) (a {}
d(q,a)=d1(q,a) ( q F1) (a )
d(q,)=d1(q,) {q2} ( q F1)
d(q,a)=d2(q,a) ( q Q2) (a {}
qb
r
a
sa
a,b
t
b
a qb
r
aa
sa
a,b
t
b
Ejemplo
Clausura (estrella) de lenguajes: 0
*
i
iLL
Teorema: La clausura de un lenguaje regular arbitrario es un lenguaje regular
Sea L1 = L(A1) siendo A1 un AF (no necesariamente determinista) con
A1 = (Q1,,d1,q1,F1)
Definición de un AF A tal que L(A) = (L(A1))*
A = (Q1{q0}, , d, q0,F1 {q0}) donde d(q,a)=d1(q,a) ( q Q1-F1) (a {}
d(q,a)=d1(q,a) ( q F1) (a )
d(q,)=d1(q,) {q0} ( q F1)
d(q0,)= {q1}
Ejemplo
qb
r
aa q
br
aa
q0
Reverso (inverso) de lenguajes: }:{ * LxxL rr
Teorema: El reverso de un lenguaje regular arbitrario es un lenguaje regular
Sea L1 = L(A1) siendo A1 un AF con un único estado final con A1 = (Q1,,d1,q1,{f})
Definición de un AF A tal que L(A) = (L(A1))r
A = (Q1, , dr, f,{q1} ) donde q dr(p,a) p d1(q,a) ( q,p Q1)( a {})
Ejemplo
qb
r
aab
s
qb
r
aab
s
Complementario de lenguajes: LLxxL ** }:{
Teorema: El complementario de un lenguaje regular arbitrario es un lenguaje
regular
Sea L1 = L(A1) siendo A1 un AFD completo con A1 = (Q1,,d1,q1,F1)
Definición de un AFD A tal que L(A) = *- L(A1)
A = (Q1, , d1,q1,Q1-F1)
Ejemplo
qb
r
aab
s
a,b
qb
r
aab
s
a,b
Diferencia de lenguajes: }:{ 21
*
21 LxLxxLL
Teorema: La diferencia entre dos lenguajes regulares arbitrarios es un
lenguaje regular
2121 LLLL
Dado que la diferencia entre dos lenguajes se puede definir como la intersección
entre el primero y el complementario del segundo, podemos construir una
representación para la operación basándonos en construcciones ya conocidas.
Diferencia simétrica de lenguajes: )()( 122121 LLLLLL
Teorema: La diferencia simétrica entre dos lenguajes regulares arbitrarios es un
lenguaje regular
Dado que la diferencia simétrica entre dos lenguajes se puede definir como la
unión de las diferencias entre cada uno de ellos con el otro, podemos construir
una representación para la operación basándonos en construcciones ya
conocidas.
Homomorfismos:
}:)({)(
*
:
1
*
1
1
*
LwwhLh
L
h
Teorema: Dado un homomorfismo arbitrario y un lenguaje regular arbitrario, el
homomorfismo sobre el lenguaje regular produce un lenguaje regular
Sea el lenguaje L definido sobre el alfabeto y denotado por la expresión regular r.
Tomemos un homomorfismo arbitrario h: *
Podemos definir una expresión regular rh de forma que rh denota h(L). Basta con
sustituir en r cada símbolo a por la cadena h(a) conservando la prioridad de los
operadores.
Ejemplo Sea h(a)=011 y h(b)=
r = a*bb*(a+ab) + b
rh = (011)*(011 + 011) + = (011)*011 + = (011)*
Homomorfismos inversos:
*
:
1
*
L
h
Teorema: Dado un homomorfismo arbitrario y un lenguaje regular arbitrario, el
homomorfismo inverso sobre el lenguaje regular produce un lenguaje
regular
Sea L1 = L(A1) siendo A1 un AFD con A1 = (Q1,,d1,q1,F1)
Definición de un AF A tal que L(A) = h-1(L(A1))
A = (Q1, , dh,q1,F1) donde dh(q,a) = d1(q,h(a)) ( q Q1)( a )
Ejemplo
q1
r
0
0
0
s
q
b
ra
a
b
s
})(:*{)( 11
1 LxhxLh
1
1
Sea h(a)=011 y h(b)=
a
b
Sustituciones:
1
)()(
*
)(:
1
1
*
Lx
xL
L
P
Teorema: Sea una sustitución arbitraria donde para cada símbolo del alfabeto el
resultado es un lenguaje regular y sea L un lenguaje regular arbitrario.
La sustitución sobre el lenguaje regular produce un lenguaje regular.
Sea el lenguaje L definido sobre el alfabeto y denotado por la expresión regular r.
Tomemos una sustitución arbitraria : * de forma que cada lenguaje (a) queda
denotado por una expresión regular ra. Podemos definir una expresión regular r de
forma que r denota (L). Basta con sustituir en r cada símbolo a por la expresión
regular ra conservando la prioridad de los operadores.
Ejemplo Sea ra=(011)* y rb=(10 +1)* +
r = a*b + b
rσ = ((011)*)* [(10 + 1)* + ] + (10 +1)* + = (011)* [(10 + 1)* + ] + (10 +1)* + =
= [(011)* + ] [(10 + 1)* + ] = [(011)*] [(10 + 1)* + ]
Algunas operaciones de cierre no constructivas
Teorema: El cociente por la derecha de un lenguaje regular L2 con un lenguaje
arbitrario L1 da siempre como resultado un lenguaje regular.
Teorema: El cociente por la izquierda de un lenguaje regular L2 con un lenguaje
arbitrario L1 da siempre como resultado un lenguaje regular.
}:{\ 12
*
122
1
1 LuLuvvLLLL
}:{/ 12
*
12
1
12 LuLvuvLLLL
Nota: Si L1 fuera regular entonces la propiedad sería constructiva en ambos casos
Aplicaciones de las operaciones de cierre:
Demostración de no regularidad
Para demostrar que un lenguaje arbitrario L no es regular basta con aplicar sobre
L propiedades de cierre para la clase de los lenguajes regulares y obtener como
resultado un lenguaje NO regular L’. De esta forma, si el lenguaje L fuera regular
no se habría obtenido uno no regular dado el cierre de las operaciones aplicadas.
Ejemplo Demuestre que el lenguaje L={wwr : w {a,b }* } no es regular
Tomemos la intersección L a*bba* = {anbban : n 0 } = L1. A continuación definimos
el homomorfismo h(0) = a, h(1) = a y h(2)=b. Aplicando el homomorfismo inverso sobre
L1 obtenemos h-1(L1) = { {0,1}n22{0,1}n : n 0 } = L2. Aplicamos la intersección
L2 0*221* = { 0n221n : n 0 } = L3. Definimos ahora el homomorfismo g(0) = a, g(1) = b
y g(2) = . Aplicando g sobre L3 obtenemos g(L3) = {anbn : n 0 } = L4.
Dado que el último lenguaje obtenido L4 no es regular, podemos concluir que L tampoco
lo es ya que, si lo fuera, el resultado de aplicar sobre L propiedades de cierre garantiza
que los lenguajes obtenidos serían regulares.
Aplicaciones de las operaciones de cierre:
Demostración de regularidad
Para demostrar que un lenguaje arbitrario L es regular basta con aplicar sobre
lenguaje regulares conocidos propiedades de cierre para la clase de los lenguajes
regulares y obtener como resultado el lenguaje L. De esta forma, si el lenguaje L
no fuera regular no se podría obtener a partir de lenguajes regulares y
operaciones de cierre.
Ejemplo Demuestre que el lenguaje L={wx : w,x {a,b }*, w,x tienen longitud
par} es regular
Tomemos el lenguaje regular denotado por la expresión regular aa. A continuación
definimos la sustitución σ(a) = ((a+b)(a+b))* que denota todas las cadenas de longitud
par sobre el alfabeto {a,b}. Si aplicamos la sustitución sobre la expresión regular
obtenemos σ(aa)=σ(a)σ(a) = L.
Dado que hemos obtenido L como el resultado de aplicar operaciones de cierre sobre
un lenguaje regular, podemos concluir que L también lo es.
Aplicaciones de las operaciones de cierre:
Cierre de nuevas operaciones
Para demostrar que una nueva operación P es de cierre para la clase de los
lenguajes regulares basta con definir P en función de una aplicación finita de
operaciones de cierre para la clase de los lenguajes regulares.
Ejemplo Se define la operación P sobre cadenas del alfabeto {a,b} de la siguiente
forma: “Si la cadena es de longitud par, P cambia los símbolos a por b. Si la
cadena es de longitud impar, P cambia los símbolos b por a”. La operación se
extiende a lenguajes de la forma habitual (P(L) = { P(w) : w L}). Demuestre que P
es una operación de cierre para la clase de los lenguajes regulares.
Definamos el homomorfismo h de forma que h(a) = b y h(b) = b.
Definamos el homomorfismo g de forma que g(a) = a y g(b) = a.
Podemos comprobar que P se puede definir como
P(L) = h(L ((a+b)(a+b))*) g(L ((a+b)(a+b))*(a+b))
Dado que hemos definido P a partir de un número finito de operaciones de cierre para
la clase de los lenguajes regulares (intersección, homomorfismos y unión), podemos
concluir que P es de cierre para la clase de los lenguajes regulares.
Propiedades de decisión
Diremos que una cuestión de decisión es decidible para una clase de lenguajes Lsi existe un algoritmo que la resuelve. En caso contrario diremos que la cuestión
es indecidible.
Algunas cuestiones de decisión relacionadas con los autómatas finitos
1. La cuestión de la vacuidad: ¿ L(A1) ?
2. La cuestión de la (in)finitud: ¿ card(L(A1)) = ?
3. La cuestión de la pertenencia: ¿ w L(A1) ?
4. La cuestión de la equivalencia: ¿ L(A1) = L(A2) ?
Consideraremos que A1 y A2 son dos autómatas finitos deterministas arbitrarios. En
caso de que no lo fueran, obtendríamos sus correspondientes AFDs equivalentes. A
continuación consideraremos que w es una cadena arbitraria y que card denota la
cardinalidad de un conjunto (en este caso un lenguaje).
Teorema: Las siguientes cuestiones son decidibles:
Un algoritmo de decisión para la cuestión de la vacuidad
La cuestión de la vacuidad: ¿ L(A1) ?
Entrada: A1, un autómata finito determinista.
Salida: SI o NO
Método:
(1) Eliminar de A1 los estados no alcanzables desde el estado
inicial.
(2) Si en el autómata resultante existen estados finales
output(SI)
sino
output(NO)
Un algoritmo de decisión para la cuestión de la (in)finitud
Entrada: A1, un autómata finito determinista.
Salida: SI o NO
Método:
(1) Eliminar de A1 los estados no alcanzables desde el estado
inicial.
(2) Minimizar el anterior AFD resultante.
(3) Eliminar del AFD mínimo el estado sumidero (si lo hubiera)
(4) Si en el AFD resultante existen ciclos o bucles*
output(SI)
sino
output(NO)
La cuestión de la (in)finitud: ¿ card(L(A1)) = ?
*El establecimiento de la existencia de bucles o ciclos se puede resolver
mediante algoritmos conocidos de la teoría de grafos aplicados sobre el
diagrama de transiciones del autómata
Un algoritmo de decisión para la cuestión de la pertenencia
Entrada: A1, un autómata finito determinista y w una cadena arbitraria.
Salida: SI o NO
Método:
(1) Comenzando desde el estado inicial aplicar las transiciones
existentes en el AFD de acuerdo con los símbolos de la cadena w.
(2) Si no se puede completar las transiciones (el AFD es incompleto)
output(NO)
sino
Si el último estado de llegada es final o de aceptación
output(SI)
sino
output(NO)
La cuestión de la pertenencia: ¿ w L(A1) ?
Un algoritmo de decisión para la cuestión de la equivalencia
La cuestión de la equivalencia se puede reducir a la cuestión de la
vacuidad aplicando operaciones de cierre ya conocidas.
La cuestión de la equivalencia: ¿ L(A1) = L(A2) ?
])))()(())()([(()]()([ 212121 ALALALALALAL