Está en la página 1de 13

1.

Lenguajes formales
Juan B. Castellano
Desp 2210
jcastellanos@fi.upm.es
Definiciones
Alfabeto
Un conjunto finito de smbolos.
Por ejemplo:

1
={0,1}

2
={a,b,c,d}

3
={triangulo, cuadrado, punto}
Lenguaje universal
Dado un alfabeto , se define lenguaje universal como
*={todas las palabras que se pueden formar con elementos de , incluyendo }
* para cualquier

Subalfabeto
Es un conjunto de un alfabeto
Por ejemplo:

4
={a,c} subalfabeto de
2


Palabra
Dado un alfabeto , una palabra x, es una sucesin ordenada de smbolos de , con o sin
repeticin.
Por ejemplo:
En
2
={a,b,c,d}, x e y son palabras sobre
2
x=bbad, y = adc

Los elementos de

los designamos con a,b,c,d y las palabras las representamos por x,y,z,t
Longitud de una palabra
Dado , una palabra de x tiene longitud n, si n es el nmero de signos de la palabra.
Por ejemplo:
o X=abcda |x|=5
o Y=aaa |y|=3

Palabra
Esta palabra no tiene smbolos y no pertenece a ningn alfabeto.
| |=0

Los smbolos del alfabeto, que tambin son palabras, tienen longitud 1.
Por ejemplo:
={0,1} 0 y 1 son smbolos y palabras. |0|=1 y |1|=1
Palabra inversa
Dado un alfabeto y x es una palabra sobre , la palabra inversa de x, x
-1
es la palabra
que tiene los smbolos de x puestos en sentido inverso. Sin embargo esta no es la
definicin ms formal, esta s:
Dada x palabra sobre , definimos la palabra inversa segn el tamao de las palabras
1. Si |x|=0 si x= x
-1
=
2.
Si |x|>0 , Existe w palabra y Existe a smbolo tal que x=wa x
-1
= aw
-1
Por ejemplo:
={c,d,e} x=cdec,, x
-1
=cedc
Palabra simtrica
Dado y una palabra x*(ver siguiente), x es simtrica si x=x
-1

Por ejemplo:
={0,1}, x= 0110 x=x
-1


Operaciones con palabras
Concatenacin de palabras
: *x* *
X, y xy

Si x=ab, y=cd xy=abcd
Propiedades
1. Operacin bien definida
a. Para todo x,y * xy es una nica palabra *
2. Es asociativa
a. Para todo x,y,z * (xy)z=x(yz)
3. No es conmutativa
a. Para todo x,y * xyyx
4. Elemento neutro
a. Para todo x * Existe neutro tal que x=x=x
(*, ) Tiene estructura de semigrupo con elemento neutro
Propiedades simplificativas
1. X,y,z * xy=xz => y=z xy=zy => x=z
2. Dado , dados x,y * se cumple que (xy)
-1
=y
-1
x
-1

a. Demostracin mediante induccin en el tamao y
i. Hay que demostrar que se cumple la propiedad para la palabra ms
pequea
(xy)
-1
=y
-1
x
-1
|y|=0 => y=
(xy)
-1
=(x)
-1
=x
-1
y
-1
x
-1
=
-1
x
-1
= x
-1
= x
-1

Por tanto se cumple.
ii. Suponemos que se cumple la propiedad para todas las palabras y con
tamao n, es decir, para todo x * y para todo y * con |y|=n se
cumple (xy)
-1
=y
-1
x
-1

iii. Hay que demostrar que para todo z con tamao n+1 se cumple la
propiedad, es decir, que para todo x * y para todo z * con
|z|=n+1 se cumple (xz)
-1
=z
-1
x
-1

Si |z|=n+1, existe y * |y|=n y existe a tal que z=ya
(xz)
-1
=(x(ya))
-1
=((xy)a)
-1
= a(xy)
-1
=ay
-1
x
-1
=(ay
-1
)x
-1
= z
-1
x
-1




Potencia
, alfabeto
x*
potencia i-sima x
i
=xxxx, ej: x
3
=xxx
Def.- x
0
=
x
1
=x
|x
1
|=i|x|
asociativa Def de
palabra
inversa
Hiptesis de
induccin
asociativa
Def. z
-1

+
=*-{}

+
se puede obtener por concatenacin de potencias

Lenguaje
Dado un alfabeto , un lenguaje L es un conjunto de palabras sobre que cumplen una
propiedad:
L = {x*|x cumple P}
Por ejemplo:
- Si ={0,1}
L = {0,01,011,0111,} = {x{0,1}*|son palabras cuyo 1er smbolo es 0 y el resto
1s, si los tiene}
- Si , alfabeto cualquiera
L
1
={x*| |x|=i}
L
2
= { x*| |x|=i+1}
Lenguaje L
L ={Lenguajes sobre }
Lenguaje inverso
Dado L sobre ,
L
-1
={x*|existe z L y x=z
-1
}
Lenguaje complementario de L
L
-
={x*|x no L}
Operaciones con lenguajes
Unin de lenguajes
, alfabeto,, L
1
, L
2
lenguajes. L
1
, L
2
contenido en *
U: *x* *
L
1
, L
2
L
1
U L
2
L
1
U L
2
={x *|xL
1
xL
2
}
Propiedades
1. Est bien definida
a. L
1
, L
2
L L
1
unionL
2
contenido en * es otro lenguaje.
2. Es asociativa
a. Para todo L
1
, L
2
, L
3
L
1
U(L
2
UL
3
)= (L1UL
2
)UL3
3. Es conmutativa
a. Para todo L
1
,L
2
L
1
UL
2
= L
2
UL
1

4. Elemento neutro,
a. Para todo L L,, existe neutro tal que LU=UL=L
(L, U) -> Tiene estructura de semigrupo conmutativo elemento neutro.
Concatenacin
, L={lenguajes sobre )
: L x L L
L
1
, L
2
L
1
L
2
L
1
L
2
={x|x=zy donde zL
1
e yL
2
}
Propiedades
1. Ley de composicin interna
2. Asociativa
3. No conmutativa
4. Elemento neutro
i. {} no confundir con , uno es lenguaje el otro palabra.
(L,) Semigrupo con elemento neutro
Potencia de lenguaje
L sobre ,
L
i
= LLLL, i veces
Def. de cierre de un lenguaje. Estrella de Kleene
Dado L,
L*=L
0
UL
1
UL
2
UL
3
U
L*= U(de 0 a infinito) L
i

La clausura positiva es L
+
(L
+
= L*-{})
L
+
= U(de 1 a infinito) L
i




Expresiones y Lenguajes regulares
Expresiones regulares
B = U{, , , *, ()}
Expresiones regulares sobre , Exp Reg() son las palabras que se pueden formar con B de
manera recursiva:
i) , >, a son ER()
ii) , ER() => +ER()
iii) , ER() => ER()
iv) ER() => *ER()
v) ER() => ()ER()
vi) Son Expresiones regulares sobre todas las concatenaciones de las ER anteriores.
Por ejemplo:
1.- ={0,1} L={x*/en x aparece el 1 dos o tres veces, la 1 y 2 de las
cuales no son consecutivos}
= 0* 1 0 0* 1 0*( 1 0* + )
Explicacin: un 0 con asterisco * significa que aparece un 0 en todas las veces
que quieras, inclusive ninguna. El parntesis indica que lo que hay dentro
puede o no estar.
2.- ={a,b} L
2
={x*/|x|
a
es impar}
=(b* a b* a b*)* b* a b* aL
2
ba L
2
bab
3
L
2

3.- ={a,b} L
3
={a
n
b
m
/ n, m>0}
= aa*bb*
4.- ={a, b} L
6
={a
n
b
n
/n>0}
=a(ab)*b no pertenece a L
6
, aunque lo parezca en este caso no sera una
expresin regular, ya que no mantiene el orden. Esto es porque L
6
no es un
lenguaje regular.

Lenguajes regulares
Lenguaje regular sobre , es una aplicacin L:
L:ER() =Parte de (*)
L() de manera
a) , , ER() => L()={} L()= L()={}
b) , ER() => L(+)=L()UL()
c) , ER() => L()=L()L()
d) ER() => L(*)=(L(*))*

Lema.- L sobre es regular <-> Existe ER()/L()=L

