Está en la página 1de 137

Captulo 1

Lenguajes formales
1.1.

Alfabetos y palabras

Un alfabeto es un conjunto finito no vaco cuyos elementos se llaman smbolos.


Denotamos un alfabeto arbitrario con la letra .
Una palabra o cadena sobre un alfabeto es cualquier sucesion finita de elementos de . Admitimos la existencia de una u
nica palabra que no tiene smbolos,
la cual se denomina palabra vaca y se denota con . La palabra vaca desempe
na, en la teora de lenguajes formales, un papel similar al que desempe
na el
conjunto vaco en la teora de conjuntos.


Ejemplo Sea = {a, b} el alfabeto que consta de los dos smbolos a y b. Las

siguientes son palabras sobre :
aba
ababaaa
aaaab
Observese que aba 6= aab. El orden de los smbolos en una palabra es significativo
ya que las palabras se definen como sucesiones, es decir, conjuntos secuencialmente ordenados.
El conjunto de todas las palabras sobre un alfabeto , incluyendo la palabra
vaca, se denota por .


Ejemplo

Sea = {a, b, c}, entonces

= {, a, b, c, aa, ab, ac, ba, bb, bc, ca, cb, cc, aaa, aab, abc, baa, . . .}.
Observaciones:
1. Si bien un alfabeto es un conjunto finito, es siempre un conjunto
1

Teora de la Computacion (15410)

2003-I.

Profesor: Rodrigo De Castro

infinito (enumerable). En el caso mas simple, contiene solo un smbolo,


= {a}, y = {, a, aa, aaa, aaaa, aaaaa, . . .}.
2. Hay que distinguir entre los siguientes objetos, que son todos diferentes
entre s:

{}
{}
3. La teora de lenguajes se hace con referencia a un alfabeto fijo (pero
arbitrario).

Notaci
on usada en la teora de lenguajes

a, b, c, d, e,. . .
u, v, w, x, y, z,. . .

A,B,C,. . . ,L,M,N,. . .

1.2.

denota un alfabeto.
denota el conjunto de todas las palabras que se
pueden formar con los smbolos de .
denotan smbolos del alfabeto .
denotan palabras, es decir, sucesiones finitas de
smbolos de .
denota la palabra vaca, es decir, la u
nica palabra

en que no tiene smbolos.


denotan lenguajes (definidos mas adelante).

Concatenaci
on de palabras

Dado un alfabeto , y dos palabras u, v , la concatenaci


on de u y v se
denota como u v o simplemente uv y se define descriptivamente as:
1. Si v = , entonces u = u = u. Es decir, la concatenacion de cualquier
palabra u con la palabra vaca, a izquierda o a derecha, es igual a u.
2. Si u = a1 a2 an , v = b1 b2 bm , entonces
u v = a1 a2 an b1 b2 bm .
Es decir, u v es la palabra formada escribiendo los smbolos de u y a
continuacion los smbolos de v.
La concatenacion de palabras se puede definir inductiva o recursivamente de la
siguiente manera. Si u, v , a , entonces
1. u = u = u.

Captulo 1

Lenguajes formales

2. u (va) = (u v)a.
Propiedad. La concatenacion de palabras es una operacion asociativa. Es decir,
si u, v, w , entonces
(uv)w = u(vw).
Demostracion: Se puede hacer escribiendo explcitamente las palabras u, v, w y
usando la definicion descriptiva de concatenacion. Tambien se puede dar una
demostracion inductiva usando la definicion recursiva de concatenacion (ejercicio
opcional).

1.3.

Potencias de una palabra

Dada u y n N, se define (descriptivamente) un en la siguiente forma


