Lenguajes y gramáticas
carlos.andres.delgado@correounivalle.edu.co
Abril 2017
1 Lenguajes
2 Autómatas finitos
3 Gramáticas
Contenido
1 Lenguajes
2 Autómatas finitos
3 Gramáticas
El alfabeto
Un alfabeto es un conjunto finito no vacı́o cuyos elementos se llaman
sı́mbolos.
Σ = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9}
Sea Σ = {0, 1}
Σ∗ = {, 0, 1, 00, 01, 10, 11, 000, 001, 010, 100, 010, 110, . . .}
Sea Σ = {a, b, c}, entonces
Σ∗ = {, a, b, c, aa, ab, ac, ba, bb, bc, ca, cb, cc, aaa, aab, abc, baa, . . .}
Sea Σ = {a, b}, entonces
Σ∗ = {, a, b, aa, ab, ba, bb, aaa, aab, baa, . . .}
Concatenación de cadenas
Cadenas
Dado un alfabeto Σ y dos cadenas u, v ∈ Σ∗ , la concatenación de u y v se
denota como u · v o simplemente uv y se define ası́:
1 Si v = , entonces u · = · u = u, es decir, la concatenación de
cualquier cadena u con la cadena vacı́a, a izquierda o derecha, es igual
a u.
2 Si u = a1 a2 . . . an , v = b1 b2 . . . bm , entonces
u · v = a1 a2 . . . an b1 b2 . . . bm
|aba| = 3, |baaa| = 4
Cadena
Definición formal: Una cadena v es una subcadena o subpalabra de u si
existen x, y tales que u = xvy. Nótese que x o y pueden ser y por lo tanto,
la cadena vacı́a es una subcadena de cualquier cadena.
Prefijos de u
b
bc
Sea Σ = {a, b, c, d} y u = bcbaadb bcb
bcba
bcbaa
bcbaad
bcbaadb
Sufijos de u
b
db
adb
aadb
baadb
cbaadb
bcbaadb
La concatenación como una operación binaria
Operación binaria
Una operación binaria en un conjunto A es una función f : A × A → A, esta
deberá satisfacer las siguientes propiedades:
1 La operación binaria deberá estar definida para cada par ordenado de
A, es decir, f asigna a UN elemento f (a, b) de A a cada par ordenado
(a, b) de elementos de A.
2 Como una operación binaria es una función, sólo un elemento de A se
asigna a cada par (a, b).
Concatenación
La operación de la concatenación · es una operación binaria entre
cadenas de un alfabeto Σ, esto es:
· : Σ∗ × Σ∗ → Σ∗
| uv |=| u | + | v |
Semigrupo
Sea (Σ∗ , ·) es un semigrupo el cual es un conjunto no vacı́o Σ∗ junto con
una operación binaria asociativa · definida en Σ∗ .
Monoide
Un monoide es un semigrupo (S, ∗) que tiene idéntico.
Lenguaje
Un lenguaje es un conjunto de palabras o cadenas. Un lenguaje L sobre un
alfabeto Σ es un subconjunto de Σ∗ y si L = Σ∗ es el lenguaje de todas las
cadenas sobre Σ.
A ∪ B = {x|x : x ∈ A o x ∈ B}
A ∩ B = {x|x : x ∈ A y x ∈ B}
∼A = {x ∈ Σ∗ |x ∈
/ A}
∗
∼A =Σ −A
A − B = {x|x : x ∈ A y x∈
/ B}
Lenguaje Universal
Si Σ 6= ∅, entonces Σ∗ es el conjunto de todas las cadenas sobre Σ. Se le
llama lenguaje universal.
Teorema
Sean A y B dos lenguajes sobre el alfabeto Σ. Entonces A = B si y sólo si
A ⊆ B y B ⊆ A.
A · ∅ = {uw : u ∈ A, w ∈ ∅} = ∅
Lenguajes
A · {ε} = {ε} · A = A
[ [
x ∈A· Bi ⇐⇒ x = u · v , u ∈ A, v ∈ Bi
i∈I i∈I
⇐⇒ x = u · v , u ∈ A, v ∈ Bj ,
∃j ∈ I
⇐⇒ x ∈ A · Bj , ∃j ∈ I
[
⇐⇒ x ∈ (A · Bi )
i∈I
Lenguajes
[
A· Bi = A · (B1 ∪ B2 )
i∈I=2
[
A· Bi = {ab} · ({a, b} ∪ {abb, b})
i∈I=2
{ab} · ({a, b} ∪ {abb, b}) = ({ab} · ({a, b}) ∪ ({ab} · {abb, b})
A · (B ∩ C) = {a, } · ∅ = ∅
A∗ = {u1 u2 . . . un : ui ∈ A, n ≥ 0}
A · A∗ = A · (A0 ∪ A1 ∪ A2 ∪ . . .)
= (A1 ∪ A2 ∪ A3 ∪ . . .)
= A+
A∗ · A∗ = A∗
1 ⇒), Sea un x ∈ A∗ · A∗ , entonces x = u · v , con u ∈ A∗ y v ∈ A∗ Por
tanto x = u · v , con u = u1 u2 . . . un , ui ∈ A, n ≥ 0 y v = v1 v2 . . . vm ,
vi ∈ A, m ≥ 0 De donde
x = u · v = u1 u2 . . . un · v1 v2 . . . vm
A+ = (A1 ∪ A2 ∪ A3 ∪ . . .)
= {a} ∪ {aa} ∪ {aaa . . .}
= {an : n ≥ 1}
A+ · A+ = {a, a2 , a3 , . . .} · {a, a2 , a3 , . . .}
= {a2 , a3 , . . .}
= {an : n ≥ 2}
Cerradura de Kleene
(A∗ )+ = A∗
(A+ )∗ = A∗
(A+ )+ = A+
Inverso de un lenguaje
Sea A sobre Σ, se define AI como:
AI = {u I : u ∈ A}
x ∈ (A · B)I ⇐⇒ x = u I , donde, u ∈ A · B
⇐⇒ x = u I , donde, u = vw, v ∈ A, w ∈ B
⇐⇒ x = (vw)I , donde, v ∈ A, w ∈ B
⇐⇒ x = w I v I , donde, v ∈ A, w ∈ B
⇐⇒ x = B I AI
Propiedades del inverso de un lenguaje
Teorema
Si L, L1 y L2 son lenguajes regulares sobre un alfabeto Σ, también lo son:
1 L1 ∪ L2
2 L1 L2
3 L+
4 L = Σ∗ − L
5 L∗
6 L1 ∩ L2
7 L1 − L2
8 L1 4L2
Observación
Un sublenguaje (subconjunto) de un lenguaje regular no es necesariamente
regular, es decir, la familia de los lenguajes regulares no es cerrada para
subconjuntos.
Propiedades de clausura
Observación
Teorema
Sean r , s y t expresiones regulares sobre Σ, entonces:
1. r ∪ s = s ∪ r
2. r ∪ ∅ = r = ∅ ∪ r
3. r ∪ r = r
4. (r ∪ s) ∪ t = r ∪ (s ∪ t)
5. r ε = r = εr
6. r ∅ = ∅ = ∅r
7. (rs)t = r (st)
8. r (s ∪ t) = rs ∪ rt y (r ∪ s)t = rt ∪ st
9. r ∗ = r ∗∗ = r ∗ r ∗ = (ε ∪ r )∗ = r ∗ (r ∪ ε) = (r ∪ ε)r ∗ = ε ∪ rr ∗
10. (r ∪ s)∗ = (r ∗ ∪ s∗ )∗ = (r ∗ s∗ )∗ = (r ∗ s)∗ r ∗ = r ∗ (sr ∗ )∗
11. r (sr )∗ = (rs)∗ r
12. (r ∗ s)∗ = ε ∪ (r ∪ s)∗ s
13. (rs∗ )∗ = ε ∪ r (r ∪ s)∗
14. s(r ∪ ε)∗ (r ∪ ε) ∪ s = sr ∗
15. rr ∗ = r ∗ r
Ejemplos expresiones regulares
r = s∗ t = (ε ∪ s+ )t ya que s∗ = ε ∪ s+
= (ε ∪ ss∗ )t
= s∗ t
εt ∪ s |{z}
r
= t ∪ sr
= sr ∪ t
(aa ∪ ab ∪ ba ∪ bb)∗
Ejemplo 10. Sobre Σ = {0, 1} lenguaje de todas las cadenas que tienen
exactamente dos ceros:
1∗ 01∗ 01∗
Ejemplo 11. Sobre Σ = {0, 1} lenguaje de todas las cadenas cuyo
penúltimo sı́mbolo, de izquierda a derecha, es un 0.
(0 ∪ 1)∗ 0(0 ∪ 1)
Expresiones regulares en la computación
1 Lenguajes
2 Autómatas finitos
3 Gramáticas
Introducción a los autómatas finitos
Autómatas finitos
Son máquinas abstractas que procesan cadenas, las cuales son aceptadas
o rechazadas.
Es importante anotar que en la tabla de transición por cada pareja (qi , γ) hay
un sólo estado qj por eso δ es una función de transición.
el lenguaje que reconoce este AFD es:
a∗ (b(a + ba + bb)∗ b) + a∗
Ahora como el estado inicial es un estado final este AFD reconoce ε
Ejemplos autómatas finitos deterministas
(Q × Σ) → 2Q
Teorema
Sea M = (Q, Σ, q0 , T , 4) un AFN. Entonces existe un AFD
M 0 = (Q 0 , Σ0 , q00 , T 0 , δ) tal que L(M) = L(M 0 ).
El conjunto q0 se corresponde con q00
El conjunto de estados finales T 0 de Q 0 se corresponde con los
conjuntos de estados de Q que contienen un estado de T
El conjunto de estados de Q 0 se corresponde con el conjunto de estados
de Q que se vaya formando mediante el análisis de una cadena sobre M
Equivalencia entre autómatas
Autómatas equivalentes
Dos AFD son equivalentes M1 y M2 son equivalentes si L(M1 ) = L(M2 ).
P
Sean M1 y M2 sobre el alfabeto = {a},
L(M1 ) = L(M2 ) = a∗
Ejemplos equivalencia de AFN y AFD
Teorema
Si L1 y L2 son lenguajes regulares, también lo es L1 ∩ L2 .
M = (Q1 × Q2 , Σ1 ∪ Σ2 , (q1 , q2 ), T1 × T2 , δ)
donde
δ : Q1 × Q2 × Σ → Q1 × Q2
δ((qi , qj ), a) = (δ1 (qi , a), δ2 (qj , a))
Teorema
Teorema de Kleene. Un lenguaje regular si y sólo si es aceptado por un
autómata finito (AFD o AFN o AFN-ε)
Teorema
Dado un AFN-ε M = (Q, Σ, q0 , T , 4), se puede construir un AFN M 0
equivalente a M, es decir L(M) = L(M 0 ).
Teorema
Un lenguaje regular si y sólo si es aceptado por un autómata finito (AFD o
AFN o AFN-ε)
Autómatas finitos y lenguajes regulares
Teorema
Para toda expresión regular R se puede construir un AFN- M tal que
L(R) = L(M).
Paso Básico
EL autómata
EL autómata
PASO INDUCTIVO
1. Existe un autómata que acepta R ∪ S
4 = 41 ∪ 42 ∪ {(s, , s1 ), (s, , s2 )} ∪
{(T1 , , s0 ), (T2 , , s0 )}
x0 = ax1
x1 = ax2 + bx4
x2 = ax3 + bx4
x3 = ax3 + bx4 +
x4 = bx4 +
Ejemplos ecuaciones de lenguaje
x0 = ax0 + bx1 +
x1 = ax1 + bx2
x2 = (a ∪ b)x1 +
Ecuaciones de lenguaje
Teorema
Sean n ≥ 2 considere el sistema de ecuaciones cuyas incognitas
x1 , x2 , . . . , xn dado por:
x1 = b1 ∪ A
E b 11 x1 ∪ A
b 12 x2 ∪ . . . ∪ A
b 1,(n−1) xn−1
x2 = b2 ∪ A
E b 21 x1 ∪ A
b 22 x2 ∪ . . . ∪ A
b 2,(n−1) xn−1
..
.
xn−1 = bn−1 ∪ A
E b (n−1)1 x1 ∪ . . . ∪ A
b (n−1),(n−1) xn−1
Entonces E
bi y A
b ij se definen como:
E
bi = Ei ∪ (Ain A∗nn En ), i = 1, . . . , n − 1
A
b ij = Aij ∪ (Ain A∗nn Anj ), ∀i,j = 1, . . . , n − 1
Donde:
∅ si qi ∈
/F
Ei =
si qi ∈ F
Ejemplo ecuaciones de lenguaje
x1 = ax1 + bx2
x2 = bx1 + ax2 +
Ejemplo ecuaciones de lenguaje
x1 = E
b1 + A
b 11 x1
Se obtiene E
b1
E
b1 = E1 + (A12 A∗22 E2 )
E
b1 = ∅ + (b · a∗ · )
E
b1 = ba∗
Se obtiene A
b 11
A
b 11 = A11 + (A12 A∗22 A21 )
A
b 11 = a + (b · a∗ · b)
A
b 11 = a + ba∗ b
Ejemplo ecuaciones de lenguaje
Reemplazando E
b1 y A
b 11 en x1
x1 = E
b1 + A
b 11 x1
x1 = ba + (a + ba∗ b)x1
∗
x1 = b1 ∪ A
E b 11 x1 ∪ A
b 12 x2 ∪ A
b 13 x3
x2 = E2 ∪ A21 x1 ∪ A22 x2 ∪ A23 x3
b b b b
x3 = b3 ∪ A
E b 31 x1 ∪ A
b 32 x2 ∪ A
b 33 x3
Contenido
1 Lenguajes
2 Autómatas finitos
3 Gramáticas
LENGUAJES Y GRAMATICAS
P ⊆ N × Σ∗ (N ∪ ) o P ⊆ N × (N ∪ )Σ∗
Definición de gramática regular por la derecha
Gramáticas regulares
Sobre
G = (N, Σ, S, P)
Una gramática es regular por la derecha si sus producciones son de la forma:
A −→ wB, w ∈ ∗ , B ∈ N
P
{ }
A −→ ε
Gramáticas tipo 2
Una gramática independiente del contexto G = (N, Σ, S, P) consiste de un
conjunto N de no terminales, un alfabeto Σ, un sı́mbolo inicial S y de un
conjunto de producciones P.
Definición
Sea G = (N, Σ, S, P) una gramática independiente del contexto. El lenguaje
generado por G (o el lenguaje de G) denotado por L(G), es el conjunto de
todas las cadenas de terminales que se derivan del estado inicial S. en otras
palabras:
L(G) = {w ∈ Σ∗ /S ⇒∗ w}
P ⊆ N × (N ∪ Σ)∗
Ejemplo de gramática tipo 2
S −→ 0S1
S −→ ε
S −→ aSa | bSb | a | b | ε
Ejemplo. Una GIC que genera el siguiente lenguaje sobre Σ = {a, b} Sea
L = {an bm |n ≤ m ≤ 2n}
S −→ aSb | aSbb | ε
GICs especiales
S −→ (S)S | ε
S −→ S + S | SS | S ∗ | (S) | 0 | 1 | ∅ | ε
Gramáticas no restringidas
P ⊂ (N ∪ Σ)+ × (N ∪ Σ)∗
Gramáticas no restringidas (Gramáticas de tipo 0 y 1)
Sea w=001122 una cadena que puede ser reconocida por la gramática y que
además pertenece al lenguaje.
Tipos de gramáticas
Ambigüedad
Una gramática se dice que es ambigua si hay dos o más árboles de
derivación distintos para la misma cadena. una gramática en la cual, para
toda cadena w, todas las derivaciones de w tienen el mismo árbol de
derivación, es no ambigua.
Ejemplos arboles de derivación
Forma de Backus-Naur
La forma de Backus-Naur se emplea para especificar reglas sintácticas de
muchos lenguajes de programación y de lenguaje natural: En lugar de utilizar
el sı́mbolo −→ usamos ::= y colocamos los sı́mbolos no terminales entre <>.