Ejercicio
Con L={0
r
1
s
/r,s>=1}
Encontrar el complementario de L como unin de tres lenguajes disjuntos y dar una expresin
regular de ella.
L
1
={palabras que solo tienen 0s}={0}*
L
2
={palabras que empiezan por 1}= 1*
L
3
={0
x
1
s
0 *}
L()=L1 L()=L2 L()=L3
=0* =1(0+1)* * =00*11*0(0+1)*
++=0*+1(0+1)*+00*11*0(0+1)*

Propiedades
, ER() y son equivalentes = L() = L()
-> + es conmutativa y asociativa
+=+ , ER()
(+)+=+(+) , , ER()
-> es asociativa y distributiva respecto de +
()=() , , ER()
(+)=+ , , ER()
(+)=+ , , ER()
-> es neutro respecto de +
+=+= ER()
-> es neutro respecto de
== ER()
-> == ER()
-> *=
-> *=
Prefijo o cabeza
u * es prefijo o cabeza de v* si
Existe x * ux=v
Sufijo o cola
u * es sufijo o cola de v si
Existe x * xu=v

-> *=++
2
+
3
++
u
ER()
-> *=++
2
+
3
++
u
+
u+1
+ * ER()
-> **=* ER()
-> (*)*=* ER()
-> =+* ER()
-> *=* ER()
-> (*+*)*=(+)*=(**)* , ER()
-> ()*=()* , ER()
-> (*)**=(+)* , ER()
-> L regular L
-1
regular
Ejercicios
Ejer. 1.- Probar que las dos expresiones regulares son equivalentes
E
1
=aa*(a*b)*+aa*(a*+b*)+
E
2
=a*(a*b*)+a*a(a+b)*b+
Ejer. 2.- Construir directamente una ER que represente estos lenguajes:
L
1
={x{a,b,c}*/ac no es parte de x}
L
2
={ x{a,b,c}*/x tiene un nmero par de ocurrencias de ac}

Gramticas formales
Consideraciones previas
*
Producciones, Leyes de escritura sobre
(u, v)= u::=v pares ordenados / u, v *
Derivacin directa
x u y x v y es derivacin directa siendo(u ::=v) P
z t (z deriva directa a t)
z, t * x u y x v y x, y * u, v * (u ::= v)P
Evidentemente u u::=v u -> v pues x,y=
Derivacin
u
+
v= u deriva a v o que v deriva de u = Existe u
0
, u
1
, , um*
u=u
0
u
1
=
=u
1
u
2
= u
n-1
u
n
=v
=u
2
u
3
u
*
v=
Ejemplo
= {A, B, C, , x, y, z}
BA ::= ME
CABALLO CAMELLO

Gramticas formales
G=<
T
,
N
, S , P >





Forma sentencial de G = { x */S
*
x}
Sentencia de G = {x
T
*/S
*
x}
Lenguaje generado por una gramtica G = L(G)= Conjunto de sus sentencias
L(G)={x */ S
*
x}
Para tener lenguaje tengo que derivar desde el axioma.
Ejemplo 1
G = <{0, 1, 2, 3, 4, , 9}, {N,C}, N, P>
P = { N::=NC/c , c::= 0/1/2/3//9}
L(G) = {N}
Entonces, para crear 2015 N
N NC N5 NC5N15 NC15 N015 C015 2015
Ejemplo 2
G=<{0,1}, {S}, S, P>
u = v
o
u
+
v
Ejemplo:
u1 = r x t u2= r y t (x::=y)P

Alfabeto de smbolos
terminales
Alfabeto de smbolos
no terminales
(auxiliares)
Axioma de G
N

Conjunto de producciones
u ::= v / u = xAy x,y* A
N

P = { S::=00S11/}
L(G) = {0
2n
1
2n
/ u>= 0}
S 00 S 11 00 11= 0
2
1
2

Ejemplo 3
G=<{a,b} , {A, B, C}, A, P>

P=


L(G)=?

Ejemplos
1) ={a, b} y L* definido recursivamente as:
i) L
ii) a x b L y b x a L
x*
iii) x, y L => xyL
iv) Slo son palabras de lo formados por aplicacin un n finito de veces de las
reglas i), ii) y iii). Definir razonadamente L.

