Lenguajes Regulares
Los lenguajes regulares se llaman así porque sus palabras
contienen “regularidades” o repeticiones de los mismos
componentes,
Como por ejemplo en el lenguaje siguiente:
L1 = {ab, abab, ababab, abababab, . . .}
son simplemente repeticiones de “ab” cualquier numero de
veces.
Otros ejemplos…
L2 = {abc, cc, abab, abccc, ababc, . . .}
sus palabras comienzan con repeticiones de “ab”,
seguidas de repeticiones de “c”. definir lenguajes
basados en la idea de repetir esquemas simples.
Esta es la idea básica para formar los lenguajes
Regulares.
los lenguajes finitos son también regulares por definición.
L3 = {anita, lava, la, tina} es regular.
al combinar lenguajes regulares uniéndolos o
concatenándolos, también se obtiene un lenguaje regular.
L1 ∪ L3 = {anita, lava, la, tina, ab, abab, ababab,
abababab, . . .} es regular.
También es regular una concatenacion como :
L3L3 = {anitaanita,anitalava, anitala, anitatina, lavaanita,
lavalava, lavala, lavatina, . . .}1
o Podemos identificar que un lenguaje es regular si cumple con las siguientes condiciones
L es finito;
L es la unión o la concatenación de otros lenguajes regulares R1 y R2, L = R1 ∪ R2 o
L = R1R2 respectivamente.
L es la cerradura de Kleene de algún lenguaje regular, L = R∗lenguaje que contiene todas las cadenas que son posibles de formarsobre
Expresiones Regulares
Sea Σ un alfabeto. El conjunto ER de las expresiones regulares sobre Σ contiene las cadenas en el alfabeto Σ∪ {“∧”, “+”, “•”, “∗”, “(”, “)”, “Φ”} que cumplen con lo siguiente:
“∧” y “Φ” ∈ ER
Si σ ∈ Σ, entonces σ ∈ ER.
Si E1, E2 ∈ ER, entonces “(”E1“+”E2“)” ∈ ER, “(”E1“•”E2“)” ∈ ER, “(”E1“)∗” ∈ ER.
Las comillas “ ” enfatizan el hecho de que estamos definiendo cadenas de texto, no expresiones matemáticas.
ER
Las ER son simplemente formulas cuyo propósito es representar cada
una de ellas un lenguaje. Así, el significado de una ER es
simplemente el lenguaje que ella representa.
Por ejemplo, la ER “Φ” representa el conjunto vacío {}.
Ejemplos.-
Son ER en {a, b, c} las siguientes:
“a”, “((a+b))∗”, “((a•b)•c)”.
No son ER:
“ab”, “((a • b(c)∗)”.
Una palabra “empata” con una expresión regular si es
parte del lenguaje que esta representa.
La palabra vacía ε “empata” con la ER ∧
Una palabra de una letra como “a” empata con una ER
consistente en la misma letra “a”, “b” empata “b”, etc.
Metodología de diseño de las
ER
Al tratar de encontrar una ER para un
lenguaje dado, mientras mas complejo sea
el lenguaje es obvio que resulta mas difícil
encontrar por pura intuición dicha ER. En
estos casos puede ser conveniente trabajar
en forma metódica.
Ejemplo.- Obtener una ER para el lenguaje en el alfabeto {a, b, c} en que las palabras contienen exactamente una vez dos b contiguas. Por ejemplo, las palabras aabb, babba, pertenecen al lenguaje, pero no aaba, abbba ni bbabb.
Para resolver este problema, expresamos primero la estructura de la ER de la manera siguiente:
< contexto1 > bb < contexto2 >
Podemos ver que en esta expresión aparecen directamente las bb que deben estar en la ER, rodeadas por otras dos ER, que son < contexto1 > y < contexto2 >.
El lenguaje de < contexto1 > comprende a las palabras que no tienen bb y además no terminan en b. Esto es equivalente a decir que toda b esta seguida de una a o una c. Esto
quiere decir que la ER de este contexto va ser de la forma:
(. . . b(a + c). . .)∗
donde los detalles que faltan están representados por las “. . .”. Lo que falta por considerar es que puede haber cualquier cantidad de a’s o c’s en el < contexto1 >, por lo que dicho contexto queda como:
(b(a + c) + a + c)∗
Similarmente se puede obtener la expresión para <
contexto2 >, que es (a + c + (a + c)b)∗, por lo que
finalmente la ER del problema es:
(b(a + c) + a + c)∗bb(a + c + (a + c)b)∗
Un importante elemento de metodología -que se aplico en
este ejemplo- consiste en transformar los enunciados de
lenguajes de manera que sean más fácilmente
representables por
ER.
También puede ser ´útil modificar la forma lógica en
que se enuncian los lenguajes. Por ejemplo, el
enunciado “palabras que si empiezan en 00, terminan
en 11”, puede modificarse de la manera siguiente:
“palabras que ya sea no empiezan en 00 o bien
terminan en 11”, utilizando la conocida equivalencia
de lógica P ⇒ Q ≡ ¬P ∨ Q.
Ejemplo.- Obtener una ER que represente el lenguaje
en {a, b} tal que si una palabra contiene la subcadena
aa, entonces no debe contener bb.
Solución: Transformando lógicamente el enunciado, representamos la
condición “contiene la subcadena aa” por el símbolo Caa, y la
condición “no contiene bb” por ¬Cbb. Entonces la condición del
problema es: Caa ⇒ ¬Cbb
Equivalencias de Expresiones
Regulares
Las expresiones regulares no representan en forma
única a un lenguaje -esto es, la función L : ER →2 Σ∗descrita arriba no es inyectiva. Esto quiere decir
que puede haber varias ER para un mismo lenguaje,
lo cual desde luego no es conveniente, pues al ver
dos ER distintas no podemos aun estar seguros de
que representan dos lenguajes distintos.
Por ejemplo, las ER (a + b)∗ y (a∗b∗)∗ representan el
mismo lenguaje.
Sin embargo, en algunos casos resulta util aplicar
ecuaciones de equivalencia entre las ER, que son
expresiones de la forma ER1 = ER2, cuyo
significado es que el lenguaje de ER1 es el mismo
que el de ER2 (contienen las mismas palabras).
Por ejemplo, la equivalencia R + S = S
+ R quiere decir que la suma de
expresiones regulares es conmutativa,
por lo que si tenemos dos ER
especificas, como a ∗ y b ∗ab,
entonces la ER a ∗+b∗ab será
equivalente a la ER b∗ab+a∗, y ambas
representaran las mismas palabras.
A continuación damos una lista de las principales equivalencias de ER, clasificadas en 9 grupos:
1. R + S = S + R, (R + S) + T = R + (S + T), R + Φ = Φ + R = R, R + R = R
2. R • ∧ = ∧ • R = R, R • Φ = Φ • R = Φ, (R • S) • T = R • (S • T)
3. R • (S + T) = R • S + R • T, (S + T) • R = S • R + T • R
4. R∗ = R∗ • R∗ = (R∗)∗ = (∧ + R)∗, Φ∗ = ∧∗ = ε
5. R∗ = ∧ + RR∗
6. (R + S)∗ = (R∗ + S∗)∗ = (R∗S∗)∗ = (R∗S)∗R∗ = R∗(SR∗)∗ 6= R∗ + S∗
7. R∗R = RR∗, R(SR)∗ = (RS)∗R
8. (R∗S)∗ = ∧ + (R + S)∗S, (RS∗)∗ = ∧ + R(R + S)∗
9. R = SR + T ssi R = S∗T, R = RS + T ssi R = T S∗
Las equivalencias de estos 9 grupos pueden usarse
para verificar que dos ER denotan el mismo
lenguaje. La técnica a usar para verificar que P =
Q, donde P, Q ∈ ER, es formar una serie de
equivalencias P = R1 = R2 = . . . = Rn = Q, usando
las equivalencias dadas arriba para hacer
reemplazamientos.
Ejemplo: Verificar que las ER (ab + a) ∗a y a(ba + a)∗ son
equivalentes, usando las equivalencias presentadas arriba.
Solución:
(ab + a)∗a = (a + ab)∗a -por (1);= (a∗ab)∗a∗a -por (6);=
([a∗a]b)∗[a∗a] -agrupamos terminos;
Top Related