u0 = ,
un = uu
u}
| {z
n veces

Ejercicio

1.4.

Dar una definicion recursiva de un .

Longitud de una palabra

La longitud de una palabra u se denota |u| y se define como el n


umero de
smbolos de u (contando los smbolos repetidos). Es decir,

0, si u = ,
|u| =
n, si u = a1 a2 an








Ejemplo
Ejemplo

|aba| = 3, |baaa| = 4.
Si w , n, m N, demostrar que
|wn+m | = |wn | + |wm |

Solucion:
Caso n, m 1. |wn+m | = | ww
w} | = (n + m)|w|. Por otro lado,
| {z
n+m veces

|wn | + |wm | = | ww
w} | + | ww
w} | = n|w| + m|w|.
| {z
| {z
n veces

m veces

Teora de la Computacion (15410)

2003-I.

Profesor: Rodrigo De Castro

Caso n = 0, m 1. |wn+m | = |w0+m | = |wm |. Por otro lado,


|wn | + |wm | = |w0 | + |wm | = || + |wm | = 0 + |wm | = |wm |.
Caso m = 0, n 1. Similar al caso anterior.
Caso n = 0, m = 0. |wn+m | = |w0+0 | = || = 0. Por otro lado,
|wn | + |wm | = |w0 | + |w0 | = || + || = 0 + 0 = 0.

1.5.

Inversa de una palabra

La inversa o transpuesta de una palabra u se denota u1 y se define


descriptivamente as:

,
si u = ,
1
u =
an a2 a1 , si u = a1 a2 an .
De la definicion se observa claramente que la inversa de la inversa de una palabra
es la misma palabra, es decir,
(u1 )1 = u














Ejercicio

Ejercicio

para u, .

Dar una definicion recursiva de u1 .


Si u, v , demostrar que (uv)1 = v 1 u1 .

Ejercicio Generalizar la propiedad del ejercicio anterior a la concatenacion de


n palabras.

1.6.

Subpalabras, prefijos y sufijos

Una palabra v es una subpalabra o subcadena de u si existen palabras x, y


tales que u = xvy. Notese que x o y pueden ser y, por lo tanto, la palabra vaca
es una subpalabra de cualquier palabra.
Un prefijo de u es una palabra v tal que u = vw para alguna palabra w .
Se dice que v es un prefijo propio si v 6= u.
Similarmente, un sufijo de u es una palabra v tal que u = wv para alguna palabra
w . Se dice que v es un sufijo propio si v 6= u.
Observese que es un prefijo y un sufijo de toda palabra u ya que u = u = u.
Por la misma razon, toda palabra u es prefijo y sufijo de s misma.

Captulo 1

Lenguajes formales

Ejemplo

Sea = {a, b, c, d}, u = bcbaadb.

Prefijos de u :

b
bc
bcb
bcba
bcbaa
bcbaad
bcbaadb

1.7.

Sufijos de u :

b
db
adb
aadb
baadb
cbaadb
bcbaadb

Lenguajes

Un lenguaje L sobre un alfabeto es un subconjunto de , es decir L .


Casos extremos:
L = ,
L = ,

(Lenguaje vaco)
(Lenguaje de todas las palabras sobre )

Todo lenguaje L satisface L , y puede ser finito o infinito. Los lenguajes


se denotan con letras may
usculas A, B, C, . . . , L, M, N, . . ..

Ejemplos

Los siguientes son ejemplos de lenguajes sobre los alfabetos dados.

= {a, b, c}. L = {a, aba, aca}.


= {a, b, c}. L = {a, aa, aaa, . . .} = {an : n 1}.
= {a, b, c}. L = {, a, aba, ab2 a, ab3 a, . . .} = {abn a : n 1} {}.
= {a, b, c, . . . , x, y, z}. L = {u : u aparece en el diccionario espa
nol}.
L es un lenguaje finito.
= {a, b, c}. L = {u : u no contiene el smbolo c}. Por ejemplo,
abbaab L pero abbcaa
/ L.
= {0, 1, 2, 3, 4, 5, 6, 7, 8, 9}. El conjunto N de los n
umeros naturales se
puede definir como un lenguaje sobre , en la siguiente forma:
N = {u : u = 0 o 0 no es un prefijo de u}.


Ejercicio Definir el conjunto de los enteros Z = {. . . , 2, 1, 0, 1, 2, . . .} como



un lenguaje sobre un alfabeto adecuado.

1.8.

Teora de la Computacion (15410)

2003-I.

Profesor: Rodrigo De Castro

Operaciones entre lenguajes

Puesto que los lenguajes sobre son subconjuntos de , las operaciones usuales
entre conjuntos son tambien operaciones validas entre lenguajes. As, si A y B
son lenguajes sobre (es decir A, B ), entonces los siguientes tambien son
lenguajes sobre :
AB
AB
AB
A = A

Union
Interseccion
Diferencia
Complemento

Estas operaciones entre lenguajes se llaman operaciones conjuntistas para


distinguirlas de las operaciones ling
usticas (concatenacion, potencia, inverso,
clausura) que son extensiones a los lenguajes de las ya mencionadas operaciones
entre palabras.

1.9.

Concatenaci
on de lenguajes

La concatenaci
on de dos lenguajes A y B sobre , notada A B o simplemente
AB se define como
AB = {uv : u A, v B}
En general AB 6= BA.


Ejemplo

Si = {a, b, c}, A = {a, ab, ac}, B = {b, b2 }, entonces


AB = {ab, ab2 , ab2 , ab3 , acb, acb2 }.
BA = {ba, bab, bac, b2 a, b2 ab, b2 ac}

Ejemplo

Si = {a, b, c}, A = {ba, bc}, B = {bn : n 0}, entonces


AB = {babn : n 0} {bcbn : n 0}.
BA = {bn ba : n 0} {bn bc : n 0}
= {bn+1 a : n 0} {bn+1 c : n 0}
= {bn a : n 1} {bn c : n 1}.

Ejercicio De un ejemplo de un alfabeto y dos lenguajes A, B sobre tales



que AB = BA
Propiedades de la concatenaci
on de lenguajes. Sean A, B, C lenguajes sobre

, es decir A, B, C . Entonces

Captulo 1

Lenguajes formales

1. A = A = .
2. A {} = {} A = A.
3. Propiedad Asociativa.
A (B C) = (A B) C.
4. Distributividad de la concatenacion con respecto a la union.
A (B C) = A B A C.
(B C) A = B A C A.
5. Propiedad distributiva generalizada. Si {Bi }iI es una familia cualquiera de
lenguajes sobre , entonces
S
S
A Bi = (A Bi )
iI

iI

Bi A =

iI

(Bi A).

iI

Demostracion:
1. A = {uv : u A, v } = .
2. A {} = {uv : u A, v {}} = {u : u A} = A.
3. Se sigue de la asociatividad de la concatenacion de palabras.
4. Caso particular de la propiedad general, demostrada a continuacion.
S
S
5. Demostracion de la igualdad A Bi = (A Bi ):
iI

S
x = u v, con u A & v iI Bi
x = u v, con u A & v Bj , para alg
un j I
xA
un j I
S Bj , para alg
x iI (A Bi ).
S
S
La igualdad
Bi A = (Bi A) se demuestra de forma similar.
xA

iI

iI

iI

Bi

iI

Teora de la Computacion (15410)

2003-I.

Profesor: Rodrigo De Castro

Observaciones:
La propiedad asociativa permite escribir concatenaciones de tres o mas lenguajes sin necesidad de usar parentesis.
En general, no se cumple que A (B C) = A B A C. Es decir, la concatenacion no es distributiva con respecto a la interseccion. Contraejemplo:
A = {a, }, B = {}, C = {a}.
Se tiene: A (B C) = {a, } = . Por otro lado,
A B A C = {a, } {} {a, } {a} = {a, } {a2 , a} = {a}.


Ejercicio Una de las dos contenencias siguientes es verdadera y la otra es



falsa. Demostrar o refutar, seg
un sea el caso:
1. A (B C) A B A C.
2. A B A C A (B C).

1.10.

Potencias de un lenguaje

Dado un lenguaje A sobre (A ), y n N, se define An en la siguiente


forma
A0 = {},
An = AA
A}
| {z
n veces

Esta definicion generaliza a lenguajes la definicion de potenciacion de palabras.

1.11.

La clausura de Kleene de un lenguaje

La clausura de Kleene o estrella de Kleene de un lenguaje A, A , es


la union de todas las potencias de A y se denota por A .
A =

Ai = A0 A1 A2 An

(Descripcion 1)

i0

A se puede describir de la siguiente manera


A = conjunto de todas las concatenaciones
de palabras de A, incluyendo
= {u1 un : ui A, n 0}

(Descripcion 2)

Captulo 1

Lenguajes formales

De manera similar se define la clausura positiva de un lenguaje A, A , la


cual se denota por A+ .
A+ =

Ai = A1 A2 A n

i1

A+ se puede describir de la siguiente manera


A+

= conjunto de todas las concatenaciones de palabras de A,


= {u1 un : ui A, n 1}

Observese que A = A+ {} y que A = A+ si y solamente si A.


Propiedades. Sea A un lenguaje sobre , (A ).
1. A+ = A A = A A
2. A A = A
n
3. A = A , para todo n 1.

4. A = A .
5. A+ A+ A+ .
+
6. A = A .

7. A+ = A .
+
8. A+ = A+ .
Demostracion:
1.

A A = A (A0 A1 A2 )
= A 1 A 2 A3
= A+ .
Similarmente se demuestra que A A = A+ .

2. Si x A A , entonces x = u v, con u A , v A . Entonces, 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 u n v 1 v 2 v m .

10

Teora de la Computacion (15410)

2003-I.

Profesor: Rodrigo De Castro

con ui A, vi A, n 0. Por lo tanto, x es una concatenacion de n + m


palabras de A. As que x A .
Recprocamente, si x A , entonces x = x A A .
Esto prueba la igualdad de los conjuntos A A y A .
3. Se sigue de la propiedad anterior.
4.
A

0
1
2
= A A A
= {} A A A
= A .

5. La demostracion de esta propiedad es similar a la de la propiedad 2, pero


con la restriccion m, n 1.
En general, no se tiene la igualdad A+ A+ = A+ ; mas adelante se mostrara un contraejemplo.
6.
A

7.

A+

1
2
3
= A (A (A
= A A A
= A .

0
1
2
= A+ A+ A +
= {} A+ A+ A+
= A (conjuntos contenidos en A+ )
= A

+

1
2
3
= A+ A+ A + ,
= A+ (conjuntos contenidos en A+ )
= A+

A+

8.

+

Contraejemplo de A+ A+ = A+ .
Sea = {a, b}, A = {a}. Se tiene
A+ = A1 A2 = {a} {aa} {aaa} = {an : n 1}
Por otro lado,
A+ A+ = {a, a2 , a3 , . . . } {a, a2 , a3 , . . . } = {a2 , a3 , a4 , . . . } = {an : n 2}.

Captulo 1

Lenguajes formales

Observaci
on:

11

Seg
un las definiciones dadas, tiene dos significados:

= conjunto de las palabras sobre el alfabeto .


= conjunto de todas las concatenaciones de palabras de .
No hay conflicto de notaciones porque las dos definiciones anteriores de dan
lugar al mismo conjunto.


Ejercicio

Sean A, B . Demostrar que


(A B) = (A B )

(1.1)

Ayuda: tener en cuenta tanto la descripcion 1 como la descripcion 2 presentadas


arriba.

1.12.

Inverso de un lenguaje

Dado A un lenguaje sobre , se define A1 de la siguiente forma:


A1 = {u1 : u A}.
Propiedades. Sean A y B lenguajes sobre (es decir, A, B ).
1. (A B)1 = B 1 A1 .
2. (A B)1 = A1 B 1 .
3. (A B)1 = A1 B 1 .
1

4. (A1 )

= A.

5. (A )1 = (A1 ) .
1

6. (A+ )

= (A1 ) .

Demostracion:
1.

x (A B)1

x = u1 , donde u A B.
x = u1 , donde u = vw, v A, w B.
x = (vw)1 , donde v A, w B.
x = w1 v 1 , donde v A, w B.
x B 1 A1

12
2.
3.
4.

Teora de la Computacion (15410)
















Ejercicio
Ejercicio
Ejercicio

2003-I.

Profesor: Rodrigo De Castro

5.
x (A )1

6.

Ejercicio

x = u1 , donde u A .
x = (u1 u2 un )1 , donde los ui A, n 0.
1
x = un1 u1
2 u1 , donde los ui A, n 0.
x (A1 ) .

1.13.

Lenguajes regulares

Ejercicio Se pueden generalizar las propiedades 2 y 3 anteriores para uniones



e intersecciones arbitrarias, respectivamente?

Los lenguajes regulares sobre un alfabeto dado son todos los lenguajes que
se pueden formar a partir de los lenguajes basicos , {}, {a}, a , por medio
de las operaciones de union, concatenacion y estrella de Kleene.
Podemos dar una definicion recursiva de los lenguajes regulares. Sea un alfabeto.
1. , {} y {a}, para cada a , son lenguajes regulares sobre . Estos son
los denominados lenguajes regulares basicos.
2. Si A y B son lenguajes regulares sobre , tambien lo son
AB
AB
A

(union)
(concatenacion)
(estrella de Kleene)

Observese que y son lenguajes regulares sobre .

Ejemplos

Sea = {a, b}. Los siguientes son lenguajes regulares sobre .

1. El lenguaje A de todas las palabras que tienen exactamente una a:


A = {b} {a} {b} .

Captulo 1

Lenguajes formales

13

2. El lenguaje B de todas las palabras que comienzan con b:


B = {b} {a, b} .
3. El lenguaje C de todas las palabras que contienen la cadena ba:
C = {a, b} {ba} {a, b} .
4. ({a} {b} ) {a}.



5.
{a} {b} {b} .

1.14.

Expresiones regulares

Las expresiones regulares representan lenguajes regulares y su proposito es simplificar la escritura de los lenguajes regulares.
La siguiente es la definicion recursiva de las expresiones regulares sobre un
alfabeto dado.
1. Expresiones regulares basicas:
es una expresion regular que representa al lenguaje .
es una expresion regular que representa al lenguaje {}.
a es una expresion regular que representa al lenguaje {a}, a .
2. Si R y S son expresiones regulares sobre , tambien lo son:
RS
RS
R
RS representa la concatenacion de los lenguajes representados por R y S;
RS representa su union, y R representa la clausura de Kleene del lenguaje
representado por R.


Ejemplo

Dado el alfabeto = {a, b, c},


(a b )a (bc)

es una expresion regular que representa al lenguaje


({a} {b} ) {a} {bc} .

14

Teora de la Computacion (15410)

Ejemplo

2003-I.

Profesor: Rodrigo De Castro

Dado el alfabeto = {a, b},


( a) (a b) (ba)

es una expresion regular que representa al lenguaje


({} {a}) {a, b} {ba} .


los con expresiones regulares:

Ejemplos

Los tres primeros lenguajes de la seccion 1.13 podemos representar-

1. El lenguaje A de todas las palabras que tienen exactamente una a:


A = b ab .
2. El lenguaje B de todas las palabras que comienzan con b:
B = b(a b) .
3. El lenguaje C de todas las palabras que contienen la cadena ba:
C = (a b) ba(a b) .
Observaci
on: La representacion de lenguajes regulares por medio de expresiones regulares no es u
nica. Es posible que haya varias expresiones regulares
diferentes para el mismo lenguaje. Por ejemplo, b(a b) y b(b a) representan
el mismo lenguaje. Otro ejemplo: las dos expresiones regulares
(a b)

(a b )

representan el mismo lenguaje en razon de la igualdad (1.1) de la seccion 1.11.




guajes, definidos sobre el alfabeto = {a, b}.

Ejemplos

Encontrar expresiones regulares que representen los siguientes len-

1. Lenguaje de todas las palabras que comienzan con b y terminan con a.


Solucion: b(a b) a.
2. Lenguaje de todas las palabras que tienen exactamente dos as.
Solucion: b ab ab .

Captulo 1

Lenguajes formales

15

3. Lenguaje de todas las palabras que tienen un n


umero par de smbolos (palabras de longitud par).
Solucion: (aa ab ba bb) .
4. Lenguaje de todas las palabras que tienen un n
umero impar de smbolos
(palabras de longitud impar).
Solucion: a(aa ab ba bb) b(aa ab ba bb) .
5. Lenguaje de todas las palabras que tienen un n
umero par de a0 s.
Soluciones:
b (ab a) b .
(ab a b) .
(b ab ab ) b .
b (b ab ab ) b .


Ejemplo Encontrar una expresion regular que represente el lenguaje de todas



las palabras que no contienen la cadena bc, definido sobre el alfabeto
= {a, b, c}.
Solucion: c (b ac ) .


Ejercicio

Encontrar expresiones regulares para los siguientes lenguajes:

1. = {a, b}. Lenguaje de todas las palabras que tienen la cadena ab un


n
umero par de veces.
2. = {a, b}. Lenguaje de todas las palabras que tienen un n
umero impar de
as.
3. = {a, b}. Lenguaje de todas las palabras que tienen un n
umero par de
as o un n
umero impar de bs.
4. = {a, b, c}. Lenguaje de todas las palabras que tienen un n
umero par de
smbolos.
5. = {a, b, c}. Lenguaje de todas las palabras que tienen un n
umero impar
de smbolos.
6. = {a, b, c}. Lenguaje de todas las palabras que comienzan con c y terminan con b.
7. = {a, b, c}. Lenguaje de todas las palabras que no contienen la cadena cc.

16

Teora de la Computacion (15410)

2003-I.

Profesor: Rodrigo De Castro

8. (Opcional, Difcil!) = {a, b}. Lenguaje de todas las palabras que tienen
un n
umero par de as y un n
umero impar de bs.
Observaci
on:
No todos los lenguajes sobre un alfabeto dado son regulares. Mas adelante se
mostrara que el lenguaje
L = {, ab, aabb, aaabbb, . . . } = {an bn : n 0}
sobre = {a, b} no se puede representar por medio de una expresion regular, y
por lo tanto, no es un lenguaje regular.

Captulo 2
Aut
omatas finitos
2.1.

Aut
omatas finitos deterministas

Los aut
omatas finitos son maquinas abstractas que procesan palabras, las cuales son aceptadas o rechazadas.

El automata act
ua leyendo los smbolos escritos sobre una cinta semi-infinita,
dividida en casillas, sobre la cual se escribe una palabra de entrada u, un smbolo por casilla. El automata posee una cabeza lectora o control finito, que
inicialmente escanea o lee la casilla del extremo izquierdo de la cinta.

La cabeza lectora del automata posee un cierto n


umero (finito) de configuraciones
internas, llamadas estados del aut
omata. Entre los estados de un automata se
destacan el estado inicial y los estados finales o estados de aceptaci
on.
Formalmente, un automata finito M esta definido por cinco parametros,
M = (, Q, q0 , F, ),
a saber:
1. Un alfabeto , llamado alfabeto de cinta. Todas las palabras que procesa
M pertenecen a .
2. Q = {q0 , q1 , . . . , qn }, conjunto de estados del automata.
3. q0 Q, estado inicial.
4. F Q, conjunto de estados finales o de aceptacion. F 6= .
5. La funcion de transicion del automata
: Q
Q
(q, a) 7 (q, a)
Toda palabra de entrada es procesada completamente, hasta que la cabeza lectora
encuentra la primera casilla vaca.


Ejemplo

= {a, b}
Q = {q0 , q1 , q2 }
q0 : estado inicial
F = {q0 , q2 }, estados de aceptacion.
Funcion de transicion :

q0 q0 q1
q1 q1 q2
q2 q1 q 1

(q0 , a) = q0

(q0 , b) = q1

(q1 , a) = q1

(q1 , b) = q2

(q2 , a) = q1

(q2 , b) = q1

Ilustracion del procesamiento de dos palabras de entrada:


1. u = aabab.
2. v = aababa.

Puesto que q2 es un estado de aceptacion, la palabra de entrada u es aceptada.

Puesto que q1 no es un estado de aceptacion, la palabra de entrada v es rechazada.


Caso especial: la palabra es la palabra de entrada.

Puesto que q0 es un estado de aceptacion, la palabra es aceptada.


En general se tiene: la palabra vaca es aceptada por un automata M si y
solamente si el estado inicial q0 de M tambien es un estado de aceptacion.
Los automatas finitos descritos arriba se denominan aut
omatas finitos deterministas ya que para cada estado q y para cada smbolo a , la funcion de
transicion (q, a) siempre esta definida. Es decir, la funcion de transicion determina unvocamente la accion que el automata realiza cuando el control finito se
encuentra en un estado q leyendo un smbolo a sobre la cinta:

Dado un automata M , el lenguaje aceptado o reconocido por M se denota


L(M ) y se define por
L(M ) := {u : M termina el procesamiento de la palabra
de entrada u en un estado q F }.

2.2.

Diagrama de estados de un aut


omata finito

Un automata finito se puede representar por medio de un grafo dirigido y etiquetado. Recuerdese que un grafo es un conjunto de vertices o nodos unidos por
aristas o conectores; si las aristas tienen tanto direccion como etiquetas, el grafo
se denomina grafo dirigido y etiquetado o digrafo etiquetado.
El grafo de un automata se obtiene siguiendo las siguientes convenciones:
Los vertices o nodos son los estados del automata.
El estado q se representa por:
El estado inicial q0 se representa por:
Un estado final q se representa por:
La transicion = (q, a) = p se representa en la forma:

Dicho grafo se denomina el diagrama de estados del aut


omata.


Ejemplo Diagrama de estados del automata de la seccion anterior.




= {a, b}
Q = {q0 , q1 , q2 }
q0 : estado inicial
F = {q0 , q2 }, estados de aceptacion.
Funcion de transicion :

q0 q 0 q1
q1 q 1 q2
q2 q 1 q1

(q0 , a) = q0

(q0 , b) = q1

(q1 , a) = q1

(q1 , b) = q2

(q2 , a) = q1

(q2 , b) = q1

2.3.

Dise
no de aut
omatas

Para automatas deterministas se adopta la siguiente convencion adicional con


respecto a los diagramas de estados: se supone las aristas no dibujadas explcitamente conducen a un estado limbo de no-aceptacion. Es decir, en el diagrama
de estados se indican u
nicamente las aristas que conduzcan a trayectorias de
aceptacion. Esto permite simplificar considerablemente los diagramas.
En esta seccion se considerara el siguiente tipo de problemas:
Dado un lenguaje regular L dise
nar un automata finito determinista
M que acepte o reconozca a L, es decir, tal que L(M ) = L.
Mas adelante se demostrara, en toda su generalidad, que estos problemas siempre
tienen solucion.


Ejemplo = {a, b}. L = a = {, a, a2 , a3 , . . .}.

Version simplificada:


Ejemplo = {a, b}. L = a+ = {a, a2 , a3 , . . .}.

Version simplificada:

Ejemplo = {a, b}. L = lenguaje de las palabras sobre que contienen



exactamente dos as. L = b ab ab .

Ejemplo = {a, b}. L = lenguaje de las palabras sobre que tienen un



n
umero par de smbolos (palabras de longitud par).

Ejemplo = {a, b}. L = lenguaje de las palabras sobre que contienen un



n
umero par de as.

Ejemplo = {a, b}. L = lenguaje de las palabras sobre que terminan en b.

lenguajes:

Ejercicios

Dise
nar automatas finitos deterministas que acepten los siguientes

1. = {a, b}. L = lenguaje de las palabras sobre de longitud impar.


2. = {a, b}. L = lenguaje de las palabras sobre que contienen un n
umero
impar de bs.
3. = {a, b, c}. L = lenguaje de las palabras sobre que contienen la cadena
bc.

4. = {a, b}. L = lenguaje de las palabras sobre que comienzan con b y


terminan con a.
5. = {a, b}. L = lenguaje de las palabras sobre que contienen un n
umero
par de as y un n
umero par de bs. Ayuda: utilizar 4 estados.
6. = {a, b}. L = ab+ .
7. = {a, b}. L = ab ab a.
8. = {a, b}. L = (a ba) .
9. = {a, b}. L = (ab ba) .

2.4.

Aut
omatas finitos no deterministas

Los automatas finitos no-deterministas se asemejan a los AFD, excepto por el


hecho de que para cada estado q Q y cada a , la transicion (q, a) puede
consistir en mas de un estado o puede no estar definida. Mas concretamente, un
aut
omata finito no-determinista (AFN) esta definido por
M = (, Q, q0 , F, )
donde
1. es el alfabeto de cinta.
2. Q es un conjunto (finito) de estados.
3. q0 Q es el estado inicial.
4. 6= F Q es el conjunto de estados finales o estados de aceptacion.
5.

: Q (Q)
(q, a) 7 (q, a) = {qi1 , qi2 , . . . , qik }
donde

(Q) es el conjunto de subconjunto de Q.

Puede suceder que (q, a) = , lo cual significa que, si durante el procesamiento


de una palabra de entrada u, M ingresa al estado q leyendo sobre la cinta el
smbolo a, el computo se aborta.
Computo abortado:

La nocion de diagrama de estados para un AFN se define de manera analoga al


caso AFD, pero puede suceder que desde un mismo nodo (estado) salgan dos o
mas aristas con la misma etiqueta:

Un AFN M puede procesar una palabra de entrada u de varias maneras.


Sobre el diagrama de estados del automata, esto significa que pueden existir varias
trayectorias etiquetadas con los smbolos de u.
La siguiente es la nocion de aceptacion para automatas no deterministas:
L(M ) = lenguaje aceptado o reconocido por M
= {u : existe por lo menos un computo completo
de u que termina en un estado q F }
Es decir, para que una palabra u sea aceptada, debe existir por lo menos un
computo en el que u sea procesada completamente y que finalice estando M en
un estado de aceptacion.


Ejemplo Sea M el siguiente AFN:

q0

{q0 , q1 , q3 }

q1

{q1 }

{q2 }

q2

{q1 , q2 }

q3

{q3 }

Para la palabra de entrada u = abb, existen computos que conducen al rechazo,


computos abortados y computos que terminan en estados de aceptacion. Seg
un
la definicion de lenguaje aceptado, u L(M ).

no el siguiente AFD que acepta


Ejemplo En un ejemplo de la seccion 2.3 se dise

el lenguaje de las palabras sobre = {a, b} que terminan en b:

Un AFN que acepta el mismo lenguaje y que es, tal vez, mas facil de concebir, es
el siguiente:

Este automata se asemeja a la expresion regular (a b) b.




+
Ejemplo Considerese el lenguaje L = ab a sobre el alfabeto = {a, b}. El

siguiente AFN M satisface L(M ) = L.

Ejemplo = {a, b}, L = (ab aba) . El siguiente AFN acepta a L.

Otro AFN que acepta el mismo lenguaje y que tiene solo tres estados es el siguiente:

Ejercicios

Dise
nar AFDs o AFNs que acepten los siguientes lenguajes:

1. = {a, b, c}, L = lenguaje de las palabras sobre que no contienen la


cadena bc. Ayuda: considerar la expresion regular de L dada en la seccion
1.14.
2. = {a, b}, L = ab+ a .
3. = {a, b}, L = a(a ab) .

4. = {a, b, c}, L = a b c .

2.5.

Equivalencia computacional entre los AFD


y los AFN

En esta seccion se mostrara que los modelos AFD y AFN son computacionalmente equivalentes. En primer lugar, es facil ver que un AFD M = (, Q, q0 , F, )
puede ser considerado como un AFN M 0 = (, Q, q0 , F, ) definiendo (q, a) =
{(q, a)} para cada q Q y cada a . Para la afirmacion recproca tenemos el
siguiente teorema:
2.5.1 Teorema. Dado un AFN M = (, Q, q0 , F, ) se puede construir un AFD
M 0 equivalente a M , es decir, tal que L(M ) = L(M 0 ).
Este teorema, cuya demostracion se dara en detalle mas adelante, establece que
el no-determinismo se puede eliminar. Dicho de otra manera, los automatas deterministas y los no deterministas aceptan los mismos lenguajes. La idea de la
demostracion consiste en considerar cada conjunto de estados {p1 , . . . , pj } del
automata no-determinista como un u
nico estado del nuevo automata determinista. El siguiente ejemplo ilustra el procedimiento.


el AFN M presentado en la seccion 2.4, tal que


Ejemplo Consideremos

L(M ) = ab a+ sobre = {a, b}:

La funcion de transicion de M es:

q0

{q1 , q2 }

q1

{q1 }

q2

{q2 }

El nuevo AFD M 0 construido a partir de M y equivalente a M tiene (por lo


menos) un estado mas: {q1 , q2 } y su funcion de transicion tiene el siguiente
aspecto:

q0

{q1 , q2 }

q1

{q1 }

q2

{q2 }

{q1 , q2 }

{q2 }

{q1 }

El diagrama de estados de este automata es:

Para mayor simplicidad, podemos cambiar los nombres de los estados de este
automata:

en la secci
on 2.4.

Ejercicios

Dise
nar AFDs equivalentes a los ejemplos de AFNs construidos

Para la demostracion del teorema, conviene extender la definicion de la funcion


de transicion, tanto de los automatas deterministas como de los no-deterministas.
2.5.2 Definici
on. Sea M = (, Q, q0 , F, ) un AFD. La funcion de transicion
: Q Q se extiende a una funcion b : Q Q por medio de la
siguiente definicion recursiva:

b ) = q, q Q,
(q,
b a) = (q, a), q Q, a ,
(q,
b wa) = ((q,
b w), a), q Q, a , w .
(q,
b 0 , w) es el estado
Seg
un esta definicion, para una palabra de entrada w , (q
en el que el automata termina el procesamiento de w. Por lo tanto, podemos
describir el lenguaje aceptado por M de la siguiente forma:
b 0 , w) F }.
L(M ) = {w : (q
b w) se notara simNotaci
on. Sin peligro de ambig
uedad, la funcion extendida (q,
plemente (q, w).
2.5.3 Definici
on. Sea M = (, Q, q0 , F, ) un AFN. La funcion de transicion
: Q (Q) se extiende inicialmente a conjuntos de estados. Para a
y S F se define
[
(S, a) :=
(q, a)
qS

b : Q (Q), de manera similar a


Podemos extender a una funcion
como se hizo para AFDs. Recursivamente,
b ) = {q}, q Q,
(q,
b a) = (q, a), q Q, a ,
(q,
[
b wa) = ((q,
b w), a) =
(q,
(p, a),

q Q, a , w .

b
p(q,w)

b 0 , w) es el conjunto
Seg
un esta definicion, para una palabra de entrada w , (q
de los posibles estados en los que terminan los computos completos de w. Si el
b 0 , w) = .
computo se aborta durante el procesamiento de w, se tendra (q
Podemos describir el lenguaje aceptado por M de la siguiente forma:
b 0 , w) F 6= }.
L(M ) = {w : (q
b w) se notara simNotaci
on. Sin peligro de ambig
uedad, la funcion extendida (q,
plemente (q, w).
A continuacion se hara la demostracion del teorema 2.5.1
Demostracion: Dado el AFN M = (, Q, q0 , F, ), construimos el AFD M 0 as:
M 0 = (, (Q), {q0 }, F, )

donde

: (Q) (Q)
(S, a) 7 (S, a) := (S, a).
F 0 = {S (Q) : S F 6= }.

Se demostrara que L(M ) = L(M 0 ) probando que, para toda palabra w ,


({q0 }, w) = (q0 , w).
La anterior igualdad se demostrara por induccion sobre w.
Para w = , claramente se tiene ({q0 }, ) = (q0 , ) = {q0 }.
Para w = a, a , se tiene
({q0 }, a) = ({q0 }, a) = (q0 , a).
Supongase (hipotesis de induccion) que ({q0 }, w) = (q0 , w), y que a .
({q0 }, wa) =
=
=
=
=

(({q0 }, w), a)
(({q0 }, w), a)
(({q0 }, w), a)
({q0 }, wa)
(q0 , wa)

Esto demuestra el teorema.

(definicion de la extension de )
(hipotesis de induccion)
(definicion de )
(definicion de la extension de )
(definicion de la extension de )

2.6.

Aut
omatas con transiciones

Un aut
omata finito con transiciones (AFN-) es un AFN M
M = (, Q, q0 , F, )
en el que la funcion de transicion esta definida como
: Q ( {}) (Q).
La transicion (q, ) = {pi1 , . . . , pin }, llamada transicion , tiene el siguiente
significado computacional: estando en el estado q, el automata puede cambiar a
uno cualquiera de los estados pi1 , . . . , pin , independientemente del smbolo ledo y
sin mover la cabeza lectora. Dicho de otra manera, las transiciones permiten al
automata cambiar internamente de estado sin consumir el smbolo ledo sobre
la cinta.
En el diagrama de estados, las transiciones dan lugar a aristas con etiquetas .
Una palabra de entrada w es aceptada por un AFN- si existe por lo menos una
trayectoria cuyas etiquetas son exactamente los smbolos de w, intercalados con
cero, uno o mas s.
El modelo AFN-, al igual que el AFN, permite m
ultiples computos para una
misma palabra de entrada, as como computos abortados. Pero, a diferencia de
los AFD y los AFN, en los AFN- pueden existir computos infinitos, es decir
computos que nunca terminan.

Ejemplo M :

Ejemplos de palabras aceptadas por M :


u = aab
v = abaa
w = abbaa

Computos de aceptacion de u = aab y v = abaa:

Los AFN- permiten a


un mas libertad en el dise
no de automatas, especialmente
cuando hay numerosas concatenaciones.


Ejemplo = {a, b, c}.L = a b c . AFN que acepta a L:

AFN- que acepta a L:

Ejemplo = {a, b, c}. L =lenguaje de todas las palabras sobre que tienen

un n
umero par de as o un n
umero par de bs.
AFD que acepta el lenguaje de las palabras con un n
umero par de as:

AFD que acepta el lenguaje de las palabras con un n


umero par de bs:

AFN- que acepta el lenguaje de las palabras con un n


umero par de as o un
n
umero par de bs:

Ejercicios

Dise
nar AFN- que acepten los siguientes lenguajes:

1. (ab b) ab , sobre = {a, b}.


2. a(a c) a , sobre = {a, b, c}.
3. ab ba b(ab ba) , sobre = {a, b}.
4. ab ba b(ab ba) , sobre = {a, b}.
5. (a aba bb) a (ab ba) , sobre = {a, b}.

2.7.

Equivalencia computacional entre los


AFN- y los AFN

En esta seccion se mostrara que el modelo AFN- es computacionalmente equivalente al modelo AFN. O dicho mas graficamente, las transiciones se pueden
eliminar, a
nadiendo transiciones que las simulen, sin alterar el lenguaje aceptado.
En primer lugar, un AFN M = (, Q, q0 , F, ) puede ser considerado como un
AFN- en el que, simplemente, hay cero transiciones . Para la afirmacion recproca tenemos el siguiente teorema:
2.7.1 Teorema. Dado un AFN- M = (, Q, q0 , F, ), se puede construir un
AFN M 0 equivalente a M , es decir, tal que L(M ) = L(M 0 )
Para construir M 0 a partir de M se requiere la nocion de -clausura de un
estado. Para un estado q Q, la -clausura de q, notada [q], es el conjunto
de estados de M a los que se puede llegar desde q por 0, 1 o mas transiciones .
Notese que, en general, [q] 6= (q, ). Por definicion, q [q]. La -clausura de
un conjunto de estados {q1 , . . . , qk } se define por:
[{q1 , . . . , qk }] := [q1 ] [qn ].
Ademas, [] := . El AFN M 0 se define como
M 0 = (, Q, q0 , F 0 , 0 )
donde

0 : Q
(q, a) 7

(Q)


0 (q, a) := ([q], a) .

y
F 0 = {q Q : [q] F 6= }.
Es decir, los estados finales de M 0 incluyen los estados finales de M y aquellos
estados desde los cuales se puede llegar a un estado final por medio de una o mas
transiciones .
Como se puede apreciar, la construccion de M 0 a partir de M es puramente
algortmica.


Ejemplo Vamos a ilustrar el anterior algoritmo con el AFN- M , presentado



en el segundo ejemplo de la secci
on 2.6.

L(M ) = a b c sobre = {a, b, c}.


Las -clausuras de los estados vienen dadas por:
[q0 ] = {q0 , q1 , q2 }.
[q1 ] = {q1 , q2 }.
[q2 ] = {q2 }.
La funcion de transicion 0 : Q {a, b, c} ({a, b, c}) es:
0 (q0 , a)
0 (q0 , b)
0 (q0 , c)
0 (q1 , a)
0 (q1 , b)
0 (q1 , c)
0 (q2 , a)
0 (q2 , b)
0 (q2 , c)

=
=
=
=
=
=
=
=
=

[([q0 ], a)] = [({q0 , q1 , q2 }, a)] = [{q0 }] = {q0 , q1 , q2 }.


[([q0 ], b)] = [({q0 , q1 , q2 }, b)] = [{q1 }] = {q1 , q2 }.
[([q0 ], c)] = [({q0 , q1 , q2 }, c)] = [{q2 }] = {q2 }.
[([q1 ], a)] = [({q1 , q2 }, a)] = [] = .
[([q1 ], b)] = [({q1 , q2 }, b)] = [{q1 }] = {q1 , q2 }.
[([q1 ], c)] = [({q1 , q2 }, c)] = [{q2 }] = {q2 }.
[([q2 ], a)] = [({q2 }, a)] = [] = .
[([q2 ], b)] = [({q2 }, b)] = [] = .
[([q2 ], c)] = [({q2 }, c)] = [{q2 }] = {q2 }.

El automata M 0 as obtenido es el siguiente:

Ejercicios Construir AFNs equivalentes a los siguientes AFN-s.




1.

2.

3.

El automata presentado en la seccion 2.6, que acepta el lenguaje de todas


las palabras sobre = {a, b} que tienen un n
umero par de as o un n
umero
par de bs.

2.8.

Teorema de Kleene. Parte I

En las secciones anteriores se ha mostrado la equivalencia computacional de los


modelos AFD, AFN y AFN-, lo cual puede ser descrito en la forma:

AFD AFN AFN-


Esto quiere decir que para cada automata de uno de estos tres modelos se pueden
construir automatas equivalentes en los otros modelos. Por lo tanto, los modelos
AFD, AFN y AFN- aceptan exactamente los mismos lenguajes. El teorema de
Kleene establece que tales lenguajes son precisamente los lenguajes regulares.
2.8.1. Teorema de Kleene. Un lenguaje es regular si y solo si es aceptado por
un automata finito (AFD o AFN o AFN-).
Para demostrar el teorema, consideraremos las dos direcciones por separado. Primero demostraremos que dado un lenguaje regular L, existe un AFN- tal que
L(M ) = L. En la seccion 2.11, demostraremos que a partir de un AFD M se puede encontrar una expresion regular R tal que L(M ) = R. En ambas direcciones,
las demostraciones son constructivas, lo que permite presentar las construcciones
de este captulo en la siguiente forma:

Parte I. Dada una expresion regular R sobre un alfabeto , se puede construir


un AFN- M tal que el lenguaje aceptado por M sea exactamente el lenguaje
representado por R.

Demostracion: Puesto que la definicion de las expresiones regulares se hace recursivamente, la demostracion se lleva a cabo razonando por induccion sobre R.
Para las expresiones regulares basicas, podemos construir facilmente automatas
que acepten los lenguajes representados.
El automata

acepta el lenguaje , es decir, el lenguaje representado por la expresion regular


R = .
El automata

acepta el lenguaje {}, es decir, el lenguaje representado por la expresion regular


R = .
El automata

acepta el lenguaje {a}, a , es decir, el lenguaje representado por la expresion


regular R = a.
Paso inductivo: supongase que para las expresiones regulares R y S existen AFN-
M1 y M2 tales que L(M1 ) = R, L(M2 ) = S. Esquematicamente vamos a presentar
los automatas M1 y M2 en la siguiente forma:

Los estados finales o de aceptacion se dibujan a la derecha, pero cabe advertir


que el estado inicial puede ser tambien un estado de aceptacion. Obviando ese
detalle, podemos ahora obtener AFN- que acepten los lenguajes R S, L S y
L .

Automata que acepta R S. Los automatas M1 y M2 se conectan en


paralelo y los estados finales del nuevo automata son los estados finales de
M1 junto con los de M2 :

Automata que acepta R S. Los automatas M1 y M2 se conectan en serie


y los estados finales del nuevo automata son u
nicamente los estados finales
de M2 :

Automata que acepta R . Los estados finales del nuevo automata son los
estados finales de M1 junto con el estado inicial.

Esto concluye la demostracion de la parte I del teorema de Kleene. En la siguiente seccion se presentan ejemplos concretos del procedimiento utilizado en la
demostracion.

2.9.

Ejemplos de la parte I del Teorema de Kleene

De acuerdo con las construcciones de la demostracion de la parte I del Teorema


de Kleene, un AFN- que acepta el lenguaje a es:

Para simplificar las construcciones utilizaremos, en su lugar, el automata




del teorema para construir un


Ejemplo Vamos a utilizar el procedimiento

AFN- que acepte el lenguaje a (ab ba) a(b a ) sobre el
alfabeto {a, b}.
Automata que acepta ab:

Automata que acepta ba:

Automata que acepta ab ba:

Automata que acepta (ab ba) :

Automata que acepta a (ab ba) :

Automata que acepta b a :

Automata que acepta a(b a ):

Automata que acepta a (ab ba) a(b a ):

bre = {a, b, c}:

Ejercicios

Dise
nar automatas AFN- que acepte los siguientes lenguajes so-

1. a (b ab ab a)c (a b)(a ac) .


2. c a(a ba) (abc) c (a cb c).

2.10.

Lema de Arden

Vamos a utilizar el siguiente resultado, conocido como lema de Arden, para


demostrar la segunda parte del teorema de Kleene.
2.10.1. Lema de Arden. Si A y B son lenguajes sobre un alfabeto y 6 A,
entonces la ecuacion X = AX B tiene una u
nica soluci
on dada por X = A B.
Demostracion: Si X es una solucion de X = AX B, entonces B AX B = X.
Tambien se tiene AX X; a partir de esta contenencia y usando induccion sobre
n, se puede demostrar que An X X para todo n N. Por lo tanto
An B An X X
para todo n N. As que
!
A B =

[
n0

An B =

An B X.

n0

Esto muestra que toda solucion de X = AX B contiene a A B, y es facil verificar


que, de hecho, A B es una solucion:
A(A B) B = A+ B B = (A+ )B = A B.
Para la unicidad, demostraremos que si A B C, con C A B = , es una
solucion de la ecuacion, entonces C = .
A B C = A(A B C) B
= A+ B AC B
= (A+ )B AC
= A B AC
Intersectando con C ambos lados de la anterior igualdad, se tiene:
(A B C) C = (A B C) (AC C)
C = AC C
Por lo tanto, C AC. Si se tuviera C 6= , existira una palabra u C de
longitud mnima. Entonces u = vw, con v A, w C. Por hipotesis, v 6= ; por
consiguiente |w| < |u|. Esta contradiccion muestra que necesariamente C = ,
tal como se quera.

nica X = a b ab.
Ejemplo La ecuacion X = aX b ab tiene solucion u

on X = a2 X b+ X ab se puede escribir en la forma


Ejemplo La ecuaci

X = (a2 b+ )X ab. Por el lema de Arden tiene soluci
on u
nica
2
+
X = (a b ) ab.
on X = ab2 X aX a b b a se puede escribir como
Ejemplo La ecuaci

X = (ab2 a)X (a b b a). Por lema de Arden tiene soluci
on u
nica
2

X = (ab a) (a b b a).


siguientes ecuaciones.

Ejercicios

En los ejercicios 1. y 2. encontrar las soluciones (


unicas) de las

1. X = aX bX.
2. X = aX b ab bX a .
3. Demostrar de si A, entonces Y es una solucion de la ecuacion
X = AX B si y solo si Y = A (B D) para alg
un D .

2.11.

Teorema de Kleene. Parte II

En esta seccion demostraremos que para todo AFN M = (, Q, q0 , F, ) existe


una expresion regular R tal que L(M ) = R.
El automata M tiene un u
nico estado inicial y cambiando dicho estado surgen
nuevos automatas. Para cada qi Q, sea Mi el automata que coincide con M
pero con estado inicial qi . Mas precisamente, Mi = (, Q, qi , F, ). Al lenguaje
aceptado por Mi lo denotaremos Ai ; es decir, L(Mi ) = Ai . En particular, A0 =
L(M ). Puesto que los estados de aceptacion no se han alterado, se tiene que
Ai = {w : (qi , w) F 6= }.
Veremos que cada Ai se puede representar con una expresion regular y por lo
tanto lo podemos escribir como
S

si qi 6 F,
{aAj : qj (qi , a)},
a
Ai = S
(2.1)

{aAj : qj (qi , a)} . si qi F.


a

Si Q = {q0 , q1 , . . . , qn }, las igualdades de la forma (2.1) dan lugar a un sistema


de n + 1 ecuaciones con n + 1 incognitas (los Ai ):

A0 = C01 A0 C02 A1 C0n An ()

A1 = C11 A0 C12 A1 C1n An ()


..
..

.
.

A = C A C A C A ()
n
n1 0
n2 1
nn n
donde cada coeficiente Cij o es o es un smbolo de . El termino se a
nade a
una ecuacion solamente si el estado correspondiente es un estado de aceptacion.
Utilizando sucesivas veces el lema de Arden, se puede mostrar que este sistema
de ecuaciones siempre se puede solucionar y su solucion es u
nica. En efecto,
comenzando con la u
ltima ecuacion, se escribe An en terminos de los demas
Ai , para lo cual se usa el lema de Arden si es necesario. Este valor de An se
reemplaza en las demas ecuaciones y el sistema se reduce a n ecuaciones con n
incognitas. Similarmente, An1 se escribe en terminos de los demas Ai , usando el
lema de Arden si es necesario, y tal valor se reemplaza en las ecuaciones restantes.
Prosiguiendo de esta manera, el sistema original se reduce a una sola ecuacion
cuya incognita es precisamente A0 . Esta ecuacion se soluciona recurriendo una
vez mas al lema de Arden. Puesto que los coeficientes Cij diferentes de son
smbolos de , se obtiene una expresion regular R tal que L(M ) = A0 = R.


Ejercicio Porque la anterior demostracion no es valida para automatas con



transiciones ?.

2.12.

Ejemplos de la parte II del Teorema de


Kleene

A continuacion ilustraremos el procedimiento de la demostracion de la seccion


2.11 para encontrar L(M ) a partir de un AFN M = (, Q, q0 , F, ) dado.

Ejemplo Considerese el siguiente AFN M :

Por simple inspeccion sabemos que L(M ) = (a b) a2 (a b) , pero utilizaremos


el metodo descrito para encontrar explcitamente L(M ).
El sistema de ecuaciones asociado con el automata M es:

(1) A0 = aA0 bA0 aA1


(2) A1 = aA2

(3) A2 = aA2 bA2


(3) se puede escribir como
(4)

A2 = (a b)A2

Lema de Arden en (4):


(5)

A2 = (a b) = (a b)

(5) en (2):
(6)

A1 = a(a b)

(6) en (1):
(7)

A0 = (a b)A0 a2 (a b)

Lema de Arden en (7):

A0 = (a b) a2 (a b)

Ejemplo Encontrar una expresion regular para el lenguaje aceptado por el



siguiente AFN M :

El sistema de ecuaciones asociado con el automata M es:

(1) A0 = aA1

(2) A1 = aA2
(3) A2 = bA2 bA3

(4) A3 = aA3 bA4

(5) A4 = aA2 aA3


(5) en (4):
(6)

A3 = aA3 baA2 baA3 b


= (a ba)A3 baA2 b

Lema de Arden en (6):


(7)

A3 = (a ba) (baA2 b)
= (a ba) baA2 (a ba) b

(7) en (3):
(8)

A2 = bA2 b(a ba) baA2 b(a ba) b

El sistema original de cinco ecuaciones y cinco incognitas se reduce al sistema de


tres ecuaciones y tres incognitas formado por (1), (2) y (8).
La ecuacion (8) se puede escribir como


(9)
A2 = b b(a ba) ba A2 b(a ba)
Lema de Arden en (9):

 

(10)
A2 = b b(a ba) ba b(a ba) b
se sustituye (10) en (2) y luego el valor de A1 obtenido se sustituye en (1),
obtenemos finalmente:

 

A0 = a2 b b(a ba) ba b(a ba) b

Ejemplo Encontrar una expresion regular para el lenguaje L de todas las



palabras sobre = {a, b} que tienen un n
umero par de as y un
n
umero par de bs.

Este automata da lugar al siguiente

(1) A0

(2) A
1

(3) A2

(4) A3

sistema de ecuaciones:
= aA1 bA2
= aA0 bA3
= aA3 bA0
= aA2 bA1

(4) en (3):
(5)

A2 = a2 A2 abA1 bA0

(4) en (2):
(6)

A1 = aA0 baA2 b2 A1

El sistema original de cuatro ecuaciones y cuatro incognitas se reduce a un sistema


de tres ecuaciones y tres incognitas, a saber:

(1) A0 = aA1 bA2


(6) A1 = aA0 baA2 b2 A1

(5) A = a2 A abA bA
2
2
1
0

Lema de Arden en (5):


(7)

A2 = (a2 ) (abA1 bA0 )


= (a2 ) abA1 (a2 ) bA0

(7) en (6):
(8)

A1 = aA0 ba(a2 ) abA1 ba(a2 ) bA0 b2 A1

(7) en (1):
(9)

A0 = aA1 b(a2 ) abA1 b(a2 ) bA0

El sistema se reduce ahora a dos ecuaciones:

2
2

(9) A0 = aA1 b(a ) abA1 b(a ) bA0

(8) A1 = aA0 ba(a2 ) abA1 ba(a2 ) bA0 b2 A1



= ba(a2 ) ab b2 A1 aA0 ba(a2 ) bA0

Lema de Arden en (8):


(10)

A1 =

ba(a2 ) ab b2

aA0 ba(a2 ) bA0



ba(a2 ) ab b2 aA0 ba(a2 )ab b2 ba(a2 ) bA0

Haciendo R = ba(a2 ) ab b2 , (10) se puede escribir como
(11)

A1 = RaA0 Rba(a2 ) bA0

Lema de Arden en (9):

(13)

b(a2 ) b


aA1 b(a2 ) abA1
(12)



= b(a2 ) b aA1 b(a2 ) b b(a2 ) abA1 b(a2 ) b

Haciendo S = b(a2 ) b , (12) se puede escribir como:
A0 =

A0 = SaA1 Sb(a2 ) abA1 S

Al sustituir (11) en (13), el sistema original se reduce a una sola ecuacion:






(14)
A0 = Sa RaA0 Rba(a2 ) bA0 Sb(a2 ) ab RaA0 Rba(a2 ) bA0 S
Agrupando los terminos en los que aparece A0 y factorizando, se obtiene


(15)
A0 = SaRa SaRba(a2 ) b Sb(a2 )a bRa Sb(a2 ) abRba(a2 ) b A0 S
Lema de Arden en (15):


(16)
A0 = SaRa SaRba(a2 ) b Sb(a2 ) abRa Sb(a2 ) abRba(a2 ) b S
Si sustituimos R y S en (16) obtenemos una expresion regular para L.


para los siguientes lenguajes sobre = {a, b}:

Ejercicios

Utilizar el lema de Arden para encontrar una expresion regular

(a) El lenguaje L de todas las palabras que tienen un n


umero par de as y un
n
umero impar de bs.
(b) El lenguaje L de todas las palabras que tienen un n
umero par de as o un
n
umero impar de bs.

contrar una expresi


on regular del lenguaje aceptado por el AFN

Ejercicios

respectivo.
1. AFN:

2. AFN:

3. AFN:

En los siguientes ejercicios utilizar el Lema de Arden para en-

Captulo 3
Otras propiedades de los
lenguajes regulares
3.1.

Lema de bombeo

El llamado lema de bombeoes una propiedad de los lenguajes regulares que es


muy u
til para demostrar que ciertos lenguajes no son regulares.
3.1.1. Lema de bombeo. Para todo lenguaje regular L (sobre un alfabeto dado
) existe una constante n N, llamada constante de bombeo para L, tal que toda
palabra w L, con |w| n, satisface la siguiente propiedad:

w se puede descomponer como w = uvx, con |uv| n, v 6= ,
(B)
y para todo i 0 se tiene uv i x L.
Demostracion: Por el Teorema de Kleene y por los teoremas de equivalencia de
los modelos AFD, AFN y AFN-, existe un AFD M tal que L(M ) = L. Sea
n = # de estados de M.
Si w L y |w| n, entonces durante el procesamiento completo de w, hay por lo
menos un estado que se repite. Sea q el primer estado que se repite. Tal como se
muestra en la siguiente grafica, w se puede descomponer como w = uvx, donde
|uv| n, v 6= .

Notese que tanto u como x pueden ser la palabra vaca , pero v 6= . Ademas,
la palabra v se puede bombear, en el sentido de que uv i x es aceptada por M
para todo i 0. En el diagrama de estados, se puede visualizar esta propiedad
de bombeo de v:

Uso del lema de bombeo. El lema de bombeo se puede usar para concluir
que un cierto lenguaje dado L no es regular, recurriendo a un razonamiento
por contradiccion (o reduccion al absurdo). El razonamiento empleado tiene la
siguiente forma:
1. Si L fuera regular, existira una constante de bombeo n para L.
2. Se escoge una palabra adecuada w L y se aplica la propiedad (B) del
lema de bombeo, descomponiendo w como
w = uvx,

v 6= ,

|uv| n.

3. Se llega a la siguiente contradiccion:


(I) Por el lema de bombeo, uv i x L, para todo i 0.
(II) uv i x no puede estar en L, para alg
un i I.

de bombeo para demostrar que el lenguaje


Ejemplo Usar eli lema

L = {a bi : i 0} no es un lenguaje regular.
Solucion: Si L fuera regular, existira una constante de bombeo n para L. Sea
w = an bn L. Entonces w se puede descomponer como w = uvx, con |v| 1,
|uv| n, y para todo i 0, uv i x L. Por lo tanto, u y v constan u
nicamente de
as:
u = ar ,
para alg
un r 0,
v = as ,
para alg
un s 1.
Entonces,
x = an(r+s) bn = anrs bn .
De donde,
uv 2 x = ar as as anrs bn = ar+2s+nrs bn = an+s bn .
Por el lema de bombeo, la palabra uv 2 x L pero como s 1, an+s bn no esta en
L. Esta contradiccion muestra que L no puede ser regular.


Ejemplo Demostrar que el lenguaje de los palndromes sobre {a, b} no es un



lenguaje regular. Recu
erdese que un Palndrome es una palabra w
1
tal que w = w .
Solucion: Si L fuera regular, existira una constante de bombeo n para L. Sea
w = an ban L. Entonces w se puede descomponer como w = uvx, con |v| 1,
|uv| n, y para todo i 0, uv i x L. Por lo tanto, u y v constan u
nicamente de
as:
u = ar ,
para alg
un r 0,
v = as ,
para alg
un s 1.
Entonces,
x = an(r+s) ban = anrs ban .
De donde,
uv 2 x = ar as as anrs ban = ar+2s+nrs ban = an+s ban .
Por el lema de bombeo, la palabra uv 2 x L, pero como s 1, an+s bn no es un
palndrome. En conclusion, L no puede ser regular.


 2

Ejemplo Demostrar que el lenguaje L = ai : i 0 no es regular.


Solucion: Si L fuera regular, existira una constante de bombeo n para L. Sea


2
w = an L. Entonces w se puede descomponer como w = uvx, con |v| 1,
|uv| n. Por el lema de bombeo, uv 2 x L, pero por otro lado,
n2 < n2 + |v| = |uvx| + |v| = |uv 2 x| n2 + |uv| n2 + n < (n + 1)2 .
Esto quiere decir que el n
umero de smbolos de la palabra uv 2 x no es un cuadrado

perfecto y, por consiguiente, uv 2 x 6 L. En conclusion, L no es regular.




Ejercicios

Demostrar que los siguientes lenguajes no son regulares:

1. L = {w {a, b} : w tiene el mismo n


umero de as que de bs}.
2. L = {ai bj ai : i 0, j 0}, sobre = {a, b}.
3. L = {a2i bi : i 0}, sobre = {a, b}.
4. L = {bi abi a : i 0}, sobre = {a, b}.
5. L = {ai bj ci+j : i 0, j 0}, sobre = {a, b, c}.
6. L = {ww : w }, siendo = {a, b}.
7. L = {ww1 : w }, siendo = {a, b}.
8. L = {ai : i es un n
umero primo}, sobre = {a, b}.

3.3.

Propiedades de clausura

El siguiente teorema establece que la coleccion R ( ) de los lenguajes regulares sobre un alfabeto es cerrada bajo todas las operaciones booleanas.
3.3.1 Teorema. Si L, L1 y L2 son lenguajes regulares sobre un alfabeto ,
tambien lo son:
(1)
(2)
(3)
(4)
(5)
(6)
(7)
(8)

L1 L 2
L1 L2
L
L+
L = \ L
L1 L 2
L1 \ L2
L1  L 2

(union)
(concatenacion)
(estrella de Kleene)
(clausura positiva)
(complemento)
(interseccion)
(diferencia)
(diferencia simetrica)

Demostracion:
(1), (2) y (3) se siguen de la definicion de los lenguajes regulares.
(4) Por (2), (3) y L+ = L L.
(5) Por el Teorema de Kleene y por los teoremas de equivalencia de los modelos
AFD, AFN y AFN-, existe un AFD M = (, Q, q0 , F, ) tal que L(M ) = L. Para

construir un AFD que acepte el complemento de L basta intercambiar los estados


finales con los no finales. Sea M 0 = (, Q, q0 , Q \ F, ); entonces L(M 0 ) = L.
(6) Se sigue de L1 L2 = L1 L2 , (1) y (5).
(7) Se sigue de L1 \ L2 = L1 L2 , (5) y (6).
(8) Puesto que
L1  L2 = (L1 L2 ) \ (L1 L2 ) = (L1 \ L2 ) (L2 \ L1 )
el resultado se sigue de (1), (6), (7).
Recuerdese que un
algebra booleana de conjuntos es una familia A (X)
cerrada bajo las operaciones de union, interseccion y complemento, tal que A,
X A.
3.3.2 Corolario. La coleccion R ( ) de todos los lenguajes regulares sobre
un alfabeto es un algebra booleana de conjuntos.
Demostracion: Se sigue del teorema 3.3.1 y del hecho de que y son lenguajes
regulares sobre .
Las propiedades de clausura del teorema 3.3.1 se pueden enunciar como procedimientos algortmicos de construccion de automatas finitos.
3.3.3 Teorema. Sean M , M1 y M2 aut
omatas finitos (ya sean AFD o AFN o
AFN-) y L(M ) = L, L(M1 ) = L1 , L(M2 ) = L2 . Se pueden construir aut
omatas
finitos que acepten los siguientes lenguajes:
(1)
(2)
(3)
(4)

L1 L 2
L1 L2
L
L+

(5)
(6)
(7)
(8)

L = \ L
L1 L2
L 1 \ L2
L 1  L2

Demostracion: La construccion de automatas para L1 L2 , L1 L2 , L y L+ se


presento en la demostracion de la parte I del Teorema de Kleene. En el numeral
(5) del teorema 3.3.1 se vio como se puede construir un AFD M 0 que acepte L a
partir de un AFD M que acepte L.
Los procedimientos de construccion de (1), (2), (3), (4) y (5) se pueden combinar
para obtener automatas que acepten los lenguajes L1 L2 , L1 \ L2 y L1  L2 .
Para dise
nar un automata que acepte L1 L2 , seg
un el argumento anterior, hay
que usar la igualdad L1 L2 = L1 L2 y los procedimientos para union, complemento, eliminacion de transiciones y eliminacion del no-determinismo. El
siguiente teorema muestra que existe una construccion mas sencilla para L1 L2 .

3.3.4 Teorema. Sean M = (, Q1 , q1 , F1 , 1 ) y M = (, Q2 , q2 , F2 , 2 ) dos AFD.


Entonces el AFD
M = (, Q1 Q2 , (q1 , q2 ), F1 F2 , )
donde

: (Q1 Q2 ) Q1 Q2
((qi , qj ), a) = (1 (qi , a), 2 (qj , a))

satisface L(M ) = L(M1 ) L(M2 ).


Demostracion: Sea w . La conclusion del teorema se sigue demostrando
primero por induccion sobre w que ((q1 , q2 ), w) = (1 (q1 , w), 2 (q2 , w)) para toda
palabra w y observando que:
w L(M )

((q1 , q2 ), w) F1 F2
(1 (q1 , w), 2 (q2 , w)) F1 F2
(q1 , w) F1 & (q2 , w) F2
w L(M1 ) & w L(M2 )
w L(M1 ) L(M2 )

Ejemplo Utilizar el procedimiento del teorema 3.3.4 para construir un AFD



que acepte el lenguaje L de todas las palabras sobre = {a, b} que
tienen un n
umero par de as y un n
umero par de bs.
AFD M1 que acepta las palabras con un n
umero par de as:

AFD M2 que acepta las palabras con un n


umero par de bs:

Entonces L = L(M1 )L(M2 ). El nuevo automata tiene 4 estados: (q1 , q2 ), (q1 , q4 ),


(q3 , q2 ) y (q3 , q4 ); el u
nico estado de aceptacion es (q1 , q2 ). Su funcion de transicion

es
((q1 , q2 ), a) = (1 (q1 , a), 2 (q2 , a)) = (q3 , q2 )
((q1 , q2 ), b) = (1 (q1 , b), 2 (q2 , b)) = (q1 , q4 )
((q1 , q4 ), a) = (1 (q1 , a), 2 (q4 , a)) = (q3 , q4 )
((q1 , q4 ), b) = (1 (q1 , b), 2 (q4 , b)) = (q1 , q2 )
((q3 , q2 ), a) = (1 (q3 , a), 2 (q2 , a)) = (q1 , q2 )
((q3 , q2 ), b) = (1 (q3 , b), 2 (q2 , b)) = (q3 , q4 )
((q3 , q4 ), a) = (1 (q3 , a), 2 (q4 , a)) = (q1 , q4 )
((q3 , q4 ), b) = (1 (q3 , b), 2 (q4 , b)) = (q3 , q2 )
El diagrama de estados del automata as obtenido es un viejo conocido nuestro:

Ejercicio Utilizar el procedimiento del teorema 3.3.3 para construir un



aut
omata que acepte el lenguaje L de todas las palabras sobre
= {a, b} que tienen un n
umero par de as y un n
umero par de bs. Comparese
con el AFD construido en el ejemplo inmediatamente anterior.


lenguajes sobre el alfabeto {a, b, c}:

Ejercicios

Dise
nar automatas finitos que acepten los siguientes los siguientes

1. El lenguaje L de todas las palabras que tienen longitud par y terminan en


a.
2. El lenguaje L de todas las palabras de longitud par que tengan un n
umero
impar de bs.
3. El lenguaje L de todas las palabras de longitud impar que tengan un n
umero
par de cs.
4. El lenguaje L de todas las palabras de longitud impar que tengan exactamente dos as.

3.6.

Algoritmos de decisi
on

El argumento empleado en la demostracion del lema de bombeo sirve para obtener otras conclusiones importantes sobre los lenguajes aceptados por automatas
finitos.
3.6.1 Teorema. Sea M un AFD con n estados y sea L = L(M ).
1. L 6= si y solo si M acepta una palabra w tal que |w| < n.
2. L es infinito si y solo si M acepta una palabra w tal que n |w| < 2n.
Demostracion:
1. La parte si es obvia. Para la otra implicacion, sea w una palabra de
longitud mnima en L(M ). Entonces |w| < n ya que si |w| n, seg
un la
demostracion del lema de bombeo, w se podra descomponer como w = uvx,
donde |uv| n, v 6= . La palabra ux L y |ux| < |w|, lo que contradice
la minimalidad de |w|.
2. Si w M y n |w| < 2n, entonces por la demostracion del lema de
bombeo, w se puede descomponer como w = uvx, donde |uv| n, v 6= .
M acepta infinitas palabras: uv i x para todo i 0.
Recprocamente, si L es infinito, existe w L con |w| n. Por la demostracion del lema de bombeo, w = uvx donde |uv| n, v 6= . Si |w| < 2n
la demostracion esta terminada. Si |w| 2n, puesto que |v| |uv| n,
se tendra |ux| n y ux L . De nuevo, si |ux| < 2n, la demostracion
termina; en caso contrario, se prosigue de esta forma hasta encontrar una
palabra en L cuya longitud ` satisfaga n ` < 2n.
3.6.2 Corolario. Sea un alfabeto dado. Existen algoritmos para los siguientes
problemas de decision referentes a aut
omatas finitos sobre :
1. Dado un automata finito M , Es L(M ) 6= ?
2. Dado un automata finito M , Es L(M ) infinito?
3. Dados dos automatas finitos M1 y M2 , L(M1 ) = L(M2 )?
Demostracion:
1. Algoritmo: construir un AFD M 0 que acepte el lenguaje L(M ) y chequear
la aceptacion o rechazo de todas las palabras w tales que |w| < n,
donde n = # de estados de M 0 .

2. Algoritmo: construir un AFD M 0 que acepte el lenguaje L(M ) y chequear la


aceptacion o rechazo de todas las palabras w tales que n |w| < 2n,
donde n = # de estados de M 0 .
3. Sea L1 = L(M1 ) y L2 = L(M2 ). Se tiene
L1 = L2 L1  L2 =
Algoritmo: construir un AFD M 0 que acepte el lenguaje L1  L2 y utilizar
el procedimiento de la parte 1 para decidir si L1  L2 es o no vaco.


problemas de decisi
on referentes a automatas finitos sobre :

Ejercicios

Sea un alfabeto dado. Encontrar algoritmos para los siguientes

1. Dado un automata finito M , Es L(M ) = ?


2. Dado un automata finito M , Es L(M ) cofinito? (Recuerdese que un conjunto es cofinito si su complemento es finito).

3.10.

Observaciones finales

1. Todo lenguaje finito es regular. Por que?


2. Una union finita de lenguajes regulares es regular, pero una union infinita de
lenguajes regulares no es necesariamente regular. Considerese, por ejemplo,
[
L = {an bn : n 1} = {ai bi }.
i1

Cada conjunto {ai bi } es regular, pero L no lo es.


3. Un sublenguaje (subconjunto) de un lenguaje regular no es necesariamente
regular. Dicho de otra forma, un lenguaje regular puede contener sublenguajes no-regulares. Por ejemplo, el lenguaje L = {an bn : n 1} es un
sublenguaje del lenguaje regular a b , pero L mismo no es regular.



Ejercicio Demostrar que a b es la union de dos lenguajes disyuntos no
regulares.

Ejercicio Sea L un lenguaje no-regular y N un subconjunto finito de L. De


mostrar que L \ N tampoco es regular.

Captulo 4
Lenguajes independientes del
contexto
Como lo hemos visto, los automatas son mecanismos que procesan palabras de entrada. En captulos posteriores consideraremos modelos de automatas con mayor
poder computacional que el de los modelos AFD-, AFN y AFD. En el presente
captulo iniciaremos el estudio de las gram
aticas generativas, que son mecanismos para generar palabras a partir de un smbolo inicial.
Los automatas procesan palabras
Las gramaticas generan palabras

4.1.

Gram
aticas independientes del contexto (GIC)

Una gram
atica independiente del contexto (GIC) es una cuadrupla,
G = (V, , S, P )
formada por:
1. Un alfabeto V cuyos elementos se llaman variables o smbolos no-terminales.
2. Un alfabeto cuyos elementos se llaman smbolos terminales.
3. Una variable especial S V , llamada smbolo inicial de la gramatica.
4. Un conjunto finito P V (V ) de producciones o reglas de reescritura.

Notaci
on y definiciones. Las variables se denotan con letras may
usculas A, B,
C, . . . Los elementos de , o smbolos terminales, se denotan con letras min
usculas
a, b, c, . . . Una produccion (A, w) P de G se denotara por A w. Si u, v
(V ) y A w es una produccion, se dice que uwv se deriva directamente
de uAv, lo cual se denota por
uAv uwv.
Si se quiere hacer referencia a la gramatica G, se escribe
uAv G uwv.
Si u1 , u2 , . . . , un son palabras en (V ) y hay una sucesion de derivaciones
directas
u1 G u2 , u2 G u3 , . . . , un1 G un

se dice que un se deriva de u1 y se escribe u1 un . La anterior sucesion de


derivaciones directas se representa como
u1 u2 u3 un1 un
y se dice que es una derivaci
on de un a partir de u1 . Para toda palabra w se

asume que w w; por lo tanto, u v significa que v se obtiene de u utilizando


cero, una o mas producciones de la gramatica. El lenguaje generado por una
gram
atica G se denota por L(G) y se define como

L(G) := {w : S w}.
Un lenguaje L sobre un alfabeto se dice que es un lenguaje independiente
del contexto (LIC) si existe una GIC G tal que L(G) = L. Dos GIC G1 y G2
son equivalentes si L(G1 ) = L(G2 ).

Ejemplo Sea G una gramatica (V, , S, P ) dada por:


V = {S}
= {a, b}
P = {S aS, S }

Se tiene S y

S aS a aS a a.
Por consiguiente, L(G) = a .
De manera mas simple, podemos presentar una gramatica GIC listando sus producciones y separando con el smbolo | las producciones de una misma variable.
Se asume siempre que las letras may
usculas representan variables y las letras
min
usculas representan smbolos terminales.

Ejemplo La gramatica G = (V, , S, P ) dada por:


V = {S, A}
= {a, b}
P = {S aS, S bA, S , A bA, A b, A }

se puede presentar como




S aS | bA |
A bA | b |

Se tiene S . Todas las demas derivaciones en G comienzan ya sea con la


produccion S aS o con S bA. Por lo tanto, tenemos

S aS a aS a a.

S bA b bA b b.

S aS a aS a abA a ab bA a ab b.
Por consiguiente L(G) = a b .
Las siguientes gramaticas tambien generan el lenguaje a b y son, por lo tanto,
equivalentes a G:


S AB
S AB |
S aS | A
A aA |
A aA | a |
A bA |

B bB |
B bB | b |


Ejemplo La gramatica G dada por:





S aS | aA
A bA | b
genera el lenguaje a+ b+ .


es decir, el lenguaje de todas las palabras con exactamente dos bs.

Ejemplo

Encontrar una GIC que genere el lenguaje a ba ba sobre = {a, b},

Solucion: G :


S AbAbA
A aA |

Una gramatica equivalente es

S aS | bA
A aA | bB

B aB |

i i
Ejemplo Encontrar una GIC que genere el lenguaje L = {a b : i 0} sobre

 = {a, b}, el cual no es un lenguaje regular.
Solucion: G :
S aSb | .

Ejemplo Encontrar una GIC que genere el lenguaje de todos los palndromes

sobre = {a, b}, el cual no es lenguaje regular.
Solucion: G :
S aSa | bSb | a | b | .
Ejemplo Encontrar una GIC que genere el lenguaje de todas las palabras sobre

 = {a, b} que tienen un n
umero par de smbolos.
Solucion: G :
S aSa | bSb | aSb | bSa | .
Una gramatica equivalente es
S aaS | bbS | abS | baS | .


Ejemplo Encontrar una GIC que genere el lenguaje (ab ba) sobre

 = {a, b}.
Solucion: G :
S abS | baS | .

 = {a, b}:

Ejercicios

Encontrar GICs que acepten los siguientes lenguajes sobre

1. El lenguaje de todas las palabras que tienen un n


umero par de bs.
2. El lenguaje de todas las palabras que comienzan con b y terminan con ba.
3. a b a.
4. a b b a.
5. (ab b a) .
6. {ai b2i : i 0}. Es este un lenguaje regular?

i j i+j
Ejercicio Encontrar una GIC que acepte el lenguaje {a b c : i 0, j 1},

sobre {a, b, c}. Es este un lenguaje regular?

Ejercicios

Sea = {a, b}. Para w , se definen


Na (w) = n
umero de as que hay en w,
Nb (w) = n
umero de bs que hay en w.

Encontrar GICs que acepten los siguientes lenguajes:


1. L1 = {w : Na (w) = Nb (w)} (lenguaje de las palabras que tienen igual
n
umero de as que de bs).
2. L2 = {w : Na (w) = 2Nb (w)} (lenguaje de las palabras que tienen el
doble de as que de bs).
3. L3 = {w : Na (w) = Nb (w) + 1}.
Cual de los lenguajes L1 , L2 , L3 es regular y cual no?

4.2.

Gram
aticas regulares

4.2.1 Definici
on. Una GIC se llama regular si sus producciones son de la forma


A aB,
A

a , B V

Los siguientes teoremas establecen la conexion entre los lenguajes regulares y las
gramaticas regulares.
4.2.2 Teorema. Dado un AFD M = (Q, , q0 , F, ), existe una GIC regular
G = (V, , S, P ) tal que L(M ) = L(G).
Demostracion: Sea V = Q y S = q0 . Las producciones de G estan dadas por

q ap si y solo si (q, a) = p
q si y solo si q F
Demostraremos primero que para toda w , w 6= y para todo p, q Q se
tiene
(1)

Si (q, w) = p entonces q wp.

La demostracion de (1) se hace por induccion sobre w. Si w = a y (q, a) = p,


entonces q ap es una produccion de G y obviamente se concluye q ap. Para
el paso inductivo, sea (q, wa) = p0 . Entonces
p0 = (q, wa) = ((q, w), a) = (p, a)

donde (q, w) = p. Por hipotesis de induccion q wp y como (p, a) = p0 ,


entonces p ap0 . Por lo tanto,

q wp wap0
que era lo que se quera demostrar.
A continuacion demostraremos el recproco de (1): para toda w , w 6= y
para todo p, q Q se tiene
(2)

Si q wp entonces (q, w) = p.

La demostracion de (2) se hace por induccion sobre la longitud de la derivacion

q wp, es decir, por el n


umero de pasos o derivaciones directas que hay en

q wp. Si la derivacion tiene longitud 1, necesariamente q ap lo cual significa

que (q, a) = p. Para el paso inductivo, supongase que q wp tiene longitud


n + 1, w = w0 a y en el u
ltimo paso se aplica la produccion p0 ap. Entonces

q w0 p0 w0 ap = wp

Por hipotesis de induccion, (q, w0 ) = p0 y por consiguiente


(q, w) = (q, w0 a) = ((q, w0 ), a) = (p0 , a) = p,
que era lo que se quera demostrar.
Como consecuencia de (1) y (2) se puede ahora demostrar que
(3)

Para toda palabra w , (q0 , w) F

si y solo si S G w

lo cual afirma que L(M ) = L(G). En efecto, si w = , (q0 , w) F si y solo


si q0 F . Por lo tanto, q0 es una produccion de G. As que S .

Recprocamente, si S , necesariamente S , q0 F y (q0 , ) F .

Sea ahora w 6= . Si (q0 , w) = p F , por (1) se tiene q0 w, o sea, S w.

Recprocamente, si S G w, entonces q0 G wp w donde p . Utilizando


(2), se tiene (q0 , w) = p F .


Ejemplo El siguiente AFD M es el ultimo ejemplo de la seccion 2.3, el cual



acepta las palabras que terminan en b, sobre = {a, b}

M induce la gramatica regular G



q0 aq0 | bq1
q1 bq1 | aq0 |
que cumple L(M ) = L(G).



Ejemplo Para el lenguaje regular a ba ba , sobre = {a, b} (el lenguaje de

todas las palabras con exactamente dos bs), vimos en el cuarto
ejemplo de la seccion 4.1 una gramatica que lo genera:

S AbAbA
A aA |

Esta gramatica no es regular, pero por medio del AFD

y el teorema 4.2.2 se puede obtener una GIC regular que genere a ba ba :

S aS | bA
A aA | bB

B aB |
4.2.3 Teorema. Dada una GIC regular G = (V, , S, P ), existe un AFN
M = (Q, , q0 , F, ) tal que L(M ) = L(G).
Demostracion: Se construye M = (Q, , q0 , F, ) haciendo Q = V , q0 = S y

B (A, a) para cada produccion A aB
AF
si
A
Usando razonamientos similares a los del teorema 4.2.2, se puede demostrar que

A G wB

si y solo si B (A, w),

para todo w , w 6= , de donde L(M ) = L(G). Los detalles se dejan como


ejercicio.
4.2.4 Corolario. Un lenguaje es regular si y solamente si es generado por una
gram
atica regular.
Demostracion: Se sigue del teorema 4.2.2, teorema 4.2.3 y del teorema de Kleene.
4.2.5 Corolario. Todo lenguaje regular es un LIC (pero no viceversa).
Demostracion: Se sigue del corolario 4.2.4 Por otro lado, {ai bi : i 0} es LIC
pero no es regular.
4.2.6 Definici
on. Una GIC se llama regular por la derecha si sus producciones son de la forma

A wB, w , B V
A
4.2.7 Teorema. Las gramaticas regulares y las gram
aticas regulares por la derecha generan los mismos lenguajes, es decir, los lenguajes regulares. Dicho de
otra manera, la definicion de gram
atica regular es equivalente a la definici
on de
gram
atica por la derecha
Demostracion: Una gramatica regular es obviamente regular por la derecha. Recprocamente, en una gramatica regular por la derecha G = (V, , S, P ), una
produccion de la forma
A a1 a2 an B

donde los ai , n 2, B V , se puede simular con producciones de la forma


A aB y A . En efecto, se introducen n 1 variables nuevas A1 , . . . , An1
cuyas u
nicas producciones son:
A
A1

a1 A 1
a2 A 2
..
.

An1 an B
De esta manera se puede construir una gramatica regular equivalente a G.


sobre = {a, b}

Ejercicios

Encuentre una GIC regular que genere los siguientes lenguajes,

1. ab a
2. (ab ba)
3. a+ b b+ a b


Ejercicio Una GIC se llama regular por la izquierda si sus producciones



son de la forma:

A Bw, w , B V
A
Demostrar que las gramaticas regulares y las gramaticas regulares por la izquierda
generan los mismos lenguajes.

4.3.

Eliminaci
on de variables in
utiles de una GIC

4.3.1. Definiciones.

(i) Una variable A es alcanzable si existen u, v (V ) tales que S uAv.


La variable inicial S es alcanzable por definicion.

(ii) Una variable A es terminable si existe w tal que A w. En particular, si A es una produccion entonces A es terminable.
(iii) A es una variable in
util si no es alcanzable o no es terminable.
Existen algoritmos para detectar todas las variables in
utiles de una GIC. Usando
tales algoritmos podemos construir una gramatica G0 equivalente a una gramatica
G dada, de tal manera que G0 no tiene variables in
utiles.
4.3.2. Algoritmo para encontrar las variables terminables de una GIC.
El siguiente algoritmo sirve para encontrar todas las variables terminables de una
GIC.


TERM1 := A V : Existe una produccion de la forma A w, w


TERMi+1 :=TERMi A V : produccion A w, w ( TERMi )
Obtenemos una sucesion creciente de conjuntos de variables:
TERM1 TERM2 TERM3
Como el conjunto de variables es finito, existe k tal que
TERMk = TERMk+1 = TERMk+2 =
El conjunto TERM de variables terminables es entonces
[
TERM :=
TERMi
i1

El anterior algoritmo se puede presentar de la siguiente forma:


INICIALIZAR:


TERM := A V : produccion A w, w
REPETIR:


TERM := TERM A V : produccion A w, w ( TERMi )
HASTA:
No se a
naden nuevas variables a TERM

Ejemplo Encontrar las variables terminables de la siguiente gramatica G.





S ACD | bBd | ab

A aB | aA | C

B aDS | aB
C aCS | CB | CC

D bD | ba

E AB | aDb
TERM1
TERM2
TERM3
TERM4

= {S, D}
= {S, D} {B, E} = {S, D, B, E}
= {S, D, B, E} {A} = {S, D, B, E, A}
= {S, D, B, E, A} { } = { }

TERM= {S, A, B, D, E}. Conjunto de variables no terminables: {C}.


4.3.3. Algoritmo para encontrar las variables alcanzables de una GIC.
El siguiente algoritmo sirve para encontrar todas las variables alcanzables de una
GIC.
ALC1 :={S}
ALCi+1 :=ALCi {A V : prod. B uAv, B ALCi u, v (V ) }
Obtenemos una sucesion creciente de conjuntos de variables:
ALC1 ALC2 ALC3
Como el conjunto de variables es finito, existe k tal que
ALCk = ALCk+1 = ALCk+2 =
El conjunto ALC de variables alcanzables es entonces
[
ALC =
ALCi
i1

El anterior algoritmo se puede presentar de la siguiente forma:


INICIALIZAR:
ALC := {S}
REPETIR:


ALC := ALC A V : produccion B uAv, B ALC y u, v (V )
HASTA:
No se a
naden nuevas variables a ALC

Ejemplo Encontrar las variables alcanzables de la siguiente gramatica G.





S aS | AaB | ACS

A aS | AaB | AC

A aA |

B bB | DB | BB
C aDa | ABD | ab

D aD | DD | ab

E F F | aa

F aE | EF
ALC1
ALC2
ALC3
ALC4

= {S}
= {S} {A, B, C} = {S, A, B, C}
= {S, A, B, C} {D} = {S, A, B, C, D}
= {S, A, B, C, D} { } = {S, A, B, C, D}

ALC={S, A, B, C, D}. Conjunto de variables no alcanzables: {E, F }.


Dada una GIC G, los dos algoritmos anteriores (algoritmo 4.3.2 y algoritmo 4.3.3)
se pueden llevar a cabo en dos ordenes diferentes:

Esto da lugar a las siguientes preguntas:


(1) Es G2 = G4 ?
(2) G2 tiene variables in
utiles?
(3) G4 tiene variables in
utiles?
El siguiente ejemplo muestra que la respuesta a la pregunta (1) es NO y que al
realizar los algoritmos en el orden (II) pueden permanecer en G4 algunas variables
in
utiles. Sin embargo, si los algoritmos se llevan a cabo en el orden (I) la gramatica
G2 ya no tiene variables in
utiles (por que?).


Ejemplo Considerese la siguiente gramatica G



G:

S a | AB
A aA |

Aplicacion de los algoritmos en el orden (I):

Variables terminables de G: TERM= {S, A}.



Sa
G1 :
A aA |
Variables alcanzables de G1 : ALC= {S}.

G2 :
Sa
Se tiene que L(G2 ) = {a}.
Aplicacion de los algoritmos en el orden (II):
Variables alcanzables de G: ALC={S, A, B}.

S a | AB
G3 :
A aA |
Variables terminables de G3 : TERM={S, A}.

Sa
G4 :
A aA |
Se observa que en G4 , A no es alcanzable. Ademas, G2 6= G4 .

utiles de la siguiente gramatica G.


Ejemplo Eliminar las variables in

G:

S SBS | BC | Bb

A AA | aA

B aBCa | b
C aC | ACC | abb

D aAB | ab

E aS | bAA

F aDb | aF

Ejecutamos los algoritmos en el orden (I):


TERM1
TERM2
TERM3
TERM4

= {B, C, D}
= {B, C, D} {S, F }
= {B, C, D, S, F } {E} = {B, C, D, S, F, E}
= {B, C, D, S, F, E} { }

La u
nica variable no-terminable de G es A. Por lo tanto, G es equivalente a la
siguiente gramatica G1

S SBS | BC | Bb

B
aBCa | b

C aC | abb
G1 :
D ab

E aS

F aDb | aF

Variables alcanzables de G1 :
ALC1 = {S}
ALC2 = {S} {B, C}
ALC3 = {S, B, C} { }
Las variables D, E, F son no alcanzables. Por lo tanto, G es equivalente a la
siguiente gramatica G2 , que no tiene variables in
utiles.

S SBS | BC | Bb
B aBCa | b
G2 :

C aC | abb


Ejercicios

Eliminar las variables in


utiles de las siguientes gramaticas.

S SS | SBB | CCE

A aE | bE

B bB | Db
G:
C aC | bB

D aDb | ab |

E aA | bB

S EA | SaBb | aEb

A DaD | bD

B bB | Ab |
C aC | bBC
G:

D aEb | ab

E aA | bB |

F Fb | Fa | a

4.4.

Eliminaci
on de las producciones

4.4.1. Definiciones.
(i) Una produccion de la forma A se llama producci
on

(ii) Una variable A se llama anulable si A .


4.4.2. Algoritmo para encontrar las variables anulables de una GIC.
ANUL1 :={A V : A es una produccion}


ANULi+1 :=ANULi A V : produccion A w, w (ANULi )
Obtenemos una sucesion creciente de conjuntos de variables:
ANUL1 ANUL2 ANUL3
Como el conjunto de variables es finito, existe k N tal que
ANULk = ANULk+1 = ANULk+2 =
El conjunto ANUL de variables anulables es entonces
[
ANUL :=
ANULi
i1

El anterior algoritmo se puede presentar de la siguiente forma:


INICIALIZAR:
ANUL := {A V : A es una produccion}
REPETIR:


ANUL := ANUL A V : prod. A w, w (ANUL)
HASTA:
No se a
naden nuevas variables a ANUL
4.4.3 Teorema. Dada una GIC G, se puede construir una GIC G0 equivalente
a G sin producciones , excepto (posiblemente) S .
Demostracion: Una vez que haya sido determinado el conjunto ANUL de variables anulables, por medio del algoritmo 4.4.2, las producciones de se pueden
eliminar (excepto S ) a
nadiendo nuevas producciones que simulen el efecto de
las producciones eliminadas. Mas concretamente, por cada produccion A u
de G se a
naden las producciones de la forma A v obtenidas suprimiendo de
la cadena u una, dos o mas variables anulables presentes, de todas las formas
posibles. La gramatica G0 as obtenida es equivalente a la gramatica original G.

Ejemplo Eliminar las producciones de la siguiente gramatica G.

S AB | ACA | ab

A aAa | B | CD
B bB | bA
G:

C cC |

D aDc | CC | ABb

Primero encontramos las variables anulables de G por medio del algoritmo 4.4.2:
ANUL1
ANUL2
ANUL3
ANUL4
ANUL5

= {C}
= {C} {D} = {C, D}
= {C, D} {A} = {C, D, A}
= {C, D, A} {S} = {C, D, A, S}
= {C, D, A, S} { } = {C, D, A, S}

Al eliminar de G la producciones (la u


nica es C ) se obtiene la siguiente
gramatica equivalente a G:

S AB | ACA | ab | B | CA | AA | AC | A | C |

A aAa | B | CD | aa | C | D
0
B bB | bA | b
G :

C cC | c

D aDc | CC | ABb | ac | C | Bb


Ejercicio Eliminar las producciones de la siguiente gramatica G.





S EA | SaBb | aEb

A DaD | bD | BEB
B bB | Ab |
G:

D aEb | ab

E aA | bB |

4.5.

Eliminaci
on de las producciones unitarias

4.5.1. Definiciones.
(i) Una produccion de la forma A B donde A y B son variables, se llama
producci
on unitaria.
(ii) El conjunto unitario de una variable A (o conjunto cadena de A) se
define de la siguiente manera:

UNIT(A) :={X V : una derivacion A X que usa solo producciones


unitarias}.
Por definicion, A UNIT(A).
4.5.2. Algoritmo para encontrar las producciones unitarias de una GIC.
El siguiente algoritmo sirve para encontrar el conjunto unitario UNIT(A) de una
variable A.
UNIT1 (A) := {A}.
UNITi+1 (A) = UNITi (A) {X V : produccion Y X, Y UNITi (A)}.
Para el conjunto de producciones unitarias se tiene que:
UNIT1 (A) UNIT2 (A) UNIT3 (A)
Puesto que el conjunto de variables es finito, la anterior es una sucesion finita y
se tiene
[
UNIT(A) =
UNITi (A)
i1

El anterior algoritmo se puede representar de la siguiente forma:


INICIALIZAR:
UNIT(A):={A}
REPETIR:

UNIT(A):= UNIT(A) X
V : una produccion Y X con
Y UNIT(A)
HASTA:
No se a
naden nuevas variables UNIT(A)

4.5.3 Teorema. Dada una GIC G, se puede construir una GIC G0 equivalente
a G sin producciones unitarias.
Demostracion: Las producciones unitarias de G se pueden eliminar a
nadiendo para cada variable A de G las producciones (no unitarias) de las variables contenidas
en el conjunto unitario UNIT(A). La gramatica G0 as obtenida es equivalente a
la gramatica original G.


Ejemplo Eliminar las producciones unitarias de la siguiente gramatica G.

G:

S AS | AA | BA |

A aA | a
B bB | bC | C

C aA | bA | B | ab

Aplicando el algoritmo para cada una de las variables de G, se tiene que:


UNIT1 (S) = {S}
UNIT2 (S) = {S} { } = {S}
UNIT1 (A) = {A}
UNIT2 (A) = {A} { } = {A}
UNIT1 (B) = {B}
UNIT2 (B) = {B} {C} = {B, C}
UNIT3 (B) = {B, C} {B} = {B, C}
UNIT1 (C) = {C}
UNIT2 (C) = {C} {B} = {C, B}
UNIT3 (C) = {C, B} {C} = {C, B}
Eliminando las producciones unitarias se obtiene una gramatica G0 equivalente:

S AS | AA | BA |

A aA | a
G0 :
B bB | bC | aA | bA | ab

C aA | bA | ab | bB | bC


Ejemplo Eliminar las producciones unitarias de la siguiente gramatica G.





S ACA | CA | AA | A | C |

A aAa | aa | B | C
B cC | D | C
G:

C bC

D aA |

Realizando el algoritmo para cada una de las variables de G se obtiene:


UNIT(S) = {S, A, C, B, D}
UNIT(A) = {A, B, C, D}
UNIT(B) = {B, C, D}
UNIT(C) = {C}
UNIT(D) = {D}
Eliminando las producciones unitarias se obtiene una gramatica G0 equivalente:

S ACA | CA | AA | | aAa | aa | bC | cC | aA

A aAa | aa | cC | bC | aA |
B cC | bC | aA |
G0

C bC

D aA |


Ejemplo Eliminar las producciones unitarias de la siguiente gramatica G.





S ACA | ab | B | CA | A | C |

A aAa | B | CD | aa | D
B bB | bA | b
G:

C cC | c

D ABb | ac | C | Bb

4.6.

Forma Normal de Chomsky (FNC)

Una GIC G esta en Forma Normal de Chomsky (FNC) si satisface:


1. G no tiene variables in
utiles.
2. G no tiene producciones (excepto posiblemente S ).
3. Todas las producciones son de la forma: A a (producciones simples)
o A BC (producciones binarias).
En particular, una gramatica en FNC no tiene producciones unitarias.
4.6.1 Teorema. toda GIC G es equivalente a una gram
atica en Forma Normal
de Chomsky.
Demostracion: Podemos transformar G en una gramatica en FNC, equivalente a
G, ejecutando los algoritmos de las secciones anteriores en el siguiente orden:
1. Eliminar las variables no terminales.
2. Eliminar las variables no alcanzables.
3. Eliminar las producciones (excepto, posiblemente, S ).
4. Eliminar las producciones unitarias.
5. Las producciones resultantes (diferentes de S ) son de la forma: A a
o A w, donde |w| 2. Estas u
ltimas se pueden simular con producciones
de la forma A BC o A a. Se introduce primero, para cada a ,
una variable nueva Ta cuya u
nica produccion es Ta a. A continuacion,
se introducen nuevas variables, con producciones binarias, para simular las
producciones deseadas. Esta parte del procedimiento se ilustra en los dos
siguientes ejemplos.


Ejemplo Simular la produccion A abBaC con producciones simples y bi


narias.
Introducimos las variables Ta y Tb , y las producciones Ta a y Tb b. Entonces
A abBaC se simula con:

A Ta Tb BTa C
Ta a

Tb b

Ahora introducimos nuevas variables T1 , T2 , T3 y las producciones binarias necesarias. Las u


nicas producciones de estas nuevas variables son las mostradas:

A Ta T1

T1 Tb T2

T2 BT3
T3 Ta C

T a

a
Tb b


Ejemplo Simular la produccion A BAaCbb con producciones simples y



binarias.
Introducimos las variables Ta y Tb , y las producciones Ta a y Ta b. Entonces
A BAaCbb se simula con:

A BATa CTb Tb
Ta a

Tb b
Ahora introducimos nuevas variables T1 , T2 , T3 , T4 y las producciones binarias
necesarias. Las u
nicas producciones de estas nuevas variables son las mostradas:

A BT1

T1 AT2

T2 Ta T3
T3 CT4

T4 Tb Tb

T a

a
Tb b
En los siguientes ejemplos se ilustra el procedimiento completo para convertir una
gramatica dada a la Forma Normal de Chomsky (FNC).

Ejemplo Encontrar una GIC en FNC equivalente a la siguiente a la gramatica:





S AB | aBC | SBS

A aA | C
G:
B bbB | b

C cC |
El conjunto de variables terminables es TERM={B, C, S, A} y el conjunto de
variables alcanzables es ALC={S, A, B, C}. Es decir, la gramatica no tiene variables in
utiles. El conjunto de variables anulables es ANUL={C, A}. Al eliminar

las producciones de G (la u


nica es C ) se obtiene la gramatica equivalente
G1 :

S AB | aBC | SBS | B | aB

A aA | C | a
G1 :
B bbB | b

C cC | c
A continuacion encontramos los conjuntos unitarios de todas las variables:
UNIT(S)={S, B}
UNIT(A)={A, C}
UNIT(B)={B}
UNIT(C)={C}
Al eliminar las producciones unitarias obtenemos la gramatica equivalente G2 :

S AB | aBC | SBS | aB | bbB | b

A aA | a | cC | c
G2 :
B bbB | b

C cC | c
Luego introducimos las variables nuevas Ta , Tb y Tc , y las producciones Ta a,
Tb b y Tc c con el proposito de que todas las producciones sean unitarias o
de la forma A w, donde |w| 2.

S AB | Ta BC | SBS | Ta B | Tb Tb B | b

A Ta A | a | Tc C | c

B Tb Tb B | b
C Tc C | c
G3 :

Ta a

T b

b
Tc c
Finalmente, se introducen nuevas variables, con producciones binarias, para simular las producciones de la forma A w, donde |w| 2:

S AB | Ta T1 | ST2 | Ta B | Tb T3 | b

A Ta A | TC C | a | c

B Tb T3 | b

C Tc C | c

T1 BC
G4 :
T2 BS

T3 Tb B

Ta a

T b

b
Tc c

Ejemplo Encontrar una GIC en FNC equivalente a la siguiente a la gramatica:





S aS | aA | D

A aAa | aAD |
B aB | BC
G:

C aBb | CC |

D aB | bA | aa | A
TERM={A,C,D,S}. Eliminando la variable no-terminable B obtenemos:

S aS | aA | D

A aAa | aAD |
G1 :
C CC |

D bA | aa | A
Las variables alcanzables de G1 son ALC={S, A, D}. Eliminando la variable noalcanzable C obtenemos:

S aS | aA | D
A aAa | aAD |
G2 :

D bA | aa | A
El conjunto de variables anulables de G2 es ANUL={A, D, S}. Eliminando las
producciones obtenemos:

S aS | aA | D | a |
A aAa | aAD | aa | aA | aD | a
G3 :

D bA | aa | A | b
A continuacion encontramos los conjuntos unitarios de todas las variables:
UNIT(S)={S, D, A}
UNIT(A)={A}
UNIT(D)={D, A}
Al eliminar las producciones unitarias obtenemos la gramatica equivalente G4 :

S aS | aA | a | | aAa | aAD | aa | aD | a | bA | b
A aAa | aAD | aa | aA | aD | a
G4 :

D bA | aa | b | aAa | aAD | aa | aA | aD | a
Finalmente, simulamos las producciones de G4 con producciones unitarias y binarias:

S Ta S | Ta A | a | | Ta T1 | Ta T2 | Ta Ta | Ta D | a | Tb A | b

A Ta T1 | Ta T2 | Ta Ta | Ta A | Ta D | a

D Tb A | Ta Ta | b | Ta T1 | Ta T2 | Ta Ta | Ta A | Ta D | a
T1 ATa
G5 :

T2 AD

T a

a
Tb b

entes gram
aticas:

Ejercicios

Encontrar una GIC en FNC equivalente a cada una de las sigui-

1.
G:

2.
G:

S ABC | BaC | aB

A Aa | a
B BAB | bab

C cC | c

S aASb | BAb

A Aa | a |
B BAB | bAb

C cCC |

4.7.

Arbol
de una derivaci
on

Un
arbol es un tipo muy particular de grafo no-dirigido: esta formado por un
conjunto de vertices o nodos conectados entre s por aristas o conectores, con
la siguiente propiedad: existe un nodo especial, llamado la raz del arbol, tal
que hay una u
nica trayectoria entre cualquier nodo y la raz. De esta manera,
la raz se ramifica en nodos, llamados descendientes inmediatos, cada uno de
los cuales puede tener, a su vez, descendientes inmediatos, y as sucesivamente.
La propiedad que caracteriza a un arbol garantiza que un nodo puede tener 0,
1, o mas descendientes inmediatos pero un u
nico antecesor inmediato. El u
nico
nodo que no tiene antecesores es la raz. Los nodos que no tienen descendientes se
llaman hojas del arbol. En la terminologa usualmente utilizada, los descendientes
de un nodo tambien se denominan hijos y los antecesores padres o ancestros.
El n
umero de vertices (y por lo tanto, el n
umero de aristas) de un arbol puede
ser infinito. Ejemplos de arboles son:

El
arbol de una derivaci
on S w, w , en una GIC se forma de la siguiente
manera. La raz del arbol es el smbolo inicial S y si en la derivacion se utiliza
la produccion A s1 s2 sk , si (V ) , el nodo A tiene k descendientes

inmediatos: s1 , s2 ,. . . , sk . De esta forma, las hojas del arbol de derivacion de

S w son precisamente los smbolos de la palabra w.




Ejemplo Sea G la gramatica:

S AB | AaB
A aA | a

B bBa | b

El arbol de la derivacion
S AB AbBa abBa abba
es

El anterior es tambien el arbol de la derivacion


S AB aB abBa abba
Esto muestra que dos derivaciones diferentes pueden tener el mismo arbol de
derivacion ya que en el arbol aparecen las producciones utilizadas pero no el
orden en que han sido aplicadas.


Ejemplo Sea G la gramatica:

S BAa

A bBC | a
B bB | b

C aB | aa

El arbol de la derivacion
S BAa bAa bbBCa bbbCa bbbaBa bbbaba
es

Ejercicio Sea G la gramatica:





S ABC | BaC | aB

A Aa | a
G:
B BAB | bab

C cC | c
Encontrar derivaciones de las palabras w1 = abab, w2 = babacc, w3 = ababababc
y hallar los arboles de tales derivaciones.

4.8.

Lema de bombeo

Una de las consecuencias mas importantes de la Forma Normal de Chomsky es el


lema de bombeo para lenguajes independientes del contexto, el cual es u
til para
demostrar que ciertos lenguajes no son LIC. Puesto que las producciones en una
gramatica en FNC son unitarias (A a) o binarias (A BC), en cada nodo
el arbol de una derivacion se ramifica en dos nodos, a lo sumo. Tales arboles se
denominan binarios.
4.8.1 Teorema. Sea G = (V, , S, P ) una gram
atica en FNC y w . Si la

longitud de la trayectoria mas larga en un arbol de derivaci


on de S w tiene k
(o menos) nodos, entonces |w| 2k2 . Aqu k 2.
Demostracion: La siguiente tabla muestra las relaciones obtenidas entre k =

n
umero de nodos de la trayectoria mas larga de S w y la longitud de w, en los
casos k = 2, k = 3, k = 4 y k = 5.

Se observa que |w| 2k2 . Para hacer una demostracion rigurosa del caso general
se procede por induccion sobre k.
4.8.2 Corolario. Sea G = (V, , S, P ) una gram
atica en FNC y w . Si la

longitud de la trayectoria mas larga en un


arbol de derivaci
on de S w tiene
k + 2 (o menos) nodos, entonces |w| 2k . Aqu k 0.
Demostracion: Inmediata.
4.8.3 Corolario. Sea G = (V, , S, P ) una gram
atica en FNC y w , |w| > 2k
(con k 0) entonces la longitud de la trayectoria m
as larga en un
arbol de

derivacion de S w tiene mas de k + 2 nodos.


Demostracion: Es la afirmacion contra-recproca del Corolario 4.8.2.
4.8.4. Lema de bombeo para LIC. Sea L un LIC que no contiene a . Existe
una constante m (llamada constante de bombeo de L) tal que toda z L con
|z| > m se puede descomponer en la forma z = uvwxy donde:
(1) |vwx| m.
(2) uv i wxi y L para todo i 0.
(3) v 6= o x 6= .
Demostracion: Sea G = (V, , S, P ) una gramatica en FNC tal que L(G) = L. Tal
gramatica existe por el Teorema 4.6.1. Sea k = |V | = n
umero de variables de G
y m = 2k . Sea z L con |z| > m = 2k . Por el Corolario 4.8.3, la trayectoria mas

larga en el arbol de una derivacion S w tiene mas de k+2 nodos. Consideremos


los u
ltimos k +2 de tal trayectoria (siguiendo el orden que va desde la raz S hasta
las hojas del arbol). El u
ltimo nodo de esa trayectoria es un terminal a y los
restantes k + 1 nodos son variables. Como hay solo k variables en la gramatica,
entonces hay por lo menos una variable A repetida en la trayectoria. Por lo tanto,
existen cadenas u, v, w, x, y tales que

S uAy,
As que

A vAx,

A w.

S uAy uvAxy uvwxy = z.

Puesto que la trayectoria mas larga en el arbol de derivacion de A vAx


vwx tiene menos de k + 2 nodos, por el Corolario 4.8.2, podemos concluir que
|vwx| 2k = m. Ademas:

S uAy uvAxy uv i Axi y uv i wxi y,

para todo i 0.

Finalmente, la derivacion A vAx se puede escribir como

A BC vAx
utilizando una produccion de la forma A BC como primer paso. Se deduce
que

(B v & C Ax) o (B vA & C x).


Puesto que no hay producciones en la gramatica G, se tiene necesariamente
que v 6= o x 6= . Esto demuestra las propiedades (1), (2) y (3) del lema de
bombeo.


i i i
Ejemplo Demostrar que el lenguaje L = {a b c : i 1} sobre = {a, b, c}

no es un LIC.
Demostracion: Argumento por contradiccion. Si L fuera LIC, por el lema de
bombeo, existira una constante de bombeo m. Sea z = am bm cm ; se tiene que z
L y |z| > m. Por lo tanto, z se puede descomponer como z = am bm cm = uvwxy
con las propiedades (1), (2) y (3) del lema 4.8.4 Puesto que |vwx| m, en la
cadena vxw no pueden aparecer los tres terminales a, b, c simultaneamente. Luego
en las palabras bombeadas uv i wxi y se altera el n
umero de dos de las letras a, b, c,
a lo sumo, pero no de las tres. Esto implica que uv i wxi y
/ L para i 2. Pero
el lema de bombeo afirma que uv i wxi y L para todo i 2. Esta contradiccion
muestra que L no es un LIC.


i
Ejemplo Demostrar que el lenguaje L = {a : i es primo} sobre = {a} no

es un LIC.

Demostracion: Argumento por contradiccion. Si L fuera LIC, por el lema de


bombeo, existira una constante de bombeo m. Sea z = an con n primo n > m
y n > 2. Entonces z L y |z| > m. Por lo tanto, z se puede descomponer como
z = an = uvwxy con las propiedades (1), (2) y (3) del lema 4.8.4
Sea |u| + |w| + |y| = k; entonces |v| + |x| = n k 1. Por el lema de bombeo,
uv i wxi y L para todo i 0; es decir, |uv i wxi y| es primo para todo i 0. Pero
|uv i wxi y| = k + |v i | + |xi | = k + i|v| + i|x| = k + i(|v| + |x|) = k + i(n k).
(i) Si k = 0 tomando i = n se obtiene que k + i(n k) = 0 + i(n 0) = in = nn
que no es primo pues n > 2.
(ii) Si k = 1 tomando i = 0 se obtiene que k + i(n k) = 1 + i(n 1) =
1 + 0(n 1) = 1 que no es un n
umero primo.
(iii) Si k > 1 para i = k se tiene
|uv k wxk y| = k + k(n k) = k(1 + n k).

el cual no es un n
umero primo pues k > 1 y como n k 1 entonces
1+nk 2
Luego de (i), (ii) y (iii) |uv k wxk y| no es un n
umero primo, lo cual contradice que
uv k wxk y L, seg
un el lema de bombeo. Esta contradiccion muestra que L no es
un LIC.


Ejercicios Demostrar que los siguientes lenguajes no son LIC.


1. L = {ai bi cj : j i}, sobre = {a, b, c}.


2. L = {ai bj cj : i j}, sobre = {a, b, c}.
3. L = {ai bj ck : 1 i j k}, sobre = {a, b, c}.
4. L = {ai : i es un cuadrado perfecto}, sobre = {a}.
5. L = {ai b2i ai : i 0}, sobre = {a, b}.
6. L = {ww : w {a, b} }.

4.9.

Forma Normal de Greibach (FNG)

Una GIC esta en Forma Normal de Greibach (FNG) si sus producciones son
de la siguiente forma:
1. A a.
2. A aB1 B2 . . . Bk , donde las Bi son variables.
y no hay variables in
utiles.
Existe un procedimiento algortmico para transformar una GIC dada en una
gramatica equivalente en FNG. Para presentar el procedimiento necesitamos algunos resultados preliminares.
4.9.1 Definici
on. Una variable se llama recursiva a la izquierda si tiene una
produccion de la forma:
A Aw,

w {V }

La recursividad a izquierda se puede eliminar, como se muestra en el siguiente


Teorema.
4.9.2. Eliminaci
on de la recursividad a la izquierda Las producciones de
una variable A cualquiera se pueden dividir en dos clases:

A A1 | A2 | | An
A 1 | 2 | | m
donde i {V } , i {V } y el primer smbolo de i es diferente de A.
Sin alterar el lenguaje generado, las anteriores producciones se pueden simular,
reemplazandolas por las siguientes:

A 1 | 2 | | m | 1 Z | 2 Z | | m Z
Z 1 | 2 | | n | 1 Z | 2 Z | | n Z
donde Z es una variable completamente nueva.
Demostracion: Se puede observar que, tanto con las producciones originales como
las nuevas, A genera el lenguaje
{1 , 2 , . . . , m } {1 , 2 , . . . , n }
4.9.3 Lema. En una GIC cualquiera, una producci
on A uBv se puede reemplazar (simular) por
A uw1 v | uw2 v | | uwn v
siendo B w1 | w2 | | wn todas las producciones de B.

4.9.4. Procedimiento para transformar una GIC a la Forma Normal de


Greibach. Suponemos que la gramatica dada esta en FNC. Esto simplifica el
procedimiento, aunque este es valido para una gramatica arbitraria si se eliminan
primero las variables in
utiles, las producciones y las producciones unitarias.
1. Enumerar las variables en un orden arbitrario pero fijo durante el procedimiento. S debe ser la variable con orden 1.
2. Para cada variable A de la gramatica original, siguiendo el orden elegido,
se modifican sus producciones de tal manera que el primer smbolo a mano
derecha de cada produccion sea un terminal o una variable cuyo orden es
mayor que A. Para lograrlo se usa el teorema de eliminacion de la recursividad a la izquierda 4.9.2 y el Lema 4.9.3, todas las veces que sea necesario.
3. Utilizar el Lema 4.9.3, para modificar las producciones de las variables originales de tal manera que el primer smbolo de cada produccion, a mano
derecha, sea un terminal. Esto se hace siguiendo el inverso de enumeracion
de las variables: u
ltima, pen
ultima, etc.
4. Utilizar el Lema 4.9.3, para modificar las producciones de las variables nuevas de tal manera que el primer smbolo de cada produccion, a mano derecha, sea un terminal.


Ejemplo Encontrar una gramatica en FNG equivalente a la siguiente gramati


ca (que esta en FNC):

G:

S AA | a
A SA | b

Paso 1: Aqu solamente hay un orden posible para variables: S, A.


Paso 2:


G:

S AA | a
A AAA | aA | b

Se elimina luego la recursividad a izquierda de la variable A y se obtiene la


gramatica:

S AA | a
A aA | b | aAZ | bZ

Z AA | AAZ
Paso 3:

S aAA | bA | aAZA | bZA | a


A aA | b | aAZ | bZ

Z AA | AAZ

Paso 4:

S aAA | bA | aAZA | bZA | a


A aA | b | aAZ | bZ

Z aAA | bA | aAZA | bZA | aAAZ | bAZ | aAZAZ | bZAZ




Ejemplo Encontrar una gramatica en FNG equivalente a la siguiente gramati


ca (que esta en FNC):

S AB | BC

A AB | a
B AA | CB | a

Ca|b
Paso 1: Orden de las variables: S, A, B, C.
Paso 2:

S AB | BC

A a | aZ1
B aA | aZ1 A | CB | a

Ca|b

Z1 B | BZ1

Paso 3:

S aB | aZ1 B | aAC | aZ1 AC | aBC | bBC | aC

A a | aZ1
B aA | aZ1 A | aB | bB | a

Ca|b

Z1 B | BZ1

Paso 4:

S aB | aZ1 B | aAC | aZ1 AC | aBC | bBC | aC

B
aA | aZ1 A | aB | bB | a
A a | aZ1

Ca|b

Z1 aA | aZ1 A | aB | bB | a | aAZ1 | aZ1 AZ1 | aBZ1 | bBZ1 | aZ1




Ejemplo Encontrar una gramatica en FNG equivalente a la siguiente gramati


ca (que esta en FNC):

S AB

A AB | CB | a
B AB | b

C AC | c

Paso 1: Orden de las variables: S, A, B, C.


Paso 2:

S AB

A CB | a | CBZ1 | aZ1
B CBB | aB | CBZ1 B | aZ1 B | b

C CBC | aC | CBZ1 C | aZ1 C | c

Z1 B | BZ1

Prosiguiendo con el paso 2, se elimina la recursividad a izquierda de la


variable C:

S AB

A CB | a | CBZ1 | aZ1

B CBB | aB | CBZ1 B | aZ1 B | b


C
aC | aZ1 C | c | aCZ2 | aZ1 CZ2 | cZ2

Z B | BZ1

1
Z2 BC | BZ1 C | BCZ2 | BZ1 CZ2
Paso 3:

S 14 producciones

A a | aZ1 | 6 producciones | 6 producciones

B aB | aZ1 B | b | 6 producciones | 6 producciones


C aC | aZ1 C | c | aCZ2 | aZ1 CZ2 | cZ2

Z1 B | BZ1

Z2 BC | BZ1 C | BCZ2 | BZ1 CZ2

Paso 4: El n
umero de producciones de la nueva gramatica se incrementa drasticamente.

S 14 producciones

A a | aZ1 | 6 producciones | 6 producciones

B aB | aZ1 B | b | 6 producciones | 6 producciones


C aC | aZ1 C | c | aCZ2 | aZ1 CZ2 | cZ2

Z 14 producciones | 14 producciones

1
Z2 14 producciones | 14 producciones | 14 producciones | 14 producciones


(que est
an en FNC):

Ejercicios

Encontrar gramaticas en FNG equivalentes a las gramaticas dadas

1.
G:

S SA | AC | a

A BA | AB | b
B AA | a | b

C AC | CC | a

2.
G:

S SB | BC | b

A AC | CA | a
B BB | a

C BC | CA | a

G:

S SC | AA | a

A CA | AB | a
B AC | b

C CA | AB | b

3.

4.10.

An
alisis gramatical y ambig
uedad

Para los lenguajes naturales, como el espa


nol, se pueden presentar GIC que generen las frases u oraciones permitidas en la comunicacion hablada o escrita. Una
porcion de una GIC para el idioma espa
nol se presenta a continuacion; las variables aparecen encerradas entre parentesis h i y hOraci
oni la variable inicial de la
gramatica. Los terminales son las palabras propias del idioma.
hOraci
oni

hSujetoihVerboihCompl. Directoi | hSujetoihVerboihCompl. Directoi


hCompl. Circunst.i | hSujetoihVerboihCompl. IndirectoihCompl. Circunst.i

hSujetoi

hSustant.i | Juan | Pedro | Mara |

hSustant.i

casa | perro | libro | lapiz |

hCompl. Directoi

hPrepos.ihArtculoihSustant.i | hPrepos.ihArtculoihSustant.i
hPrepos.ihArtculoihSustant.i

hCompl. Indirectoi

hPrepos.ihArtculoihSustant.i

hCompl. Circunst.i

hPrepos.ihArtculoihSustant.i | hAdverbioi

hPrepos.i

a | ante | bajo | cabo | con | contra | de | desde | en | entre | hacia | |

hArtculoi

el | la | lo | las | los | un | una | unas | unos |

hAdverbioi

muy | bastante | poco | demasiado | lento | lentamente | rapido | rapidamente | |

hVerboi

escribir | escribo | escribe | escribes | escriben | escrib | escribiste | escribieron |

Hay oraciones para las cuales se pueden construir (por lo menos) dos arboles
de derivacion diferentes, o lo que es lo mismo, oraciones para las cuales hay dos
derivaciones que (ignorando el orden de las producciones) difieren por lo menos
en una produccion. Tales oraciones tienen un significado ambiguo. Los lenguajes
naturales son casi siempre ambiguos porque existen muchas reglas de produccion,
lo que da lugar a m
ultiples arboles de derivacion para ciertas oraciones.

Ejemplo La oracion

Juan mira a un hombre con un telescopio

es ambigua. La ambig
uedad surge porque las producciones permiten dos arboles
de derivacion para la oracion:

Se puede dar una definicion de la nocion de ambig


uedad en el contexto abstracto de las GIC, ya sea en terminos de derivaciones o en terminos de arboles de
derivacion. Hay ciertas derivaciones que se pueden considerar estandares: las
llamadas derivaciones a izquierda.
4.10.1 Definici
on. Una derivacion se llama derivaci
on a izquierda si en cada
paso se aplica una produccion a la variable que esta mas a la izquierda.
Una derivacion cualquiera se puede transformar siempre en una derivacion a izquierda aplicando, en cada paso, producciones a la variable que esta mas a la
izquierda.
4.10.2 Definici
on. Una GIC G es ambigua si existe una palabra w para la
cual hay dos derivaciones a izquierda diferentes. Equivalentemente, una GIC G es
ambigua si existe una palabra w con dos arboles de derivacion diferentes.


Ejemplo La siguiente gramatica G es ambigua



G:

S aSA |
A bA |

G es ambigua porque para la palabra aab hay dos derivaciones a izquierda diferentes.
S aSA aaSAA aaAA aaA aabA aab
S aSA aaSAA aaAA aabAA aabA aab

Los arboles de derivacion para estas dos derivaciones son:

El lenguaje generado por esta gramatica es a+ b . Se puede construir una


gramatica no-ambigua que genere el mismo lenguaje:

S AB |
0
A aA | a
G :

B bB |


Ejemplo Gramatica de las expresiones aritmeticas. Considerese el alfabeto






= 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, +, , (, )
La siguiente gramatica para generar expresiones aritmeticas es ambigua:
S S+S |SS |0|1|2|3|4|5|6|7|8|9
Hay dos derivaciones a izquierda diferentes para la cadena 3 + 1 5
S S+S 3+S 3+SS 3+1S 3+15
S SS S+SS 3+SS 3+1S 3+15
La ambig
uedad se elimina introduciendo parentesis:
S (S + S) | (S S) | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9
Con esta gramatica, las cadenas (3+1)5 y 3+(15) tienen arboles de derivacion
diferentes.
Observaci
on: Existen lenguajes independientes del contexto para los cuales toda gramatica es ambigua. Tales lenguajes se llaman inherentemente ambiguos.

el lenguaje generado por G y construir luego una gram


atica no-

Ejercicios

En cada caso, mostrar que la gramatica G es ambigua. Encontrar

ambigua que genere el mismo lenguaje.


1.
G:

S AaSbB |
A aA | a

B bB |

G:

S ASB | AB
A aA | a

B bB |

2.

mostrar que las siguientes oraciones del idioma espa


nol son ambi-

Ejercicios

Utilizando la gramatica presentada al inicio de la presente seccion

guas. Como se puede eliminar la ambig


uedad?
1. Ana mira la television sobre la mesa.
2. Pedro escucha una conversacion tras la puerta.

Captulo 5
Aut
omatas de Pila
5.1.

Aut
omatas de Pila Deterministas (AFPD)

Un Aut
omata Finito de Pila Determinista (AFPD), es una 7-upla:
M = (, Q, q0 , F, , s0 , )
cuyos parametros son:
1. es el alfabeto de cinta.
2. Q es el conjunto (finito) de estados.
3. q0 Q es el estado inicial.
4. F es el conjunto de estados finales o de aceptacion, =
6 F Q.
5. es el alfabeto de pila.
6. s0 es el smbolo inicial de pila.
7. es la funcion de transicion del automata:
: Q ( ) (Q )
Como en los modelos anteriores, el AFPD procesa palabras sobre una cinta de entrada, pero hay una cinta adicional, llamada pila, que es utilizada por el automata
como lugar de almacenamiento. En un momento determinado, la cabeza lectora
del automata esta escaneando un smbolo a sobre la cinta de entrada y el smbolo
s en el tope o cima de la pila, como lo muestra la siguiente grafica:

La transicion
(q, a, s) = (q 0 , )
representa un paso computacional: la cabeza lectora pasa al estado q 0 y se
mueve a la derecha; ademas, borra el smbolo s que esta en el tope de la pila y
escribe la palabra (palabra que pertenece a ). La siguiente grafica ilustra un
paso computacional:

En un paso computacional, el automata solo tiene acceso al smbolo que esta en


el tope de la pila. El contenido de la pila siempre se lee desde arriba (el tope)
hacia abajo; esa es la razon por la cual la pila se dibuja verticalmente.
Casos especiales de transiciones:
1. (q, a, s) = (q 0 , s). En este caso, el contenido de la pila no se altera.
2. (q, a, s) = (q 0 , ). El smbolo s en el tope de la pila se borra y el control
finito pasa a escanear el nuevo tope de la pila, que es el smbolo inmediatamente debajo de s.

3. (q, , s) = (q 0 , ). Esta
es una transicion : el smbolo sobre la cinta de
entrada no se consume y la cabeza lectora no se mueve a la derecha, pero el tope s de la pila es reemplazado por la palabra . Para garantizar
el determinismo, (q, a, s), con a , y (q, , s) no pueden estar simultaneamente definidos (de lo contrario el automata tendra una opcion
no-determinista). Las transiciones en un AFPD permiten que el automata cambie el contenido de la pila, sin consumir smbolos sobre la cinta de
entrada.
Configuraci
on o descripci
on instant
anea. Es una tripla (q, au, s) que representa lo siguiente: el automata esta en el estado q, au es la parte no procesada
de la palabra de entrada, y la cabeza lectora esta escaneando el smbolo a. La
cadena s es el contenido total de la pila; siendo s el smbolo que esta en el tope.
Para una palabra de entrada w , la configuracion inicial es (q0 , w, s0 ).

Esta
es una notacion muy comoda: para representar el paso computacional de la
figura anterior escribimos simplemente
(q, au, s) ` (p, u, )
Aqu el automata utilizo la transicion (q, a, s) = (p, ).
La notacion

(q, u, ) ` (p, v, )
significa que el automata pasa de la configuracion instantanea (q, u, ) a la configuracion instantanea (p, v, ) en cero, uno o mas pasos computacionales.
Configuraci
on de aceptaci
on. La configuracion (p, , ), siendo p un estado
final o de aceptacion, se llama configuracion de aceptacion. Esto significa que,
para ser aceptada, una palabra de entrada debe ser procesada completamente,

con el control finito en un estado de aceptacion. La palabra que queda en la


pila puede ser cualquier cadena de smbolos en .
Lenguaje aceptado por un AFPD. El lenguaje aceptado por un AFPD M se
define como

L(M ) := {w : (q0 , w, s0 ) ` (p, , ), p F }


Es decir, una palabra es aceptada si se puede ir desde es la configuracion inicial
a una configuracion de aceptacion, en cero, uno o mas pasos.
Observaciones:
1. En el modelo AFPD se permite que la transicion (q, a, s) no este definida,
para algunos valores q Q, a , s . En tal caso, el computo de la
palabra de entrada se aborta, es decir, el automata se detiene.
2. No se debe confundir la tripla que aparece en la funcion de transicion
(q, a, s) con la tripla (q, u, ) que representa una configuracion instantanea.
3. La definicion de la funcion de transicion requiere que haya por lo menos
un smbolo en la pila. No hay computos con pila vaca.
4. No hay diagramas de estado (que sean u
tiles) para los AFPD ya que el
procesamiento de una palabra de entrada depende del contenido de la pila,
el cual puede cambiar en cada paso computacional.


nar un AFPD que acepte el lenguaje {ai bi : i 1}, sobre el


Ejemplo Dise

alfabeto = {a, b}.
IDEA: Copiar las a0 es en la pila y borrar una a por cada b que sea leda sobre la
cinta. Una palabra sera aceptada si es procesada completamente y en la pila solo
queda el smbolo s0 .
M = (, Q, q0 , F, , s0 , ), donde
= {a, b}
= {s0 , A, B}
Q = {q0 , q1 , q2 }
F = {q2 }
y la funcion de transicion esta dada por:

(q0 , a, s0 ) = (q0 , As0 )


(q0 , a, A) = (q0 , AA)
(q0 , b, A) = (q1 , )
(q1 , b, A) = (q1 , )
(q1 , , s0 ) = (q2 , s0 )
Podemos ilustrar el procesamiento de varias palabras de entrada. Sea, inicialmente, w = aaabbb.
(q0 , aaabbb, s0 ) ` (q0 , aabbb, As0 ) ` (q0 , abbb, AAs0 ) ` (q0 , bbb, AAAs0 )
` (q1 , bb, AAs0 ) ` (q1 , b, As0 ) ` (q1 , , s0 ) ` (q2 , , s0 )
La u
ltima es una configuracion de aceptacion; por lo tanto aaabbb es aceptada.
Para la palabra de entrada w = aabbb, se obtiene el siguiente procesamiento:
(q0 , aabbb, s0 ) ` (q0 , abbb, As0 ) ` (q0 , bbb, AAs0 ) ` (q1 , bb, As0 )
` (q1 , b, s0 ) [computo abortado]
Para la palabra de entrada w = aaabb, se tiene:
(q0 , aaabb, s0 ) ` (q0 , aabb, As0 ) ` (q0 , abb, AAs0 ) ` (q0 , bb, AAAs0 )
` (q1 , b, AAs0 ) ` (q1 , , As0 )
A pesar de que se ha procesado completamente la palabra de entrada, la configuracion (q0 , , As0 ) no es de aceptacion.


nar un AFPD que acepte el lenguaje de todas las palabras sobre


Ejemplo Dise

el alfabeto = {a, b} (diferentes de ) que tienen igual n
umero de
as que de bs.
IDEA: Acumular las as o bs consecutivas en la pila. Si en el tope de la pila
hay una A y el automata lee una b, borrar la A; similarmente, si en el tope de
la pila hay una B y el automata lee una a, borrar la B. La palabra de entrada
sera aceptada si es procesada completamente y en la pila solo queda el smbolo
s0 .
M = (, Q, q0 , F, , s0 , ), donde
= {a, b}
= {s0 , A, B}
Q = {q0 , q1 , q2 }
F = {q2 }
y la funcion de transicion esta dada por:

(q0 , a, s0 ) = (q1 , As0 )


(q0 , b, s0 ) = (q1 , Bs0 )
(q1 , a, A) = (q1 , AA)
(q1 , b, B) = (q1 , BB)
(q1 , a, B) = (q1 , )
(q1 , b, A) = (q1 , )
(q1 , , s0 ) = (q2 , s0 )
Procesamiento de algunas palabras de entrada.
Palabra de entrada: aabababb
(q0 , aabababb, s0 ) ` (q1 , abababb, As0 ) ` (q1 , bababb, AAs0 ) ` (q1 , ababb, As0 )
` (q1 , babb, AAs0 ) ` (q1 , abb, As0 ) ` (q1 , bb, AAs0 )
` (q1 , b, As0 ) ` (q1 , , s0 ) ` (q2 , , s0 )
Palabra de entrada: bbbaba
(q0 , bbbaba, s0 ) ` (q1 , bbaba, Bs0 ) ` (q1 , baba, BBs0 ) ` (q1 , aba, BBBs0 )
` (q1 , ba, BBs0 ) ` (q1 , a, BBBs0 ) ` (q1 , , BBs0 )
En este u
ltimo caso, la palabra de entrada bbbaba es procesada completamente
pero la configuracion final no es una configuracion de aceptacion.


nar un AFPD que acepte el lenguaje L = {wcw1 : w {a, b} }.


Ejemplo Dise

Aqu el alfabeto es = {a, b, c}.
IDEA. Acumular los smbolos en la pila hasta que aparezca la c. Luego comparar
los smbolos ledos con los almacenados en la pila, borrando en cada paso el tope
de la pila. La palabra de entrada sera aceptada si es procesada completamente y
en la pila solo queda el smbolo s0 .
M = (, Q, q0 , F, , s0 , ), donde
= {a, b}
= {s0 , A, B}
Q = {q0 , q1 , q2 }
F = {q2 }
y la funcion de transicion esta dada por:

(q0 , a, s0 )
(q0 , b, s0 )
(q0 , c, s0 )
(q0 , a, A)
(q0 , a, B)
(q0 , b, A)
(q0 , b, B)
(q0 , c, A)
(q0 , c, B)
(q1 , a, A)
(q1 , b, B)
(q1 , , s0 )


 = {a, b}

Ejercicios

=
=
=
=
=
=
=
=
=
=
=
=

(q0 , As0 )
(q0 , Bs0 )
(q2 , s0 ) (para aceptar la palabra c)
(q0 , AA)
(q0 , AB)
(q0 , BA)
(q0 , BB)
(q1 , A)
(q1 , B)
(q1 , )
(q1 , )
(q2 , s0 )

Dise
nar AFPDs que acepten los siguientes lenguajes sobre

1. L = {a2i bi : i 1}.
2. L = {ai b2i : i 1}.

5.2.

Aut
omatas de pila no deterministas
(AFPN)

Un aut
omata finito de pila no determinista (AFPN), esta definido por:
M = (, Q, q0 , F, , s0 , )
el cual consta de los mismos siete parametros de un AFPD, pero la funcion de
transicion es de la forma:
: Q ( ) f (Q ).
donde

f (Q ) es el conjunto de subconjuntos finitos de (Q ).


(q, a, s) = {(p1 , 1 ), (p2 , 2 ), . . . , (pk , k )}.

Su significado es: al leer el smbolo a sobre la cinta de entrada, la cabeza lectora


o control finito, pasa (aleatoriamente) a uno de los estados pi y se mueve a la
derecha. Sobre la pila hace lo siguiente: borra el smbolo s que esta en el tope y
escribe la palabra i (palabra que pertenece a ).
En el modelo AFPN las transiciones , (q, , s), no tiene restriccion alguna.
El lenguaje aceptado por un AFPN M se define como:

L(M ) := {w : existe por lo menos un computo (q0 , w, s0 ) ` (p, , ), p F }.


Es decir, una palabra w es aceptada si existe por lo menos un procesamiento de
w desde la configuracion inicial hasta una configuracion de aceptacion.


nar un AFPN que acepte el lenguaje {ai bi : i 0}, sobre el


Ejemplo Dise

alfabeto = {a, b}.
Definimos un automata similar al utilizado en el primer ejemplo de la seccion 5.1,
pero con un estado menos.
M = (, Q, q0 , F, , s0 , ), esta dado por:
= {a, b}
= {s0 , A, B}
Q = {q0 , q1 }
F = {q1 }
y la funcion de transicion esta dada por:
(q0 , a, s0 ) = {(q0 , As0 )}
(q0 , a, A) = {(q0 , AA)}
(q0 , b, A) = {(q0 , )}
(q0 , , s0 ) = {(q1 , s0 )}

En este automata el no-determinismo se presenta por la presencia simultanea de


(q0 , a, s0 ) y (q0 , , s0 ).


nar un AFPN que acepte el lenguaje de todas las palabras sobre


Ejemplo Dise

el alfabeto = {a, b} que tiene igual n
umero de as que de bs.
M = (, Q, q0 , F, , s0 , ) donde
= {a, b}
= {s0 , A, B}
Q = {q0 , q1 }
F = {q1 }
y la funcion de transicion esta dada por:
(q0 , a, s0 ) = {(q0 , As0 )}
(q0 , b, s0 ) = {(q0 , Bs0 )}
(q0 , a, A) = {(q0 , AA)}
(q0 , b, B) = {(q0 , BB)}
(q0 , a, B) = {(q0 , )}
(q0 , b, A) = {(q0 , )}
(q0 , , s0 ) = {(q1 , s0 )}
Al igual que en ejemplo anterior, el no-determinismo se presenta u
nicamente por
la presencia simultanea de (q0 , a, s0 ) y (q0 , , s0 ).


nar un AFPN que acepte el lenguaje L = {ww1 : w },


Ejemplo Dise

donde = {a, b}.
Observaci
on: No es difcil ver que L es el lenguaje de los palndromes de longitud par. Se puede demostrar (aunque no es facil) que no existe ning
un AFPD
que acepte este lenguaje. Esto muestra que los AFPD y AFPN no son computacionalmente equivalentes, en contraste con los modelos AFD y AFN, que si lo
son.
IDEA. Modificar el automata del tercer ejemplo de la seccion 5.1, permitiendo,
a traves del no determinismo, que el automata adivine cual es la palabra.
M = (, Q, q0 , F, , s0 , ), donde
= {a, b}
= {s0 , A, B}
Q = {q0 , q1 , q2 }
F = {q2 }
y la funcion de transicion esta dada por:

(q0 , a, s0 )
(q0 , b, s0 )
(q0 , , s0 )
(q0 , a, A)
(q0 , a, B)
(q0 , b, A)
(q0 , b, B)
(q1 , a, A)
(q1 , b, B)
(q1 , , s0 )


Ejercicios

=
=
=
=
=
=
=
=
=
=

{(q0 , As0 )}
{(q0 , Bs0 )}
{(q2 , s0 )} (para aceptar )
{(q0 , AA), (q1 , )}
{(q0 , AB)}
{(q0 , BA)}
{(q0 , BB), (q1 , )}
{(q1 , )}
{(q1 , )}
{(q2 , s0 )}

Dise
nar AFPDs o AFPNs que acepten los siguientes lenguajes:

1. L = {ai bj : i 6= j}, sobre = {a, b}.


2. L = {a2i b3i : i, j 0}, sobre = {a, b}.
3. L = {ai bj ck : i + k = j}, sobre = {a, b, c}.
4. L = {ai cj bi : i, j 0}, sobre = {a, b, c}.
5. L = {ai bj : i j 2i}, sobre = {a, b}.
6. El lenguaje de todas las palabras sobre = {a, b} que tienen el doble
n
umero de as que de bs.

5.3.

Aut
omatas de pila y LIC (Parte I)

En el tercer ejemplo de la seccion 5.2, se menciono que los modelos de automata


de pila AFPD y AFPN no son computacionalmente equivalentes, pero el modelo
AFPN corresponde a los lenguajes independientes del contexto. Este es un resultado analogo al Teorema de Kleene y en esta seccion consideraremos la primera
parte de dicha correspondencia.
5.3.1 Teorema. Dada una GIC G, existe un AFPN M tal que L(G) = L(M ).
Demostracion: Dada la gramatica G = (, V, S, P ) se define el automata:
M = (, Q, q0 , F, , s0 , ) estableciendo:
Q = {q0 , q1 , q2 }
F = {q2 }
= V {s0 }
La funcion de transicion se define de la siguiente manera:
(q0 , , s0 ) = {(q1 , Ss0 )} (coloca el smbolo S en el tope de la pila)
Para cada variable A V ,
(q1 , , A) = {(q1 , w) : A w es una produccion de la gramatica G}.
Para cada smbolo terminal a ,
(q1 , a, a) = {(q1 , )}
(q1 , , s0 ) = {(q2 , s0 )}
El automata M esta dise
nado de tal forma que si S w es una derivacion a
izquierda en la gramatica G, entonces existe un procesamiento

(q0 , w, s0 ) ` (q2 , , s0 )
que simula la derivacion.

Recprocamente, puede demostrarse que si (q0 , w, s0 ) ` (q2 , , s0 ) entonces S w


en la gramatica G.
Observese que el automata M tiene siempre tres estados.


Ejemplo Sea G la gramatica:

S aAbS | bBa |
A aA | a
G:

B bB | b

Seg
un la construccion indicada arriba, el automata M esta dado por:
M = (, Q, q0 , F, , s0 , ) donde
Q = {q0 , q1 , q2 }
F = {q2 }
= {a, b, S, A, B, s0 }
La funcion de transicion esta dada por:
(q0 , , s0 )
(q1 , , S)
(q1 , , A)
(q1 , , B)
(q1 , a, a)
(q1 , b, b)
(q1 , , s0 )

=
=
=
=
=
=
=

{(q1 , Ss0 )}
{(q1 , aAbS), (q1 , bBa), (q1 , )}
{(q1 , aA), (q1 , a)}
{(q1 , bB), (q1 , b)}
{(q1 , )}
{(q1 , )}
{(q2 , s0 )}

Podemos ilustrar la correspondencia entre derivaciones en G y procesamientos en


M con la palabra aabbba, la cual tiene la siguiente derivacion a izquierda:
S aAbS aabS aabbBa aabbba
El automata M simula esta derivacion de la palabra aabbba as:
(q0 , aabbba, s0 ) `
`
`
`


(q1 , aabbba, Ss0 ) ` (q1 , aabbba, aAbSs0 ) ` (q1 , abbba, AbSs0 )


(q1 , abbba, abSs0 ) ` (q1 , bbba, bSs0 ) ` (q1 , bba, Ss0 )
(q1 , bba, bBas0 ) ` (q1 , ba, Bas0 ) ` (q1 , ba, bas0 )
(q1 , a, as0 ) ` (q1 , , s0 ) ` (q2 , , s0 )

par
Ejemplo La siguiente gramatica G genera los palndromes1de longitud


sobre = {a, b}, es decir, el lenguaje L = {ww
: w } del
tercer ejemplo de la seccion 5.2.
S aSa | bSb |
Siguiendo el procedimiento del Teorema 5.3.1 podemos construir un AFPN que
acepta L; este automata es diferente del exhibido en el tercer ejemplo de la seccion
5.2.
M = (, Q, q0 , F, , s0 , ) donde
Q = {q0 , q1 , q2 }
F = {q2 }
= {a, b, S, s0 }

La funcion de transicion esta dada por:


(q0 , , s0 )
(q1 , , S)
(q1 , a, a)
(q1 , b, b)
(q1 , , s0 )


=
=
=
=
=

{(q1 , Ss0 )}
{(q1 , aSa), (q1 , bSb), (q1 , )}
{(q1 , )}
{(q1 , )}
{(q2 , s0 )}

Ejercicio Construir un AFPN M que acepte el lenguaje generado por la si


guiente gram
atica:

S Aba | AB |
A aAS | a
G:

B bBA |
Encontrar una derivacion a izquierda en G de la palabra w = aaababa y procesar
luego la palabra w con el automata M , simulando la derivacion.


Ejercicio Construir un AFPN M que acepte el lenguaje generado por la si


guiente gram
atica:

G:

S ASA | AaA | aa
A AbA |

Encontrar una derivacion a izquierda en G de la palabra w = bab y procesar luego


la palabra w con el automata M , simulando la derivacion.

Captulo 6
M
aquinas de Turing
6.1.

M
aquinas de Turing (MT) como aceptadoras de lenguajes

Una M
aquina de Turing (MT), M = (Q, q0 , F, , , b, ), consta de siete
parametros a saber:
1. Q es el conjunto (finito) de estados.
2. q0 Q es el estado inicial.
3. F es el conjunto de estados finales o de aceptacion, =
6 F Q.
4. es el alfabeto de entrada.
5. es el alfabeto de cinta.
6. b es el smbolo blanco.
7. es la funcion de transicion de la maquina:
: Q Q {I, D}
es una funcion parcial, es decir, puede no estar definida en algunos elementos del dominio. I denota desplazamiento a izquierda y D denota desplazamiento a la derecha. La transicion
(q, a) = (p, b, T )
significa: estando en el estado q, escaneando el smbolo a, la cabeza lectora
borra a, escribe b y se mueve en el estado p, ya sea a la izquierda (si el
traslado T es I) o a la derecha (si el traslado T es D).

Ademas, se tiene que y el smbolo blanco b pertenece al alfabeto pero


no al alfabeto de cinta .
Una Maquina de Turing M procesa palabras de entrada w , que se colocan
en una cinta que es infinita en ambas direcciones. Para procesar una palabra
de entrada w, el control finito o cabeza lectora de M esta en el estado inicial
q0 escaneando el primer smbolo de w. Las demas celdas o casillas de la cinta
contienen el smbolo b.
Descripci
on o configuraci
on instant
anea. Es una expresion de la forma
a1 a2 ai1 qai an
donde los as son smbolos del alfabeto de cinta , cada uno colocado en una casilla
individual, y q Q. Esta expresion representa el status actual del computo:

Es decir, la descripcion instantanea a1 a2 ai1 qai an indica que el control


finito de M esta en el estado q escaneando el smbolo ai . Se supone que las
casillas en las que no aparecen as contienen el smbolo blanco, b.
Ejemplos concretos de descripciones instantaneas son:
aabq2 baaa
q5 ababba
ab
bbaabq0 bba
La configuracion o descripcion instantanea inicial, o simplemente configuraci
on
inicial, es
q0 w
siendo w la palabra de entrada, la cual se coloca en cualquier parte de la cinta de
entrada.
Paso computacional. El paso de una descripcion instantanea a otra, por medio
de una transicion definida por , se denomina un paso computacional y se denota
por
u1 qu2 ` v1 pv2

Aqu u1 , u2 , v1 , v2 y p, q Q. Un ejemplo concreto es


abbaq2 ba ` abbq1 aca
en la cual la maquina utilizo la transicion (q2 , b) = (q1 , c, I).
La notacion

u1 qu2 ` v1 pv2
significa que M puede pasar de la descripcion instantanea u1 qu2 a la descripcion
instantanea v1 pv2 en cero, uno o mas pasos computacionales.
C
omputos especiales. Durante el computo o procesamiento de una palabra de
entrada hay dos situaciones especiales que se pueden presentar:
1. El computo termina porque en determinado momento no hay trancision
definida.
2. El computo no termina; esto es lo que se denomina un bucle infinito. Esta
situacion se representa con la notacion

u1 qu2 `
que indica que el computo que se inicia en la descripcion instantanea u1 qu2
no se detiene nunca.
Lenguaje aceptado por una MT. Una palabra de entrada w es aceptada por
una MT M si hay un computo que se inicia en la configuracion inicial q0 w y
termina en una configuracion instantanea w1 pw2 , (p estado de aceptacion) en la
cual M se detiene completamente. El lenguaje L(M ) aceptado por una MT M se
define entonces como
L(M ) :=

{w : q0 w ` w1 pw2 , p F, w1 , w2 , M se detiene en la config. w1 pw2 }


La nocion de aceptacion para Maquinas de Turing es mas flexible que para
automatas: una palabra de entrada no tiene que ser leda en su totalidad para que sea aceptada; solo se requiere que la maquina se detenga completamente,
en un momento determinado, en un estado de aceptacion.
Para tener un mayor control sobre las MT, en el modelo estandar se supone que
la maquina siempre se detiene cuando el control finito entra en un estado de
aceptacion. Es decir, no se permiten transiciones (q, a) cuando q F .
Las Maquinas de Turing originan las siguientes clases de lenguajes:

1. L es un lenguaje recursivamente enumerable si existe una MT M tal que


L(M ) = L.
2. L es un lenguaje recursivo si existe una MT M tal que L(M ) = L y M se
detiene con todas las palabras de entrada
Obviamente, todo lenguaje recursivo es recursivamente enumerable, pero la afirmacion recproca no es, en general, valida.
Diagrama de estados o diagrama de flujo de una MT. La funcion de transicion de una MT se puede presentar como un diagrama de estados o diagrama
de flujo. As, la transicion (q, a) = (p, b, D) se representa por

i i i
Ejemplo Construir una MT M que acepte el lenguaje L = {a b c : i 0}

sobre el alfabeto = {a, b, c}. Como se demostr
o en el captulo
anterior, L no es LIC, es decir, no puede ser aceptado por ning
un automata de
pila.

Sea M la MT con parametros


= {a, b, c}
= {a, b, c, X, Y, Z, b}
Q = {q0 , q1 , q2 , q3 , q4 , q5 }
F = {q5 }
y cuya funcion de transicion esta representada en el siguiente diagrama de estados:

La idea utilizada para el dise


no de esta MT es la siguiente: el control finito cambia
la primera a por X y se mueve a la derecha hasta encontrar la primera b, la cual
se sobre-escribe por una Y . Luego se mueve hacia la derecha hasta encontrar la
primera c, la cual se cambia por Z. El control finito retrocede entonces hacia la
izquierda en busca de la primera X que encuentre en su camino; este retorno se
hace en el estado q3 . La maquina avanza luego hacia la derecha hasta encontrar la
primera a que quede en la cinta y todo el proceso anterior se repite. Si la palabra
de entrada tiene la forma requerida, todas las as seran reemplazadas por Xs,
las bs por Y s y las cs por Zs. Una vez terminada la transformacion, el control
finito se mueve hacia la derecha, en el estado q4 , hasta encontrar la primera celda
marcada con el smbolo blanco b. La MT esta dise
nada de tal forma que si la
palabra de entrada no tiene la forma requerida, el procesamiento terminara en
un estado diferente del estado de aceptacion q5 .

A continuacion procesamos la palabra de entrada w = aabbcc L.


q0 aabbcc ` Xq1 abbcc ` Xaq1 bbcc ` XaY q2 bcc ` XaY bq2 cc ` XaY bq3 bZc

` q3 XaY bZc ` Xq0 aY bZc ` XXq1 Y bZc ` XXY q1 bZc ` XXY Y q2 Zc

` XXY Zq2 c ` XXY q3 ZZ ` Xq3 XY ZZ ` XXq0 Y Y ZZ

` XXY q4 Y ZZ ` XXY Y ZZq4 b ` XXY Y ZZ


bq5 b


{a, b}. Escribir explcitamente la idea utilizada en el dise


no de la

Ejercicios

Dise
nar MTs que acepten los siguientes lenguajes sobre =

maquina y hacer su diagrama de estados.


1. L = {a2i bi : i 1}.
2. L = {ai b2i : i 1}.
3. L = {ai bj ai+j : i 0, j 1}.
4. L = {w : w tiene el mismo n
umero de as que de bs}.
5. L = {ww : w }.

6.2.

Variaciones del modelo est


andar de MT

El modelo estandar de MT es susceptible de varias modificaciones que no alteran


la clase de lenguajes aceptado. Las variaciones que estudiaremos a
naden recursos
computacionales a las maquinas, individualmente consideradas, pero la capacidad
de computo no se incrementa en general: los modelos son equivalentes al modelo
estandar. Indicaremos como se pueden simular los nuevos modelos por medio
maquinas estandares.
Recuerdese que en el modelo estandar, una MT siempre se detiene cuando el control finito entra en un estado de aceptacion. Es decir, no se permiten transiciones
(q, a) cuando q F .

6.2.1.

Control finito estacionario

Se puede permitir que el control finito no se mueva en un determinado paso computacional, es decir, que no realice ning
un desplazamiento. Este tipo de transicion
tiene la forma:
(q, a) = (p, b, N )
donde a, b ; p, q Q y N representa un No-desplazamiento.
Simulaci
on. La anterior transicion se puede simular por medio de un movimiento
a la derecha seguido de un retorno a la izquierda. As, para simular la transicion
(q, a) = (p, b, N ) utilizamos un estado auxiliar q 0 y las transiciones:
(q, a) = (q 0 , b, D)
(q 0 , s) = (p, s, I), para todo smbolo s .
La directiva N tambien se puede simular con un movimiento a la izquierda seguido de un retorno a la derecha. En cualquier caso, concluimos que las MT con
transiciones estacionarias, (q, a) = (p, b, N ), aceptan los mismos lenguajes que
las MT estandares.

6.2.2.

Estado de aceptaci
on u
nico

Toda MT se puede convertir, sin alterar el lenguaje generado, en una maquina con
un u
nico estado de aceptacion. Esto se consigue facilmente a
nadiendo transiciones
desde los estados de aceptacion originales hasta el u
nico estado de aceptacion qu ,
el cual es un estado nuevo. Las transiciones necesarias son:
(q, a) = (qu , a, N ),

para todo q estado de aceptacion original y todo a .

De esta manera, se puede considerar que toda MT tiene un u


nico estado inicial y
un u
nico estado de aceptacion. Este es un hecho importante para la codificacion
binaria de maquinas de Turing (seccion 6.4).

6.2.3.

M
aquina de Turing con cinta dividida en pistas

En el modelo multi-pista, la cinta esta dividida en un n


umero finito k de pistas.
La funcion de transicion adquiere la siguiente forma:
(q, (a1 , a2 , a3 , . . . , ak )) = (p, (b1 , b2 , b3 , . . . , bk ), T )
donde los ai y los bi son smbolos del alfabeto de cinta y T es una traslacion
I o D o N. En un paso computacional, el control finito cambia simultaneamente
el contenido de las k pistas de la celda escaneada y realiza luego uno de los
desplazamientos D, I o N .

Simulaci
on. Las Maquinas de Turing que act
uan sobre una cinta dividida en
k pistas aceptan los mismos lenguajes que las MT estandares. Para concluir tal
afirmacion, basta considerar el modelo multi-pistas como una MT normal en la
que el alfabeto de cinta esta formado por el conjunto de k-uplas (s1 , s2 , . . . , sk ),
donde los si . Es decir, el nuevo alfabeto de cinta es el producto cartesiano
k = (k veces).

6.2.4.

M
aquina de Turing con m
ultiples cintas

En el modelo multi-cintas, hay k cintas diferentes, cada una dividida en celdas o


casillas. La cadena de entrada se coloca en la primera cinta; las demas cintas estan
llenas de blancos. En un paso computacional, el control finito cambia el contenido
de la celda escaneada en cada cinta y realiza luego uno de los desplazamientos D,
I o N . Esto se hace de manera independiente en cada cinta; el controlo finito tiene

entonces k visores que act


uan independientemente en cada cinta. La funcion
de transicion adquiere la siguiente forma:
(q, (a1 , a2 , a3 , . . . , ak )) = (p, (b1 , b2 , b3 , . . . , bk ), (T, T, . . . , T ))
donde los ai y los bi son smbolos del alfabeto de cinta , y T es una de las
traslaciones I o D o N .

Simulaci
on. A pesar de que el modelo multi-cinta parece, a primera vista, mas
poderoso que el modelo estandar, resulta que una MT con m
ultiples cintas se
puede simular con una MT multi-pista. Una MT con k cintas se simula con una
MT que act
ua sobre una u
nica cinta dividida en 2k + 1 pistas. Cada cinta de
la maquina multi-cinta da lugar a 2 pistas en la maquina simuladora: la pista
superior simula la cinta propiamente dicha y la inferior tiene todas sus celdas en
blanco, excepto una, marcada con un smbolo especial X, que indica la posicion
actual del visor de la maquina original en dicha cinta. La pista adicional de
la maquina simuladora se utiliza para marcar, con un smbolo especial Y , las
posiciones mas a la izquierda y mas a la derecha del control finito en la maquina
original. Para simular un solo paso computacional, la nueva maquina requiere
hacer m
ultiples recorridos a izquierda y a derecha, actualizando el contenido de

las pistas y la posicion de los marcadores X y Y . Omitiremos los detalles mas


especficos de este proceso de simulacion.


i i i
Ejemplo MT con 2 cintas que acepta el lenguaje L = {a b c : i 1}. La

idea implementada para esta MT es: se copia en la segunda cinta
una X por cada a leda. Al aparecer las bs se avanza hacia la derecha en la
primera cinta y hacia la izquierda en la segunda. Al aparecer las cs se avanza
hacia la derecha en ambas cintas. Si la palabra de entrada tiene la forma ai bi ci ,
se detectara simultameamente el smbolo en blanco b en ambas cintas.

La funcion de transicion es:


(q0 , (a, b)) = (q1 , (a, D), (X, D))
(q1 , (a, b)) = (q1 , (a, D), (X, D))
(q1 , (b, b)) = (q2 , (b, N ), (
b, I))
(q2 , (b, X)) = (q2 , (b, D), (X, I))
(q2 , (c, b)) = (q3 , (c, N ), (
b, D))
(q3 , (c, X)) = (q3 , (c, D), (X, D))
(q3 , (
b, b)) = (q4 , (
b, b), (N, N ))


nar Maquinas de Turing multi-cintas que acepten los siguientes


Ejercicio Dise

lenguajes. En cada caso, escribir explcitamente la idea utilizada en
el dise
no.
1. L = {ai bj ai bj : i, j 0}.
2. L = {ai b2i ai : i 0}.

6.2.5.

M
aquinas de Turing no deterministas (MTN)

En el modelo no determinista se permite que, en un paso computacional, el control


finito escoja entre varias transiciones posibles. Concretamente, la funcion tiene
la siguiente forma:
(q, a) = {(p1 , b1 , T ), (p2 , b2 , T ), . . . , (pk , bk , T ))}
donde los ai y los bi son smbolos del alfabeto de cinta , los pi son estados y T
es una de las traslaciones I o D o N .
La nocion de aceptacion de las MTN es similar a la de los modelos no deterministas considerados antes: una palabra de entrada w es aceptada si existe por lo
menos un computo a partir de la configuracion inicial q0 w que termina en la configuracion u1 pu2 , con p F . Como antes, los computos en los cuales la maquina

se detiene en un estado de no aceptacion, o que no se detienen, son irrelevantes


para la aceptacion.
Simulaci
on. Una MTN no tiene mayor poder computacional que una MT estandar, es decir, una MTN se puede simular con una MT, como lo explicaremos
a continuacion. Sea M una MTN; se bosquejara la construccion de una MT
M 0 tal que L(M ) = L(M 0 ). Sea n el n
umero maximo de transiciones en los
conjuntos (q, a), considerando todo a , q Q. Para cada a y q Q, las
transiciones contenidas en (q, a) se pueden numerar entre 1 y n. Si hay menos de
n transiciones en un (q, a) particular, se repite arbitrariamente una de de ellas
hasta completar n. Una vez establecida esta numeracion, cada transicion posible
se puede considerar como un par de la forma ((q, a), i) con 1 i n.
La MT M 0 que simulara a M tendra tres cintas. La primera cinta almacena la
entrada, la segunda genera de forma sistematica todas las secuencias finitas de
n
umeros entre 1 y n: primero las secuencias de longitud 1, luego las secuencias
de longitud 2, luego las de longitud 3 y as sucesivamente (no es difcil imaginar
una MT auxiliar que realice esta generacion sistematica de secuencias). Para cada
secuencia generada en la cinta 2, M 0 copia la cadena de entrada sobre la cinta 3 y
simula sobre ella la computacion que hace la maquina original M . Si M 0 se detiene
en un estado de aceptacion, entonces tanto M como M 0 aceptan la entrada. Si
la entrada es aceptada por M existira una computacion que se detiene en un
estado de aceptacion y, eventualmente, M 0 encontrara y simulara tal computacion.
Recuerdese que una MT estandar acepta u
nicamente cuando el procesamiento se
detiene en un estado de aceptacion y que no hay transiciones desde los estados
de aceptacion.

6.3.

Simulaci
on de aut
omatas AFD y AFPN por
medio de m
aquinas de Turing

En esta seccion veremos que los modelos de automatas AFD y AFPN se pueden
simular con maquinas de Turing.
Simulaci
on de un AFD. Sea M = (Q, q0 , F, , ) un AFD. Se puede construir
una MT M 0 tal que L(M ) = L(M 0 ) definiendo M 0 = (Q0 , q0 , F 0 , , , b, 0 ) como
Q0 = Q {q 0 }, donde q 0 es un estado nuevo.
= {
b}.
0
0
F = {q }.
0 (q, s) = ((q, s), s, D), para q Q, s .
0 (q, b) = (q 0 , b, N ), para todo q F.

La MT M 0 se detiene para cualquier entrada w. Puesto que los lenguajes regulares


son precisamente los aceptados por los AFD, concluimos el siguiente teorema.
6.3.1 Teorema. Un lenguaje regular es un lenguaje recursivo.


Ejercicio Simular el siguiente AFD por medio de una MT M .

Hacer el diagrama de estados de la maquina M .


Simulaci
on de un AFPN. Sea M = (Q, q0 , F, , , s0 , ) un AFPN. Para
simular a M se puede construir una MTN M 0 que act
ue sobre dos cintas: la
primera cinta simula la cinta de entrada y la segunda simula la pila del automata.
Se define M 0 = (Q0 , q0 , F 0 , , 0 , b, ) haciendo
Q0 = Q {q 0 }, donde q 0 es un estado nuevo.
0 = {
b}
0
0
F = {q }
La MT M 0 coloca inicialmente el smbolo inicial de pila sobre la cinta 2:
(q0 , (s, b)) = (q0 , (s, s0 ), (N, N )),

para cualquier s .

Una transicion de la forma (q, a, s) = (p, ) se simula con varias transiciones: se


trata de lograr que M sobre-escriba el smbolo s en la cinta 2, que representa el
tope de la pila, por la cadena . Por ejemplo, la transicion (q, a, s) = (p, a1 a2 a3 )
se simula a
nadiendo un estado auxiliar qe junto con las transiciones
(q, (a, s)) = (qe , (a, N ), (a3 , D))
(qe , (a, b)) = (qe , (a, N ), (a2 , D))
(qe , (a, b)) = (qe , (a, D), (a1 , N ))
Para no alterar el lenguaje aceptado, cada transicion de este tipo requiere la
adicion de un estado especial qe diferente. Una transicion del automata M ,
(q, , s) = (p, ) se simula de manera similar: la posicion del control finito y el
contenido de la primera cinta no cambian durante el procedimiento. Finalmente,
se debe a
nadir la transicion
(q, (
b, s)) = (q 0 , (
b, s), (N, N )),

para todo s y todo q F .

Lo anterior muestra que el comportamiento del automata M se simula completamente con la MT M 0 y se tiene que L(M ) = L(M 0 ). Notese que M 0 no necesariamente se detiene con cada cadena de entrada w. Por consiguiente, solamente
se puede concluir por ahora lo que se afirma en el siguiente teorema.
6.3.2 Teorema. Un LIC es un lenguaje recursivamente enumerable.


Ejercicio Simular por medio de una MT M el automata dei ipila (primer ejem
plo de la secci
on 5.1) que acepta el lenguaje {a b : i 1}, sobre el
alfabeto = {a, b}, y cuya funcion de transicion es:

(q0 , a, s0 ) = (q0 , As0 )


(q0 , a, A) = (q0 , AA)
(q0 , b, A) = (q1 , )
(q1 , b, A) = (q1 , )
(q1 , , s0 ) = (q2 , s0 )
Se detiene M con todas las palabras de entrada?

6.4.

Codificaci
on de M
aquinas de Turing

Toda MT se puede codificar como una secuencia finita de ceros y unos. Para
simplificar la codificacion, suponemos que toda MT tiene un u
nico estado inicial,
denotado q0 , y un u
nico estado final, denotado q1 (en la seccion 6.2.2 se mostro que
esta modificacion siempre se puede hacer, sin alterar los lenguajes aceptados). Los
smbolos del alfabeto de cinta
= {s1 , s2 , . . . , sk , sk+1 , . . . , sm }
| {z }
smbolos de

se codifican como secuencias de unos; s1 representa el smbolo blanco b:


Smbolo
s1 (smbolo b)
s2
..
.

Codificacion
1
11
..
.
11
1}
| {z

sm

m veces

Los estados de la MT Q = {q0 , q1 , q2 , . . . , qn } se codifican tambien como secuencias


de unos:
Estado
q0 (inicial)
q1 (final)
..
.
qn

Codificacion
1
11
..
.
11
1}
| {z

n+1 veces

Las directivas de movimiento D, I y N se codifican con 1, 11 y 111, respectivamente. Una transicion (q, a) = (p, b, N ) se codifica usando ceros como separadores para los estados y los smbolos del alfabeto de cinta. As, la transicion
(q3 , s2 ) = (q5 , s3 , D) se codifica como
0111101101111110111010
En la codificacion de una transicion cualquiera (q, s) = (q 0 , s0 , T ) aparecen exactamente seis ceros rodeados por secuencias de unos.
Puesto que solamente hay un estado inicial y uno de aceptacion, para codificar una
MT basta presentar la secuencia binaria de la funcion de transicion , codificada
siguiendo el anterior esquema.

Ejemplo Considerese la siguiente MT que acepta el lenguaje a+ b:

(q0 , a) = (q2 , a, D)
(q2 , a) = (q2 , a, D)
(q2 , b) = (q3 , b, D)
(q3 , b) = (q1 , b, N )

Si los smbolos del alfabeto de cinta b, a y b se codifican con 1, 11 y 111, respectivamente, la anterior MT adquiere la siguiente codificacion como secuencia de
ceros y unos:
010110111011010011101101110110100111011101111011101001111010110101110
Es claro que una secuencia de ceros y unos que represente una MT se puede decodificar. De hecho, es facil concebir un algoritmo que determine si una secuencia
binaria finita dada es o no una MT y que la decodifique en caso afirmativo.
Enumeraci
on de M
aquinas de Turing. Podemos dise
nar un algoritmo simple
para enumerar, es decir, hacer una lista (infinita) de todas las MT que act
uen
sobre un alfabeto de cinta dado. Se generan de manera sistematica todas las
sucesiones binarias (primero las secuencias de longitud 1, luego las secuencias
de longitud 2, luego las de longitud 3 y as sucesivamente). Para cada secuencia
binaria generada se determina si codifica o no a una MT; la primera MT detectada
se llama M1 , la siguiente M2 , y as sucesivamente. Este algoritmo produce la lista
o enumeracion M1 , M2 , M3 , . . . de todas las MT sobre . Por consiguiente, el
conjunto de todas las maquinas de Turing (sobre un alfabeto dado) es enumerable.


Ejercicio Sea M la MT definida por el siguiente diagrama de estados:

1. Cual es el lenguaje aceptado por M ?

2. Convertir M en una MT M 0 con un u


nico estado de aceptacion.
3. Codificar la maquina M 0 siguiendo el esquema presentado en esta seccion
(los smbolos del alfabeto de cinta b, a y b se codifican con 1, 11 y 111,
respectivamente).


Ejercicio La siguiente secuencia binaria codifica una MT M , siguiendo el



esquema de codificaci
on presentado en esta seccion. Decodificar la
maquina M y determinar L(M ).
sigue

01011011101101001110111011110111010011110111011110111010
0111101101111101101001111010110101110

6.5.

M
aquina de Turing universal

La maquina de Turing universal Mu simula el comportamiento de cualquier otra


MT, si esta u
ltima se presenta codificada. Mu es una MT con tres cintas cuyo
alfabeto de cinta es {0, 1}. La primera cinta contiene la codificacion de una MT
M cualquiera, siguiendo el esquema mencionado en la seccion 6.4. El control finito
se coloca en el 0 inicial de la maquina codificada. La segunda cinta contiene la
codificacion de la entrada w de M ; la cabeza lectora se coloca inicialmente en el
primer 1 de la codificacion de w. La tercera cinta se usa para almacenar el estado
actual de M .
Mu utiliza la informacion de las cintas 2 y 3 para buscar en la cinta 1 la transicion
que sea aplicable. Si encuentra una transicion aplicable, Mu simula en la cinta 2
lo que hara M . Si despues de escanear la cinta 1, Mu no encuentra una transicion aplicable, la maquina se detiene, como lo hara M . Despues de realizar una
transicion, el control finito regresa, en la primera cinta, al 0 inicial; en las demas
cintas el control permanece estacionario. Si al procesar una entrada w, Mu se detiene en el u
nico estado de aceptacion de M , entonces la cadena w sera aceptada.
Por consiguiente, Mu tiene tambien un u
nico estado de aceptacion, q1 , que es el
mismo estado de aceptacion de cualquier otra MT.

6.6.

Problemas indecidibles o irresolubles

Al final de la seccion 6.4 mencionamos que, dado un alfabeto de cinta , existe


un algoritmo para enumerar todas las MT sobre : M1 , M2 , M3 , . . .. Cada MT
aparece en la lista codificada como una secuencia binaria. Puesto que es finito, el
conjunto de todas las palabras sobre es tambien enumerable en la forma =
{w1 , w2 , w3 , . . .} (en la lista aparece primero la palabra vaca, luego las palabras
de longitud 1, luego las de longitud 2 y as sucesivamente, todas codificadas
como secuencias binarias). Utilizando estas enumeraciones es posible construir
un lenguaje que no es recursivamente enumerable.
6.6.1 Teorema. El lenguaje
L = {wi : wi no es aceptada por Mi }
no es RE (recursivamente enumerable), es decir, no es aceptado por ninguna MT.
Demostracion: Razonamos suponiendo que L s es RE para llegar a una contradiccion. Si L fuera RE sera aceptado por una MT Mk , con respecto a la enumeracion
de maquinas de Turing ya descrita. Es decir, L = L(Mk ). Se tendra entonces
wk L = wk no es aceptada por Mk = wk
/ L(Mk ) = L.
wk
/ L = wk
/ L(Mk ) = wk es aceptada por Mk = wk L.
Por lo tanto, wk L wk
/ L, lo cual es una contradiccion.

6.6.1.

Problema de la parada o problema de la detenci


on

Este famoso problema (halting problem, en ingles), considerado por Turing en


1936, consiste en preguntar si existe un algoritmo para el siguiente problema de
decision:
Dada una MT M cualquiera, sobre el alfabeto de cinta , y una cadena
w , se detiene M al procesar la palabra de entrada w?
Una instancia (o caso) de este problema es una pareja (M, w) formada por una
MT M y una cadena w dadas, ambas codificadas seg
un el esquema de codificacion de la seccion 6.4. Observese que hay infinitas instancias para el problema;
el algoritmo debe ser aplicable uniformemente a todas ellas y terminar con una
de las conclusiones SI o NO.
Si se quiere ser mas precisos con respecto a la nocion de algoritmo, el problema
de la parada se puede enunciar con respecto maquinas de Turing, en vez de

algoritmos general. En tal caso, el problema adquiere la siguiente forma: existe


una MT que resuelva el problema de la parada? Esta MT tendra su propio alfabeto
de cinta (que incluye a junto con otros smbolos auxiliares) y debe procesar
una instancia (M, w), formada por codificaciones binarias de una MT M y una
cadena w dadas, deteniendose en un estado de aceptacion (que representa
la decision SI) o un estado de rechazo (que representa la decision NO).
6.6.2 Teorema. El problema de la parada es indecidible (o irresoluble), es decir,
no existe una MT que resuelva el problema.
Demostracion: Razonamos por contradiccion: suponemos que existe una MT M
que procesa todas las entradas (M, w) y se detiene siempre en un estado de
aceptacion o en uno de rechazo. La aceptacion significa que la MT M se
detiene con la entrada w, y el rechazo significa que M no se detiene con la
entrada w. Esta suposicion permitira construir una MT ML que acepte el lenguaje
L del Teorema 6.6.1, de lo cual se deducira que L es RE, contradiciendo as la
conclusion de dicho teorema.
Con una entrada w , la maquina ML procede as: enumera sistematicamente
las palabras w1 , w2 , w3 , . . . hasta que encuentra un k tal que w = wk . Luego genera
la MT Mk e invoca (o simula) a M con entrada (Mk , wk ). Entonces, si M decide
que Mk no se detiene con la entrada wk , ML acepta a w = wk . Si, por el contrario,
M decide que Mk se detiene con la entrada wk , ML invoca (o simula) la maquina
de Turing universal Mu . Con entrada (Mk , wk ), la maquina de Turing universal se
detiene determinando si Mk acepta o no a wk . Si Mk acepta a wk , ML se detiene
y rechaza a w; si Mk rechaza a wk , ML se detiene y acepta a w. Esto muestra que
L(ML ) = L, lo cual contradice el Teorema 6.6.1.

6.6.2.

T
ecnica de reducci
on de problemas

Se puede concluir que muchos problemas de decision son irresolubles reduciendolos a problemas que se sabe de antemano que son indecidibles. Para ser mas
precisos, supongase que ya se sabe que un cierto problema P1 es indecidible (como el problema de la parada, por ejemplo). Podramos concluir que un problema
dado P2 es indecidible razonando por contradiccion: si P2 fuera decidible tambien lo sera P1 . Esta contradiccion mostrara que el problema P2 no puede ser
decidible.
Para utilizar esta tecnica de reduccion, es necesario dise
nar (o concebir) una
0
MT M que sea capaz de convertir una instancia cualquiera w del problema P1
en instancias del problema P2 de tal manera que, al aplicar la supuesta MT M
que resuelve el problema P2 , se llegue a una decision, SI o NO, del problema P1
para la entrada w. La siguiente grafica ilustra este procedimiento; el dise
no de

M 0 , que aparece representada por el rectangulo a trozos, es la parte esencial del


procedimiento de reduccion.

Ejemplo Problema de la cinta en blanco.


Dada una MT M cualquiera, sobre el alfabeto de cinta , se detiene
M al iniciar su funcionamiento con la cinta en blanco (todas las celdas
marcadas con b)?

Se puede mostrar que este problema es irresoluble reduciendolo al problema de


la parada; la grafica siguiente ilustra el procedimiento.

Se asume que existe una MT M que resuelve el problema de la cinta en blanco;


podramos entonces resolver el problema de la parada. Sea (M, w) una instancia
arbitraria (M y w estan codificadas); construimos una MT M 0 que realice las
siguientes acciones. M 0 comienza con la cinta en blanco, luego escribe w en la

cinta y a continuacion simula el procesamiento que hace M con entrada w. Como


M 0 inicia su procesamiento con la cinta en blanco, podemos ejecutar la maquina
M, con entrada M 0 . M decide si M 0 se detiene o no y, por lo tanto, se obtiene
una decision sobre si M se detiene o no con entrada w. Conclusion: si el problema
de la cinta en blanco fuera decidible, tambien lo sera el problema de la parada.


siguientes problemas de decisi


on son irresolubles:

Ejercicios

Mediante la tecnica de reduccion de problemas, mostrar que los

1. Dada una MT M es L(M ) = ? Ayuda: reducirlo al problema de la cinta


en blanco.
2. Dada una MT M es L(M ) = ?
3. Dada una MT M = (Q, q0 , F, , , b, ) cualquiera y un smbolo a ,
escribira M alguna vez el smbolo a sobre la cinta si M inicia su funcionamiento con la cinta en blanco?
4. Dadas dos MT M1 y M2 cualesquiera, es L(M1 ) = L(M2 )?