2. • 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 L1 siguiente:
• L1 = {ab, abab, ababab, abababab, . . .}
• En este ejemplo se aprecia que las palabras de L1 son
simplemente repeticiones de “ab”
• cualquier n´umero de veces. Aqu´ı la “regularidad” consiste en
que las palabras contienen “ab”
• alg´un n´umero de veces.
• Otro ejemplo m´as complicado ser´ıa el lenguaje L2:
• L2 = {abc, cc, abab, abccc, ababc, . . .}
3. • Definici´on.- Un lenguaje L es regular si y s´olo si se
cumple al menos una de las condiciones
• siguientes:
• L es finito;
• L es la uni´on o la concatenaci´on de otros lenguajes
regulares R1 y R2, L = R1 [ R2 o
• L = R1R2 respectivamente.
• L es la cerradura de Kleene de alg´un lenguaje regular, L
= R.
• Esta definici´on nos permite construir expresiones en la
notaci´on de conjuntos que representan
• lenguajes regulares.
4. • La notaci´on de conjuntos nos permite describir los lenguajes
regulares, pero nosotros
• quisi´eramos una notaci´on en que las representaciones de los
lenguajes fueran simplemente
• texto (cadenas de caracteres).
• Definici´on.- Sea un alfabeto. El conjunto ER de las expresiones
regulares sobre
• contiene las cadenas en el alfabeto [ {“^”, “+”, “•”, “”, “(”, “)”, “”} que
cumplen con
• lo siguiente:
• 1. “^” y “” 2 ER
• 2. Si 2 , entonces 2 ER.
• 3. Si E1,E2 2 ER, entonces “(”E1“+”E2“)” 2 ER, “(”E1“•”E2“)” 2 ER,
“(”E1“)”
• 2 ER.
5. • Las ER son simplemente f´ormulas cuyo prop´osito 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 {}.
• El significado de una ER es una funci´on L : ER ! 2 (esto es, una
funci´on
• que toma como entrada una expresi´on regular y entrega como
salida un lenguaje), definida
• de la manera siguiente:
• 1. L(“”) = ; (el conjunto vac´ıo)
• 2. L(“^”) = {"}
• 3. L(“”) = {}, 2 .
• 4. L(“(”R“•”S“)” ) = L(R)L(S),R, S 2 ER
• 5. L( “(”R“+”S“)” ) = L(R) [ L(S),R, S 2 ER
• 6. L( “(”R“)” ) = L(R),R 2 ER
6. • Al tratar de encontrar una ER para un lenguaje dado,
mientras m´as complejo sea el
• lenguaje es obvio que resulta m´as dif´ıcil encontrar por
pura intuici´on dicha ER. En estos casos
• puede ser conveniente trabajar en forma met´odica.
7. • Las expresiones regulares no representan en forma ´unica a un lenguaje -esto es, la
funci´on
• 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 a´un estar seguros de que representan dos lenguajes distintos. Por ejemplo,
las
• ER (a + b) y (ab) representan el mismo lenguaje.
• A continuaci´on 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) = (RS) = (RS)R = R(SR) 6= R + S
• 7. RR = RR, R(SR) = (RS)R
• 8. (RS) = ^ + (R + S)S, (RS) = ^ + R(R + S)
• 9. R = SR + T ssi R = ST, R = RS + T ssi R = TS
• La
8. • Nos podemos preguntar qu´e tantos lenguajes se pueden
representar con las ER. En otras
• secciones mostraremos que dichos lenguajes coinciden con los que
pueden ser aceptados por
• alg´un aut´omata finito. Por lo pronto, en esta secci´on vamos a
establecer un l´ımite que existe
• no s´olamente para las ER, sino para cualquier forma de representar
lenguajes mediante texto.
• Por ejemplo, el conjunto de todas las palabras formadas por a’s y
b’s, que es el conjunto
• infinito {", a, b, ab, ba, aaa, aab, . . .}, puede ser representado
mediante la cadena de caracteres
• “{a, b}”, que es una palabra formada por caracteres del alfabeto
{“a”,“b”,“{”,“}”,“”, “,”
• }. Como vemos en este ejemplo, una cadena de caracteres de 6
caracteres puede representar
9. • A´un cuando por varios ejemplos hemos visto que
lenguajes representados por expresiones
• regulares son aceptados por aut´omatas finitos, no
hemos probado que para cualquier
• expresi´on regular exista un aut´omata finito equivalente,
y viceversa. Esto se establece en el
• siguiente
• Teorema de Kleene.- Un lenguaje es regular si y s´olo si
es aceptado por alg´un aut´omata
• finito.
10. • La prueba de que si un lenguaje es regular entonces es aceptado por un AF consiste en
• dar un procedimiento para transformar en forma sistem´atica una expresi´on regular en un
• aut´omata finito que acepte su lenguaje. Dicho procedimiento se describe a continuaci´on:
• La idea es hacer una transformaci´on gradual que vaya conviertiendo la ER en AF.
• Para hacer la transformaci´on gradual de ER a AFN se requiere utilizar alguna representaci
• ´on de los lenguajes regulares que sea intermedia entre las ER y los AFN.
• Una posible soluci´on es el uso de las gr´aficas de transici´on. Estas ´ultimas son
esencialmente
• AFN en que las etiquetas de las flechas tienen expresiones regulares, en lugar de
• palabras. Las gr´aficas de transici´on (GT) son por lo tanto qu´ıntuplos (K,,, s, F) en
• donde 2 K × ER × K.
• Los AFN son un subconjunto propio de las GT, puesto que las palabras en las etiquetas
• de un AFN pueden ser vistas como expresiones regulares que se representan a s´ı
mismas.
• Ahora procederemos a describir el procedimiento de transformaci´on de ER a AFN.
• A partir de una ER es trivial obtener una GT que acepte el mismo lenguaje. En efecto,
• sea R una ER; entonces, si
• G1 = ({q0, q1},, {(q0,R, q1)}, q0, {q1})
11. • La prueba de la parte “si” del teorema consiste en dar un
procedimiento para transformar
• en forma sistem´atica un aut´omata finito en una
expresi´on regular equivalente. Un
• procedimiento para hacerlo consiste en ir eliminando
gradualmente nodos de una GT, que
• inicialmente es el AFN que se quiere transformar, hasta
que ´unicamente queden un nodo
• inicial y un nodo final.
• Dicho procedimiento comprende los siguientes pasos: