Teoría de Autómatas y Lenguajes Formales …users.dsic.upv.es/~jsempere/temas/propreg.pdfTeoría...

Post on 08-Jun-2018

247 views 0 download

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