2) ={a,b} L={x{a,b}* / |x|
a
no=|x|
b
}
Solucin: Sea cualquiera y L
1
,L
2
contenido * / L
1
contenido L
2
=> L
1
* contenido L
2
* (+)
En nuestro caso {a, b}=L
1
=> L
1
*={a, b}*= * contenido L* (1)
Pero por otra parte si L contenido * (L cualquiera) L* contenido *
En nuestro caso L* contenido {a,b}* (2)
De 1 y 2 saco que L*=* ya que A contenido B y B contenido A => A=B
Recursividad
Una gramtica G es recursiva si existe una derivacin de la forma A
+
xAy donde A
n
,
x,y* (pero x, y no pueden ser a la vez).
A::=aABC/abC
CB::=BC
bB::=bb
bC::=b
No terminal
Si A
+
Ay La G es recursiva izq.
Si A
+
xA La G es recursiva der.
Una produccin es recursiva si es de la forma:
uAv ::= uxAyv
con A
n
, u,v,x,y * no todas
Gramticas tipo 0
(u ::= v ) P
u = xAy
A
n
x,y *
v *(puede ser )
nota
Hay autores que la definen como de estructura de frases
(**) xAy ::= xvy
x,y * A
n
v *(puede ser )
TH.- Para toda G
0
existe G
0
de estructura de frases equivalentes = L(G
0
) = L (G
0
)
Las G
0
pueden ser comprensoras => y x puede ser |x| |y| la longitud de x puede ser
menor (pinsese que puede ser )
Ejemplo 1
A ::= aABC/abc G=<{a,b}, {A,B,C}, A, P>
CB ::= BC [Es necesaria? No]
bB ::= bb L(G) = {a
u
b
u
/ u 1
bC ::= b G no es de estructura de frases pues CB ::= BC no es de
la forma (**)

CB::=BC



S
produccin
de orden P
> <
CB ::= CX entonces: G = <{a,b}, {A,B,C}, A, P>
CX ::= BX (+) P = P U {+} L(G)= L(G)
BX ::= BC
Ejemplo 2
G = < {a,b,c}, {S,X}, S, P> G=<
T
,
N
, S, P>
S::= aSb
P Sb::= bX
abx::=c


Gramticas tipo 1
Gramticas tipo 1 = G
1
L
1
= lenguajes dependientes del contexto
xAy ::= xvy
x,y *
A
N

v
+
(v )
Ejemplo 1
G=<{a,b,c}, {A,B,C}, A, P>

P


Ejemplo 2
G=<{a,b,c}, {S}, S, P> P={ S::=aSa/bSb/c} L(G) = {xcx
-1
/ x {a,b}*}
Sc SbSbbaSabbacab xL(G)
Si quisieramos que L(G) parece que con aadir S::= sera suficiente:
G=<{a,b,c},{S}, P> P={ S::=aSa/bSb/} L(G)=L(G)U{} PUES NO!
ya que
L(G) = {x, x
-1
/ x{a,b,c}*}
L(G) L(G)
S aSa a
2
bSba
2
a
2
bba
2
= a
2
bba
2
L(G)
No de Est.
de frases
L(G) = { a
u
c b
u
/ u 0}
G=<{a,b,c} / {S}, S, P>
P = S::= abb/c L(G) = L(G*)

Nota
No pueden ser comprensores
x y => |x| |y| obviamente pues v y
A ::= aABC/abc
B ::= BC
bB ::= bb
bC ::= bc
cC ::= cc
De Nuevo no de
G
1
L(G) = {a
u
b
u
c
u
/ u 1}
Esto es debido a que S es un axioma que est en el consecuente de alguna produccin, est
inducido.
TH.- VG = <
T
,
N
, S, P> con axioma-inducido una G sin axioma inducido equivalente
G
1
=<
T1
, {
N
U S}, S, P> R=Pu{S=y / (S::=y)P}
Nuevo axioma
L(G
1
) = L(G
1
)
Nos interesa crear una gramtica que sea igual a G pero aadiendo .
En el ejemplo:
G = <{a, b, c}, {S, S}, S, P> P=
Habr que probar que:
a) L(G) L(G) xL(G) => xL(G)
b) L(G) L(G) xL(G) => xL(G)
En efecto xL(G) (S::=y)P y sus derivaciones de x a x, es decir:
Sy + xL(G)
Puesto que S::=y S::=y pues todas las producciones de G son de G.

Gramticas tipo 2

S ::= aSa / bSb / c
S ::= aSa / bSb / c
L(G) = L(G)

También podría gustarte