You are on page 1of 0

Teora de la

Computacin








APUNTES ELABORADOS POR
Jorge Eduardo Carrin Viramontes










Instituto Tecnolgico de Morelia
Departamento de Sistemas y Computacin
Av. Tecnolgico # 1500
Col. Santiaguito
Telfono (443) 312-15-70




EDITORIAL ACD
T E O R I A D E L A C O M P U T A C I N




3













Catalogacin
J ORGE EDUARDO CARRIN
TEORIA DE LA COMPUTACIN
Mxico: ACD, 2005
276 pg.; 21 cm.
ISBN: 968-5354-82-0



La informacin contenida en la obra, es propiedad intelectual del autor,
por lo que se prohbe su reproduccin total o parcial
por cualquier medio electrnico o mecnico
sin la autorizacin escrita del mismo.


Editorial ACD
17 Sur No. 3105, Col. Volcanes
Tel: 01(222) 4 03 69 89 y telfax: 4 03 69 90
Email: informes@editorialacd.com
Pgina Web: www.editorialacd.com




J O R G E E D U A R D O C A R R I N V .




4
Cont enido
1. Conc ept os Bsi c os 1
Smbolos y Alfabetos
Cadenas
Operaciones con Cadenas
Lenguajes. Lenguaje Universal
Operaciones con Lenguajes
2. Lenguaj es Regul ar es 13
Definicin
Expresiones Regulares
Teoremas sobre Expresiones Regulares
Sustitucin, Homomorfismo y Cociente
3. Aut mat as Fi ni t os Det er mi ni st as 23
Diagramas de Transiciones
Autmata Finito Determinista
AFD Complemento
AFD Mnimo Equivalente
Mquinas de Moore y de Mealy, Transductor Determinista
4. Aut mat as Fi ni t os No Det er mi ni st as 45
Definicin de Autmata Finito No Determinista
Equivalencia entre AFN y AFD
Transiciones psilon
Equivalencia entre AFNs con y sin transiciones psilon
Autmatas Finitos Generalizados
5. Aut mat as Fi ni t os y Ex pr esi ones Regul ar es 67
Construccin de Autmatas
Obtencin de Expresiones regulares
Lema de Arden
Simplificacin de AFNGs
Teorema de Kleene
T E O R I A D E L A C O M P U T A C I N




5
6. Gr amt i c as Regul ar es 85
Definicin de Gramtica Regular
Construccin de Gramticas
Obtencin de Expresiones Regulares
Gramticas Regulares Reversas
Propiedades de las Gramticas Regulares
7. Gr amt i c as I ndependi ent es del Cont ex t o 101
Definicin de Gramtica Independiente del Contexto
rboles de Derivacin y Ambigedad
Depuracin de Gramticas Independiente del Contexto
Forma Normal de Chomsky
Algoritmo de CYK
Forma Normal de Greibach
8. Lenguaj es I ndependi ent es del Cont ex t o 127
Lenguajes No Regulares
Lema del Rizo
Propiedades de los LICs
Anlisis Sintctico
Gramticas LL(k)
Gramticas LR(k)
9. Aut mat as de Pi l a 143
Autmatas de Pila Deterministas
Definicin y ejemplos de APD
Autmatas de Pila No Deterministas
Construccin de APN a partir de una GIC
Construccin de una GIC dado un APN
10. Mqui nas de Tur i ng 165
La nocin de Cinta
AFD de dos direcciones
Introduccin a las Mquinas de Turing
Funciones Turing-Computables
J O R G E E D U A R D O C A R R I N V .




6
Reconocimiento de Lenguajes con Mquinas de Turing
Variantes de las Mquinas de Turing
Mquina Universal de Turing
Mquinas de Turing bsicas
Mquinas de Turing compuestas
11. Gr amt i c as No Rest r i ngi das 193
Definicin de Gramticas no Restringidas
Jerarqua de Chomsky
Lenguajes Recursivos
Toda MT puede simularse por una GNR.
Tesis de Church
12. Resol ubi l i dad 209
Decidibilidad
Reformulacin de Problemas
Propiedades de los Lenguajes Decidibles
Problema de Detencin
Reducibilidad
Diagonalizacin
Teorema de Rice
Problema de Correspondencia de Post
13. Comput abi l i dad 221
Funciones Iniciales
Construcciones Primitivas
Funciones Recursivas Primitivas
Funciones Caractersticas
Funciones -Recursivas
Funciones Recursivas Parciales
14. Compl ej i dad 233
Complejidad de los Algoritmos
Complejidad de los Problemas
Tasas de Crecimiento
T E O R I A D E L A C O M P U T A C I N




7
Intratabilidad
Clculos de Tiempo Polinomial. La Clase P.
Problemas de Decisin. La Clase NP.
Teorema de Cook
Comentarios Finales
A. Gl osar i o de Tr mi nos 249
B. Sol uc i n a l os Pr obl emas Pl ant eados 255






T E O R I A D E L A C O M P U T A C I N
9

Concept os Bsicos
Se definen los conceptos fundamentales de smbolo, alfabeto, cadena y lenguaje. Se describen las operaciones y las
propiedades ms importantes de cada uno de ellos. Estos conceptos son esenciales para los objetivos de la presente obra.
Smbolo
Un smbolo es una representacin de un concepto o idea que es perceptible por
medio de al menos uno de los sentidos, generalmente la vista. Un smbolo puede ser
un signo, un dgito, una letra e incluso un grupo de letras que se utiliza para transmitir
el conocimiento en algn lenguaje y que tiene algn significado convencional. Se
suele decir, entonces, que smbolo es una representacin grfica de algo.
Ejemplos de smbolos: 0, 1, W, OK, , b, , , , , STOP, etc.
Alfabet o
Un alfabeto es un conjunto ordenado, finito y no vaco de smbolos.
Ej empl os
= { 0, 1 } es un alfabeto.
El alfabeto griego es: = { , , , , , }
El alfabeto para un programa de cmputo puede ser: = { APPEND, END, FOR,
GET, IF, , XOR }
Pr opi edades de l os Al f abet os
Los alfabetos permiten las operaciones que son comunes a cualquier otra clase de
conjuntos, siempre que el resultado de tal operacin no sea un conjunto vaco, es
decir: Si
1
y
2
son dos alfabetos, entonces, los resultados de las siguientes
operaciones:
1
4
2
, es un alfabeto;
1
3
2
, es un alfabeto si
1
y
2
no son
disjuntos;
1

2
, es un alfabeto si
1

2
;
2

1
, es un alfabeto si
2

1
; y
finalmente,
1
/
2
, es un alfabeto si
1

2
.
Capt ul o
1
J O R G E E D U A R D O C A R R I N V .
10
Dado que no existe un alfabeto universal, porque tendra que ser infinito, y esto
contradice la definicin, tampoco puede existir el complemento de un alfabeto.
Ej empl o
Sean los alfabetos
1
= { 0, 1, 2, 3, 4 } y
2
= { 0, 2, a, b }, entonces tenemos que
tambin son alfabetos los siguientes:
1
4
2
= { 0, 1, 2, 3, 4, a, b },
1
3
2
= { 0, 2 },

1

2
= { 1, 3, 4 },
2

1
= { a, b } y
1
/
2
= { 1, 3, 4, a, b }.
Cadena
Una Cadena es una secuencia finita de smbolos de un alfabeto dado, yuxtapuestos
uno a continuacin de otro en una secuencia determinada. La posicin que ocupa
cada smbolo dentro de la cadena lo diferencia de las dems ocurrencias del mismo, y
por eso cada smbolo puede aparecer numerosas veces dentro de una misma cadena.
Ej empl os
Sea el alfabeto = { 0, 1 }, entonces w
1
= 10, w
2
= 10011 y w
3
= 100100101 son
cadenas formadas a partir de ese alfabeto.
Sea el alfabeto = { a, b, c, d, e }, x
1
= bebe, x
2
= daba, x
3
= becada, x
4
= cabe y
x
5
= c son cadenas formadas a partir de ese alfabeto.
Cadena Vac a
La cadena vaca se denota por y es la cadena que est formada por una secuencia
vaca de smbolos de cualquier alfabeto.
Operaciones con Cadenas
Longi t ud de una Cadena
Si w es una cadena, decimos que la longitud de la misma es el nmero de smbolos
que la forman y se denota por |w|. No importando cuantas veces aparezca el mismo
smbolo en la cadena, cada ocurrencia se cuenta por separado.
Ej empl os
Sea w
1
= 10011, entonces |w
1
| = 5.
Sea w
2
= 1011010101, entonces |w
2
| = 10.
La longitud de la cadena vaca es cero: || = 0.
T E O R I A D E L A C O M P U T A C I N
11
Conc at enac i n
Concatenacin es la yuxtaposicin de dos cadenas, una a continuacin de la otra, de
tal forma que si w y x son dos cadenas, la concatenacin de w con x es la cadena que
se obtiene de aadir la cadena x a la cadena w.
La concatenacin se denota con el operador de yuxtaposicin: w $ x, pero usualmente
se omite el punto, quedando: wx. Adems, la yuxtaposicin no es conmutativa y en
general se tiene que: wx xw.
La longitud de la concatenacin es igual a la suma de las longitudes de las cadenas
individuales: |wx| = |w| + |x| = |xw|.
La concatenacin de con cualquier cadena w no modifica a w. Es decir, la cadena
vaca es el idntico respecto a la concatenacin, ya que: w = w = w. Por esto, a la
cadena vaca se le conoce tambin como el Elemento Neutro de la Concatenacin.
Ej empl os
Sean w = 001 y x = 1, entonces w $ x = 0011, mientras que x $ w = 1001.
Sean w = ab y x = bab, entonces xw = babab, wx = abbab.
Sea w = abba, entonces w = abba y w = abba.
Pot enc i a de Cadenas
Sea w una cadena formada a partir de un alfabeto , entonces para cualquier n 0,
se tiene que la ensima potencia de w se puede definir recursivamente como:
Observe que en general se tiene que la concatenacin de potencias es diferente de la
potencia de la concatenacin, esto es: (wx)
n
w
n
x
n
.
Ej empl os
Sea w = abc entonces w
0
= , w
1
= ww
0
= abc = abc, w
2
= ww
1
= abcabc,
w
3
= ww
2
= abcabcabc, etc.
Sea w = 0 entonces w
0
= , w
1
= 0, w
2
= 00, w
3
= 000, w
4
= 0000, etc.
Sea w = , entonces w
0
= w
1
= w
2
= w
3
= = .
Sea w = 01 y x = 1, entonces (wx)
2
= (011)
2
= 011011, y w
2
x
2
= (01)
2
(1)
2
= 010111.
J O R G E E D U A R D O C A R R I N V .
12
Pr ef i j o
Sea w una cadena formada a partir de un alfabeto , entonces, se cumple que existen
dos cadenas x y z, tales que w = xz, se dice que x es un prefijo de w. Adems, si z
(es decir x w), se dice que x es un prefijo propio de w; en el otro caso, cuando x = w,
se tiene que x es llamado prefijo impropio.
Una cadena de longitud n, tiene n prefijos propios distintos y uno impropio.
Ej empl os
x
0
= , x
1
= c, x
2
= co, x
3
= cof, x
4
= cofr son prefijos propios de w = cofre.
x
0
= , x
1
= a, x
2
= a
2
, x
3
= a
3
, x
4
= a
4
son prefijos propios de w = a
5
.
Suf i j o
Sea w una cadena formada a partir de un alfabeto , entonces, se cumple que existen
dos cadenas x y z, tales que w = xz, se dice que z es un sufijo de w. Adems, si x
(es decir z w), se puede decir que z es un sufijo propio de w; y similarmente al caso
anterior, si z = w, entonces z es un sufijo impropio.
Una cadena de longitud n, tiene n sufijos propios distintos y uno impropio.
Ej empl os
z
0
= , z
1
= o, z
2
= to y z
3
= ato son los sufijos propios de w = gato, mientras que el
sufijo impropio es z
4
= gato.
z
0
= , z
1
= a, z
2
= aa, z
3
= aaa y z
4
= aaaa son los sufijos propios de w = a
5
.
Como se ha podido observar en los ejemplos anteriores, la cadena vaca siempre es
prefijo y sufijo propio de cualquier otra cadena.
Subc adenas
Una cadena y es una subcadena de otra cadena w, si existen x y z, no ambas vacas,
para las cuales se cumple que w = xyz. Cualquier prefijo o sufijo propios de w tambin
son subcadenas de w, en particular, es subcadena de cualquier otra cadena.
La cantidad mxima N de subcadenas distintas de una cadena dada se puede
determinar con la siguiente frmula:
T E O R I A D E L A C O M P U T A C I N
13
Mientras que la cantidad mnima de subcadenas distintas de una cadena es n, para el
caso en que la cadena est formada por puros smbolos iguales.
Ej empl os
y
0
= , y
1
= g, y
2
= a, y
3
= t, y
4
= o, y
5
= ga, y
6
= at, y
7
= to, y
8
= gat y y
9
= ato son
las 10 subcadenas de w = gato.
y
0
= , y
1
= p, y
2
= a, y
3
= pa, y
4
= ap, y
5
= pap y y
6
= apa son las 7 subcadenas
distintas de w = papa.
y
0
= , y
1
= a, y
2
= aa, y
3
= aaa, y
4
= aaaa y y
5
= aaaaa son las 6 subcadenas
distintas de w = aaaaaa.
I nver sa de una Cadena
La Inversa de una Cadena w es la cadena w
R
, tal que es la imagen refleja de w, es
decir, que equivale a w cuando se lee de derecha a izquierda.
Formalmente se define la inversa de w de manera recursiva como:
Donde y es una cadena y a es un smbolo.
Pr opi edades de l a I nver sa
a
R
= a, donde a es un smbolo.
( x
R
)
R
= x
Si x = wy, entonces x
R
= y
R
w
R

Una cadena se llama palndroma, cuando es igual a su inversa: w = w
R
.
Ej empl o
Obtener la inversa de la cadena w = amor, aplicando la definicin podemos
considerar que w = a(mor), entonces tenemos que w
R
= (amor)
R
= (mor)
R
a, repitiendo
el proceso, se obtiene sucesivamente:
w
R
= (m(or))
R
a = ((or)
R
m)a = (o(r))
R
ma = (r)
R
oma = (r)
R
oma = ()
R
roma = roma.
Obviamente, para nosotros, es mucho ms sencillo en la prctica hacerlo de forma
directa que a travs de la definicin, pero la frmula recursiva es muy til para una
implementacin en un programa de computadora.
J O R G E E D U A R D O C A R R I N V .
14
Lenguaje
Un lenguaje formal es un conjunto de palabras o cadenas formadas a partir de los
smbolos de un alfabeto dado. Un lenguaje puede ser finito o infinito, aunque, como se
mencion antes, el alfabeto de donde se genera debe ser siempre finito.
Todo alfabeto puede ser considerado tambin, si as se desea, como un lenguaje
formado por cadenas que son todas de longitud uno.
Ej empl os
Sea = { a, b, c }, entonces L = { a, b, c } es un lenguaje finito sobre .
Sea = { a, b }, entonces L = { , ab, abbab, abbba, bbaa, baaba } es un lenguaje
finito sobre .
Sea = { a }, entonces L = { , a, aa, aaa, aaaa, } es un lenguaje infinito sobre
y tambin se denota en forma compacta como: L = { a
n
| n 0}.
Sea = { 0, 1 }, entonces L = { , 0, 1, 00, 11, 000, 010, 101, 111, } es un
lenguaje infinito formado por todas las cadenas palndromas de ceros y unos, o sea
las cadenas que cumplen que w = w
R
, esto se denota como: L = { w | w = w
R
}
Lenguaj e Vac o
El lenguaje vaco se denota como , y es aqul que no contiene ninguna cadena, es
decir = { }, igual que en teora de Conjuntos. No se debe confundir el lenguaje vaco
con el lenguaje que contiene solamente a la cadena vaca, es decir {}.
Ej empl o
Sea = { a, b }, entonces L = { } = es un lenguaje vaco sobre .
Lenguaj e Uni ver sal
Definimos al Lenguaje Universal * como el lenguaje formado por todas las cadenas
que se pueden formar a partir del alfabeto ; a * tambin se le conoce como la
cerradura de . Para cualquier alfabeto , el lenguaje universal * es siempre infinito.
Ej empl os
El lenguaje L = { a
n
| n 0 } es el lenguaje universal del alfabeto = { a }.
Sea * = { , 0, 1, 00, 01, 10, 11, 000, 001, 010, 011, 100, 101, 110, 111, }, es el
Lenguaje Universal para el alfabeto = { 0, 1 }.
T E O R I A D E L A C O M P U T A C I N
15
El conjunto * es un conjunto numerable, lo que significa que los elementos de *
pueden ordenarse por tamao y luego, para cadenas del mismo tamao, ordenarse
alfabticamente (recurdese que es un conjunto ordenado), para finalmente poder
establecer una relacin biunvoca de * con el conjunto de nmeros Naturales.
Ej empl o
Dado * = { 0, 1 }* = { , 0, 1, 00, 01, 10, 11, 000, }, se puede establecer la
siguiente correspondencia biunvoca entre * y el conjunto de los nmeros
naturales: 1 , 2 0, 3 1, 4 00, 5 01, 6 10, 7 11, 8 000, etc.
Para un alfabeto que contiene n smbolos, se tiene que * tiene n
0
= 1, cadenas de
longitud 0, n
1
= n cadenas de longitud 1, n
2
cadenas de longitud 2, etc. Por lo tanto, es
posible determinar el lugar que ocupa determinada cadena dentro del conjunto *.
Ej empl o
Para el alfabeto = { 0, 1 }, se tiene que * contiene 1 cadena de longitud 0, 2
cadenas de longitud 1, 4 cadenas de longitud 2, 8 cadenas de longitud 3, etc. Se
puede verificar que la cadena 001 ocupa el noveno lugar del conjunto.
Sea el alfabeto = { a, b, c }, entonces en * existe 1 cadena de longitud 0, 3
cadenas de longitud 1, 9 cadenas de longitud 2, 27 cadenas de longitud 3, 81
cadenas de longitud 4, etc. y adems, se puede verificar que la cadena aaaa ocupa
el lugar 41 del conjunto.
Operaciones con Lenguajes
Conc at enac i n de Lenguaj es
Sean L
1
y L
2
dos lenguajes cualesquiera, entonces L
1
$ L
2
= { w $ x | w L
1
, x L
2
} es
el lenguaje concatenacin de L
1
con L
2
.
Ej empl os
Sean los lenguajes L
1
= { patz, came, yure, cara, zita } y L
2
= { cuaro }, entonces
la concatenacin de L
1
con L
2
es: L
1
$ L
2
= { patzcuaro, camecuaro, yurecuaro,
caracuaro, zitacuaro }.
Sean los lenguajes L
1
= { 01, 21 } y L
2
= { a, ba, ca }, entonces la concatenacin de
L
1
con L
2
es: L
1
$ L
2
= { 01a, 01ba, 01ca, 21a, 21ba, 21ca}
Similarmente se puede obtener L
2
$ L
1
= { a01, ba01, ca01, a21, ba21, ca21}
J O R G E E D U A R D O C A R R I N V .
16
En este ltimo ejemplo el alfabeto de L
1
es
1
= { 0, 1, 2 }, mientras que el alfabeto de
L
2
es
2
= { a, b, c }, por lo tanto, el alfabeto de L
1
$ L
2
es la unin de ambos alfabetos:

1
4
2
= { 0, 1, 2, a, b, c }.
El lenguaje {} es idntico respecto a la concatenacin: L
1
$ {} = {} $ L
1
= L
1
.
El lenguaje es nulo respecto a la concatenacin: L
1
$ = $ L
1
= .
La cantidad mxima de cadenas que hay en el lenguaje concatenacin es el producto
de las cantidades de cadenas en cada uno de ellos, en el segundo ejemplo, se tiene
que los lenguajes L
1
y L
2
tienen 2 y 3 cadenas respectivamente, entonces, por lo
tanto: L
1
$ L
2
, como L
2
$ L
1
tienen 6 cadenas distintas, sin embargo en algunos casos
puede haber menos cadenas distintas, debido a la generacin de cadenas duplicadas.
Pot enc i a de Lenguaj es
Sea L un lenguaje sobre el alfabeto , entonces para cualquier n 0, se tiene que la
ensima potencia de L se define recursivamente como:
Ej empl os
Sea L = { ab }, entonces L
0
= { }, L
1
= { ab }, L
2
= { abab } y L
3
= { ababab }.
Sea L = { 0, 1 } entonces L
0
= { }, L
1
= { 0, 1 }, L
2
= { 00, 01, 10, 11 }, etc.
Sea L = { , a }, entonces L
0
= { }, L
1
= { , a }, L
2
= { , a, aa }, etc.
Es interesante observar que de la definicin se desprende que:
0
= { }, mientras
que
n
= para toda n > 0.
Uni n, I nt er sec c i n y Di f er enc i a
Las dems operaciones de conjuntos se aplican igualmente a los lenguajes, es decir:
Si L
1
y L
2
son dos lenguajes cualesquiera, entonces L
1
4 L
2
, L
1
3 L
2
, L
1
L
2
, L
2
L
1
y
L
1
L
2
tambin son lenguajes.
Adicionalmente, dado que existe el lenguaje universal *, a tambin podemos definir a
L
C
, el complemento de L, como L
C
= * L.
T E O R I A D E L A C O M P U T A C I N
17
Subl enguaj e
A es un sublenguaje de L y se denota como A ` L, si para cada w A se tiene que
tambin w L.
En el ejemplo anterior se puede observar una importante propiedad; si un lenguaje
contiene a la cadena vaca , se cumple que: L
0
` L
1
` L
2
` L
3
`
Cualquier lenguaje L sobre el alfabeto es un sublenguaje de *.
es un sublenguaje de cualquier lenguaje L sin importar el alfabeto .
Pr opi edades de l as oper ac i ones de Lenguaj es
Sean A, B y C tres lenguajes cualesquiera sobre un alfabeto , entonces:
A ( B 4 C) = AB 4 AC
( B 4 C) A = BA 4 CA
A = B s y slo s A ` B y B ` A
en general A
C
B
C
(AB)
C

en general A (B 3 C) AB 3 AC
en general A (B C) AB AC
Ej empl os
Si A = { , 0, 1 }, B = { } y C = { 0 }, entonces tenemos: A( B 3 C ) = , mientras
que AB 3 AC = { 0 }.
Por otro lado, A( B C ) = { , 0, 1 }, mientras que AB AC = { , 1 }
Cer r adur a de Kl eene
Sea L un lenguaje sobre el alfabeto , se define a L* como la Cerradura de Kleene o
Cerradura Estrella como la unin infinita de todas las potencias de L, incluyendo la
potencia cero.
Ej empl os
L
1
= { 0, 1 }, entonces L
1
* = L
1
0
4 L
1
1
4 L
1
2
4 = { } 4 { 0, 1 } 4 { 00, 01, 10, 11 } 4
{ 000, 001, 010, 011, } 4 = { , 0, 1, 00, 01, 10, 11, 000, 001, 010, 011, }.
Obsrvese que si = { 0, 1 }, entonces * = L
1
*.
J O R G E E D U A R D O C A R R I N V .
18
Sea L
2
= { 01, 10 }, entonces L
2
*= { , 01, 10, 0101, 0110, 1001, 1010, 010101, },
en este caso L
2
* *, para = { 0, 1 },
Los lenguajes L
1
= { } y L
2
= , son los nicos cuya cerradura de Kleene es finita, y
dado que
0
= { }, se cumple que * = { }, y por tanto, para ambos se tiene que:
L
1
* = L
2
* = { }. Tambin es interesante observar que aunque tengamos que L
1
* = L
2
*,
esto no significa que L
1
y L
2
tengan que ser iguales.
Cer r adur a de Posi t i va
De manera similar, se define la Cerradura Positiva de L, como la unin infinita de
todas las potencias de L a partir de uno.
Ej empl o
Sea L = {ab}, entonces L
+
= {ab, abab, ababab, abababab, ababababab, },
mientras que L* = { , ab, abab, ababab, abababab, ababababab, }.
Pr opi edades de l as Cer r adur as
Para cualquier lenguaje L, se cumplen las siguientes propiedades:
L* = { } 4 L
+

L
+
= L $ L* = L* $ L = L* $ L
+
= L
+
$ L*
(L
+
)
+
= L
+

(L*)* = (L
+
)* = (L*)
+
= L*
Si L, entonces se sigue necesariamente que: L
+
= L*, mientras que si L, se
cumple forzosamente que: L
+
= L* {}.
I nver so de un Lenguaj e
Sea L un lenguaje, se define al inverso de L como L
R
= { w
R
| w L }.
Ej empl os
Sea L = { arroz, abad, radar, lamina }, entonces L
R
= { zorra, daba, radar, animal }
Sea L = { 0, 1, 101, 11101 }, entonces L
R
= { 0, 1, 101, 10111 }
Sea L = { , 0, 1, 00, 11, 000, 010, 101, 111 }, entonces L
R
= L.
T E O R I A D E L A C O M P U T A C I N
19
Pr opi edades del Lenguaj e I nver so
Sean A y B dos lenguajes, entonces se cumple que:

R
=
( * )
R
= *
( A
R
)
R
= A
( A* )
R
= ( A
R
)*
( A $ B )
R
= B
R
$ A
R

( A 4 B )
R
= A
R
4 B
R

( A 3 B )
R
= A
R
3 B
R

Del hecho de que se cumpla L = L
R
, no se implica que L est formado por cadenas
palndromas exclusivamente, un ejemplo de esto sera el lenguaje L = { 01, 10 }.
Pregunt as
a) Cuntas posibles subcadenas tiene una cadena de longitud n?
b) Cul es el nmero mnimo de subcadenas distintas de una cadena de longitud n?
Cmo deber ser esa cadena?
c) Bajo qu condiciones se cumple que L* = L
+
?
d) Y en que otras condiciones se cumple que L
+
= L* { }?
e) En que casos el Lenguaje Universal es finito?
f) Si L es un lenguaje finito, Cmo debe ser L
C
?
g) Y si L es infinito que podemos decir de L
C
?
h) Existe algn lenguaje para el que se cumple que L* es finito?
i) Se cumple que (L*)
n
= (L
n
)*?
Ejercicios Capt ulo 1
1.1 Sean los alfabetos A = { , , }, y B = { , , }, obtener los siguientes
alfabetos, si existen: A 4 B, A 3 B, A / B, A B y B A.
1.2 Sea w = pino, obtener todos los prefijos y sufijos propios y todas las subcadenas
de w.
1.3 Encontrar w
2
, w
3
y w
R
para la cadena w = papa.
1.4 Sea x = piata, obtener todos los prefijos de x.
1.5 Sea y = maroma, obtener todos los sufijos de y.
J O R G E E D U A R D O C A R R I N V .
20
1.6 Obtener todas las subcadenas de z = banana.
1.7 Dadas las cadenas anteriores obtener: xy
R
z, y tambin: z
2
x.
1.8 Sea la cadena w = 01110220, obtener todas las subcadenas distintas de w de
longitud menor o igual a 3.
1.9 Sean los lenguajes A = { a, b, c } y B = { c, d, e }, efectuar las siguientes
operaciones de lenguajes: (A 4 B
2
), (AB)* y (BA)
R
.
1.10 Sean los lenguajes L
1
= { , 0, 10, 11 } y L
2
= { , 1, 01, 11 } sobre el alfabeto =
{ 0, 1 }, obtener: L
1
$ L
2
, L
2
$ L
1
, L
1
4 L
2
, L
1
3 L
2
, L
1
L
2
, L
2
L
1
, L
1
*, L
2
* y L
1
L
2
.
1.11 Sea L = { , a }, obtener L
0
, L
1
, L
2
y L
3
.
1.12 Sean L
1
= { a } y L
2
= { b }, explique como se interpretan los siguientes lenguajes:
L
1
n
L
2
, L
1
L
2
n
y (L
1
L
2
)
n
.
1.13 Sean L
1
= { }, L
2
= { aa, ab, bb }, L
3
= { , aa, ab } y L
4
= , obtener los
lenguajes: L
1
4 L
2
, L
1
4 L
3
, L
1
4 L
4
, L
2
4 L
4
, L
1
3 L
2
, L
2
3 L
3
, L
3
3 L
4
y L
1
3 L
4
.
1.14 Dados los lenguajes siguientes: A = { ab, b, cb } y B = { a, ba } obtener los
lenguajes que resultan de las operaciones de lenguajes: (A 4 B
2
), (B 4 A)
R
,
(AB), (A
2
3 BA), (A / B
R
) y (A
R
B)
2
.
1.15 Dados los lenguajes: L
1
= { 01, 11 } y L
2
= { 011, 101, 11 } obtener los lenguajes
que resultan de las operaciones: (L
1
4 L
2
)
R
, (L
2
L
1
)
2
, (L
1
L
2
)
+
, (L
1
3 L
2
)*, L
1
R
L
2
.
1.16 Sea L = { a, ba }*, sobre = { a, b }, obtenga L
C
.
T E O R I A D E L A C O M P U T A C I N
21
Lenguajes Regulares
Se define qu es un lenguaje regular y qu son las expresiones regulares, se enuncian los principales teoremas que
involucran expresiones regulares y se ilustra su uso en la simplificacin de expresiones regulares.
Los Lenguajes Regulares son la primera clase de lenguajes que vamos a considerar,
debido a su simplicidad, aunado a las propiedades de cerradura respecto a las
principales operaciones de lenguajes, que son unin, concatenacin y cerradura de
Kleene, y es con base en estas operaciones que daremos la definicin:
Definicin
Sea un alfabeto, el conjunto de lenguajes regulares sobre se define como sigue:
es un Lenguaje Regular.
{ } es un Lenguaje Regular
Para toda a , { a } es un Lenguaje Regular
Si L
1
y L
2
son dos Lenguajes Regulares, entonces L
1
4 L
2
, L
1
$ L
2
, L
1
* y L
2
* son
todos Lenguajes Regulares
Ningn otro lenguaje sobre es Regular.
Ej empl o 1
Sea = { a, b }, entonces de la definicin se tiene que:
y { } son Regulares
{ a } y { b } son Regulares
{ a, b } es Regular (Unin)
{ aa }, { ab }, { bb } y { ba } Son Regulares (Concatenacin)
{ a, b, ab, ba, aa, bb } es Regular (Unin)
{ a
n
| n 0 } es Regular (Cerradura de Kleene)
{ (ab)
n
| n 0 } es Regular (Cerradura de Kleene)
Capt ul o
2
J O R G E E D U A R D O C A R R I N V .
22
{ a
n
b
m
| n 0, m 0 } es Regular (Concatenacin)
{ (ab)
n
| n 0 } 4 { (ba)
m
| m 0 } es Regular (Unin)
Ej empl o 2
Sea = { 0, 1, 2 }, entonces de la definicin se tiene que:
y { } son Regulares
{ 0 }, { 1 } y { 2 } son Regulares
{ 0, 1 }, { 0, 2 }, { 1, 2 }, { 0, 1, 2 } son Regulares (Unin)
{ 01 }, { 12 }, { 02 } son Regulares (Concatenacin)
{ 00, 01 }, { 10, 12 }, { 00, 01, 02, 10, 11, 12 } son Regulares (Concatenacin)
{ 00, 01, 02, 10, 11, 12, 20, 21, 22 } es Regular (Unin)
{ , 0, 00, 000, 0000, 00000, } es Regular (Cerradura de Kleene)
{ , 01, 0101, 010101, 01010101, } es Regular (Cerradura de Kleene)
{ , 0, 1, 00, 01, 11, 000, 001, 011, 111, } es Regular (Concatenacin)
Teor emas
Todos los lenguajes finitos son regulares.
Si L es regular, entonces L
C
= * L tambin es regular.
Este teorema se demostrar posteriormente en el siguiente captulo.
Si L
1
y L
2
son regulares, entonces L
1
3 L
2
tambin es un lenguaje regular.
Demostracin: Si L
1
y L
2
son regulares, entonces L
1
C
y L
2
C
son regulares,
entonces L
1
C
4 L
2
C
es regular y por tanto (L
1
C
4 L
2
C
)
C
= L
1
3 L
2
es regular.
Si L
1
y L
2
son regulares, entonces L
1
L
2
tambin es un lenguaje regular.
Demostracin: Si L
1
y L
2
son regulares, entonces L
1
3 L
2
C
es regular, por los
teoremas anteriores y resulta que: L
1
L
2
= L
1
3 L
2
C
, entonces es regular.
Si L
1
es regular, entonces L
1
R
tambin es un lenguaje regular.
La demostracin se desprende de las propiedades de la inversa de una cadena que
se extienden a los lenguajes.
Todas las cadenas de longitud par, formadas a partir de un alfabeto , se representan
por el lenguaje (
2
)*, mientras que las cadenas de longitud impar se representan por
(
2
)*, por lo tanto: * = (
2
)* 4 (
2
)*
T E O R I A D E L A C O M P U T A C I N
23
Expresiones Regulares
Podemos simplificar la especificacin de un lenguaje regular utilizando una
nomenclatura abreviada, llamada expresin regular, de tal manera que el lenguaje
unitario { a }, se denota simplemente como a.
Las operaciones de lenguajes regulares se denotan como: a 4 b, en vez de { a, b };
ab, en vez de { ab }; a* en vez de { a }* y a
+
en vez de { a }
+
. El objetivo de esto es
facilitar la lectura y manipulacin algebraica de los lenguajes regulares.
Entonces podemos definir las expresiones regulares recursivamente:
y son expresiones regulares.
a es una expresin regular para toda a ,
Si r y s son dos expresiones regulares cualesquiera, entonces r 4 s, r $ s, r* y s*
son tambin expresiones regulares
Ninguna otra secuencia de smbolos es una expresin regular.
El orden de precedencia de las operaciones en una expresin regular es anlogo a las
expresiones algebraicas comunes: cerradura (potencia), concatenacin y unin, a
menos de que se utilicen parntesis para cambiar ese orden.
Ej empl os
Determinar las cadenas que pertenecen al lenguaje descrito por la expresin
regular: a*b 4 c, realizando las operaciones en el orden de precedencia, tenemos:
L = { b, ab, aab, aaab, aaaab, ... , c }
Determinar como son las cadenas que pertenecen al lenguaje dado por la
expresin regular: c* ( a 4 bc* )*, sobre el alfabeto = { a, b, c }.
Analizando las cadenas que se pueden construir, es posible observar que ninguna
de ellas puede contener a la subcadena ac.
L = { , a , aa, ab, abc, aab, abca, ..., b, bc, bcc, bcca, bcbc, ..., c, ca, cab, cabc,
caab, ..., cc, cca, ccb, }
Determinar las cadenas que pertenecen al lenguaje descrito por la expresin
regular siguiente: L = c*a 4 (bc)* 4 b*.
Analizando separadamente cada trmino, obtenemos que:
L = { a, ca, cca, ccca, cccca, ..., , bc, bcbc, bcbcbc, bcbcbcbc, ..., b, bb, bbb,
bbbb, bbbbb, ... }
J O R G E E D U A R D O C A R R I N V .
24
En ocasiones se requiere que seamos capaces de encontrar una expresin regular
que represente a un determinado lenguaje, dada la descripcin de las caractersticas
que cumplen las cadenas pertenecientes a l, como se muestra en los siguientes
ejemplos:
Ej empl o 1
Encontrar la expresin regular que representa al lenguaje formado por las cadenas
que contienen exactamente dos ceros sobre el alfabeto: = { 0, 1 }.
Es recomendable que primero describamos este lenguaje por extensin, es decir,
listemos algunas de las cadenas que lo forman: L = { 00, 001, 010, 100, 0011, 0101,
0110, 1001, 1010, 1100, } una vez que hemos comprendido como son estas
cadenas, es relativamente fcil encontrar la expresin regular: L = 1*01*01*, ya que
puede haber cualquier cantidad de unos al inicio, luego el primer cero, otra cantidad
de unos, el segundo cero y al final cualquier cantidad de unos.
Ej empl o 2
Encontrar la expresin regular que representa al lenguaje formado por las cadenas
que contienen cuando mucho una a, sobre el alfabeto: = { a, b }.
Como en el ejemplo anterior, listemos varias de las cadenas que forman al referido
lenguaje: L = { , a, b, ab, ba, bb, abb, bab, bba, bbb, abbb, } una vez que hemos
comprendido como son estas cadenas, es relativamente fcil encontrar la expresin
regular: L = b* 4 b*ab*, ya que puede no haber ninguna a, o bien, puede haber una, y
en este segundo caso, al inicio puede existir cualquier cantidad de bs, luego la a, y al
final cualquier cantidad de bs.
Ej empl o 3
Encontrar la expresin regular que representa al lenguaje formado por las cadenas
que contienen el sufijo aba, sobre el alfabeto: = { a, b }.
Podemos listar las cadenas que forman este lenguaje: L = { aba, aaba, baba, aaaba,
ababa, baaba, bbaba, }, es fcil encontrar la expresin regular si consideramos
que antes del sufijo puede haber cualquier cadena del alfabeto , es decir, el prefijo
es de la forma *, y por lo tanto, la expresin regular buscada es: L = ( a 4 b )*aba.
T E O R I A D E L A C O M P U T A C I N
25
Teoremas sobre Expresiones Regulares
Sean r, s y t expresiones regulares sobre un alfabeto , entonces:
1. r 4 s = s 4 r
2. r 4 = 4 r = r
3. r 4 r = r
4. ( r 4 s ) 4 t = r 4 ( s 4 t )
5. r = r = r
6. r = r =
7. (rs)t = r(st)
8. r ( s 4 t ) = rs 4 rt
9. ( r 4 s ) t = rt 4 st
10. r* = (r*)* = (r
+
)* = (r*)
+
= r*r* = ( 4 r )* = ( 4 r )
+
= 4 r* = 4 r
+
= r* ( 4 r ) =
( 4 r ) r* = r* 4 r = r(rr)* 4 (rr)*
11. ( r 4 s )* = ( r* 4 s* )* = ( r*s* )* = ( r*s )* r* = r* ( sr* )*
12. r( sr )* = ( rs )* r
13. ( r*s )* = 4 ( r 4 s )*s
14. ( rs* )* = 4 r ( r 4 s)*
15. r
+
= rr* = r*r = r
+
r* = r*r
+

Ej empl o 1
Simplificar la siguiente expresin regular: s ( 4 r )* ( 4 r ) 4 s.
Aplicando el teorema nmero 15, se tiene que: ( 4 r )* ( 4 r ) = ( 4 r )
+
, luego, con
el teorema 10, se puede observar que ( 4 r )
+
= r*, despus, usando el teorema 8, se
factoriza la s, obteniendo: sr* 4 s = s ( r* 4 ) y finalmente si aplicamos nuevamente
el teorema 10 se llega al resultado deseado:
s ( 4 r )* ( 4 r ) 4 s = sr*
Ej empl o 2
Simplificar, si es posible, la siguiente expresin regular: ( a*b )* 4 ( ab*)*.
Aplicando los teoremas 13 y 14 resulta: 4 (a 4 b)*b 4 4 a(a 4 b)*, sin embargo, los
trminos donde aparece (a 4 b)* no se pueden agrupar, pues en el primer caso la b
J O R G E E D U A R D O C A R R I N V .
26
es un sufijo y en el segundo caso la a es prefijo, y como la concatenacin no es
conmutativa, se concluye que la expresin original ya es la ms simple.
Ej empl o 3
Demostrar que si r = s*t entonces r = sr 4 t. Podemos reemplazar s* por 4 s
+
,
quedando r = ( 4 s
+
) t, ahora reemplazando s
+
= ss* queda: r = ( 4 ss* ) t,
aplicando el teorema 9: r = t 4 ss*t, reemplazando a r, r = t 4 sr y conmutando,
resulta finalmente que si r = s*t entonces r = sr 4 t.
Sust i t uc i n
En un lenguaje regular L, se puede reemplazar un smbolo a por una expresin
regular y el resultado es un lenguaje regular, a esta operacin le llamamos sustitucin.
Ej empl o
Sea el lenguaje regular L = 0* (0 4 1) 1*, entonces, si reemplazamos el 0 por la
expresin regular f(0) = e
1
y el 1 por la expresin regular f(1) = e
2
, tenemos el
lenguaje: f(L) = e
1
* (e
1
4 e
2
) e
2
*, por ejemplo, si sustituimos las expresiones: e
1
= a y
e
2
= b*, obtenemos la transformacin: f(L) = a* (a 4 b*) (b*)*, y que simplificando
queda: f(L) = a* b* y que obviamente es un lenguaje regular.
Homomor f i smo
Homomorfismo en una substitucin en la que h(a) tiene una sola cadena asociada a
cada smbolo a, y por lo tanto se trata de una funcin invertible. En un homomorfismo
se cumplen las siguientes propiedades:
h() =
h(aw) = h(a)h(w), para toda a y w *.
Por ejemplo, si ahora sustituimos las expresiones: h(0) = e
1
= a y h(1) = e
2
= ba en L,
obtenemos la transformacin: h(L) = a*(a 4 ba)(ba)*, que es invertible por ser un
homomorfismo.
Si aplicamos el homomorfismo sobre la cadena w = 00101, tenemos h(00101) =
aabaaba, mientras que h
-1
(aabaaba) = 00101.
Si L es regular, h(L) y h
-1
(L) son tambin lenguajes regulares, pues se trata de casos
particulares de sustituciones.
T E O R I A D E L A C O M P U T A C I N
27
Coc i ent e
Sean L
1
y L
2
dos lenguajes regulares, entonces definimos el cociente como:
L
1
/L
2
= { x | existe y L
2
tal que xy L
1
}
El cociente de dos lenguajes regulares tambin es regular; ms an, el cociente es
regular si L
1
es regular y para cualquier lenguaje arbitrario L
2
.
Es interesante resaltar que si L
1
= L
3
$ L
2
, entonces se tiene que L
1
/L
2
= L
3
Ej empl o
Sean los lenguajes L
1
= 0*1 0* y L
2
= 1 0*1, entonces L
1
/L
2
= , pues ninguna cadena
cumple con la definicin.
En cambio, si consideramos a los lenguajes: L
1
= 0*1 0* y L
2
= 0*1, tenemos que: L
1
/L
2

= 0*, porque existe y = 1 L
2
tal que 0*1 L
1
.
Anlisis de lxico
En la programacin de computadoras es necesario tener la seguridad de que los
datos de entrada son vlidos, por lo que es necesario contar con mecanismos para
analizar la validez de la informacin proporcionada por el usuario. Este problema se
reduce al establecimiento de una expresin regular que represente la forma que
deben tener los datos de entrada vlidos. Las expresiones regulares se utilizan para
reconocer los componentes lxicos de un lenguaje, y forma una parte esencial en el
proceso de compilacin de un programa.
Ej empl o
Se desea determinar la expresin regular que utiliza un compilador de un lenguaje de
computacin, para verificar que una constante numrica sea vlida, la que solamente
puede tener algunos de los siguientes smbolos: = { ., , dgito }, el punto puede ir
en cualquier parte de la cadena que representa al nmero, mientras que el signo
menos solamente puede ir al inicio de sta y en donde los nicos smbolos que se
repiten pertenecen al conjunto: dgito = { 0, 1, , 9}.
Entonces la expresin regular que nos permite conocer si una cadena numrica es
vlida es:
( 4 )( dgito
+
( 4 .dgito*) 4 .dgito
+
)
J O R G E E D U A R D O C A R R I N V .
28
Pregunt as
a) Si L
1
y L
2
son regulares, Es L
1
3 L
2
regular?
b) Si L
1
y L
2
son regulares, Es L
1
/ L
2
regular?
c) Si L es finito Es L regular?
d) Si L es infinito, Es L regular?
e) Si L es regular, Es L
C
regular?
Ejercicios Capt ulo 2
2.1 Obtener una expresin regular para cada uno de los siguientes casos:
a) El lenguaje formado por todas las cadenas de unos y ceros que inician con
dos ceros consecutivos.
b) El lenguaje formado por todas las cadenas de unos y ceros que tenga un
nmero de ceros divisible entre tres.
c) El lenguaje formado por todas las cadenas de unos y ceros que tienen al
menos dos unos consecutivos.
d) El lenguaje formado por todas las cadenas de unos y ceros que contengan
cuando mucho dos ceros.
e) El lenguaje formado por todas las cadenas de unos y ceros que solamente
tenga una ocurrencia de tres ceros consecutivos.
f) El lenguaje formado por todas las cadenas de dgitos que representen un
nmero entero positivo (base diez) correctamente escrito.
g) El lenguaje formado por todas las cadenas de unos y ceros que tengan
longitud menor o igual a 5.
h) El lenguaje formado por todas las cadenas de unos y ceros que no finalicen
en 01.
i) El lenguaje formado por todas las cadenas de unos y ceros que terminen en 1
y no contengan a la subcadena 00.
j) El lenguaje formado por todas las cadenas de unos y ceros cuya longitud es
mltiplo de 5.
k) El lenguaje formado por todas las cadenas de unos y ceros que inicien o
terminen en 00 o en 11.
2.2 Interprete en palabras el significado de cada una de las siguientes expresiones
regulares:
a) (00)*
b) 0*1*
T E O R I A D E L A C O M P U T A C I N
29
c) 1(0 4 1)*
d) (0 4 1)*00
e) (0 4 1)*10(0 4 1)*
f) 1*01*0(0 4 1)*
2.3 Dada la expresin regular (ab)
+
4 (cb)*. Indicar si las siguientes cadenas
pertenecen o no al lenguaje que representa:
a) w
1
= abcb
b) w
2
=
c) w
3
= cbcbb
d) w
4
= ab
e) w
5
= abcbcbcb
2.4 Determinar las cadenas que pertenecen al lenguaje descrito por la expresin
regular siguiente: c*a 4 (bc)* 4 b*.
2.5 Dada la expresin regular a ( b 4 c ) a ( a 4 b 4 c )* a, Cuntas cadenas de
longitud 6 representa?
2.6 Simplificar las siguientes expresiones:
a) ( 4 ab )* b) a ( 4 aa )* a 4
c) ( a 4 ) a*b d) ((( a*a ) b ) 4 b )
e) ( 4 aa ) ( 4 aa )* f) ( aa )* a 4 ( aa )*
g) ( a 4 b )* a ( a 4 b )* h) a ( 4 aa )* ( 4 aa ) 4 a
i) * 4 a* 4 b* 4 ( a* 4 b* )
+
j) ( ( a*b* )* $ ( b*a*)* )*
k) ( a*b )* 4 ( b*a)* l) ( 4 a
+
) bb
+
( 4 c )*
m) y( 4 x
+
) 4 ( yy
+
( 4 x )* ) n) ( 4 x ) ( 4 x )
+
4 ( 4 x ) 4 *
o) ( ba*)* 4 4 ( a 4 b )
+
p) ( a 4 b )( 4 aa )*( 4 aa ) 4 ( a 4 b )
q) a*b ( (a 4 b) a*b )* 4 a*b r) ( b*a)* 4 ( a 4 b )
+
a
s) ( abc*)* 4 ab 4 ab( c 4 ab )
+




T E O R I A D E L A C O M P U T A C I N

31
Aut mat as Finit os
Se define Diagrama de Transiciones, se define Autmata Finito Determinista. Se presentan las Tablas de
Transiciones, se establece una metodologa para encontrar el Autmata Mnimo Equivalente y el algoritmo para
determinar si dos autmatas dados son equivalentes; finalmente se presentan algunas variantes con valores de salida.
Diagramas de Transiciones
Las expresiones regulares sencillas nos permiten determinar con facilidad si una
cadena pertenece o no a un lenguaje dado. Por ejemplo: Si tenemos al lenguaje
definido por la expresin regular a*b*, sta se puede interpretar como el lenguaje que
contiene cualquier cadena que comience con cualquier cantidad de as, seguida por
cualquier cantidad de bs, como por ejemplo: aaab, abbb, a, bb, , etc. Tambin nos
permite determinar que no pertenecen a este lenguaje cadenas como las siguientes:
abab, baba, bba, etc.
Otra tcnica que permite identificar si una cadena pertenece o no a un lenguaje dado
es el empleo de Diagramas de Transiciones, los cuales son grafos dirigidos a cuyos
nodos se les denomina Estados y a sus aristas se les llama Transiciones, stas se
encuentran etiquetadas con algn smbolo del alfabeto, como se muestra en el
ejemplo de la figura 3.1.
Existe un nico estado que se le llama Estado Inicial, el cual se seala con una flecha,
a partir del cual se comienza el reconocimiento de la cadena; cada smbolo ledo
provoca una transicin de un estado a otro, siguiendo la arista etiquetada con ste.
Este proceso se repite hasta agotar la cadena. Si el estado donde finalizamos es un
Estado de Aceptacin, que se identifica por un doble crculo, quiere decir que la
cadena analizada pertenece al lenguaje, en caso contrario es rechazada.
Capt ul o
3
J O R G E E D U A R D O C A R R I N V .
32
Si observamos como se cambia de estado sobre el diagrama de transiciones anterior,
con cada uno de los smbolos de la cadena w = aaabab, para determinar si pertenece
o no al lenguaje representado por ste, observaremos que las transiciones realizan los
cambios de estado mostrados en la secuencia siguiente:
Y como el estado terminal q
0
no es un estado de aceptacin, la cadena anterior es
rechazada.
Para entender mejor el proceso de anlisis de una cadena, se emplea la siguiente
notacin, en la que se muestra cada paso como un par formado por el estado actual y
la parte de la cadena pendiente de procesar, a este par se le conoce como una
Descripcin Instantnea (DI) de la fase en que se encuentra actualmente el autmata.
Para este caso, la DI inicial es: (q
0
, aaabab), se subraya el primer smbolo para indicar
que ste es el smbolo que provocar la prxima transicin. El paso de una DI a la
subsiguiente, se denota por medio del siguiente smbolo: d, de tal forma que la
secuencia de fases instantneas del anlisis anterior se representa as:
(q
0
, aaabab) d (q
0
, aabab) d (q
0
, abab) d (q
0
, bab) d (q
1
, ab) d (q
1
, b) d (q
0
, )
Una vez agotada la cadena, y a no hay transiciones posibles y el autmata se detiene
en el estado q
0
, como ya se haba indicado, rechazando la cadena.
Una tercera representacin grfica de este proceso se hace considerando a la cadena
contenida en una cinta suficientemente grande, y un puntero que inicialmente seala
al primer smbolo de la cadena y que se encuentra en el estado inicial q
0
.
Conforme realiza las transiciones respectivas, el puntero ir desplazndose hacia la
derecha para leer los siguientes smbolos, mientras cambia de estado segn
corresponda a cada transicin, hasta llegar al final de la cadena, indicado, en este
caso, por el smbolo especial $. Es entonces cuando el anlisis concluye, y se
determina el estado en el que se finaliza, que como hemos visto, se trata del estado
q
0
. Esta representacin se muestra grficamente en la siguiente figura:
T E O R A D E L A C O M P U T A C I N
33
Un anlisis detallado de todas las cadenas que nos conducen al estado de aceptacin
q
1
en el diagrama de la Figura 3.1, nos lleva a la conclusin de que stas deben de
poseer una cantidad impar de bs para ser aceptadas.
Ej empl o 1
Consideremos la necesidad de construir un diagrama de transiciones para reconocer
el lenguaje formado por todas las cadenas provenientes del alfabeto = { a, b } que
terminan en b, es fcil visualizar que el diagrama de transiciones debe tener un estado
de aceptacin q
1
, al que se accede cuando aparece el smbolo b en la cadena,
esperando que sea el ltimo smbolo, pero que se sale de l cuando se lee el smbolo
a, de esta manera, concebimos el diagrama de transiciones mostrado en la figura 3.3.
Ej empl o 2
El siguiente diagrama de transiciones consta de tres estados, etiquetados por q
0
, q
1
y
q
2
, respectivamente; de los cuales q
1
es el estado de Aceptacin. Adems hay 6
transiciones, dos para cada estado, etiquetadas con los smbolos a y b, aunque por
comodidad se suele usar una sola flecha para varios smbolos que coinciden en el
mismo estado de destino.
Las cadenas formadas por cualquier cantidad de as seguida de una nica b son
aceptadas por el lenguaje que representa el diagrama anterior, en general se puede
expresar este lenguaje de la forma L = { a
n
b | n 0 }.
Cualquier otra cadena no ser aceptada, dado que se provocar que pase al estado
q
2
, del cual no podr salir y dado que no es un estado de Aceptacin, se le denomina
Estado no Deseado o Estado de Rechazo.
La expresin regular a*b nos describe el lenguaje antes citado.
J O R G E E D U A R D O C A R R I N V .
34
Ej empl o 3
Ahora consideremos el lenguaje (ab)*, el cual acepta, entre otras, a la cadena vaca,
por lo que es necesario hacer que el Estado Inicial q
0
sea tambin un Estado de
Aceptacin.
El diagrama de transiciones debe ser semejante al que se muestra en la figura 3.5:
Se puede verificar que las cadenas que inician con una b, las que tienen dos as o dos
bs consecutivas pasarn a un estado no deseado y sern rechazadas.
Tabl a de Tr ansi c i ones
Un diagrama de transiciones tambin puede ser representado de manera tabular de la
siguiente forma: colocamos a cada smbolo como encabezado de cada una de las
columnas y a cada estado al inicio de cada uno de los renglones. La flecha indica el
estado inicial y el asterisco se usa para denotar los estados de aceptacin. Dentro de
la tabla se coloca el estado siguiente, segn corresponda a cada transicin. La tabla
de transiciones del diagrama del ejemplo anterior se muestra en la tabla 3.1:
a b
*q
0
q
1
q
2

q
1
q
2
q
0

q
2
q
2
q
2

Tabla 3.1
Las tablas de transiciones son muy tiles para realizar programas de computadora
que permitan el reconocimiento de lenguajes regulares, pero para cuando se hace el
proceso de reconocimiento en forma manual, es preferible utilizar los diagramas de
transiciones, tal como lo seguiremos haciendo en los siguientes ejemplos.
T E O R A D E L A C O M P U T A C I N
35
Ej empl o 4
Ahora consideremos el lenguaje L = { (ab)
n
| n 1}, el cual se identifica con la
expresin regular (ab)
+
. Para construir el diagrama de transiciones correspondiente
que acepte este lenguaje, podemos seguir los siguientes pasos:
Primero construimos un diagrama que acepte una a, seguida de una b, (por ser ab la
cadena ms pequea de dicho lenguaje) para llegar al estado de aceptacin, as:
Cualquier cadena que empiece con una b, o que despus de la primera a tenga otra a
debe ser rechazada, pasando a un Estado No Deseado, tal como se muestra en la
figura 3.7.
Si hay ms de dos smbolos en la cadena, stos tienen que ir en parejas de la forma
ab, por lo que, si el tercer smbolo es una b debemos pasar del estado q
2
al estado de
rechazo, mientras que una a despus de la primera b, nos lleva nuevamente al estado
q
1
, en donde esperamos que el siguiente smbolo sea una b para retornar al estado de
aceptacin. El diagrama completo queda finalmente como se ve en la figura 3.8:
J O R G E E D U A R D O C A R R I N V .
36
Ej empl o 5
Construya el diagrama de transiciones para el reconocimiento de las cadenas del
lenguaje en el alfabeto = { a, b }, que contengan el sufijo (que terminan en) ba.
Primeramente hay que analizar la cadena ms simple que pertenece a este lenguaje y
que es w = ba y se trazan las transiciones necesarias para llegar a un estado de
aceptacin, como se muestra en la Figura 3.9.
Posteriormente se agregan las transiciones faltantes; como falta una para el smbolo
a, desde el estado q
0
, la cual resulta ser un lazo sobre el mismo estado, tal como se
indica en la Figura 3.10.
Similarmente, para el estado q
1
falta la transicin para el smbolo b, la cual es tambin
un lazo en ese estado, Figura 3.11.
Finalmente, las transiciones desde el estado q
2
, hay una transicin hacia q
0
para el
smbolo a y hay otra hacia q
1
para el smbolo b, quedando el diagrama completo, tal
como se aprecia en la Figura 3.12.
Aut mat a Finit o Det erminist a
Un autmata es el modelo matemtico de un sistema. Al modelo matemtico que
hemos definido por medio de un diagrama de transiciones, que representa a una
mquina que pasa de un estado a otro como respuesta a cada uno de los smbolos de
T E O R A D E L A C O M P U T A C I N
37
una cadena de entrada, se le llama Autmata Finito Determinista y lo denotamos
como AFD.
Formalmente se define a un AFD por la quntupla M = ( Q, , s, F, ), donde: Q es un
conjunto finito de estados, es el alfabeto de entrada, s Q es el estado inicial, F es
el subconjunto de Q de los estados de aceptacin ( F ` Q ) y es la funcin de
transicin ( : Q Q ).
La caracterstica principal de un AFD es que es una funcin que est definida para
todos los posibles estados q
i
Q y para todos los smbolos
j
. Es decir para
cualquier pareja de la forma ( q
i
,
j
) siempre existe un nico estado siguiente.
Ej empl o 1
Sea M el AFD donde Q = { q
0
, q
1
}, = { a, b }, s = q
0
, F = { q
0
} y las siguientes
transiciones: ( q
0
, a ) = q
0
, ( q
0
, b ) = q
1
; ( q
1
, a ) = q
1
y ( q
1
, b) = q
0
.
Esto se representa por medio de la siguiente tabla de transiciones:
a b
*q
0
q
0
q
1

q
1
q
1
q
0

Tabla 3.2
A partir de la tabla podemos construir el diagrama de transiciones correspondiente a
este AFD, el cual se muestra en la Figura 3.13:
Este AFD acepta cadenas con una cantidad par de bs, para verificarlo, podemos
probar algunas cadenas sobre el diagrama, como por ejemplo: w

= abba, lo que nos
resulta en la siguiente secuencia de estados:
Es usual que se generalice la definicin de la funcin de transicin para cadenas
completas no vacas, de la siguiente manera: : Q
+
Q, por lo que es frecuente
J O R G E E D U A R D O C A R R I N V .
38
que nos encontremos con expresiones como la siguiente: (q
0
, abba) = q
0
, para
resumir las transiciones anteriores.
Si probamos el diagrama de transiciones con una cadena que contenga una cantidad
impar de bs, terminaremos invariablemente en el estado q
1
, como por ejemplo la
cadena w

= abaa nos arroja la siguiente secuencia de estados:
Ej empl o 2
Sea M el AFD definido por la tabla de transiciones siguiente:
a b
*q
0
q
0
q
1

*q
1
q
0
q
2

*q
2
q
0
q
3

q
3
q
3
q
3

Tabla 3.3
De la informacin contenida en la tabla se desprende que: Q = { q
0
, q
1
, q
2
, q
3
}, s = q
0
,
= { a, b }, F = { q
0
, q
1
, q
2
} y las transiciones siguientes: (q
0
, a ) = q
0
, (q
0
, b ) = q
1
,
(q
1
, a ) = q
0
, (q
1
, b) = q
2
, (q
2
, a ) = q
0
, (q
2
, b ) = q
3
, (q
3
, a ) = q
3
y (q
3
, b) = q
3
.
La figura siguiente muestra el diagrama de transiciones correspondiente a este AFD,
el cual acepta el lenguaje formado por cadenas que no contengan la secuencia bbb:
Y a continuacin se detallan las descripciones instantneas para la aceptacin de la
cadena w = abbab: (q
0
, abbab) d (q
0
, bbab) d (q
1
, bab) d (q
2
, ab) d (q
0
, b) d (q
1
, )
Ej empl o 3
Sea M el AFD donde Q = { q
0
, q
1
, q
2
, q
3
}, = { 0, 1 }, F = { q
0
}, s = q
0
y por las
siguientes transiciones que se relacionan: ( q
0
, 0 ) = q
1
, ( q
0
, 1 ) = q
2
, ( q
1
, 0 ) = q
0
,
( q
1
, 1) = q
3
, ( q
2
, 0 ) = q
3
, ( q
2
, 1 ) = q
0
, ( q
3
, 0 ) = q
2
y ( q
3
, 1) = q
1
.
T E O R A D E L A C O M P U T A C I N
39
La tabla 3.4 nos representa toda la informacin del AFD antes descrito:
0 1
*q
0
q
1
q
2

q
1
q
0
q
3

q
2
q
3
q
0

q
3
q
2
q
1

Tabla 3.4
Este AFD, acepta al lenguaje formado por las cadenas x { 0, 1 }*, tales que N
0
(x) es
par y N
1
(x) es par, (la funcin N
a
(x) representa la cantidad de veces que la cadena x
contiene al smbolo a). El diagrama de transiciones correspondiente a este AFD es el
que se muestra en la figura 3.15, a continuacin:
AFD Complement o
En el captulo anterior mencionamos que si L es regular, entonces L
C
= * L tambin
es regular, ahora veremos una forma muy sencilla de demostrarlo por medio de los
autmatas:
Sea M
1
el AFD que acepta el lenguaje L a partir del alfabeto , formado por el
conjunto de estados Q, y de los cuales F es el subconjunto de estados de aceptacin
y con funcin de transicin . Entonces M
2
ser el AFD que acepte al lenguaje L
C
, si
est formado por el mismo conjunto de estados Q, el mismo alfabeto la misma funcin
de transicin , el mismo alfabeto , pero cuyo conjunto de estados finales es ahora:
F
C
= Q F. Es decir, M
2
acepta las cadenas que M
1
rechaza y viceversa.
J O R G E E D U A R D O C A R R I N V .
40
Ej empl o
La Figura 3.16 nos muestra el diagrama de transiciones del autmata que acepta el
lenguaje formado por las cadenas que contengan a la subcadena bbb, el cual es el
complemento del AFD mostrado antes en la figura 3.14.
Aut mat as Equivalent es
Si M es un AFD, vamos a denotar como L(M) al lenguaje aceptado por M, es decir,
L(M) = { w | ( q
0
,w) F}, es el conjunto de cadenas que hacen que M pase del estado
inicial a un estado de aceptacin.
Sean M
1
y M
2
dos AFDs, entonces se dice que M
1
y M
2
son equivalentes si se cumple
que L(M
1
) = L(M
2
).
Considere a los AFDs M
1
y M
2
sobre el alfabeto = { 0, 1 } que se muestran en la
figura 3.17, como se puede verificar, ambos aceptan el mismo lenguaje 0*10*, por lo
tanto, son equivalentes.
A pesar de que pueden existir varios autmatas equivalentes para un lenguaje dado,
solamente existe un nico AFD Mnimo equivalente (de mnimo nmero de estados),
que se considera como la representacin ptima para dicho lenguaje, como es el caso
del autmata etiquetado como M
2
en este ejemplo.
T E O R A D E L A C O M P U T A C I N
41
Est ados Ac c esi bl es
Dado un AFD que tiene n estados, se dice que un estado q
i
es accesible si existe una
cadena w, |w| < n, que permite que el autmata llegue a ese estado partiendo del
estado inicial q
0
.
Es decir que existe w tal que (q
0
,w) = q
i
. Grficamente diramos que existe una
trayectoria desde el estado q
0
al estado q
i
formada por menos de n transiciones.
Aut mat as c onex os
Decimos que un AFD es un Autmata conexo si todos los estados de Q son
accesibles desde el estado inicial q
0
.
Dado un autmata no conexo, podemos obtener, a partir de l, un autmata
equivalente que sea conexo, simplemente eliminando todos los estados que no sean
accesibles desde q
0
.
Ej empl o
El siguiente autmata no es conexo, porque contiene dos estados no accesibles: q
2
y
q
3
, lo que se puede verificar fcilmente:
Eliminando esos estados queda el AFD equivalente que se muestra a continuacin:
Est ados Equi val ent es
Dado un AFD, se dice que dos estados p y q son equivalentes (y se denota como
pEq) si para toda cadena w *, se cumple que: (p, w) F (q, w) F.
J O R G E E D U A R D O C A R R I N V .
42
AFD Mnimo Equivalent e
Dado M, un AFD cualquiera, se puede obtener M, el AFD con el mnimo nmero de
estados que sea equivalente a M, por medio del siguiente algoritmo:
1. Se obtiene el autmata conexo equivalente, eliminando todos los estados que no
son accesibles desde q
0
.
2. Se realiza una particin de los estados de Q en dos clases:
En la clase C
1
se incluyen a los estados de aceptacin, es decir: C
1
= F.
En la clase C
2
a los dems estados, esto es: C
2
= Q F.
3. Se analiza cada clase C
m
con objeto de ver si para todo q
k
C
m
se cumple para
cada
i
que (q
k
,
i
) C
n
, para alguna clase C
n
.
4. En caso de que no se cumpla lo anterior para alguna clase C
m
, se realiza una
particin de esa clase, dividindola en subclases que estn formadas por los
grupos de estados que satisfagan la condicin anterior entre s.
5. Se repite el paso 3 hasta verificar que todas las clases cumplan la condicin
requerida, entonces cada clase de estados equivalentes resultante se representar
por un solo estado en el AFD mnimo.
Ej empl o 1
Considrese al AFD M
1
mostrado en la figura 3.17. Es fcil verificar que se trata de un
AFD conexo, entonces, aplicando el segundo paso del algoritmo, se hace la particin
inicial: C
1
= { q
2
, q
3
, q
4
} y C
2
= { q
0
, q
1
, q
5
}.
Ahora, continuando con el paso 3 del algoritmo, analizamos las transiciones para los
tres estados contenidos en la clase C
1
:
(q
2
, 0) = q
4
C
1
(q
2
, 1) = q
5
C
2
(q
3
, 0) = q
4
C
1
(q
3
, 1) = q
5
C
2

(q
4
, 0) = q
4
C
1
(q
4
, 1) = q
5
C
2

Para todos los estados de esta clase se cumple la condicin de equivalencia requerida
en este paso, por lo que no se requiere realizar ninguna particin.
A continuacin hacemos el anlisis de las transiciones para los tres estados
contenidos en la clase C
2
:
T E O R A D E L A C O M P U T A C I N
43
(q
0
, 0) = q
1
C
2
(q
0
, 1) = q
2
C
1
(q
1
, 0) = q
0
C
2
(q
1
, 1) = q
3
C
1
(q
5
, 0) = q
5
C
2
(q
5
, 1) = q
5
C
2
Aqu observamos que no se satisface la condicin exigida para todos los casos,
entonces hay que separar los estados de C
2
en dos subclases a saber: C
3
= { q
0
, q
1
},
dado que ambos se comportan de forma equivalente y C
4
= { q
5
}.
Ahora debemos repetir el paso 3, para verificar que se cumple la condicin requerida
para cada una de las tres clases que ahora tenemos.
Se puede observar que esta particin no afecta los resultados para la clase C
1
, puesto
que solamente se reemplaza C
2
por C
4
en las transiciones del smbolo 1.
A continuacin se muestra que tambin se cumple la condicin de equivalencia para
las otras dos clases:
Para C
3
:
(q
0
, 0) = q
1
C
3
(q
0
, 1) = q
2
C
1
(q
1
, 0) = q
0
C
3
(q
1
, 1) = q
3
C
1
Y para C
4
la condicin se cumple por necesidad, puesto que tiene un solo estado:
(q
5
, 0) = q
5
C
4
(q
5
, 1) = q
5
C
4
Con esto se concluye que el AFD Mnimo solamente consta de tres estados, el cual
est representado por la siguiente tabla de transiciones.
0 1
C
3
C
3
C
1

*C
1
C
1
C
4

C
4
C
4
C
4

Tabla 3.5
Observe que la clase C
3
que contiene el estado inicial original q
0
se considera el
nuevo estado inicial y que la clase C
1
, que surgi a partir de los estados de aceptacin
ser el nuevo estado de aceptacin.
El diagrama de transiciones correspondiente a este AFD mnimo es el mismo que fue
representado por el autmata M
2
en la figura 3.17.
J O R G E E D U A R D O C A R R I N V .
44
Ej empl o 2
Encontrar el AFD Mnimo equivalente al mostrado en la figura a continuacin:
Primero verificamos que todos los estados son accesibles, luego realizamos la
primera particin de Q, de donde se tiene: C
1
= { q
0
, q
2
} y C
2
= { q
1
, q
3
, q
4
, q
5
, q
6
},
ahora analizamos las transiciones para los estados en C
1
:
(q
0
, a) = q
1
C
2
(q
0
, b) = q
4
C
2
(q
2
, a) = q
3
C
2
(q
2
, b) = q
5
C
2

Para todos los estados de esta clase se cumple la condicin requerida en el paso 3.
Ahora analizamos las transiciones para los cinco estados de la clase C
2
:
(q
1
, a) = q
5
C
2
(q
1
, b) = q
2
C
1
(q
3
, a) = q
6
C
2
(q
3
, b) = q
2
C
1
(q
4
, a) = q
5
C
2
(q
4
, b) = q
5
C
2
(q
5
, a) = q
5
C
2
(q
5
, b) = q
5
C
2
(q
6
, a) = q
5
C
2
(q
6
, b) = q
5
C
2
Podemos ver que no se cumple la condicin para todas las transiciones del smbolo b,
por lo que es necesario dividir a la clase C
2
en dos subclases a saber: C
3
= { q
1
, q
3
} y
C
4
= { q
4
, q
5
, q
6
}.
Finalmente repetimos la verificacin para las tres clases que tenemos ahora; es fcil
comprobar que esta particin ya es definitiva y que todas las clases cumplen la
condicin de equivalencia impuesta por el algoritmo.

Por lo que se concluye que el AFD Mnimo equivalente solamente consta de tres
estados, el cual est representado por la siguiente tabla de transiciones.
T E O R A D E L A C O M P U T A C I N
45
a b
*C
1
C
3
C
4

C
3
C
4
C
1

C
4
C
4
C
4

Tabla 3.6
Al gor i t mo par a ver si dos AFD son equi val ent es
El algoritmo anterior para hallar el AFD Mnimo Equivalente tambin se utiliza para
verificar si dos AFDs cualesquiera son o no equivalentes.
Para ello, simplemente se hace la unin de todas las transiciones de ambos
autmatas en una sola tabla de transiciones, y se aplica el algoritmo anterior, si al final
resulta que ambos estados iniciales pertenecen a la misma clase de equivalencia
significa que ambos autmatas son equivalentes.
Ej empl o
Verifique si es que los dos AFDs siguientes son equivalentes o no:
Haciendo la unin de las transiciones de ambos autmatas obtenemos la siguiente
tabla de transiciones:
a b
q
0
q
1
q
0

*q
1
q
2
q
0

*q
2
q
1
q
0

p
0
p
1
p
0

*p
1
p
1
p
0

Tabla 3.7
Aplicando el algoritmo anterior, se tiene que: C
1
= { q
1
, q
2
, p
1
} y C
2
= { q
0
, p
0
}, ahora,
analizando las transiciones para los estados en C
1
tenemos:
J O R G E E D U A R D O C A R R I N V .
46
(q
1
, a) = q
2
C
1
(q
1
, b) = q
0
C
2
(q
2
, a) = q
1
C
1
(q
2
, b) = q
0
C
2
(p
1
, a) = p
1
C
1
(p
1
, b) = p
0
C
2
Y verificando las transiciones de los estados de la clase C
2
:
(q
0
, a) = q
1
C
1
(q
0
, b) = q
0
C
2
(p
0
, a) = p
1
C
1
(p
0
, b) = p
0
C
2
Como ambos estados iniciales q
0
y p
0
C
2
, se concluye que los AFDs son
equivalentes, ambos aceptan las cadenas del alfabeto = { a, b } que terminan en a.
Mquina de Moore
La Mquina de Moore es una variedad de AFD, en el cual no existen estados de
aceptacin propiamente dichos, sino que a cada estado se le asocia un smbolo o una
cadena de salida, que generalmente no se relaciona con el alfabeto de entrada.
La respuesta de la mquina de Moore ser el smbolo o la cadena asociada con el
estado en el que se finalice el anlisis de la cadena de entrada.
Ej empl o
La siguiente Mquina de Moore permite calcular el mdulo base 3 de cualquier
nmero en formato binario. (La funcin mdulo es el residuo que resulta de dividir el
primer argumento entre el segundo) En la parte superior de cada estado se indica el
smbolo de salida correspondiente.
Tomando, por ejemplo, el nmero decimal 19, buscamos su representacin binaria, lo
que nos da la cadena de entrada: 10011, al analizarla, veremos que en este caso las
DIs mostrarn a un tercer elemento, que el smbolo de salida de cada estado:
(q
0
, 10011, 0) d (q
1
, 0011, 1) d (q
2
, 011, 2) d (q
1
, 11, 1) d (q
0
, 1, 0) d (q
1
, , 1)
Al agotar la cadena se finaliza en el estado q
1
, por lo que el smbolo de salida es 1, y
por lo tanto, se concluye que 19 Mod 3 = 1.
T E O R A D E L A C O M P U T A C I N
47
Mquina de Mealy
La Mquina de Mealy es otra variedad de AFD, en la cual tampoco existen estados de
aceptacin, sino que en este caso, a cada transicin se le asocia con un smbolo de
salida (que suele pertenecer a un alfabeto distinto al de entrada). Los smbolos de
salida se van concatenando, conforme se generan, para formar una cadena de salida
de la misma longitud que la cadena de entrada. Cada transicin de este tipo de
autmatas se denota como: E/S, donde E es el smbolo de entrada y S es el smbolo
de salida
Ej empl o
Construir una Mquina de Mealy sobre el alfabeto = { a, b }, que genere una cadena
de salida cuyo smbolo inicial sea una a, y que el i-simo smbolo sea una a, si los
smbolos i 1 e i son diferentes en la cadena de entrada, en caso contrario, el smbolo
ser una b.
Las transiciones iniciales son: (q
0
, a/a) = q
1
y (q
0
, b/a) = q
2

Las transiciones desde q
1
son: (q
1
, a/b) = q
1
y (q
1
, b/a) = q
2

Mientras que las transiciones desde q
2
son: (q
2
, a/a) = q
1
y (q
2
, b/b) = q
2

La figura 3.23 muestra la construccin de este autmata, donde podemos comprobar
que si la cadena de entrada es aabba, la salida ser: ababa, tal como se muestra en
la siguiente secuencia de DIs.
(q
0
,aabba,) d (q
1
,abba,a) d (q
1
,bba,ab) d (q
2
,ba,aba) d (q
2
,a,abab) d (q
1
,,ababa)
Transduct or Det erminist a
Un dispositivo semejante a la Mquina de Mealy es el llamado Transductor
Determinista, cuyo propsito es el de transformar cadenas de entrada en cadenas de
salida, para cada transicin agrega a la cadena de salida, cero, uno o varios smbolos,
J O R G E E D U A R D O C A R R I N V .
48
dependiendo del estado actual y el smbolo de entrada. Cada transicin de este tipo
de dispositivos se denota por: E/S, donde E es el smbolo de entrada y S es la
subcadena de salida, que incluso puede ser la cadena vaca.
Ej empl o
Construya un Transductor Determinista que genere la cadena a
n
, donde n es el
nmero de ocurrencias de la subcadena ab en w.
Las transiciones desde q
0
son: (q
0
, a/) = q
1
y (q
0
, b/) = q
0
, podemos interpretar al
estado q
1
como el estado donde llevamos una a, y permanecemos en ste esperando
la b, entonces, las transiciones desde q
1
tienen que ser: (q
1
, a/) = q
1
y (q
1
, b/a) = q
0

es sta ltima transicin la que agrega una a a la cadena de salida.
La figura 3.24 muestra la construccin de este autmata, con el que podemos
comprobar que si la cadena de entrada es aabab, la salida ser aa, tal como lo indica
la secuencia de DIs correspondiente.
(q
0
, aabab, ) d (q
1
, abab, ) d (q
1
, bab, ) d (q
0
, ab, a) d (q
1
, b, a) d (q
0
, , aa)
Pregunt as
a) Bajo qu condiciones se cumple que un AFD es mnimo?
b) Para qu casos se cumple que L(M), donde M es un AFD?
c) Para qu casos se cumple que L(M) = , donde M es un AFD?
d) Dado M, un AFD que acepta al lenguaje L(M), Cmo es posible construir un AFD,
a partir de M, que acepte todas cadenas que sean prefijos de la cadena w para
todo w L(M)?
e) Dados M
1
y M
2
, dos AFDs que aceptan los lenguajes L(M
1
) y L(M
2
), Cmo es
posible construir un AFD que acepte el lenguaje L(M
1
) 3 L(M
2
)?
f) Y Cmo es posible construir un AFD que acepte el lenguaje L(M
1
) L(M
2
)?
g) Cmo es posible demostrar que un AFD que acepta el lenguaje universal?
h) Qu significa que dos AFDs sean equivalentes?
i) Que significa que dos Estados sean Equivalentes?
T E O R A D E L A C O M P U T A C I N
49
Ejercicios Capt ulo 3
3.1 Construya el diagrama de transicin del AFD a partir de la tabla 3.8:
0 1
*q
0
q
2
q
1

q
1
q
1
q
2

q
2
q
1
q
3

q
3
q
3
q
1

Tabla 3.8
3.2 Para los siguientes ejercicios, construya el diagrama de transicin del AFD que
acepta a cada uno de los lenguajes sobre el alfabeto = { a, b }:
a) El lenguaje donde toda cadena tiene exactamente dos bs.
b) El lenguaje de las cadenas no vacas, donde toda a est entre dos bs.
c) El lenguaje donde toda cadena contiene el sufijo aba.
d) El lenguaje donde ninguna cadena contiene las subcadenas aa ni bb.
e) El lenguaje donde toda cadena contiene la subcadena baba.
f) El lenguaje donde toda cadena contiene por separado a las cadenas ab y ba.
g) Toda cadena es de longitud impar y contiene una cantidad par de as.
3.3 Para los siguientes ejercicios, construya el diagrama de transicin del AFD que
acepta a cada uno de los lenguajes sobre el alfabeto = { a, b }:
a) El lenguaje descrito por la Expresin Regular: a
+
4 ba*.
b) El lenguaje descrito por la Expresin Regular: a
+
ba
+
b.
c) El lenguaje descrito por la Expresin Regular: b
+
a 4 a*.
d) El lenguaje descrito por la Expresin Regular: ab(a 4 b)*.
e) El lenguaje descrito por la Expresin Regular: (a
+
b 4 b
+
a)*
f) El lenguaje descrito por la Expresin Regular: 4 ab
+
a.
g) El lenguaje descrito por la Expresin Regular: 4 ab
+
4 b*a.
3.4 Encontrar el AFD mnimo equivalente a los AFDs cuyos diagramas de
transiciones se muestran en las siguientes figuras:
a)



J O R G E E D U A R D O C A R R I N V .
50
b)




c)







d)





e)






3.5 Determine si los AFDs mostrados en la Figura 3.30 son o no equivalentes.
T E O R A D E L A C O M P U T A C I N
51
3.6 Determine si los AFDs mostrados en la Figura 3.31 son o no equivalentes.
3.7 Determine si el AFD mostrado en la Figura 3.32 es equivalentes al mostrado en
la Figura 3.20.
3.8 Construir una Mquina de Moore que permita calcular el mdulo base 4 de un
nmero en formato binario.
3.9 Construir una Mquina de Moore que permita calcular el mdulo base 5 de un
nmero en formato binario.
3.10 A partir de los resultados en los ejercicios 3.8 y 3.9 construya los AFDs que
acepten los siguientes lenguajes:
a) L = { w { 0, 1}* | w es un nmero binario mltiplo de 4 }
b) L = { w { 0, 1}* | w es un nmero binario mltiplo de 5 }
3.11 Construir una Mquina de Mealy sobre el alfabeto = { 0, 1 }, que genere una
cadena de salida cuyo smbolo inicial sea un 0, y que el i-simo smbolo sea una
0 si los smbolos i 1 e i son ambos cero en la cadena de entrada, en caso
contrario, el smbolo ser un 1.
3.12 Construya un Transductor Determinista sobre el alfabeto = { 0, 1 }, que genere
la cadena 1
n
, donde n es el nmero de ceros que hay en la cadena w.
3.13 Construya un Transductor Determinista sobre el alfabeto = { a, b }, que genere
la cadena a
n
, donde n es el nmero de ocurrencias de la subcadena abb en w.


T E O R A D E L A C O M P U T A C I N
53
Aut mat as Finit os No Det er minist as
Se define Autmata Finito No Determinista, se definen las transiciones psilon y finalmente se define el Autmata
Finito Generalizado. Se establece la metodologa para encontrar Autmatas no deterministas sin transiciones psilon y
Deterministas equivalentes.
Definicin
Autmata Finito No Determinista es aquel que puede tener cero, una o ms
transiciones distintas para el mismo smbolo de entrada y lo denotamos por AFN.
Todo AFD puede considerarse como un tipo particular de AFN, pero generalmente
resulta mucho ms sencillo construir e interpretar a un AFN que a un AFD, tal como
se puede observar en los siguientes ejemplos.
Ej empl o 1
En el captulo anterior habamos construido un AFD para reconocimiento del lenguaje
L = (ab)
+
, como se muestra en la Figura 3.8, si excluimos el estado no deseado q
3
y
las transiciones que acceden a l, obtenemos como resultado un AFN equivalente de
apariencia mucho ms simple:
Se trata de un AFN que es considerado por muchos autores como un AFD, pues su
comportamiento es absolutamente determinista, con la diferencia de que como carece
de algunas transiciones, es posible que el anlisis de alguna cadena se vea
interrumpido. Si el autmata se detiene sin agotar la cadena, es equivalente a pasar a
un estado no deseado, y por lo tanto, el no poder terminar de analizar la cadena
significa que sta no puede ser aceptada. sta es una de las grandes diferencias de
los AFNs respecto de los AFDs, mientras que stos siempre terminan de procesar
una cadena dada, los primeros pueden enfrentar situaciones en los que no exista
transicin alguna y se detengan sin agotar la cadena, rechazndola.
Capt ul o
4
J O R G E E D U A R D O C A R R I N V .
54
Ej empl o 2
Consideremos ahora un lenguaje muy simple: L = a 4 (ab)
+
, construir el diagrama de
transiciones de un AFD que acepte este lenguaje es laborioso, tal como se muestra
en la siguiente figura:
Sin embargo, resulta mucho ms fcil construir e interpretar el diagrama de
transiciones de un AFN, tal como se muestra en la siguiente figura:
Ej empl o 3
Ahora considere al diagrama mostrado en la figura 4.4.
ste diagrama representa a un AFN que acepta el lenguaje: L = (0 4 1)*1(0 4 1)
2
, que
es el lenguaje formado por las cadenas de ceros y unos cuyo antepenltimo smbolo
es un 1. Por tratarse de un Autmata No Determinista, se puede ver que para el
estado q
3
no existen transiciones definidas, mientras que para el estado q
0
hay dos
transiciones para el smbolo 1.
T E O R A D E L A C O M P U T A C I N
55
Compare el diagrama anterior con el correspondiente al AFD mnimo equivalente que
se muestra en la figura 4.5 y saque sus propias conclusiones.
Def i ni c i n f or mal de AFN
Formalmente se define a un AFN por la quntupla M = (Q, , , s, F ), donde: Q es un
conjunto finito de estados, es el alfabeto de entrada, s Q es el estado inicial, F es
el subconjunto de Q de los estados de aceptacin ( F ` Q ) y es la funcin de
transicin (: Q 2
Q
), donde se puede apreciar que el contra-dominio de la
funcin es el conjunto potencia de Q, es decir que esta funcin devuelve conjuntos de
estados en vez de un solo estado.
El AFN de la Figura 4.4 est definido por: Q = { q
0
, q
1
, q
2
, q
3
}, = { 0, 1 }, F = { q
3
},
s = q
0
y contiene a las transiciones siguientes:
(q
0
,0) = {q
0
} (q
0
,1) = {q
1
, q
0
}
(q
1
,0) = {q
2
} (q
1
,1) = {q
2
}
(q
2
,0) = {q
3
} (q
2
,1) = {q
3
}
O resumiendo, el AFN y todos sus elementos se muestran en la siguiente tabla, por lo
que podemos afirmar que esta tabla representa completamente al autmata:
0 1
q
0
{q
0
} { q
1
, q
0
}
q
1
{q
2
} {q
2
}
q
2
{q
3
} {q
3
}
*q
3

Tabla 4.1
J O R G E E D U A R D O C A R R I N V .
56
Ej empl o 4
El diagrama de transiciones de la Figura 4.6 representa a un AFN.
Los elementos de dicho AFN estn contenidos en la tabla de transiciones 4.2:
a b
*q
0
{q
1
}
q
1 {q
0
,q
2
}
q
2
{q
0
}
Tabla 4.2
El lenguaje que acepta este AFN est dado por la expresin (ab 4 aba)*, esto se
visualiza fcilmente analizando las dos trayectorias cclicas que tenemos para
regresar al estado q
0
, pasando por el estado q
1
.
Para analizar una cadena, se elegir la opcin que ms convenga, si se trata de la
cadena w
1
= aba, pasamos por el estado q
2
, pero si la cadena es w
2
= abab, entonces
seleccionamos la transicin que va directamente de q
1
a q
0
.
Analicemos este segundo caso, utilizando la funcin de transicin tenemos:
(q
0
,a) = {q
1
}
({q
1
},b) = (q
1
,b) = {q
0
, q
2
}
({q
0
,q
2
},a) = ({q
0
},a) 4 ({q
2
},a) = (q
0
,a) 4 (q
2
,a) = {q
1
} 4 {q
0
} = {q
0
, q
1
}
({q
0
,q
1
},b) = ({q
0
},b) 4 ({q
1
},b) = (q
0
,b) 4 (q
1
,b) = 4 {q
0
, q
2
} = {q
0
, q
2
}.
De esta manera, para simplificar la secuencia de transiciones, resulta ms fcil
escribir de modo resumido: ({q
0
},abab) = {q
0
, q
2
}, la cadena analizada es aceptada
debido a que en el conjunto final aparece q
0
que es un estado de aceptacin.
Entonces, observamos que es posible extender el dominio de la funcin de transicin
original por el siguiente: : 2
Q

+
2
Q
.
T E O R A D E L A C O M P U T A C I N
57
Ej empl o 5
En el diagrama de la Figura 4.7, tenemos que el estado q
0
tiene dos transiciones
posibles para el smbolo 0 y otras dos para el smbolo 1, esto nos da la libertad de
elegir la que convenga a una secuencia dada, con el fin de poder llegar al estado de
aceptacin. No importa si una alternativa no nos conduce al estado de aceptacin,
mientras exista una que si nos lleve a tal estado.
Este AFN acepta cualquier cadena con un par de ceros consecutivos o con un par de
unos consecutivos.
La cadena w = 01001 presenta el siguiente rbol de posibles transiciones, nos basta
con que una de cuyas trayectorias nos conduzca al estado de aceptacin q
3
.
Aut mat as Equi val ent es
Dado que los AFNs son ms verstiles, es mucho ms frecuente encontrar que
algunos de ellos son equivalentes y en la mayora de los casos no es fcil determinar
cual de ellos es mejor. En general, se considera que un AFN es mejor a otro, si est
ms cercano al comportamiento determinista, sin importar que tenga ms estados,
esto se explica porque es ms fcil analizar las cadenas con ellos, de hecho, siempre
nos convendr encontrar un AFD equivalente para el anlisis de cadenas.
J O R G E E D U A R D O C A R R I N V .
58
Ej empl o
Sean M
1
y M
2
dos AFNs sobre el alfabeto = { a, b } que se muestran en la Figura
4.9. Se puede verificar fcilmente que son equivalentes, porque ambos aceptan el
mismo lenguaje a
+
b
+
, pero definitivamente M
2
es mejor. Por qu? Porque su
comportamiento es determinista, lo que permite analizar fcilmente cualquier cadena,
mientras que el no-determinismo de M
1
complica el anlisis de cualquier cadena.
Equi val enc i a ent r e AFN y AFD
Aunque podemos considerar a un AFD dado como un caso particular de los AFNs y
sabemos que stos ltimos son ms verstiles, esto no significa que los AFN sean
ms poderosos que los AFDs, esto se confirma demostrando que para cualquier AFN,
siempre existe un AFD equivalente que acepta el mismo lenguaje.
Ej empl o 1
Encontrar un AFD equivalente al AFN definido por el diagrama de transiciones
mostrado en la figura siguiente:
Es conveniente, primero, representar al AFN por medio de su tabla de transiciones
correspondiente, tal como se muestra a continuacin:
0 1
*q
0
{ q
0
,q
1
} {q
1
}
q
1 {q
0
,q
1
}
Tabla 4.3
T E O R A D E L A C O M P U T A C I N
59
Ahora debemos definir a M, el AFD equivalente a M, como sigue: cada uno de los
posibles estados de M corresponder a una combinacin de estados de M, de tal
forma que Q = { [q
0
], [q
1
], [q
0
,q
1
], [] }, donde el estado inicial es s = [q
0
], y los
estados de aceptacin son todos aquellos que contengan a q
0
, que es el estado de
aceptacin de M, es decir: F = { [q
0
], [q
0
,q
1
] }. De esta manera, queda definido por
las transiciones: ([q
0
], 0) = [q
0
,q
1
], ([q
0
], 1) = [q
1
], ([q
1
], 0) = [] y ([q
1
], 1) = [q
0
,q
1
],
las cuales se obtienen directamente de la tabla 4.3.
Adems, el estado [] corresponde a un estado no deseado, por lo que sus
transiciones permanecern en este estado: ([], 0) = [] y ([], 1) = [].
Finalmente, para determinar las transiciones del estado [q
0
,q
1
], tenemos que observar
que se derivan de las siguientes transiciones en M:
({q
0
, q
1
}, 0) = ({q
0
}, 0) 4 ({q
1
}, 0) = {q
0
,q
1
} 4 = {q
0
, q
1
}
({q
0
, q
1
}, 1 ) = ({q
0
}, 1 ) 4 ({q
1
}, 1) = {q
1
} 4 {q
0
,q
1
} = {q
0
, q
1
}
Dando como resultado las transiciones para el estado [q
0
,q
1
]: ([q
0
,q
1
], 0) = [q
0
,q
1
] y
([q
0
,q
1
], 0) = [q
0
,q
1
], todo lo anterior se resume en la tabla 4.4.
Aunque la nomenclatura suele parecer, al principio, algo confusa, como ltimo paso,
se sugiere renombrar a cada uno de los estados de M con nombres ms simples, por
ejemplo, se pueden renombrar as: p
0
= [q
0
], p
1
= [q
1
], p
2
= [q
0
,q
1
] y p
3
= [], tal como
se muestra el resultado en la Tabla 4.5.
0 1 0 1
*[q
0
] [q
0
,q
1
] [q
1
] *p
0
p
2
p
1

[q
1
] [] [q
0
,q
1
] p
1
p
3
p
2

*[q
0
,q
1
] [q
0
,q
1
] [q
0
,q
1
] *p
2
p
2
p
2

[] [] [] p
3
p
3
p
3

Tabla 4.4 Tabla 4.5
De esta forma, el diagrama de transiciones del AFD equivalente es el mostrado en la
figura 4.11. Haciendo un anlisis del mismo, podemos ver que este autmata acepta
todas las cadenas que tenga unos y ceros, con excepcin de w = 1 y de todas las
cadenas que inicien con el prefijo 10.

J O R G E E D U A R D O C A R R I N V .
60
Ej empl o 2
Encontrar el AFD equivalente del AFN visto anteriormente en la figura 4.3 y que
acepta el lenguaje a 4 (ab)
+
. Para ello, primero obtenemos su tabla de transiciones:
a b
q
0
{q
1
,q
2
}
*q
1

q
2
{q
3
}
*q
3
{q
2
}
Tabla 4.6
Para obtener la tabla de transiciones del AFD equivalente, convertimos solamente la
primera fila de la tabla del AFN, correspondiente al estado inicial [q
0
], posteriormente
agregamos a la tabla las filas correspondientes a los estados [q
1
,q
2
] y [], que son los
estados hacia donde se dirigen las transiciones de [q
0
]. Al poner las transiciones del
estado [q
1
,q
2
], aparece como destino el estado [q
3
], que corresponde a la cuarta fila
que se agrega a la tabla. Finalmente, al hacer esto, surge como destino el estado [q
2
],
que ser nuestra ltima fila a considerar, debido a que no surgen nuevos estados:
a b
[q
0
] [q
1
,q
2
] []
*[q
1
,q
2
] [] [q
3
]
[] [] []
*[q
3
] [q
2
] []
[q
2
] [] [q
3
]
Tabla 4.7
T E O R A D E L A C O M P U T A C I N
61
Entonces el AFD equivalente est dado por: Q = { [q
0
], [q
1
,q
2
], [q
2
], [q
3
], [] }, s = [q
0
]
y F = { [q
3
], [q
1
,q
2
] }, adems de las transiciones de la tabla anterior, es fcil verificar
que ste es el mismo AFD cuyo diagrama de transiciones aparece en la figura 4.2.
Observe que en la Tabla 4.7 no aparece el estado [q
1
], ya que ste no es accesible
desde [q
0
]. La forma en la que se construy esta tabla permite que se obtenga un AFD
conexo, ya que se excluyen los estados aislados que apareceran por otros mtodos,
sin embargo, el procedimiento no nos garantiza obtener al AFD mnimo equivalente.
Transiciones psilon
Las transiciones psilon son aqullas que no dependen de ninguna entrada, ni
consumen ningn smbolo para efectuarse y se denotan con el smbolo .
Ej empl o 1
Los dos Autmatas M
1
y M
2
de la figura siguiente, son equivalentes, pero M
1
emplea
una transicin para acceder al estado de aceptacin, de manera no determinista,
mientras que M
2
es un AFD:
Ej empl o 2
El siguiente AFN con transiciones psilon acepta cualquier cantidad de 0s o ninguna,
seguida de cualquier cantidad de 1s y luego cualquier cantidad de 2s. Es decir acepta
el lenguaje dado por la expresin regular: 0*1*2*.
La funcin de transicin d, de un AFN con transiciones psilon se define de la
siguiente manera: d:Q ( 4 ) 2
Q
, que como podemos ver, es ligeramente distinta
a la de la funcin de los AFNs sin transiciones psilon.
La tabla de transiciones del AFN anterior se muestra a continuacin, en ella se incluye
una columna adicional para las transiciones psilon, como si fuera un smbolo ms:
J O R G E E D U A R D O C A R R I N V .
62
d 0 1 2
q
0
{q
0
} {q
1
}
q
1
{q
1
} {q
2
}
*q
2
{q
2
}
Tabla 4.8
De hecho, de forma semejante a lo que hicimos con las funciones de transicin
anteriores, podemos extender el dominio de esta funcin as d:2
Q
* 2
Q
.
La cadena 002 es aceptada por este AFN, porque equivale a 002 y la secuencia de
transiciones para este caso sera:
Ej empl o 3
Ahora consideremos el AFN M
1
, mostrado en la Figura 4.14, que acepta al lenguaje
(ab 4 aba)*, y el cual es equivalente a M
2
, en la Figura 4.15, que es un AFN sin
transiciones psilon.
Equivalencia ent re AFNs con y sin t ransiciones
A continuacin veremos una metodologa para encontrar un AFN equivalente que no
tenga transiciones psilon, para ello, primero debemos definir la Cerradura psilon de
un estado q
i
de la siguiente manera:
C(q
m
) = { q
n
Q | q
n
es accesible desde q
m
sin consumir ningn smbolo}
Por definicin q
m
siempre est contenido en su propia cerradura C(q
m
), ya que no
necesita de ningn smbolo para acceder a s mismo.
T E O R A D E L A C O M P U T A C I N
63
Las transiciones del AFN equivalente sin transiciones psilon se definen utilizando la
frmula que sigue, en donde se aplica dos veces la cerradura psilon, antes y
despus de cada transicin:
(q
m
, ) = C(d(C(q
m
), ))
Ej empl o 1
Considere el AFN cuyo diagrama de transiciones se muestra en la Figura 4.16, y que
podemos representar por medio de la Tabla 4.9 de la derecha:

d a b
q
0
{q
1
}
q
1
{q
2
} {q
1
}
*q
2 {q
0
} {q
0
}

Tabla 4.9
Podemos aplicar la frmula de la cerradura desde la tabla o analizando el diagrama,
de cualquier forma, se deben obtener las siguientes cerraduras psilon:
C(q
0
) = {q
0
,q
1
}
C(q
1
) = {q
1
}
C(q
2
) = {q
0
,q
1
,q
2
}
Las transiciones para construir el AFN sin transiciones psilon se obtienen as:
(q
0
, a) = C(d(C(q
0
), a)) = C(d({q
0
,q
1
}, a)) = C(d(q
0
, a) 4 d(q
1
, a)) = C( 4 {q
2
}) =
C(q
2
) = {q
0
,q
1
,q
2
}
(q
0
, b) = C(d(C(q
0
), b)) = C(d({q
0
,q
1
}, b)) = C(d(q
0
, b) 4 d(q
1
, b)) = C( 4 {q
1
}) =
C(q
1
) = {q
1
}
(q
1
, a) = C(d(C(q
1
), a)) = C(d(q
1
, a)) = C(q
2
) = {q
0
,q
1
,q
2
}
(q
1
, b) = C(d(C(q
1
), b)) = C(d(q
1
, b)) = C(q
1
) = {q
1
}
(q
2
, a) = C(d(C(q
2
), a)) = C(d({q
0
,q
1
,q
2
}, a)) = C(d(q
0
, a) 4 d(q
1
, a) 4 d(q
2
, a)) =
C( 4 {q
2
} 4 ) = C(q
2
) = {q
0
,q
1
,q
2
}
(q
2
, b) = C(d(C(q
2
), b)) = C(d({q
0
,q
1
,q
2
}, b)) = C(d(q
0
, b) 4 d(q
1
, b) 4 d(q
2
, b)) =
C( 4 {q
1
}4 {q
0
}) = C(q
1
) 4 C(q
0
) = {q
1
} 4 {q
0
,q
1
} = {q
0
,q
1
}
Resumiendo, las transiciones obtenidas se muestran en la tabla 4.10:
J O R G E E D U A R D O C A R R I N V .
64
a b
q
0
{q
0
,q
1
,q
2
} {q
1
}
q
1
{q
0
,q
1
,q
2
} {q
1
}
*q
2
{q
0
,q
1
,q
2
} {q
0
,q
1
}
Tabla 4.10
Se deja como ejercicio construir el diagrama de transiciones, as como encontrar el
AFD mnimo equivalente.
Ej empl o 2
Encontrar el AFN sin transiciones psilon equivalente al AFN cuyo diagrama de
transiciones se muestra en la figura 4.17:
Del diagrama anterior podemos obtener las cerraduras psilon respectivas, la nica
que no resulta ser una identidad es la correspondiente al estado q
1
: C(q
1
) = {q
1
,q
4
}.
La funcin del AFN sin transiciones psilon se obtiene con la frmula antes vista y
sus resultados se muestran en la tabla 4.11, siguiente:
a b
*q
0
{q
1
, q
4
}
q
1 {q
0
, q
2
, q
3
}
q
2 {q
4
}
q
3
{q
0
}
q
4 {q
0
, q
3
}
Tabla 4.11
La grfica del diagrama de transiciones correspondiente se muestra en la figura 4.18 a
continuacin, obsrvese que todas las transiciones no-psilon del AFN original se
T E O R A D E L A C O M P U T A C I N
65
preservan y solamente surgen las nuevas transiciones que se agregan a cambio de
las transiciones psilon que se eliminaron, con objeto de que el AFN obtenido sea
equivalente.
En algunas ocasiones, surgen transiciones nuevas que resultan redundantes y en
otras ocasiones podemos obtener, como resultado, que algunos estados se queden
aislados o bien, que se conviertan en estados no deseados, para reducir estos
inconvenientes, recomendamos que antes de aplicar el procedimiento descrito, se
empleen los siguientes criterios, cuando sea posible.
Crit erios de Simplificacin
Cr i t er i o 1
Si la nica entrada de un estado q
k
, sea o no de aceptacin, pero que no es el estado
inicial, es una transicin psilon, proveniente desde un estado q
n
cualquiera, entonces
q
k
se fusiona a q
n
.
Ejemplo
En el siguiente ejemplo se muestra como se aplica el criterio, fusionando el estado q
1

al estado q
0
y el estado q
3
al estado q
4
, quedando un AFN sin transiciones psion.
J O R G E E D U A R D O C A R R I N V .
66
Cr i t er i o 2
Si la nica salida de un estado q
k
, que no es de aceptacin, es una transicin psilon,
hacia un estado q
n
cualquiera, entonces q
k
se fusiona a q
n
, este criterio tambin es
vlido cuando ambos estados, q
k
y q
n
, son de aceptacin.
Ejemplo
En el siguiente ejemplo se muestra como se aplica el segundo criterio, fusionando el
estado q
2
al estado q
1
, quedando un AFN sin transiciones psion.
Cr i t er i o 3
Si un estado de aceptacin q
k
tiene varias entradas, una de las cuales es una
transicin psilon desde el estado q
n
, y no tiene salidas de ningn tipo, entonces q
k
se
subdivide en dos estados de aceptacin equivalentes q
k
y q
k
, el primero tendr a la
transicin psilon proveniente de q
n
como nica entrada y el otro a las dems
entradas, con objeto de poder aplicar posteriormente el primer criterio y fusionar q
k
a
q
n
, convirtindolo en estado de aceptacin.
El resultado final se puede resumir en que la transicin psilon se elimina a cambio de
convertir al estado q
n
en un estado de aceptacin, como se muestra en la Figura 4.21:
T E O R A D E L A C O M P U T A C I N
67
Ej empl o 1
Considere el AFN cuyo diagrama de transiciones se muestra en la figura 4.22:
Aplicando el criterio 1, fusionamos al estado q
2
con el estado q
1
. Posteriormente
aplicamos el criterio 3 en q
1
, que ahora ya es un estado de aceptacin y que no tiene
salidas, transformando a los estados q
0
y q
4
en estados de aceptacin, q
1
se elimna al
quedar aislado cuando se descarta la transicin psilon, resultando el siguiente AFN
sin transiciones psilon:
Ej empl o 2
Utilice los criterios anteriores para eliminar las transiciones psilon del AFN cuyo
diagrama de transiciones se muestra en la Figura 4.24.
Antes de poder aplicar los criterios, veamos que es posible eliminar a los estados q
4
y
a q
5
, puesto que se trata de estados no deseados. Hacer esto nos abre la posibilidad
de aplicar el criterio 2, para fusionar al estado q
3
con el estado q
1
, quedando el AFN
con una transicin psilon, pero que ya no es posible simplificar por medio de los
critrerios, y es el que se muestra en la Figura 4.25:
J O R G E E D U A R D O C A R R I N V .
68

Y aplicando el procedimiento antes visto, para eliminar la transicin psilon restante,
obtenemos finalmente el AFN mostrado en la figura 4.26:
Aut mat as Finit os Generalizados
En la pgina 53 se mencion que la funcin de transicin de los AFNs con
transiciones psilon se poda generalizar de la siguiente manera: d:2
Q
* 2
Q
. Esto
nos permite suponer que tambin es posible construir autmatas finitos en los que
cada transicin est definida por una cadena de smbolos y no por uno solo nada ms.
A este tipo de autmatas les denominamos Autmatas Finitos No Deterministas
Generalizados (AFNG).
T E O R A D E L A C O M P U T A C I N
69
Un AFNG puede tener cada transicin etiquetada por una cadena, e incluso por una
expresin regular ms compleja, por tanto, debe poder leer cualquier cantidad de
smbolos antes de efectuar cada transicin.
La figura 4.27 muestra un AFNG que acepta el lenguaje regular ab (bab)* ba,



Ejemplo Prct ico
Hay una Fbula que nos cuenta de un hombre que viva a la orilla de un ro y tena
que atravesarlo para ir a la ciudad. En una ocasin deba llevar un lobo, un borrego y
un repollo, para cruzar el ro posea un pequeo bote donde solamente cabe l con
uno de los animales o con el repollo, por lo que deba cruzar varias veces el ro para
pasar a todos ellos al otro lado. Sin embargo, no poda dejar el lobo con el borrego
porque se lo comera, por lo mismo, tampoco poda dejar al borrego con el repollo. El
objetivo consiste en representar un diagrama de estados que nos permita saber como
puede el hombre finalmente cruzar el ro sin que el repollo o el borrego sean
devorados.
Los posibles estados se denotan como las combinaciones de las cuatro letras
separadas por un guin, indicando de cual lado del ro se encuentra cada personaje,
de este modo tenemos:
Estado inicial: [BRHL- ] (cuando los cuatro estn del lado donde est la casa)
Estado final: [ - BRHL] (cuando los cuatro pasaron al otro lado del ro)
Algunos estados intermedios vlidos son: [RL BH], [RHL B], [L BRH], etc.
Los estados inaceptables seran: [RH BL], [BR HL], [BL RH] y [HL BR], porque
nos conduciran a estados no deseados como: [RH L], [B HL], etc.
A continuacin se presenta el diagrama de transiciones correspondiente, sin mostrar
los estados inaceptables o no deseados, a fin de darle mayor claridad al mismo, Los
smbolos del sistema son: h cuando el hombre viaja solo, l cuando viaja con el
lobo, b cuando viaja con el borrego y r cuando viaja con el repollo.
J O R G E E D U A R D O C A R R I N V .
70
Como puede observarse, existen dos soluciones mnimas, y podemos denotarlas
como: bhlbrhb y bhrblhb.
Pregunt as
a) Dado M, un AFD que acepta al lenguaje L(M), Cmo es posible construir un AFN,
a partir de M, que acepte todas cadenas que sean sufijos de w para todo w L(M)?
b) Para qu casos se cumple que un AFN con transiciones psilon acepta la cadena
vaca?
c) Existen ventajas o desventajas al emplear AFNs en vez de AFDs en el
reconocimiento de lenguajes?
d) Es ms sencillo construir un AFD que un AFN a partir de una ER dada?
Ejercicios Capt ulo 4
4.1 Construir un AFN que acepte cada uno de los lenguajes regulares siguientes,
donde su alfabeto es = { 0, 1 }:
a) Las cadenas que tienen solamente dos ceros, los cuales estn separados por
una cadena de unos de longitud mltiplo de 4.
b) Las cadenas en las que el quinto smbolo contado desde el final sea un 1.
c) Las cadenas que contengan a la secuencia 101.
d) El lenguaje descrito por la expresin regular (00)*(11)*
T E O R A D E L A C O M P U T A C I N
71
4.2 Construir el AFN que acepte el lenguaje (a 4 b)* aba, encontrar el AFD mnimo
equivalente.
4.3 Determine si los AFs dados en cada uno de los incisos de la siguiente figura, son
o no son equivalentes:
4.4 Encontrar el AFD mnimo equivalente a cada uno de los AFNs siguientes:

J O R G E E D U A R D O C A R R I N V .
72
4.5 Encontrar el AFD mnimo equivalente para los siguientes casos:
a) Al AFN representado por la Tabla 4.10
b) Al AFN mostrado en la Figura 4.23
c) Al AFN mostrado en la Figura 4.26
d) Al AFN mostrado en la Figura 4.18
4.6 Encontrar el AFN sin transiciones psilon equivalente al mostrado en la Figura
4.13, posteriormente encontrar el AFD mnimo equivalente.
4.7 Encontrar un AFN sin transiciones psilon equivalente, posteriormente encontrar
un AFD equivalente, finalmente encontrar el AFD mnimo equivalente para cada
uno de los autmatas mostrados en las figuras siguientes:
a)




b)




c)



d)




e)


T E O R A D E L A C O M P U T A C I N
73
f)




g)




h)




i)



j)




4.8 Encontrar un AFD equivalente al AFNG representado en la siguiente figura:


T E O R A D E L A C O M P U T A C I N
75
Aut mat as Finit os y Expresiones
Regulares
Se analizan los procedimientos para construir Autmatas, a partir de las expresiones regulares de los lenguajes que
deben ser aceptados por ellos y los mtodos para encontrar la expresin regular de un lenguaje a partir de un Autmata
Finito dado.
Const ruccin de Aut mat as
Para construir autmatas a partir de expresiones regulares, podemos iniciar con los
casos ms sencillos, los cuales se muestran en la Figura 5.1. Posteriormente
podremos construir otros ms complejos con base en las operaciones de unin,
concatenacin y cerradura. Por razones de simplicidad, podemos suponer, sin perder
generalidad, que cada autmata en este captulo deber poseer un solo estado final.
Uni n
Supongamos que M
1
= (Q
1
,
1
,
1
, q
0
, F
1
) y M
2
= (Q
2
,
2
,
2
, p
0
, F
2
), son dos AFN que
aceptan los lenguajes L
1
y L
2
respectivamente, entonces podemos construir un nuevo
AFN M
3
= (Q
3
,
3
,
3
, q
0
, F
3
), que acepte al lenguaje unin, L
3
= L
1
4 L
2
, a partir de M
1

y M
2
, aadiendo un nuevo estado inicial q
0
y dos nuevas transiciones , que vayan de
Capt ul o
5
J O R G E E D U A R D O C A R R I N V .

76
q
0
a los estados iniciales q
0
y p
0
, respectivamente, as como tambin aadimos un
nico estado final q
f
unido desde q
f
y desde p
f
por medio de dos transiciones .
De esta forma tenemos que M
3
est dado por Q
3
= Q
1
4 Q
2
4 { q
0
, q
f
},
3
=
1
4
2
,
F
3
= {q
f
}, donde q
0
es el nuevo estado inicial y
3
se define de tal forma que incluya
todas las transiciones de
1
y
2
ms las cuatro transiciones psilon: (q
0
,) = {q
0
, p
0
},
(q
f
,) = { q
f
} y (p
f
,) = { q
f
}, tal como se ilustra en la Figura 5.2.
Ej empl o
Sean M
1
y M
2
, los AFNs que aceptan los lenguajes L(M
1
) = ab* y L(M
2
) = a*b,
respectivamente, entonces el AFN M
3
, obtenido a partir de M
1
y M
2
, acepta el lenguaje
L(M
3
) = ab* 4 a*b, tal como se muestra en la siguiente figura:
Una vez construido el diagrama de transiciones de M
3
, se pueden utilizar los criterios
vistos en el captulo anterior, as como el procedimiento de la Cerradura psilon para
eliminar las transiciones psilon y obtener un AFN ms sencillo.
T E O R A D E L A C O M P U T A C I N
77
Conc at enac i n
Supongamos que M
1
= (Q
1
,
1
,
1
, q
0
, F
1
) y M
2
= (Q
2
,
2
,
2
, p
0
, F
2
), son dos AFN que
aceptan los lenguajes L
1
y L
2
respectivamente, entonces podemos construir un nuevo
AFN llamado M
3
= (Q
3
,
3
,
3
, q
0
, F
2
), que acepte al lenguaje L
3
= L
1
$ L
2
, colocando
primero a M
1
con su estado inicial q
0
y enseguida se enlaza con M
2
, aadiendo una
transicin que vaya del estado de aceptacin q
f
de M
1
, que dejar de serlo, al estado
inicial p
0
de M
2
, que tambin deja de serlo.
De esta forma tenemos que el nuevo AFN M
3
, con alfabeto
3
=
1
4
2
, est dado
por Q
3
= Q
1
4 Q
2
, donde q
0
es el estado inicial y
3
se define de tal forma que incluya
todas las transiciones de
1
y
2
y la nueva transicin (q
f
,) = { p
0
}, tal como se
ilustra en la Figura 5.4.
Ej empl o
Sean M
1
y M
2
, los cuales aceptan los lenguajes L(M
1
) = ab* y L(M
2
) = (ab)*,
respectivamente, entonces el AFN M
3
, obtenido a partir de M
1
y M
2
, acepta el lenguaje
L(M
3
) = ab*(ab)*, tal como se muestra en la siguiente figura:
J O R G E E D U A R D O C A R R I N V .

78
Cer r adur a
Supongamos que M
1
= (Q
1
,
1
,
1
, q
0
, F
1
) es un AFN que acepta el lenguaje L(M
1
),
entonces podemos construir un nuevo AFN M
3
, que acepte al lenguaje L(M
3
) = L(M
1
)*
agregando un nuevo estado inicial q
0
, el cual tambin ser el estado de aceptacin
(de tal forma que acepte la cadena vaca) y se agrega una transicin que vaya de q
0

a q
0
(el estado inicial de M
1
). Finalmente se cierra el ciclo con otra transicin desde
q
f
, el estado de aceptacin de M
1
, que dejar de serlo, al nuevo estado q
0
.
De esta forma tenemos que el AFN M
3
= (Q
3
,
1
,
3
,q
0
,F
3
) viene dado por F
3
= { q
0
},
Q
3
= Q
1
4 { q
0
}, donde q
0
es el estado inicial y
3
se define de tal forma que incluya
todas las transiciones de
1
y las nuevas transiciones (q
0
,) = { q
0
} y (q
f
,) = { q
0
},
tal como se ilustra en la Figura 5.6.
Ej empl o
Sean M
1
, el cual acepta el lenguaje L(M
1
) = a 4 b, entonces se tiene que el AFN M
3
,
obtenido a partir de M
1
, acepta a L(M
3
) = (a 4 b)*, tal como se muestra en la siguiente
figura:
Aplicando los criterios 1 y 2, se puede reducir el diagrama de transiciones de M
3

anterior, para obtener el siguiente AFD equivalente sin transiciones psilon:
T E O R A D E L A C O M P U T A C I N
79
En c onc l usi n
Dada cualquier expresin regular, podemos construir un AFN que acepte el lenguaje
representado por ella, aplicando las tcnicas anteriores, por lo tanto, se concluye que
todo lenguaje regular es aceptado por algn autmata finito.
Ej empl o 1
Para construir un AFN que acepte el lenguaje 010 4 10*, podemos partir de los dos
autmatas bsicos para cada una de las expresiones que aparecen en la unin, como
se ilustra en la Figura 5.9.
Luego construimos el autmata correspondiente a la unin de las dos anteriores, tal
como se muestra en la Figura 5.10.
Ej empl o 2
Para construir un AFN que acepte el lenguaje (ab 4 b*)*ba 4 (ab)*, debemos empezar
por construir un autmata para la expresin que aparece en el primer parntesis,
luego hacer la cerradura de Kleene, el resultado se concatena con el autmata para el
sufijo ba y finalmente hacemos la unin con el autmata que acepta a la expresin
(ab)*, debiendo llegar a un resultado semejante al que se ilustra en la Figura 5.11, se
deja como ejercicio la simplificacin de este AFN, eliminando las transiciones psilon,
para llegar a una representacin ms compacta.
J O R G E E D U A R D O C A R R I N V .

80
Obt encin de Expresiones Regulares
Ya vimos que dada una ER, es posible construir algn AFN que acepte el lenguaje
respectivo, ahora vamos a ver, por medio de un mtodo algebraico, que siempre es
posible obtener una expresin regular del lenguaje aceptado por M, un AFN dado
cualquiera. Para ello, primero debemos definir los lenguajes sufijos del lenguaje
buscado L(M).
Sea M = (Q, , , s, F) un AFN, entonces podemos definir a A
i
como el conjunto de
las cadenas sobre que hacen que M pase desde un estado q
i
hasta algn estado de
aceptacin, esto es:
A
i
= { w * | ( q
i
, w ) F }.
Es decir, A
i
representa al lenguaje aceptado por el AF si suponemos que q
i
es el
estado inicial, en especial, se tiene que para el estado inicial q
0
se cumple que A
0

representa al leguaje buscado: L(M).
T E O R A D E L A C O M P U T A C I N
81
Ej empl o
Obtener la expresin regular del lenguaje aceptado por el AFD representado por el DT
mostrado en la Figura 5.12:
Aplicando la definicin anterior para los estados de este AFD, se obtiene que:
A
5
=
A
4
=
A
3
= b*a
A
2
= a 4 b
+
a = b*a, etc.
A cada paso podemos observar que la obtencin de A
i
es ms compleja, por lo que se
puede apreciar que es ms conveniente hacer este mismo anlisis algebraicamente.
Si para el estado q
i
hay una transicin del smbolo a hacia el estado q
j
y una transicin
del smbolo b hacia el estado q
k
, entonces se plantea la siguiente ecuacin para el
lenguaje A
i
: A
i
= aA
j
4 bA
k
. Puesto que A
j
y A
k
son dos sufijos de A
i
.
Adems, debemos tomar en cuenta que si el estado q
i
es un estado de aceptacin,
entonces hay que agregar el trmino independiente adicional .
Para el AFD mostrado en la Figura 5.12, tenemos que se obtiene el siguiente sistema
de ecuaciones:
A
0
= aA
1
4 bA
3
A
1
= aA
3
4 bA
2
A
2
= aA
4
4 bA
3
A
3
= aA
4
4 bA
3

A
4
= 4 aA
5
4 bA
5
A
5
= aA
5
4 bA
5

J O R G E E D U A R D O C A R R I N V .

82
Para resolver este sistema de ecuaciones se parte del hecho que la nica solucin
posible para A
5
es el lenguaje vaco, , ya que A
5
aparece en todos los trminos de la
ecuacin. (Como una referencia, considere el anlogo algebraico x = 2x + 4x, que
tiene como nica solucin a x = 0).
Ahora sustituyendo A
5
en la ecuacin de A
4
, nos queda simplemente que A
4
= , y si
reemplazamos este valor en la ecuacin de A
3
queda: A
3
= a 4 bA
3
.
Para resolver este tipo de ecuaciones, en las que el mismo elemento A
i
aparece en
ambos lados de la ecuacin, aplicamos el resultado del siguiente lema:
Lema de Ar den
Una ecuacin de la forma A = rA 4 s, tiene como solucin nica a: A = r*s, donde r y
s son dos expresiones regulares cualesquiera que no contienen a A.
Entonces, continuando con la solucin de nuestro problema, resolvemos la ecuacin
de A
3
aplicando el lema de Arden y obtenemos que: A
3
= b*a.
A partir de ah se obtiene por substitucin: A
2
= a 4 bb*a = a 4 b
+
a = b*a. (No es
sorprendente que A
2
sea igual a A
3
, pues ambos tienen la misma ecuacin, esto se
debe a que ambos estados q
2
y q
3
son equivalentes).
Luego obtenemos A
1
= a(b*a) 4 b(b*a) = ( a 4 b )b*a
Y finalmente, si substituimos A
1
y A
3
en A
0
, se tiene que el lenguaje buscado es:
L(M) = A
0
= a(a 4 b)b*a 4 bb*a = (aa 4 ab 4 b)b*a
Ej empl o 2
Encontrar la ER del lenguaje aceptado por el AFD mostrado en la Figura 5.13:
A partir del diagrama obtenemos el sistema de ecuaciones siguiente:
A
0
= aA
0
4 bA
1
A
1
= 4 bA
2
4 aA
2

A
2
= aA
2
4 bA
2
T E O R A D E L A C O M P U T A C I N
83
Para resolverlo, podemos ver de que: A
2
= , y a partir de ah, se obtiene que: A
1
= ,
por tanto queda: A
0
= aA
0
4 b, y resolviendo por medio del Lema de Arden, resulta:
L(M) = A
0
= a*b.
Ej empl o 3
Encontrar la ER del lenguaje aceptado por el AFD representado por el DT mostrado
en la figura 5.14:
Analizando las transiciones en cada uno de los estados del diagrama, obtenemos el
siguiente sistema de ecuaciones:
A
0
= aA
1
4 bA
3
A
1
= bA
2
4 aA
3

A
2
= 4 aA
1
4 bA
3

A
3
= aA
3
4 bA
3
Partiendo del hecho que: A
3
= , se obtiene que: A
2
= 4 aA
1
y que A
1
= bA
2
por lo
tanto A
2
= 4 abA
2
. Esta ecuacin se resuelve por medio el Lema de Arden,
obtenindose que A
2
= (ab)* y posteriormente, sustituyendo esta expresin en A
1
, se
obtiene el siguiente resultado: A
1
= b(ab)* y de ah se llega a que la expresin
buscada est dada por:
L(M) = A
0
= aA
1
= ab(ab)* = (ab)
+
.
Dado que el mtodo algebraico es aplicable igualmente a AFDs que a AFNs,
podemos facilitar su aplicacin si desde un inicio descartamos a los estados no
deseados que se detecten, ya que no aportan nada a la solucin del problema, tal
como se observa en el siguiente ejemplo:
J O R G E E D U A R D O C A R R I N V .

84
Ej empl o 4
Dado el AFD de la figura 5.15, encontrar la expresin regular del lenguaje que
representa.
Analizando el diagrama, se observa que podemos descartar a q
3
, debido a que se
trata de un estado no deseado, por lo que se obtiene el siguiente sistema de
ecuaciones reducido:
A
0
= 4 aA
1
4 bA
2
A
1
= aA
0

A
2
= bA
0
Se deja al lector la tarea de resolverlo, y de que verifique que la respuesta del sistema
de ecuaciones anterior es: A
0
= L(M) = ( a
2
4 b
2
)*.
Ej empl o 5
Dado el AFN mostrado en la figura 5.16, encontrar la expresin regular del lenguaje
que acepta.
T E O R A D E L A C O M P U T A C I N
85
Analizando el diagrama, obtenemos el sistema de ecuaciones siguiente:
A
0
= 4 aA
1
4 bA
2
A
1
= bA
0

A
2
= aA
1

Se deja al lector la tarea de resolverlo, y que verifique que la respuesta del sistema de
ecuaciones es: A
0
= L(M) = ( ab 4 bab )*.
Simplificacin de AFNGs
Otro mtodo para obtener la expresin regular a partir de un AF que es de especial
inters consiste en la simplificacin de AFNGs por medio de un algoritmo que permite
ir eliminando de estado en estado, hasta reducirlo a solamente dos, el inicial y el final
y una sola transicin entre ellos etiquetada por la expresin regular.
Para facilitar la aplicacin de este algoritmo, se parte de los siguientes supuestos:
El estado inicial no tiene transiciones de entrada, solo de salida.
El estado de aceptacin es nico y no tiene transiciones de salida.
La funcin de transicin dual se define como : Q Q *.
Al gor i t mo
Dado un AF cualquiera, que acepta un lenguaje L, debemos verificar primero que se
satisfacen las condiciones arriba mencionadas, en caso contrario se aaden uno o
dos estados ms segn se requiera.
1. Si el nmero de estados del AF actual es n = 2, la etiqueta de la transicin es la
expresin regular.
2. Si n > 2, entonces se selecciona un estado intermedio q
i
y se elimina, redefiniendo
las transiciones de para cada pareja de estados q
j
y q
k
que tengan transiciones
hacia y desde q
i
, respectivamente, de la siguiente forma: (q
j
,q
k
) = r
1
r
2
* r
3
4 r
4
,
donde: r
1
= (q
j
,q
i
), r
2
= (q
i
,q
i
), r
3
= (q
i
,q
k
) y r
4
= (q
j
,q
k
).
(Se recomienda eliminar preferentemente al estado en el que resulte el menor
producto del nmero de entradas por el nmero de salidas)
3. Se repite el proceso.
J O R G E E D U A R D O C A R R I N V .

86
El paso 2 lo podemos representar grficamente por medio de la siguiente figura:
Ej empl o
Encontrar la expresin regular del lenguaje aceptado por el siguiente AFN:
Como se cumplen las condiciones exigidas por el algoritmo, podemos elegir uno de
los estados para eliminarlo, en este caso, iniciamos quitando a q
1
, puesto que
solamente tiene una transicin de entrada y una de salida.
Observe que el resultado de eliminar a q
1
es equivalente a la aplicacin del criterio 1
para la eliminacin de transiciones psilon, que se vio en el captulo anterior.
T E O R A D E L A C O M P U T A C I N
87
Ahora conviene eliminar a q
4
, que tiene dos transiciones de salida por una sola de
entrada, por lo que hay que considerar dos combinaciones al aplicar el algoritmo,
(q
2
,q
2
) = (ba)* y (q
2
,q
3
) = 4 b, tal como se ilustra en la Figura 5.20:






A continuacin procedemos a eliminamos el estado q
2
, que solo tiene una entrada y
una salida.




Finalmente eliminando el estado q
3
resulta la expresin regular buscada:


Por todo lo expuesto en este captulo, se puede afirmar que para cada Autmata
Finito M, existe una Expresin Regular r para la cual L(r) = L(M) y viceversa, lo que
concluye Kleene enunciando el siguiente teorema:
Teor ema de Kl eene
Un lenguaje es regular si y slo si es aceptado por un autmata finito.
En la Figura 5.23 se resume grficamente lo que hemos realizado en estos dos
captulos sobre la convertibilidad que existe entre los AFs y las ERs. Primeramente,
dada cualquier ER, podemos construir un Autmata Finito No Determinista con
transiciones psilon, posteriormente podemos encontrar un AFN equivalente sin este
tipo de transiciones, para que de ah, encontremos un AFD equivalente y por otro
J O R G E E D U A R D O C A R R I N V .

88
lado, dado un AFD, podemos ser capaces de encontrar la Expresin Regular del
lenguaje aceptado por ste.
Pregunt as
a) Existe algn Lenguaje Regular que no pueda ser aceptado por algn AFN?
b) Existe algn AFN que reconozca a un lenguaje que no sea regular?
c) Es necesario el empleo de las transiciones psilon para construir AFs a partir de
una Expresin Regular dada?
d) Por qu, dado un AFN, es conveniente encontrar un AFD equivalente?
e) Por qu es til el empleo de los AFNs?
f) El mtodo algebraico para encontrar ERs es ms confiable que el mtodo de la
simplificacin de AFNGs?
g) Por qu se necesita anteponer un estado inicial y de aceptacin para construir un
AFN que acepte la cerradura de Kleene de un lenguaje L?
Ejercicios Capt ulo 5
5.1 De acuerdo con las tcnicas descritas para la construccin de autmatas,
construir los AFN que acepten cada uno de los siguientes lenguajes:
a) (a 4 b)* 4 (aba)
+

b) ((ab 4 aab)*a*)*
c) (ba 4 b)* 4 (bb 4 a)*
d) ((a*b*a*)*b)*
e) (ab 4 abb 4 aba)*
5.2 Dados los lenguajes L
1
= a y L
2
= ab*c, construir:
a) Un AFN que acepte el Lenguaje L
1
$ L
2
4 L
1
*
b) Otro AFN que acepte el Lenguaje L
2
$ L
1
4 L
2
*
T E O R A D E L A C O M P U T A C I N
89
5.3 Sean M
1
= (Q
1
,
1
, F
1
, s
1
,
1
) y M
2
= (Q
2
,
2
, F
2
, s
2
,
2
), donde Q
1
= { q
0
, q
1
, q
2
},

1
= {a,b}, F
1
= {q
0
}, s
1
= q
0
, Q
2
= {p
0
, p
1
, p
2
, p
3
},
2
= {0,1}, s
1
= p
0
, F
2
= { p
0
, p
1
},

1
y
2
dados en la tablas 5.1 y 5.2:

1

a b

2
0 1
*q
0
{q
1
, q
2
} *p
0
{p
1
}
q
1
{q
0
} *p
1 { p
2
, p
3
}
q
2
{q
0
} {q
2
} p
2
{p
1
}
Tabla 5.1
p
3
{p
2
}
Tabla 5.2
a) Obtener un AFN que acepte el lenguaje L(M
1
) $ L(M
2
).
b) Obtener un AFN que acepte el lenguaje L(M
2
) $ L(M
1
)
2
.
c) Obtener un AFN que acepte el lenguaje L(M
1
)
2
4 L(M
2
).
5.4 Dado el AFN mostrado en la Figura 5.24, encontrar la expresin regular del
lenguaje que acepta.

5.5 Dado el AFN mostrado en la Figura 5.25, encontrar la expresin regular del
lenguaje que acepta.
5.6 Sean M
1
y M
2
, los AFNs mostrados en las Figuras 5.24 y 5.25.
a) Obtener un AFN que acepte el lenguaje L(M
1
) $ L(M
2
).
b) Obtener un AFN que acepte el lenguaje L(M
2
) 4 L(M
1
).
5.7 Dados los AFDs mostrados en las figuras 3.12, 3.13, 3.14, 3.16 y 4.11, obtener
la expresin regular del lenguaje que acepta cada uno de ellos.
5.8 Dados los AFDs mostrados en las figuras de la 5.26 a la 5.31, encontrar la
expresin regular del lenguaje que acepta cada uno de ellos.

J O R G E E D U A R D O C A R R I N V .

90
a)




b)




c)


d)


e)




f)


5.9 Dados los AFNs mostrados en las figuras de la 5.32 a la 5.34, encontrar la
expresin regular del lenguaje que acepta cada uno de ellos.
a)




T E O R A D E L A C O M P U T A C I N
91
b)




c)







T E O R A D E L A C O M P U T A C I N
93
Gramt icas Regulares
Se define el concepto de Gramtica Regular y su equivalencia con las expresiones regulares y con los autmatas finitos.
Se introduce el concepto de Gramticas Regulares Reversas y su relacin con el Lenguaje Inverso.
En los captulos anteriores hemos empleado a los Diagramas de Transiciones como
una representacin Grfica de los AFs para el reconocimiento de lenguajes, pero
stos tambin pueden ser utilizados para representar a un dispositivo generador de
cadenas para un lenguaje dado; de tal manera que partiendo de una cadena vaca, se
le van a ir concatenando smbolos en la medida de que se recorren las distintas
transiciones que forman una determinada trayectoria sobre el Diagrama, desde el
estado inicial hasta algn estado final (al que ya no llamaramos de aceptacin).
Ej empl o 1
El Diagrama de Transiciones mostrado en la figura 6.1 representa al lenguaje regular
L = a(a* 4 b*)b = a
+
b 4 ab
+
.
Aplicando el mtodo descrito se puede generar cualquier cadena perteneciente al
lenguaje citado, tal como se ejemplifica a continuacin.
La secuencia de transiciones que genera la cadena w = aaab, es la siguiente:
Capt ul o
6
J O R G E E D U A R D O C A R R I N V .
94
Obsrvese que se han nombrado a los estados con las letras maysculas S, A, B y C,
en vez de la notacin empleada para los AFs, esto se hace para poder introducir una
nueva simbologa.
Simblicamente podemos representar la generacin de cada uno de los smbolos por
medio de las siguientes Reglas de Sustitucin o Producciones:
S aA
S aB
A aA
A bC
B bB
B bC
C (por ser un estado de aceptacin)
La primera de estas reglas se interpreta como que la transicin del estado S al estado
A nos genera el smbolo a. La flecha expresa que S Es sustituido por o produce
la cadena aA, de modo que podemos utilizar esta regla cuando tengamos al smbolo S
en una cadena, el cual puede ser sustituido por la expresin que aparece a la derecha
de la flecha.
El proceso de generar una cadena se llama Derivacin, y parte de un smbolo inicial
representado por S. Por lo tanto, la cadena w = aaab se puede generar por medio de
las reglas anteriores. De este modo, si partimos del smbolo inicial S y aplicamos la
primera regla, obtenemos aA, y si luego se aplica en dos ocasiones la tercera regla,
podemos obtener aaaA, luego empleamos la cuarta regla para obtener aaabC y
finalmente la ltima regla para terminar en aaab.
Este proceso se puede describir de manera compacta as:
S aA aaA aaaA aaabC aaab
Donde la doble flecha significa genera o deriva. Los smbolos en minsculas son
los elementos de nuestro alfabeto y se les conoce como Smbolos Terminales,
mientras que las letras maysculas se denominan Smbolos No Terminales (SNT),
debido a que solamente aparecen durante el proceso de la derivacin, pero no
pueden figurar en una cadena finalizada, adems, stos son los smbolos que pueden
ser reemplazados aplicando alguna de las reglas de sustitucin disponibles.
T E O R A D E L A C O M P U T A C I N
95
Asimismo, podemos utilizar la barra vertical | (que significa o) para agrupar de forma
compacta a las reglas de sustitucin de cada SNT. Y si adems reemplazamos el
smbolo C por su valor , el conjunto de reglas anteriores se representa as:
S aA | aB
A aA | b
B bB | b
Definicin de Gramt ica
Una Gramtica es la cuarteta G = (N, , S, P), donde es un alfabeto de Smbolos
Terminales, N es la coleccin de Smbolos No Terminales, S es el Smbolo Inicial (No
Terminal, S N) y P es la coleccin de reglas de sustitucin, tambin llamadas
Producciones. Son stas ltimas las que nos permiten distinguir a las distintas clases
de gramticas, como se indica a continuacin:
Gr amt i c a Regul ar
Una Gramtica Regular (GR) es una cuarteta G = (N, , S, P), donde las
Producciones son de la forma A w, donde A N, mientras que w * $ ( 4 N),
esto es, A es un Smbolo No Terminal, mientras que w puede contener varios
Smbolos Terminales seguidos de uno o ningn SNT, al final de la cadena w, como
ejemplos, podemos citar a las siguientes producciones:
S 0110A | B
A 101A |
B 01 | 0A
Una manera equivalente de denotar a estas producciones es representarlas como
Relaciones, as, para el ejemplo anterior, se representan las producciones como:
P = { (S, 0110A), (S, B), (A, 101A), (A, ), (B, 01), (B, 0A) }
Const ruccin de Gramt icas
Para construir una Gramtica Regular, a partir de una expresin regular, se puede
optar por construir el Diagrama de Transiciones que representa el AFN que acepta al
lenguaje regular dado y de ah obtener las producciones respectivas, como se
muestra en los siguientes ejemplos.
J O R G E E D U A R D O C A R R I N V .
96
Ej empl o 1
Obtener una Gramtica Regular para generar al lenguaje regular: L = a*b 4 a. Primero
construimos el Diagrama de Transiciones correspondiente al AFN que acepta el
lenguaje referido, obtenemos el diagrama mostrado en la Figura 6.2:
Del diagrama anterior se obtiene la gramtica:
S A | aB
A aA | bB
B
Que podemos simplificar al sustituir al SNT B, y nos queda:
S A | a
A aA | b
Ej empl o 2
Obtener una Gramtica Regular para generar al lenguaje regular siguiente:
L = a*b 4 b*a
Construyendo el Diagrama de Transiciones respectivo, se puede obtener uno
semejante al mostrado en la Figura 6.3:
T E O R A D E L A C O M P U T A C I N
97
Y del diagrama anterior, se obtiene la siguiente gramtica:
S A | B
A aA | bC
B bB | aC
C
Esta gramtica se puede simplificar ligeramente sustituyendo el Smbolo C en las
producciones de A y B, con lo que nos queda una gramtica equivalente:
S A | B
A aA | b
B bB | a
Ej empl o 3
Obtener la gramtica regular para el lenguaje L = ( a*b 4 b*a )* y utilizarla para
generar la cadena w = aaaba. Construyendo el DT respectivo, obtenemos el mostrado
en la siguiente figura:
Del diagrama anterior se obtiene que la gramtica buscada es:
S A | B |
A aA | bS
B bB | aS
Entonces, para generar la cadena solicitada tenemos, entre otras, la siguiente
derivacin:
S A aA aaA aaaA aaabS aaabB aaabaS aaaba
J O R G E E D U A R D O C A R R I N V .
98
En muchas ocasiones, con un poco de experiencia, es posible encontrar una
Gramtica Regular sin tener que construir el Diagrama de Transiciones respectivo,
basta con analizar la expresin regular y determinar cuales reglas debe contener la
gramtica para generar al lenguaje en cuestin.
Ej empl o 4
Obtener la Gramtica Regular sin construir el Diagrama de Transiciones para el
lenguaje siguiente:
L = ab ( a 4 b )* b
Analizando la expresin regular, determinamos que primero necesitamos una
produccin para inicializar la cadena con el prefijo ab:
S abA
Posteriormente debemos tener dos alternativas para concatenar la letra a o la b,
tantas veces como se quieran y una produccin final que permita colocar una b al
trmino de la cadena:
A aA | bA | b
Obt encin de Expresiones Regulares
El lenguaje generado por una gramtica G se denota como L(G). Una gramtica
puede ser especificada completamente por medio de sus producciones, as, por
ejemplo: S aS | b, especifica la gramtica que genera al lenguaje L(G) = a*b.
Ej empl o 1
Considrese la gramtica regular G = (N, , S, P), donde = {a, b}, N = {S, A} y
cuyas producciones son:
S bA
A aaA | b |
El Lenguaje generado por esta gramtica L(G) contiene todas las cadenas de la forma
ba
2n
b o de la forma ba
2n
, para n 0, es decir: L(G) = b(a
2
)*(b 4 ).
La tcnica ms confiable para obtener este resultado consiste en expresar las
producciones como ecuaciones, reemplazando las flechas por signos de igual y las
T E O R A D E L A C O M P U T A C I N
99
barras por signo de unin, resultando un sistema de ecuaciones idntico al que se
obtiene cuando tenemos el diagrama de transiciones de un AF, en este caso:
S = bA
A = aaA 4 b 4
De esta forma, y aplicando el Lema de Arden se tiene que: A = (aa)* ( b 4 ), y
reemplazando la A en la primera ecuacin, se tiene: S = b(aa)* ( b 4 .).
Ej empl o 2
Obtener una expresin regular para el lenguaje generado por la gramtica dada por
las siguientes producciones:
S bA | aB |
A abaS
B babS
Expresando el sistema de ecuaciones respectivo, tenemos que:
S = bA 4 aB 4
A = abaS
B = babS
Reemplazando A y B en S tenemos:
S = babaS 4 ababS 4 = (baba 4 abab)S 4
Y aplicando el Lema de Arden resulta finalmente:
S = L(G) = ( baba 4 abab )*
Ej empl o 3
Obtener una expresin regular para el lenguaje generado por la gramtica regular
dada por las producciones siguientes:
S aS | bA | b
A cB
B aS
Expresando las ecuaciones respectivas, tenemos:
S = aS 4 bA 4 b
J O R G E E D U A R D O C A R R I N V .
100
A = cB
B = aS
Reemplazando A y B en S tenemos:
S = aS 4 bcaS 4 b = (a 4 bca)S 4 b
Y aplicando el Lema de Arden resulta:
S = L(G) = (a 4 bca )* b
Ej empl o 4
Obtener una expresin regular para el lenguaje generado por la gramtica dada por
las producciones:
S abA | B | baB |
A bS | b
B aS
Expresando las ecuaciones respectivas, tenemos:
S = abA 4 B 4 baB 4
A = bS 4 b
B = aS
Reemplazando A y B en S tenemos:
S = ab(bS 4 b) 4 aS 4 baaS 4
Reagrupando los trminos y aplicando el Lema de Arden resulta:
S = L(G) = ( abb 4 a 4 baa )* ( abb 4 )
Ej empl o 5
Construir una expresin regular para el lenguaje generado por la gramtica dada por
las producciones:
S aS | bA
A bS
Pretender resolver el sistema de ecuaciones resultante nos dar como solucin un
lenguaje vaco, ya que esta gramtica no puede generar ninguna cadena, puesto que
no existe ninguna produccin terminal (que no tenga smbolos No terminales).
T E O R A D E L A C O M P U T A C I N
101
Teor ema
Un lenguaje L es regular si y slo si est generado por una gramtica regular.
Consecuentemente, por todo lo que hemos visto, tenemos tres maneras equivalentes
de especificacin de un lenguaje: las expresiones regulares, los autmatas finitos y las
gramticas regulares.
Gramt icas Regulares Reversas
Una gramtica cuyas producciones sean de la forma A w, donde A N, y en donde
w ( 4 N) $ *, (esto es: w puede iniciar con uno o ningn SNT seguidos de ninguno,
uno o varios Smbolos Terminales) se le llama Gramtica Regular Reversa, puesto
que genera las cadenas de un lenguaje regular, pero en sentido contrario, es decir de
derecha a izquierda.
Ej empl o
Para obtener la gramtica regular reversa que genere el lenguaje L
1
= a*b 4 b*a, se
requieren de las siguientes producciones:
S Aa | Bb
A Ab |
B Ba |
Para generar la cadena w = aaab, tenemos la siguiente derivacin, la cual inicia con el
ltimo smbolo y se concatenan smbolos a la izquierda, hasta terminar con el primero:
S Bb Bab Baab Baaab aaab
Compare esta gramtica con la siguiente Gramtica Regular Derecha Anloga:
S aA | bB
A bA |
B aB |
Y la derivacin siguiente:
S bB baB baaB baaaB baaa
Resulta fcil comprobar en este caso que el lenguaje generado es: L
2
= ab* 4 ba*.
J O R G E E D U A R D O C A R R I N V .
102
Por lo tanto, podemos concluir que una Gramtica Reversa genera al lenguaje inverso
de la Gramtica Derecha Anloga, es decir L
1
= L
2
R
.
Construir el diagrama de transiciones del AF que acepte el lenguaje generado por una
gramtica regular reversa tambin debe hacerse en sentido contrario, en este caso el
smbolo inicial S representa el estado de aceptacin y cada produccin de la forma
S Aa, significa que existe una transicin del estado A al estado S etiquetada con el
smbolo a, compare las figuras 6.5 y 6.6, que aceptan a los lenguajes L
1
= a*b 4 b*a, y
L
2
= ab* 4 ba*, respectivamente.








De esta manera tenemos una tcnica para construir gramticas regulares y autmatas
finitos para un lenguaje dado, si conocemos el anlogo para el lenguaje inverso.
Ej empl o
Obtener la expresin regular del lenguaje que genera la siguiente gramtica regular
reversa:
S Sa | Ab
A Bb | a
B Ba | b
Expresando las ecuaciones respectivas, tenemos:
S = Sa 4 Ab
A = Bb 4 a
B = Ba 4 b
T E O R A D E L A C O M P U T A C I N
103
Ahora, para resolver este sistema de ecuaciones necesitamos la versin dual del
Lema de Arden que dice:
Lema Dual de Ar den
Una ecuacin de la forma A = Ar 4 s, tiene como solucin nica a: A = sr*, donde r y
s son dos expresiones regulares cualesquiera que no contienen a A.
Por lo tanto, tenemos que B = ba*, entonces A = ba*b 4 a y S = Sa 4 (ba*b 4 a)b, que
nos resulta con: L(G) = S = (ba*b 4 a)ba*.
Propiedades de las Gramt icas Regulares
Uni n
Sea G
1
, una Gramtica Regular con smbolo inicial S
1
, que genera al lenguaje L
1
y sea
G
2
, una Gramtica Regular con smbolo inicial S
2
, que genera al lenguaje L
2
, entonces
la gramtica G
3
que acepta al lenguaje unin L
1
4 L
2
es una Gramtica Regular y se
obtiene juntando las producciones de G
1
y G
2
, y agregando las siguientes
producciones: S
3
S
1
| S
2
.
Ej empl o
Considrese la gramtica regular G
1
que genera al lenguaje L
1
= ba*b, cuyas
producciones son:
S
1
bA
1

A
1
aA
1
| b

Y la gramtica regular G
2
que genera al lenguaje L
2
= b*ab, con producciones:
S
2
bS
2
| ab
Entonces la gramtica regular G
3
que genera al lenguaje L
3
= ba*b 4 b*ab, est dada
por las producciones:
S
3
S
1
| S
2
S
1
bA
1

A
1
aA
1
| b

S
2
bS
2
| ab
J O R G E E D U A R D O C A R R I N V .
104
Conc at enac i n
Sea G
1
, una Gramtica Regular con smbolo inicial S
1
, que genera al lenguaje L
1
y sea
G
2
, una Gramtica Regular con smbolo inicial S
2
, que genera al lenguaje L
2
, entonces
la gramtica G
3
, con smbolo inicial S
1
, que acepta al lenguaje L
1
L
2
es una Gramtica
Regular y se obtiene juntando las producciones de G
1
y G
2
, y modificando las
producciones terminales de G
1
de la siguiente manera: Cada produccin de la forma:
A w, se reemplaza por otra de la forma: A wS
2
.
Ej empl o
Considrese la gramtica regular G
1
que genera al lenguaje L
1
= ba
+
4 a
+
b, cuyas
producciones son:
S
1
bA
1
| aB
1

A
1
aA
1
| a

B
1
aB
1
| b

Y la gramtica regular G
2
que genera al lenguaje L
2
= ( a 4 b )*, con producciones:
S
2
bS
2
| aS
2
|

Entonces la gramtica regular G
3
que genera al lenguaje L
3
= (ba
+
4 a
+
b)(a 4 b)*, est
dada por las producciones:
S
1
bA
1
| aB
1

A
1
aA
1
| aS
2
B
1
aB
1
| bS
2
S
2
bS
2
| aS
2
|

Cer r adur a
Finalmente, sea G
1
, una Gramtica Regular con smbolo inicial S
1
, que genera al
lenguaje L
1
, entonces la gramtica G
3
que acepta al lenguaje L
3
= L
1
* es una
Gramtica Regular cuyo smbolo inicial es S, y que se obtiene modificando las
producciones terminales de G
1
de la siguiente manera: Cada produccin de la forma:
A w, se reemplaza por otra produccin de la forma: A wS, y agregando las
producciones del smbolo inicial: S S
1
| .
T E O R A D E L A C O M P U T A C I N
105
Ej empl o
Considrese la gramtica regular G
1
que genera al lenguaje L
1
= ba
+
4 a, cuyas
producciones son:
S
1
bA
1
| a
A
1
aA
1
| a

Entonces la gramtica regular G
3
que genera al lenguaje L
3
= (ba
+
4 a)*, est dada
por las producciones:
S S
1
|
S
1
bA
1
| aS
A
1
aA
1
| aS

Se invita al lector a que compare estos tres ejemplos con los casos vistos en el
captulo anterior relativos a la construccin de AFN para que constate el paralelismo
que existe entre ambas representaciones, sin embargo, no resulta sencillo construir
una GR para generar el complemento de un lenguaje generado por una gramtica
dada.
Pregunt as
a) Existe algn Lenguaje Regular que no pueda ser generado por una GR?
b) Cmo se puede construir una GR que genere el lenguaje que sea la
concatenacin de dos lenguajes regulares cuyas gramticas son conocidas?
c) Puede construirse una GR para generar un lenguaje que sea la interseccin de
dos lenguajes regulares?
d) Puede construirse una GR para generar el lenguaje complemento de un lenguaje
regular dado?
e) Para quines son tiles las Gramticas Regulares Reversas?
Ejercicios Capt ulo 6
6.1 Construir un AFN que acepte cada uno de los siguientes lenguajes y encontrar
una gramtica regular que los genere:
a) L(G) = a*bc
b) L(G) = ( a 4 b ) c*
c) L(G) = ( a 4 b )* c
d) L(G) = ( a 4 b )* c*
J O R G E E D U A R D O C A R R I N V .
106
e) L(G) = b
+
4 a ( a 4 b )
+
b
f) L(G) = a
+
ba 4 b( a 4 b )*
6.2 Obtener una gramtica regular que genere cada uno de los siguientes lenguajes,
sin construir el diagrama de transiciones:
a) L(G) = a*baa
b) L(G) = ( a 4 ba 4 ac)*
c) L(G) = a*bc
+
4 cb
+

d) L(G) = a
+
b ( b 4 a )
+

e) L(G) = b
+
a 4 ab( a 4 b )*
6.3 Construir una gramtica regular que genere el lenguaje aceptado por el siguiente
AFN:
6.4 Construir una gramtica regular que genere el siguiente lenguaje:
L(G) = { w {0, 1}* | w es la representacin binaria de 5, 10, 20, 40, 80, }
6.5 Construir una gramtica regular que genere el lenguaje aceptado por el AFNG
mostrado en la figura 6.8.
6.6 Construir un AFN y encontrar la expresin regular para el lenguaje que genera
cada una de las siguientes gramticas regulares:
a) S bA | aB | baB, A bS | b, B aA
b) S aA | bB, A bS | b, B a
c) S A | bS, A bB | bC, B aC, C a
d) S aA | bB, A aA | bA | , B aA | bC, C aB | bC
e) S aA | bB, A bA | aS | b, B aS | bC, C aB | bC
f) S aA | bC, A aA | bB, B aB | bB | b, C aB | bA
g) S aC | bS, A aA | bS, B aS | bA, C aB | bC | b
T E O R A D E L A C O M P U T A C I N
107
6.7 Construir un AFN y encontrar la expresin regular para el lenguaje que genera la
siguiente gramtica regular reversa:
S Ab | Aa | Bb, A Sa | b, B Sb |


T E O R A D E L A C O M P U T A C I N
109
Gramt icas Libres del Cont ext o
Se define el concepto de Gramtica Libre del Contexto, Se analizan diversos algoritmos para la depuracin de
anomalas en las Gramticas Libres del Contexto. Se discuten y se analizan las formas normales de Chomsky y de
Greibach, as como el algoritmo CYK.
En el captulo anterior tratamos sobre las gramticas regulares y surge de manera
inmediata una pregunta: Existe otro tipo de gramticas que nos permitan generar
lenguajes que no sean regulares?
Por ejemplo, si consideramos a la gramtica siguiente: S aSb | , vemos que no es
una Gramtica Regular, puesto que no satisface la definicin del captulo anterior;
entonces, para saber que lenguaje genera, hagamos un anlisis de las cadenas que
podemos obtener por medio de esta gramtica, para ello, realizamos algunas
derivaciones:
S
S aSb ab
S aSb aaSbb aabb
S aSb aaSbb aaaSbbb aaabbb
S aSb aaSbb aaaSbbb aaaaSbbbb aaaabbbb, etc.
Es fcil llegar a la conclusin que esta gramtica genera al lenguaje formado por las
cadenas que tienen una cierta cantidad de as seguida por la misma cantidad de bs, es
decir, del lenguaje siguiente:
L = { , ab, aabb, aaabbb, aaaabbbb, } = { a
n
b
n
| n 0 }
No confundir este lenguaje con el Lenguaje Regular a*b*, ya que este nuevo lenguaje
solamente contiene a las cadenas de aquel que satisfacen la restriccin dada, y es por
esto que se necesita de una gramtica ms poderosa para generarlo.
Capt ul o
7
J O R G E E D U A R D O C A R R I N V .
110
Definicin de Gramt ica Libre del Cont ext o
Supongamos que en una gramtica se permiten producciones de la forma A w,
donde w puede contener cero, uno o ms SNT y adems se permite que stos
aparezcan en cualquier parte de la cadena w. Obviamente sta no sera una
Gramtica Regular.
A este tipo de gramtica se le denomina Gramtica Libre del Contexto o tambin
Gramtica Independiente del Contexto (GIC). Formalmente definimos a una GIC como
la cuarteta G = (N, , S, P), donde es un alfabeto, N es la coleccin de smbolos no
terminales, S es el smbolo inicial (S N) y P es el conjunto de Producciones, que son
de la forma A w, donde A N y w (N 4 )*.
Se les llama Libres o Independientes del Contexto a este tipo de Gramticas, debido a
que el smbolo no terminal del lado izquierdo de la produccin puede ser reemplazado
en una derivacin cualquiera, sin ningn tipo de condicionamientos.
Dado que esta definicin es ms amplia, se puede agregar que toda gramtica regular
tambin pertenece a la clase de las GICs.
Not ac i n de Bac k us-Naur
La notacin de Backus-Naur es una meta-sintaxis para la representacin de las GICs,
en particular, se usa para describir las gramticas de los lenguajes computacionales,
tales como el ALGOL, Pascal y otros, en el diseo de compiladores. Dentro de los
metasmbolos utilizados por esta notacin se encuentran los siguientes:
Los parntesis angulares y , para denotar los nombres de los smbolos no
terminales.
La barra vertical | para denotar o.
La doble flecha para denotar las derivaciones.
Los dobles dos puntos seguidos de igual ::= se usan para denotar una produccin,
tambin se interpreta como es definido como. (equivale a la flecha )
Los parntesis cuadrados o corchetes [ y ] se usan para denotar elementos
opcionales.
Las llaves { y } se usan para trminos repetitivos.
El empleo de esta notacin est fuera del objetivo de esta obra, nos limitamos a
presentarla como un vnculo hacia otras obras especializadas en compiladores.
T E O R A D E L A C O M P U T A C I N
111
Ej empl o
Consideremos una gramtica muy simplificada de nuestra lengua espaola:
enunciado sujeto verbo predicado punto
sujeto artculo sustantivo comn | sustantivo propio
verbo quiere | compra | come
predicado dulces | croquetas | flores
artculo El | Un
sustantivo comn nio | perro
sustantivo propio Juanito | Mara
punto .
Utilizando las producciones anteriores podemos generar al siguiente enunciado: el
nio quiere dulces., por medio de la siguiente derivacin:
enunciado sujeto verbo predicado punto
artculo sustantivo comn verbo predicado punto
El sustantivo comn verbo predicado punto
El nio verbo predicado punto
El nio quiere predicado punto
El nio quiere dulces punto El nio quiere dulces.
Pero con esta gramtica tambin se pueden derivar algunos enunciados sin mucho
sentido, como por ejemplo: Un perro compra dulces., O Juanito come flores.,
puesto que las reglas gramaticales son reglas sintcticas y no semnticas. Por otro
lado, estas pocas reglas son insuficientes para construir otros enunciados con un
significado correcto como por ejemplo: El nio quiere un perro..
rboles de Derivacin
A veces es til representar la derivacin de una cadena por medio de un rbol, esto
nos permite visualizar de qu manera se gener dicha cadena. El rbol de derivacin
se construye colocando al smbolo inicial en la raz del rbol, y se crea una rama para
cada smbolo de la produccin que se utiliz para reemplazar ese smbolo, en el
mismo orden en que aparecen. Se procede del mismo modo para cada Nodo que
contenga a un SNT. Los nodos que contengan smbolos terminales no tienen hijos y
sern las hojas del rbol.
J O R G E E D U A R D O C A R R I N V .
112
Ej empl o 1
La derivacin de la cadena: El nio quiere dulces. se puede representar
grficamente por medio del rbol de derivacin mostrado en la figura 7.1.
Ej empl o 2
Considere la GIC siguiente:
S AB
A aA | a
B bB | b
A continuacin se muestran 3 maneras distintas de derivar a la cadena w = aabbb:
S AB AbB AbbB Abbb aAbbb aabbb
S AB aAB aaB aabB aabbB aabbb
S AB aAB aAbB aAbbB aAbbb aabbb
Podemos verificar que el rbol de derivacin de esta cadena es el mismo, para todas
las derivaciones, y es el que se muestra en la figura 7.2 a continuacin:
T E O R A D E L A C O M P U T A C I N
113
Se puede comprobar que esta propiedad se mantiene para cualquier otra cadena que
generemos con esta gramtica, en que, an cuando existan distintas derivaciones,
encontramos que siempre se tiene una misma representacin grfica para todos los
casos. Esta caracterstica nos permite afirmar que la gramtica en cuestin no es
Ambigua.
Ambigedad
Ahora consideremos a la GIC siguiente, por medio de la cual podemos generar
cadenas del lenguaje L = { w {a, b}* | N
a
(w) = N
b
(w) }.
S Sab | Sba | bSa | aSb |
Por ejemplo, la cadena w = ababba se puede derivar de estas dos formas:
S Sba Sabba Sababba ababba
S Sba aSbba abSabba ababba
En este caso, los rboles de derivacin obtenidos para cada alternativa, son distintos
uno del otro, y sin embargo, ambos producen la misma cadena, como se aprecia en la
siguiente figura:
Cuando hay dos o ms rboles de derivacin distintos para una misma cadena, se
dice que la gramtica en cuestin es Ambigua.
Un ejemplo de Ambigedad en nuestro idioma sera la frase Juan vio a una
muchacha con un telescopio, ya que puede interpretarse como que Juan observ a la
muchacha por medio del telescopio, pero tambin se entiende como que la muchacha
era quin portaba un telescopio, en estos casos, se requiere buscar otras alternativas
equivalentes que estn libres de ambigedades, por ejemplo, podemos decir Juan vio
a una muchacha a travs de un telescopio, para la primera interpretacin de la frase,
o bien, Juan vio a una muchacha que portaba un telescopio, para el segundo caso.
J O R G E E D U A R D O C A R R I N V .
114
Ej empl o 1
Consideremos una parte de la gramtica de un lenguaje de programacin:
S IF A THEN S | IF A THEN S ELSE S | otras
Donde A es una expresin lgica y S es una instruccin del programa, entonces
podemos generar la siguiente derivacin:
IF A THEN IF A THEN S ELSE S
Aqu se presenta un problema de ambigedad: El ELSE corresponde al primer IF o
al segundo? Por una convencin, se considera que el ELSE pertenece al segundo IF,
pero esto es una regla Semntica, no de sintaxis, para coincidir con ese significado,
se debe utilizar la siguiente gramtica equivalente, la cual no tiene ambigedades:
S S
1
| S
2

S
1
IF A THEN S
1
ELSE S
1
| otras
S
2
IF A THEN S | IF A THEN S
1
ELSE S
2

Ej empl o 2
Considere la siguiente gramtica, donde N = {S} y = { +, , (, ), n
1
, n
2
, n
3
}:
S S + S | S S | (S) | n
1
| n
2
| n
3

Con esta GIC podemos hacer la derivacin que se muestra a continuacin, en la que
se muestra correctamente que primero se realiza la suma y posteriormente el
producto:
S S S (S) S (S + S) S (n
1
+ S) S (n
1
+ n
2
) S (n
1
+ n
2
)n
3
Sin embargo, esta gramtica es Ambigua, ya que la cadena n
1
+ n
2
n
3
puede ser
generada de dos maneras distintas, con diferentes interpretaciones, en un primer caso
se trata de la suma de un producto, mientras que en el segundo caso es el producto
de una suma:
S S + S S + S S n
1
+ S S n
1
+ n
2
S n
1
+ n
2
n
3
S S S S + S S n
1
+ S S n
1
+ n
2
S n
1
+ n
2
n
3
Los rboles de derivacin respectivos se muestran en la figura 7.4:
T E O R A D E L A C O M P U T A C I N
115
En este caso, el emplear un solo SNT es la causa de esta ambigedad, por lo que un
recurso generalmente utilizado para encontrar una gramtica equivalente no ambigua
consiste en la introduccin de varios SNTs adicionales.
La gramtica siguiente es una gramtica equivalente no ambigua:
S S + T | T
T T F | F
F (S) | n
1
| n
2
| n
3

La derivacin de la cadena ( n
1
+ n
2
) n
3
requiere de ms pasos:
S T T F F F (S) F ( S + T ) F ( T + T ) F ( F + T ) F
( F + F ) F ( n
1
+ F) F ( n
1
+ n
2
) F ( n
1
+ n
2
) n
3
Sin embargo, la ventaja de esta nueva gramtica es que existe una sola forma de
derivar la cadena: n
1
+ n
2
n
3
, que se interpreta como la suma de un producto, tal
como se entiende si respetamos la precedencia de la multiplicacin sobre la suma.
S S + T S + T F S + T F T + T F F + T F F + F F
n
1
+ F F n
1
+ n
2
F n
1
+ n
2
n
3
Depuracin de Gramt icas Independient e del Cont ext o
En muchas ocasiones, al obtener el conjunto de producciones que constituyen una
gramtica, encontramos que algunas producciones pueden resultar superfluas, as
como tambin algunos SNTs pueden ser intiles.
Por eso es necesario contar con una metodologa que nos permita eliminar tales
producciones y simplificar la gramtica sin afectarla. Este proceso no pretende
encontrar la gramtica ptima, pero si nos permite eliminar las anomalas de
construccin gramatical ms perjudiciales.
J O R G E E D U A R D O C A R R I N V .
116
Con el fin de observar la aplicacin de los siguientes algoritmos, considrese la
siguiente gramtica como modelo, la cual presenta las diversas anomalas a detectar
y erradicar:
S aA | B | D
A aA | bA | B |
B b | aF
C abd
E cE
F
Al gor i t mo 1
El primer paso consiste en sustituir a las producciones psilon, bajo el siguiente
criterio: debemos quitar a todas las producciones psilon, con la posible excepcin de
la produccin S , ya que de presentarse este caso, significa que L(G).
Sea la gramtica G = (N, , S, P) que contiene producciones psilon anulables, se
puede obtener una gramtica equivalente G = (N, , S, P) que no tenga
producciones psilon, de modo que L(G) = L(G), aplicando el siguiente criterio:
Para cada produccin de la forma A , que se desea eliminar, se seleccionan todas
las producciones en las que aparece el smbolo A del lado derecho y se substituye al
SNT A por psilon, obteniendo las nuevas producciones que se agregarn a la
gramtica G, a cambio de la eliminacin de la produccin A .
Se repite el procedimiento para las producciones psilon que surjan de esta
substitucin, excepto en los casos en que se obtengan duplicados de alguna
produccin psilon, que previamente se hubiera eliminado, que ya no se volvern a
tomar en cuenta; as como a las producciones del tipo A A, que se generen durante
este proceso. Y a las que simplemente descartamos de la gramtica, por que no
contribuyen en nada a la gramtica.
Sobre la Gramtica Modelo
En nuestro ejemplo existen dos producciones psilon: A y F , ahora
analicemos las siguientes derivaciones, en donde interviene el smbolo No Terminal A
y se aplica la primera produccin psilon:
T E O R A D E L A C O M P U T A C I N
117
S aA a
A aA a
A bA b
Entonces, para eliminar la produccin A , debemos agregar, a cambio, las tres
producciones que surgen de estas tres derivaciones: S a, A a y A b.
Ahora analicemos la siguiente derivacin, en donde interviene el smbolo No Terminal
F y se aplica la segunda produccin psilon:
B aF a
Por lo tanto, se agrega la produccin B a, en sustitucin de la produccin F , la
cual se elimina, quedando finalmente la gramtica G equivalente siguiente:
S aA | B | D | a
A aA | bA | B | a | b
B b | aF | a
C abd
E cE
Consecuentemente, se tiene que N = { S, A, B, C, E }, mientras que no cambia.
Al gor i t mo 2
El siguiente paso consiste en eliminar Smbolos No Terminales Superfluos, es decir,
aquellos SNTs que no van a participar en la produccin de alguna cadena generada
por la gramtica en cuestin.
Sea la gramtica G = (N, , S, P) que contiene Smbolos No Terminales Superfluos,
podemos obtener una gramtica equivalente G = (N, , S, P) que no los tenga, de
modo que L(G) = L(G), por medio del siguiente algoritmo:
1. Se inicializa N = y a P con todas las producciones de G que sean de la forma:
A w, donde w contiene solamente Smbolos Terminales del lado derecho, con la
posible excepcin de S , es decir, w *.
2. Se aaden a N todos los no terminales que aparezcan en el lado izquierdo de
alguna de las producciones que fueron incorporadas a P en el paso anterior.
J O R G E E D U A R D O C A R R I N V .
118
3. De entre las producciones restantes de G, se agregan a P a aquellas que
contengan a cualquiera de los SNTs ya incluidos en N, adems de cualquier otro
Smbolo Terminal, es decir, aadir a P las producciones de la forma A w donde
w (N 4 )*.
4. Se repiten los pasos 2 y 3 hasta que ya no se puedan aadir ms SNTs a N ni
ms producciones a P.
5. Se crea a con todos los Smbolos Terminales que aparezcan en el lado derecho
de alguna de las producciones anteriores.
Sobre la Gramtica Modelo
Aplicando el paso 1 de este algoritmo a la gramtica modelo obtenida despus del
primer algoritmo, incorporamos a P las producciones que tengan solamente smbolos
terminales en el lado derecho, y que son las producciones siguientes:
S a
A a | b
B b | a
C abd
Entonces agregamos al conjunto N los Smbolos No Terminales que aparecen del
lado izquierdo en las producciones anteriores, es decir: N = { S, A, B, C }.
Luego, analizando las producciones restantes que contengan a alguno de los No
Terminales de N junto con cualquier terminal, encontramos las cinco producciones
siguientes, que se agregarn a P junto con las 6 anteriores:
S aA | B
A aA | bA | B
Como ya no hay ms Smbolos No Terminales ni producciones que aadir a nuestra
gramtica, se da por terminado el proceso creando el conjunto de smbolos
terminales: = { a, b, d }.
Detectamos que los smbolos D, E y F son superfluos (F se volvi superfluo al eliminar
la produccin F ) y como consecuencia de lo anterior, desaparece tambin el
Smbolo Terminal c, junto con las siguientes producciones: S D, E cE y B aF.
T E O R A D E L A C O M P U T A C I N
119
Dado que se trata de una gramtica regular, podemos verificar que esta eliminacin
se relaciona con el hecho de quitar estados no deseados de un autmata finito.
Al gor i t mo 3
El tercer paso consiste en eliminar las producciones unitarias, las cuales son de la
forma A B, donde A y B son SNTs (y que equivalen a las transiciones psilon de un
autmata finito), ya que estas producciones son consideradas como improductivas y
es deseable que sean erradicadas.
Sea la gramtica G = (N, , S, P) que contiene Producciones Unitarias, podemos
obtener una gramtica equivalente G = (N, , S, P) que no las tenga, de modo que
L(G) = L(G), por medio del siguiente criterio:
Sea la produccin unitaria A B, si las producciones de B son de la forma B w,
entonces aplicamos la siguiente derivacin: A B w, para cada produccin de B y
se puede observar que es posible reemplazar a la produccin unitaria A B por
todas las producciones de la forma: A w que se obtengan de las derivaciones
anteriores.
Sobre la Gramtica Modelo
En nuestra gramtica modelo existen dos producciones unitarias: S B y A B.
La eliminacin de estas producciones unitarias se hace analizando las derivaciones
que haya para todas las producciones del SNT B, que en este caso son: B b | a,
por lo tanto, las derivaciones son:
S B b S B a
A B b A B a
Este procedimiento nos genera las nuevas producciones, que reemplazarn a las
producciones unitarias anteriores: S b | a y A b | a.
Despus de reemplazar las producciones unitarias, la gramtica equivalente queda
as (omitiendo las producciones duplicadas):
S aA | b | a
A aA | bA | a | b
B b | a
C abd
J O R G E E D U A R D O C A R R I N V .
120
Al gor i t mo 4
El ltimo paso consiste en eliminar las producciones intiles, es decir, las que nunca
se van a poder aplicar, ya que no son accesibles desde el smbolo inicial S.
Sea la gramtica G = (N, , S, P) que contiene Producciones Intiles, podemos
obtener una gramtica equivalente G = (N, , S, P) que no las tenga, de modo que
L(G) = L(G), por medio del siguiente algoritmo:
1. Se inicializan los siguientes conjuntos: N = {S}, = y P =
2. Para cada SNT A N, con producciones A w, se hace lo siguiente:
Agrega la produccin A w al conjunto P
Agrega todos los Smbolos No Terminales de w, al conjunto N
Agrega todos los Smbolos Terminales de w, al conjunto
3. Se repite el paso 2 hasta que ya no se puedan aadir ms producciones.
Sobre la Gramtica Modelo
Aplicando este algoritmo en la gramtica modelo, primero inicializamos al conjunto N
con el smbolo N = {S}, entonces agregamos a P las tres producciones que tiene el
smbolo S:
S aA | b | a
Agregamos ahora los Smbolos Terminales a y No Terminales a N, obteniendo
entonces: N = { S, A } y = { a, b }, ahora agregamos las producciones existentes
para A:
A aA | bA | a | b
Como esto ya no modifica ni a N ni a , entonces damos por terminado el proceso,
encontrando que las producciones intiles que desaparecen son:
B b | a
C abd
Ya que B y C nunca formarn parte de ninguna derivacin a partir de S, son
consideradas producciones intiles (y que en un AF corresponden a estados
inaccesibles) y como consecuencia de lo anterior, tambin se elimina al smbolo
terminal d del alfabeto.
T E O R A D E L A C O M P U T A C I N
121
Ej empl o 1
Depurar de anomalas la siguiente gramtica:
S aA |
A bA | aB |
B bB
Eliminando la produccin A (S permanece) queda entonces como sigue:
S aA | a |
A bA | b | aB
B bB
Aplicando el algoritmo 2 se elimina el smbolo B, quedando la gramtica como:
S aA | a |
A bA | b
Los algoritmos 3 y 4 no modifican el resultado anterior.
Ej empl o 2
Depurar de anomalas la siguiente gramtica:
S A | Aa
A B
B C | b
C b | ab
El algoritmo 1 no aplica, mientras que el algoritmo 2 nos deja igual la gramtica,
aplicando el tercer algoritmo nos elimina las producciones unitarias, quedando:
S b | ab | Aa
A b | ab
B b | ab
C b | ab
Y aplicando el cuarto algoritmo desaparecen los SNTs B y C, quedando solo:
S b | ab | Aa
A b | ab
J O R G E E D U A R D O C A R R I N V .
122
Una simplificacin adicional consiste en sustituir al smbolo A en las producciones de
S, debido a que contienen terminales solamente, por lo que resulta:
S b | ab | ba | aba
Ej empl o 3
Depurar de anomalas la siguiente GIC:
S AbaC
A AB
B b |
C D |
D d
E a |
Eliminando las producciones psilon, obsrvese que las producciones: A A y E
simplemente desaparecen, pues la primera es idntica, y el smbolo E de la segunda
no figura en ninguna produccin, por tanto, la GIC equivalente queda como sigue:
S AbaC | Aba
A AB
B b
C D
D d
E a
Ahora aplicando el primer paso del segundo algoritmo, queda como sigue:
B b
D d
E a
Entonces agregamos al conjunto N los Smbolos No Terminales que aparecen del
lado izquierdo en las producciones anteriores: N = { B, D, E }, lo que nos permite
agregar a la produccin: C D, aadiendo el SNT C al conjunto N, pero entonces ya
no hay ms producciones que aadir y por lo tanto la gramtica no existe, ya que no
se incluy el smbolo inicial S en N. El lenguaje generado por esta GIC es .
T E O R A D E L A C O M P U T A C I N
123
Forma Normal de Chomsky
1

Una Gramtica Independiente del Contexto est en la Forma Normal de Chomsky si
todas las producciones son de la forma S (donde S es el Smbolo Inicial) o de la
forma A a, donde a , o de la forma A BC; donde A, B y C son SNTs, es decir,
del lado derecho de las producciones solo se permite que aparezca un solo Smbolo
Terminal o dos SNTs, con la posible excepcin de S .
Cualquier GIC puede ser transformada a la Forma Normal de Chomsky, primero se
tienen que aplicar el procedimiento anterior para depurar la gramtica y eliminar las
producciones , los smbolos intiles y las producciones unitarias de G.
Ej empl o 1
Sea la GIC, sobre el alfabeto = { a, b }, que genera de manera no ambigua al
lenguaje formado por las cadenas no vacas, que contienen la misma cantidad de a
que b y que est libre de anomalas:
S bA | aB
A bAA | aS | a
B aBB | bS | b
Las nicas dos producciones que previamente estn normalizadas, y a las cuales no
se les debe hacer nada, son: A a y B b
Ahora debemos definir dos producciones nuevas, para los Smbolos Terminales, que
se substituirn en las producciones que no estn an normalizadas:
C
a
a
C
b
b
Entonces, podemos expresar las seis producciones restantes as:
S C
b
A | C
a
B
A C
b
AA | C
a
S
B C
a
BB | C
b
S

1
El lingista, profesor e intelectual estadounidense Noam Chomsky es fundador de la teora generativo-transformacional que ha
revolucionado la lingstica. Trata la gramtica dentro de la teora general del lenguaje: esto es, Chomsky cree que junto a las
reglas gramaticales de cada lengua concreta, existen adems unas universales comunes a todas las lenguas, lo que indica que
cualquier persona posee la capacidad innata de producir y entender el lenguaje.
J O R G E E D U A R D O C A R R I N V .
124
Cuatro producciones quedan normalizadas con este cambio, luego, para modificar las
producciones con tres Smbolos No terminales, agregamos las producciones:
D
1
AA
D
2
BB
Reemplazando estos nuevos Smbolos No Terminales en las dos producciones
restantes, obtenemos finalmente la GIC equivalente en la FNCh:
S C
b
A | C
a
B
A C
b
D
1
| C
a
S | a
B C
a
D
2
| C
b
S | b
C
a
a
C
b
b
D
1
AA
D
2
BB
Ej empl o 2
Encontrar la GIC en FNCh equivalente a la siguiente GIC simplificada:
S aA | a | BAb
A ab | aAb
B b
Las nicas dos producciones que previamente estn normalizadas son:
S a
B b
Ahora debemos definir la nueva produccin C
a
a, para sustituir al smbolo terminal
a; no se requiere definir una nueva produccin para el smbolo b, ya que la produccin
B b es nica para ese No Terminal y se puede utilizar para ser reemplazada en la
GIC.
Reemplazando los smbolos B y C
a
en las cuatro producciones de la GIC original que
no estn normalizadas, obtenemos:
S C
a
A | BAB
A C
a
B | C
a
AB
T E O R A D E L A C O M P U T A C I N
125
Dos de ellas an no estn normalizadas, para ello, definimos una produccin ms:
D
1
AB
Por lo tanto, la GIC equivalente en la FNCh queda finalmente as:
S C
a
A | a | BD
1
A C
a
B | C
a
D
1
B b
C
a
a
D
1
AB
Algorit mo CYK (Cocke, Younger y Kasami)
Sea G una GIC en la forma Normal de Chomsky y sea w una cadena cualquiera de
*, este algoritmo nos permite determinar si dicha cadena puede ser o no generada
por esta gramtica, y se basa en la idea de construir un rbol de derivacin para la
cadena w, pero en sentido inverso, es decir, partiendo desde las hojas (los smbolos
terminales) y tratar de llegar a la raz (el Smbolo Inicial S), si es posible lograrlo,
significa que la cadena puede ser generada por esa gramtica.
La ventaja de utilizar la gramtica en la FNCh es que el rbol de derivacin es un
rbol binario, y por tanto, tiene el menor nmero posible de combinaciones.
Ej empl o 1
Determinar si la cadena w = bab puede ser generada por la siguiente GIC, que est
en la FNCh:
S AB | BC
A BA | a
B CC | b
C AB | a
Como se trata de una cadena de slo tres smbolos, tenemos solamente dos
estructuras de rbol de derivacin binarios posibles, las cuales se muestran en la
figura 7.5, pero desconocemos los smbolos que ocupa cada uno de los vrtices del
rbol que no son hoja, por lo que las indicamos con el signo de interrogacin. El
objetivo es ir reemplazndolos por los SNT correspondientes.
J O R G E E D U A R D O C A R R I N V .
126
Las producciones con smbolos terminales nos permiten subir un nivel en la
sustitucin de las incgnitas de stos rboles, algunas de las cuales pueden tener
ms de una alternativa, como se puede apreciar en la figura 7.6:
Los dems niveles se debern ir reemplazando con las producciones que nos
permitan generar los pares de No Terminales posibles, como se aprecia en la figura
7.7:
Finalmente, en la figura 7.8, llegamos a determinar las posibilidades de la raz, que en
ambos casos contienen al smbolo S, como es posible construir un rbol de derivacin
a partir del smbolo S, se concluye que esta gramtica si genera a la cadena w = bab.
T E O R A D E L A C O M P U T A C I N
127
Adems se puede observar que esta gramtica es ambigua, ya que ambas
derivaciones contienen al smbolo S en su raz.
Este procedimiento se vuelve tremendamente engorroso si se pretende dibujar a
todos los rboles posibles para cadenas ms grandes, una cadena de longitud 4 tiene
5 posibles rboles de derivacin, y una cadena de longitud 5 tendr 14 combinaciones
posibles, y as sucesivamente.
En vez de ello, se hace uso del algoritmo CYK, con el cual se puede construir la
siguiente tabla, de abajo hacia arriba, y de forma piramidal, en la cual se resumen
todas las posibles formas de los rboles de derivacin:
Los primeros dos pasos, para j = 1 y 2, se asemejan a lo descrito anteriormente, pero
resume en cada celda el anlisis hecho para ambos rboles:
j = 2 { S, A } { S, C }
j = 1 { B } { A, C } { B }
b a b
Tabla 7.1
Finalmente, para j = 3, la obtencin de los elementos que constituyen la celda se
obtiene de la unin de ambos rboles, que son las dos maneras de sumar 3:
Primero, para la combinacin 1 + 2 (las celdas que se identifican con el smbolo ) y
luego con 2 + 1, las celdas identificadas por el smbolo . Recordando que las parejas
de Smbolos No Terminales siempre se leen de izquierda a derecha,
independientemente de que una celda est en un nivel inferior o superior a la otra.
j = 3 { S, C }
j = 2 { S, A } { S, C }
j = 1 { B } { A, C } { B }
b a b
Tabla 7.2
Ej empl o 2
Ahora queremos determinar si la cadena w = abab puede ser generada por la misma
gramtica.
Aplicando el algoritmo, obtenemos la tabla 7.3, ah podemos observar que la tabla
anterior est contenida en ella, solamente aparecen las nuevas celdas al inicio de
J O R G E E D U A R D O C A R R I N V .
128
cada fila. Para obtener el contenido de la cuarta lnea, hay que analizar las tres
posibles combinaciones: 1 + 3, 2 + 2 y 3 + 1; indicadas en las celdas por los smbolos
, y , respectivamente. Finalmente, podemos observar que una celda se
construye por medio de las celdas inferiores que forman las diagonales convergentes
a dicha celda, independientemente de la posicin de la misma en la pirmide.
j = 4 { B }
j = 3 { B } { S, C }
j = 2 { S, C } { S, A } { S, C }
j = 1 { A, C } { B } { A, C } { B }
a b a b
Tabla 7.3
Dado que S no se encuentra en la parte superior de la tabla, concluimos que w no
puede ser generado por dicha gramtica.
Forma Normal de Greibach
Otra Forma Normal importante en las Gramticas Independientes del Contexto es la
Forma Normal de Greibach (FNG), la cual se define as:
Una GIC est en FNG si todas sus producciones son de la forma: A a, en donde a
es un Smbolo Terminal, a y ( 4 N)*, con la posible excepcin de S . Es
decir que se requiere que toda produccin tenga un smbolo terminal al principio, y por
tanto, se incluye de forma excepcional a la produccin de la cadena vaca.
Ej empl o 1
Sea la siguiente GIC encuentre una equivalente en la FNG.
S bS | AcS | a
A bA | Ba
B aB | b
Podemos observar que las producciones de B ya estn normalizadas, por lo que
bastar reemplazar las producciones de B en la segunda produccin de A, que inicia
con ese smbolo, para normalizarlas:
A bA | aBa | ba
T E O R A D E L A C O M P U T A C I N
129
Similarmente, reemplazando las producciones de A, ya normalizadas, por la inicial de
la segunda produccin de S tenemos que tambin quedan normalizadas:
S bS | bAcS | aBacS | bacS | a
Reuniendo todas producciones anteriores, el resultado final en la FNG es:
S bS | bAcS | aBacS | bacS | a
A bA | aBa | ba
B aB | b
Teor ema de l a Rec ur si vi dad
Si el SNT A tiene producciones de la forma A A y otras producciones de la forma
A , podemos eliminar las producciones recursivas a la izquierda por medio de la
introduccin de un nuevo SNT A y entonces reemplazamos las producciones
anteriores por las siguientes:
A | A
A | A
En ocasiones, encontrar una GIC equivalente en la FNG, requiere de la aplicacin del
teorema de la recursividad.
Ej empl o 2
Sea la siguiente GIC encuentre una equivalente en la FNG.
S SbS | ScS | a
Ahora aplicando el teorema de la recursividad, identificamos que = a , mientras que

1
= bS y
2
= cS, por lo que nos queda:
S aS | a
S bS | cS | bSS | cSS
Segunda For ma Nor mal de Gr ei bac h
Una GIC est en la SFNG si todas sus producciones son de la forma: A a, donde
a y N*. Es decir que se requiere que toda produccin tenga un smbolo
terminal al principio, seguido de uno, varios o ningn SNT.
Una muestra de esta forma es la que se obtuvo en el ejemplo previo.
J O R G E E D U A R D O C A R R I N V .
130
Ej empl o 3
Sea la siguiente GIC en FNCh, encuentre una gramtica equivalente en la FNG.
S AA | a
A SA | b
Primero reemplazamos las producciones de S en la primera produccin para A,
(tambin se hubiera podido reemplazar la A en la produccin correspondiente al
smbolo S), resultando que:
A AAA | aA | b
Ahora aplicamos el teorema de la recursividad, de donde resulta:
A aA | b | aAA | bA
A AA | AAA
Ahora reemplazamos la A inicial en la primera produccin, quedando normalizada:
S aAA | bA | aAAA | bAA | a
Finalmente reemplazamos la A inicial en las producciones de A, quedando:
A aAA | bA | aAAA | bAA | aAAA | bAA | aAAAA | bAAA
Reuniendo los resultados, la gramtica equivalente en la segunda FNG es:
S aAA | bA | aAAA | bAA | a
A aA | b | aAA | bA
A aAA | bA | aAAA | bAA | aAAA | bAA | aAAAA | bAAA
Pregunt as
a) Es posible que una Gramtica Regular sea Ambigua?
b) Es posible encontrar una gramtica en la FNCh que genere a un LR?
c) Se puede considerar que toda Gramtica Regular se encuentra en la FNG?
d) Sea G una Gramtica Regular Inversa. Puede encontrarse una gramtica
equivalente en la FNG?
e) Es posible escribir un algoritmo semejante al CYK para gramticas que no estn en
la FNCh?
f) Garantiza el algoritmo CYK que siempre es posible determinar si una cadena
puede ser generada o no por una gramtica dada?
T E O R A D E L A C O M P U T A C I N
131
Ejercicios Capt ulo 7
7.1 Depurar las siguientes gramticas regulares y encontrar una gramtica
equivalente libre de anomalas, para cada uno de los siguientes casos:
a) S a | aA | B
A aB | dA
B eA
C b
b) S aA | bA | a
A aA | bbA |
c) S abA
A ccC
B dd | D
C a | eA
D f
E gF
d) S a | aA | B
A B | D |
B A | b
e) S A
A a | B
B A |
7.2 Depurar cada una de las siguientes gramticas independientes del contexto y
encontrar una gramtica equivalente libre de anomalas:
a) S AB
A aA | abB | aCa
B bA | BB |
C
D dB | BCB
b) S aB
A bcCCC | dA
B aB | e
C fA
D Dgh
c) S A | AA | AAA
A ABa | ACa | a
B ABa | Ab |
C Cab | CC
D CD | Cd | CEa
E b
d) S D | aE | bCD
A Cd | CSa | bB
B aB | bA
C Cab | cB
D aA | Ca | b
E BEa | DBb |
e) S D | aED | bCD
A Cd | CSa | bB
B aB | bA
C Cab | cB
D aA | Ea | b
E Ea | DBb |
f) S DB | aE | bCD
A Cd | CSa | bA
B aB | bS |
C Cab | cAE
D aA | Ca | b
E BEa | Dab
J O R G E E D U A R D O C A R R I N V .
132
g) S a | aA | B | C
A aB |
B Aa
C bCD
D ccc
h) S aAb | cEB | CE
A dBE | eeC
B ff | D
C gFB | ae
D h
i) S Cd | CSb | bEA
A S | aE | aCD
B aB | bSC
C Cab | aB
D aA | Cb | b
E BEa | DBb |
j) S AC | bC | aAF
A Sb | Db | a
B bB | Eb
C SC | Ba |
D bEB | aE
E Bba | aE
7.3 Encontrar la gramtica en Forma Normal de Chomsky equivalente a cada una de
las gramticas libres de anomalas siguientes:
a) S AB | ac |
A aB | bBbA
B b
b) S aA | a | Ab
A aBb
B b | Aa
c) S aA | Ba | b
A aC | bBS
B Bab | a
C ACa | Sb
d) S a | bAB
A aS | bB | cCA
B aS | b
C bB | cB | Ca
e) S AbS | aB |
A Ab | Ca | b
B aA | bB | a
C Cab | aB
f) S bA | aB |
A aB | bCS | b
B aA | bAS | a
C SaC | Ba
7.4 Depurar cada una de las siguientes gramticas y encontrar una gramtica
equivalente en la Forma Normal de Chomsky:
a) S aAb | cEB | CG
A dBH | ebC
B f | D
C gEB | ah
E dcGGG | cE
G Gam
b) S aB | Aa
A bB
B A | b
c) S AAA | a | aA
A Bb | aBS |
B ba | ab
T E O R A D E L A C O M P U T A C I N
133
7.5 Por medio el algoritmo de CYK, determina si la cadena w = baabb puede ser
generada por la gramtica siguiente:
S a | AS
A AS | b
B BC | a
C CB | b
7.6 Por medio el algoritmo de CYK, determina si la cadena w = babab puede ser
generada por la gramtica siguiente:
S a | AS
A AB | b
B SB | b
7.7 Por medio el algoritmo de CYK, determina si la cadena w = 01101 puede ser
generada por la gramtica siguiente:
S BA | 0 | 1
A AS | 1
B BS | 0
7.8 Por medio el algoritmo de CYK, determina si la cadena w = 11111 puede ser
generada por la gramtica del problema anterior.
7.9 Por medio el algoritmo de CYK, determina si la cadena w = ababb puede ser
generada por la gramtica siguiente:
S a | SA
A AB | a
B BA | b
7.10 Consideremos la siguiente GIC en la FNCh:
S AB | BC
A BA | a
B AC | b
C CB | a
Utilice el algoritmo CYK para verificar si las cadenas siguientes pueden ser
generadas por esta gramtica:
a) w
1
= aaa
b) w
2
= aba
c) w
3
= ababa
d) w
4
= baaab
J O R G E E D U A R D O C A R R I N V .
134
7.11 Consideremos la siguiente GIC en la FNCh:
S AB | AC | a
A BD
B CS | b
C DC | b
D AB | a
Utilice el algoritmo CYK para verificar si las cadenas siguientes pueden ser
generadas por esta gramtica:
a) w
1
= bbab
b) w
2
= baba
c) w
3
= abbba
d) w
4
= abaab
7.12 Encuentre una gramtica equivalente en la FNG a cada una de las gramticas
siguientes:
a) S aSc | Sc | b
b) S bS | Sa | a | Sba
c) S Sa | Sb | cA
A Aa | a
d) S Sa | Sb | Aab
A Aba | Sa |a
e) S AA | 0
A SS | 1
f) S aAb | cSB | SS
A bBA | baA
B ac | SA
g) S ABA | b | aS
A Bb | aBS | AS
B ba | ab
T E O R A D E L A C O M P U T A C I N
135
Lenguajes Libres del Cont ext o
Se definen los Lenguajes Libres del Contexto y se analizan sus principales propiedades, se define el concepto de
Analizador Sintctico, como una clase especial de Gramticas Independientes del Contexto.
Lenguajes No Regulares
Llamamos Lenguaje Libre del Contexto o Lenguaje Independiente del Contexto (LIC)
al lenguaje que puede ser generado por alguna GIC. Dado que toda Gramtica
Regular tambin es una GIC, podemos afirmar que todo Lenguaje Regular es tambin
un LIC, sin embargo, no cualquier LIC es Regular, por lo que surge la interrogante:
Cmo podemos diferenciar un Lenguaje Regular de uno que no lo es?
Por ejemplo, el lenguaje L = { a
n
b
n
| n 0} visto en el captulo anterior no es regular,
una manera de confirmar esta aseveracin es por el hecho de que no es posible
construir un AF que acepte dicho lenguaje ni tampoco se puede construir una
Gramtica Regular que lo genere, pero siempre queda la duda No es posible o
simplemente no fuimos capaces de hacerlo? Afortunadamente existe una manera
directa y certera de probarlo, por medio de la aplicacin del Lema del Rizo, tambin
conocido como Lema del Bombeo.
Lema del Ri zo
Sea L un Lenguaje Regular infinito, entonces existe una constante k, de tal forma que
cualquier cadena w L cuya longitud sea mayor o igual a k, se puede escribir de la
forma w = uvx, donde |v| 1 y |uv| k, se debe cumplir tambin que todas las
cadenas de la forma uv
m
x pertenecen a L para todo m 0.
Si pudiramos construir un AFD con k estados que acepte a L, y si la cadena es de
longitud mayor o igual a k, es forzoso que las transiciones pasen por un mismo estado
dos veces antes de llegar al estado de aceptacin. El bucle o rizo que se forma para
regresar al mismo estado se puede repetir tantas veces como se quiera. Grficamente
esto se puede representar por medio del diagrama mostrado en la siguiente figura:
Capt ul o
8
J O R G E E D U A R D O C A R R I N V .
136
Utilizando el lema anterior, se puede demostrar que L = a
n
b
n
no es regular, porque no
importa lo grande que se tome a la constante k, siempre existir una cadena que se
rehse a ser bombeada, porque el citado rizo no existe y por lo tanto, el AFD no
puede ser construido. Por ejemplo, dada la cadena w = aaabbb, no se puede
encontrar ninguna subcadena v en w, tal que se satisfaga que cualquier cadena de la
forma uv
m
x tambin pertenezca a L.
Si suponemos que v = a, entonces se tiene que permitir que w contenga cualquier
cantidad de as, lo que contradice la definicin del lenguaje, porque debe ser igual a la
de bs, un razonamiento similar se sigue si asumimos que v = b, finalmente, si
suponemos que v = ab, entonces el lenguaje debera aceptar cadenas que contengan
subcadenas de la forma ababab, lo cual tampoco es vlido.
Este razonamiento se puede aplicar a cadenas de cualquier longitud, por lo tanto, se
concluye que el lenguaje L = a
n
b
n
no es regular.
Propiedades de los LICs
La primera propiedad que sealaremos es la de que todo Lenguaje Independiente del
Contexto sobre un alfabeto de un solo smbolo es Regular, esto no significa, como
veremos en captulos posteriores, que todo lenguaje sobre un alfabeto de un solo
smbolo, tenga que ser Regular.
Ej empl o
La gramtica siguiente es una GIC:
S aSa | aS | SS |
Pero genera al lenguaje L = { a
n
| n 0 } = a*, el cual es regular.
Uni n
Sean L
1
y L
2
dos Lenguajes Independientes del Contexto, entonces la unin de ellos
L
1
4 L
2
tambin es un LIC.
T E O R A D E L A C O M P U T A C I N
137
Ej empl o
Obtener la GIC que genera el lenguaje L = { a
n
b
m
| m = n o m = 2n }.
Primeramente, podemos observar que L es la unin de los dos lenguajes siguientes:
L
1
= { a
n
b
n
| n 0 } y L
2
= { a
n
b
2n
| n 0 }, que son generados por las siguientes
gramticas: S
1
aS
1
b | y S
2
aS
2
bb | , respectivamente, por lo tanto, la
gramtica que genera a L = L
1
4 L
2
simplemente requiere agregar una produccin
inicial que permita elegir entre ambas gramticas: S S
1
| S
2
.
Conc at enac i n
Sean L
1
y L
2
dos Lenguajes Independientes del Contexto, entonces la concatenacin
L
1
$ L
2
tambin es un LIC.
Ej empl o
Obtener la GIC que genera el lenguaje L = { a
m
b
n
| m n 0 }.
Si definimos al ndice k = m n, podemos reemplazar a m por k + n y representar a L
como la concatenacin de dos lenguajes: L
1
= { a
k
| k 0 } y L
2
= { a
n
b
n
| n 0}, cuyas
gramticas son S
1
aS
1
| y S
2
aS
2
b | , respectivamente; por lo tanto, la
gramtica que genera a L = L
1
$ L
2
simplemente requiere una produccin que permita
concatenar las cadenas generadas por ambas gramticas: S S
1
S
2
.
Cer r adur a Est r el l a
Sea L un Lenguaje Independiente del Contexto, entonces L*, la cerradura de Kleene
de L, tambin es un LIC.
Ej empl o
Obtener la GIC que genera el lenguaje L = { (a
m
k
b
n
k
)
k
| m
k
n
k
0, k 0 }.
En este caso se considera que L = L
1
*, donde L
1
= { a
m
b
n
| m n 0 } es el lenguaje
visto en el ejemplo anterior, entonces si S
1
es el smbolo inicial de la GIC que genera
las cadenas de L
1
, basta con agregar un par de producciones para el nuevo smbolo
inicial, de la forma siguiente: S S
1
S | .
Existen muchos lenguajes semejantes a los vistos en estos ejemplos cuyas
gramticas se pueden obtener por medio de la aplicacin de las propiedades
anteriores.
J O R G E E D U A R D O C A R R I N V .
138
Homomor f i smo
Sea L un Lenguaje Independiente del Contexto y h es un homomorfismo dado,
entonces h(L) tambin es un LIC. Esta propiedad es tambin vlida para la operacin
inversa h
-1
(L).
Ej empl o
Obtener la GIC que genera el lenguaje L = { a
m
bc
m
| m 0 }.
En este caso se considera el homomorfismo donde: h(a) = 0, h(b) = 01 y h(c) = 1,
entonces: h(L) = { 0
m+1
1
m+1
| m 0 } = { 0
m
1
m
| m 1 }, que un lenguaje del que
conocemos su gramtica, la cual es S 0S1 | 01, entonces, aplicando la
transformacin inversa h
-1
se obtiene la siguiente gramtica para L: S aSc | b.
Lenguaj es i nher ent ement e ambi guos
Existen dos tipos de ambigedad: la ambigedad que proviene de la forma de la
gramtica que se est utilizando, y por tanto, es removible y la ambigedad que es de
fondo y que es una caracterstica del lenguaje, no es posible encontrar una gramtica
que no sea ambigua, porque el lenguaje es inherentemente ambiguo.
Ej empl o
El lenguaje L = { a
n
b
m
c
m
d
n
| n 1, m 1} 4 { a
n
b
n
c
m
d
m
| n 1, m 1} es un lenguaje
Inherentemente ambiguo, puesto que la cadena w = a
n
b
n
c
n
d
n
, para cualquier valor de
n 1, puede provenir de cualquiera de los dos sublenguajes que lo forman, y por lo
tanto, independientemente de la gramtica empleada, siempre habr dos maneras
distintas de derivarla.
I nt er sec c i n
Sean L
1
y L
2
dos Lenguajes Independientes del Contexto, entonces la interseccin de
ambos, L
1
3 L
2
, no necesariamente es un LIC. Pero la interseccin de un Lenguaje
Independiente del Contexto con un Lenguaje Regular siempre es un LIC.
Ej empl o 1
Sean los lenguajes L
1
= a*b* = { a
n
b
m
| n 0, m 0} y L
2
= { a
n
b
n
| n 1 }, entonces la
interseccin L
1
3 L
2
= { a
n
b
n
| n 1} es un LIC.
T E O R A D E L A C O M P U T A C I N
139
Ej empl o 2
Sean los lenguajes L
1
= { a
n
b
m
c
m
| n 1, m 1} y L
2
= { a
n
b
n
c
m
| n 1, m 1}, en este
caso, la interseccin L
1
3 L
2
= { a
n
b
n
c
n
| n 1} no es un LIC, como se demostrar ms
adelante.
Const ruccin de las GICs
Dado un Lenguaje Independiente del Contexto, es posible construir una GIC que
genere dicho Lenguaje, basndose en la estructura de algunas gramticas conocidas
y, en su caso, aplicando las propiedades anteriores.
De esta manera es posible construir una GIC que genere cualquier lenguaje de la
forma, L = { a
n
b
m
}, para distintas relaciones entre m y n, encontrando un
homomorfismo con lenguaje L = { a
n
b
n
}, y utilizando las transformaciones
correspondientes sobre la gramtica que genera a este lenguaje, para encontrar la
GIC que genera al lenguaje en cuestin. De esta forma podemos construir gramticas
para todos los lenguajes que se le asemejen.
Ej empl o
Obtener la GIC que genera el lenguaje L = { w {a, b}
+
| N
a
(w ) = 2 N
b
(w) }, a partir
del hecho que se conoce una gramtica no ambigua para generar el lenguaje de las
cadenas que contienen la misma cantidad de as que bs.
En el captulo anterior se mencion que la siguiente gramtica permite generar al
lenguaje de las cadenas no vacas que contiene la misma cantidad de as que bs:
S bA | aB
A bAA | aS | a
B aBB | bS | b
Entonces lo nico que tenemos que hacer es buscar la manera para duplicar la
cantidad de as, en cualquier cadena generada, lo que nos conduce a la siguiente GIC,
que genera de manera no ambigua al lenguaje solicitado:
S bAA | aB
A bAAA | aS | a
B aBB | baS | abS | ba | ab
J O R G E E D U A R D O C A R R I N V .
140
Otro tipo de LICs que son muy interesantes corresponde a los que contienen cadenas
palndromas, obtener una gramtica para este tipo de lenguajes es muy sencillo, ya
que basta con construir la cadena desde los extremos hacia el centro de la misma,
finalizando con el smbolo central si la longitud de la cadena es impar o con la cadena
vaca para las cadenas de longitud par.
Ej empl o
Construir una gramtica que genere al lenguaje L = { ww
R
| w {a, b}* }:
Como en este caso todas las cadenas generadas deben ser siempre de longitud par,
la gramtica sera:
S bSb | aSa |
Teor ema del Ri zo par a l os LI Cs
Sea G una Gramtica Independiente del Contexto, entonces existe una constante k,
de tal forma que cualquier cadena w L(G) cuya longitud sea mayor o igual a k, se
puede escribir de la forma w = uvxyz, de la forma que v o y son no vacas, se debe
cumplir que tambin que todas las cadenas uv
n
xy
n
z pertenecen a L(G) para todo n 0.
Para demostrar este teorema, basta probar que en la gramtica G es posible
encontrar una derivacin de la forma A * vAy que forme parte de la derivacin de la
cadena w: S * uvxyz, la cual es posible aplicarla de manera repetitiva las veces que
se quiera, para generar todas las cadenas de la forma: uv
n
xy
n
z. Esta propiedad se
conoce como la Periodicidad de las GICs.
En otras palabras, para que un lenguaje sea un LIC se permita que exista una
condicionante entre dos de los smbolos (o subcadenas), como en el caso de a
n
b
n
, o
bien, que haya varias condicionantes entre varios smbolos, siempre por pares y
definidas por ndices independientes entre s, como en el caso de a
n
b
m
c
m
d
n
, pero
cuando existen condicionantes solapadas como en a
n
b
m
c
n
d
m
o que vinculan a tres o
ms smbolos como es el caso de a
n
b
n
c
n
, no puede ser un LIC y por tanto no existe
una GIC que pueda generar dicho lenguaje.

T E O R A D E L A C O M P U T A C I N
141
Anlisis Sint ct ico
El anlisis sintctico es el proceso de determinar si una cadena dada puede ser
generada por una gramtica, para el estudio de este problema, es conveniente
construir un rbol de derivacin sintctico, que nos asegure que la determinacin sea
correcta.
Los analizadores sintcticos de lenguajes de programacin suelen hacer un examen
simple de izquierda a derecha, viendo un componente lxico de la entrada, a la vez.
La mayora de los mtodos de anlisis sintctico estn comprendidos en dos clases,
dependiendo del orden en que se construyen los nodos del rbol de derivacin
pueden ser descendentes o ascendentes.
En el primer caso, se construyen comenzando de la raz, paso a paso, avanzando
hacia las hojas y en cada paso se representa una derivacin de la palabra por la
izquierda, en el segundo, la construccin se inicia en las hojas y avanza hacia la raz
siguiendo el camino contrario en una derivacin por la derecha de la palabra.
Ej empl o
Sea la gramtica siguiente:
S T | ab | cTcS
T d | e | f
La derivacin Descendente para la cadena w = cdccecf, es la siguiente:
S cTcS cdcS cdccTcS cdccecS cdccecT cdccecf
Y se representa por medio de un rbol en el que se enfatiza la derivacin por la
izquierda, como se aprecia en la siguiente figura:
J O R G E E D U A R D O C A R R I N V .
142
Ahora, la derivacin Ascendente para la misma cadena es:
S cTcS cTccTcS cTccTcT cTccTcf cTccecf cdccecf
Y que se representa por medio del mismo rbol, pero enfatizando la derivacin por la
derecha, como se muestra en la figura siguiente:
Los mtodos ascendente y descendente ms eficientes trabajan con dos subclases de
gramticas, que se les conoce como las gramticas LL (left to left: leen en la cadena
de izquierda a derecha, derivacin por la izquierda) y LR (left to right: tambin leen de
izquierda a derecha, pero la derivacin es por la derecha), ambas son lo
suficientemente expresivas como para describir a la mayora de las construcciones
sintcticas de los lenguajes de programacin.
Der i vac i ones por l a Der ec ha y por l a I zqui er da
Se dice que una cadena w perteneciente al lenguaje generado por alguna GIC, se ha
analizado sintcticamente cuando se conocen uno (o todos) sus rboles de
derivacin.
Sea G = ( N, , P, S ) una GIC, con las producciones en P numeradas 1, 2, ..., p y sea
la cadena w ( N U )*, Entonces:
1. Un anlisis a la izquierda de w es una secuencia de producciones usadas en una
derivacin ms a la izquierda de w desde S.
2. Un anlisis a la derecha de w es el reverso de la secuencia de producciones
usadas en una derivacin ms a la derecha de w desde S.
Ej empl o
Sea la cadena w = aabbc, y sea la GIC siguiente: G = ( { S,A,B,C }, { a,b,c }, P, S )
conteniendo las producciones numeradas a continuacin:
T E O R A D E L A C O M P U T A C I N
143
1. S aA
2. A aBbC
3. B b
4. C c
Entonces la derivacin por la izquierda es:
S aA aaBbC aabbC aabbc
Y por tanto, el anlisis a la izquierda de aabbc est dado por la secuencia: 1234.
Mientras que la derivacin por la derecha es:
S aA aaBbC aaBbc aabbc
Y por tanto, el anlisis a la derecha de aabbc es 3421.
Las gramticas que definen lenguajes de programacin frecuentemente requieren de
restricciones adicionales, sobre la forma de las reglas de produccin, para eficientar el
anlisis de las cadenas del lenguaje y garantizar que este anlisis siempre terminar.
Este tipo de gramticas son las nombradas Gramticas LL(k).
Gramt icas LL(k)
Las Gramticas LL(k) constituyen un subconjunto de las GICs usadas para la
construccin de compiladores top-down. stas permiten un anlisis determinista de
arriba haca abajo usando un anlisis anticipado de k smbolos.
La notacin LL describe la estrategia de anlisis de una cadena para determinar si
sta pertenece a un lenguaje o no. La cadena de entrada es revisada de izquierda a
derecha y el programa que realiza el anlisis genera derivaciones por la izquierda.
Car ac t er st i c as par t i c ul ar es de una gr amt i c a LL(k )
Un analizador top-down intenta construir la derivacin por la izquierda para una
cadena de entrada w.
Para decidir, en un momento dado, sobre las reglas que deben considerarse para el
No terminal A, se examina por adelantado a la cadena, de modo que se eliminen las
reglas de A que no contengan a los smbolos que se estn anticipando, hasta
determinar de manera inequvoca la regla a aplicar.
J O R G E E D U A R D O C A R R I N V .
144
Ej empl o 1
Sea la gramtica G definida por las siguientes producciones:
S aS | cA
A bA | cB |
B cB | a |
El analizador intenta construir la derivacin por la izquierda para la cadena acbb, a
partir del smbolo inicial; aqu se presentan dos opciones: S aS o S cA: Al
anticipar que el smbolo a generar es una a, se elimina la segunda regla ya que no
nos conducira a la generacin de acbb, quedando solamente: S aS.
En el siguiente paso, el smbolo anticipado es la c, ahora, la nica regla de S que
tiene inicialmente a la c, es la segunda, por lo que esa regla es la que se aplica.
El proceso contina hasta lograr la derivacin por la izquierda de la cadena, en todos
los casos nos basta con anticipar un solo smbolo para determinar la produccin a
emplear, tal como se resume en la siguiente tabla:
Prefijo Anticipacin Regla a Aplicar Derivacin
a S aS S aS
a c S cA acA
ac b A bA acbA
acb b A bA acbbA
acbb A acbb
Tabla 8.1
El si gni f i c ado de k en una gr amt i c a LL(k )
La cadena de smbolos de anticipacin para una produccin dada, puede ser de una
longitud arbitraria, sin embargo, con la seleccin de las reglas adecuadas, slo se
requiere anticipar prefijos de longitud mxima k.
El valor k denota que la longitud del prefijo debe ser menor o igual a k. El ejemplo
anterior representa a una gramtica del tipo LL(1).
T E O R A D E L A C O M P U T A C I N
145
Ej empl o 2
El lenguaje L = { a
n
abc
n
| n > 0 }, es generado por la gramtica siguiente:
S aSc | aabc
Para seleccionar que regla a utilizar, se requiere una anticipacin de por lo menos tres
smbolos, ya que las posibilidades para los prefijos son: { aaa o aab }, entonces, esta
gramtica es del tipo LL(3).
Para la gramtica siguiente, que genera al mismo lenguaje, slo se requiere una
anticipacin de dos smbolos:
S aA
A Sc | abc
Ya que para el smbolo no terminal S no se requiere ninguna, y para el smbolo A, se
tienen las siguientes dos posibilidades: { aa o ab }, por lo que esta gramtica es del
tipo LL(2). Finalmente, la gramtica siguiente es del tipo LL(1), ya que slo se requiere
de un smbolo de anticipacin.
S aaAc
A aAc | b
El anlisis sintctico nos ensea que no solamente es necesario elegir una gramtica
que no tenga ambigedades, sino que tambin es muy importante el encontrar una
gramtica que sea del tipo con el valor de k ms pequeo posible.
Gramt icas LR(k)
Los analizadores sintcticos LL(k), por su naturaleza predictiva, pueden analizar una
clase restringida de lenguajes. Los analizadores sintcticos LR(k) evitan muchos de
los problemas de los anteriores, cubriendo una clase mucho ms amplia de lenguajes:
los Lenguajes Independientes del Contexto Deterministas.
Las gramticas LR(k) representan un subconjunto de las GICs usadas para la
construccin de compiladores bottom-up. stas permiten un anlisis determinista de
abajo haca arriba. La notacin LR describe la estrategia de anlisis de una cadena
para determinar si sta pertenece a un lenguaje o no. La cadena de entrada es
revisada de izquierda a derecha y el programa que realiza el anlisis genera
derivaciones por la derecha, usando un pre-anlisis de k smbolos.
J O R G E E D U A R D O C A R R I N V .
146
El analizador trata de reducir la cadena de entrada w al smbolo inicial S. En un
proceso que recorre el rbol de derivacin en sentido inverso, y que se conoce como
Reduccin. En trminos generales, el analizador acumula los smbolos que va leyendo
hasta que stos sean iguales al lado derecho de alguna produccin de la gramtica. Al
llegar a este punto, el analizador reemplaza (reduce) todos esos smbolos por el No
terminal del lado derecho de la produccin. Este proceso se repite hasta el punto en
que se reduzca toda la cadena al smbolo inicial, indicando con esto que la cadena
dada puede ser generada por una derivacin por la derecha.
Se dice que una gramtica es LR(k) si siempre es posible determinar en forma nica
el lado derecho de la produccin a reducir, teniendo en cuenta el contexto izquierdo
(prefijo incluido del lado derecho) y los siguientes k smbolos, de forma no ambigua.
Cont ex t os LR(0)
Se llaman contextos LR(0) (CLR) de una produccin dada, al conjunto de derivaciones
parciales por la derecha que terminan en la aplicacin de esa regla. Esto es la cadena
uw est en el CLR de la produccin A w, si hay una reduccin de la cadena uwv a
S que empieza por reemplazar a w con A. Los contextos son empleados por los
analizadores LR(k) para determinar la produccin a utilizar en cada caso, para la
reduccin de una cadena dada.
Ej empl o 1
Sea la gramtica G definida por las siguientes producciones:
S aA | bB
A abA | bB
B bBc | bc
Los CLR para cada una de las 6 producciones de G son los siguientes:
S aA { aA }
S bB { bB }
A abA { a(ab)
n
A | n >0 }
A bB { a(ab)
n
bB | n 0 }
B bBc { a(ab)
n
bb
m
Bc o bb
m
Bc | n 0, m >0 }
B bc { a(ab)
n
bb
m
c o bb
m
c | n 0, m >0 }
T E O R A D E L A C O M P U T A C I N
147
Aunque no siempre es sencilla su determinacin de los CLR, si es ms fcil verificarlo.
Ej empl o 2
Sea la gramtica G definida por las siguientes producciones:
S A
A T | A+T
T b | (A)
Como ejemplo de un proceso de reduccin LR(k), se muestra, paso a paso, la
reduccin de la cadena (b)+b hasta concluir con el smbolo inicial S, tal como se
presenta a continuacin:
Reduccin Regla a Aplicar
(b)+b
(T)+b T b
(A)+b A T
T+b T (A)
A+b A T
A+T T b
A A A+T
S S A
Tabla 8.2
Si invertimos el orden en que se gener la tabla obtenemos la derivacin por la
derecha de la cadena dada:
S A A+T A+b T+b (A)+b (T)+b (b)+b
En este tipo de derivaciones se emplea el esquema denominado Reconocimiento de
Patrones, primero se subdivide la cadena w en dos partes uv, y se buscan en los
patrones las producciones que generen a alguno de los sufijos de u, conduciendo a la
descomposicin de w en u
1
Av, este procedimiento se repite hasta obtener la
reduccin de toda la cadena a S.
J O R G E E D U A R D O C A R R I N V .
148
Pregunt as
a) Es posible encontrar una gramtica en la FNCh que genere a un Lenguaje
Regular?
b) Sea n un nmero primo. El lenguaje formado por todas las cadenas cuya longitud
es mltiplo de n es regular?
c) Para cada gramtica independiente de contexto G existe un autmata finito no
determinista M tal que L(G) = L(M)?
d) Sea G una gramtica libre de contexto tal que slo existe una regla para cada no
terminal. Es regular el lenguaje L(G)?
e) Podras explicar por qu los analizadores sintcticos LR(k) cubren una clase
mucho ms amplia de lenguajes que los analizadores LL(k)?
Ejercicios Capt ulo 8
8.1 Construya una GIC para generar cada uno de los siguientes lenguajes:
a) L = { a
n
bc
n+1
| n > 0 }
b) L = { a
m
b
n
| m > n, n 0 }
c) L = { a
n+2
b
n
| n > 0 }
d) L = { a
2n
bc
n
| n > 0 }
e) L = { a
n
b
m
c
n+m
| n 0 y m 0 }
f) L = { a
n
b
m
c
m
a
n
| n 0, m 0 }
g) L = { a
n
b
n
c
m
d
m
| n 0 y m 0 }
h) L = { a
n
b
n+m
c
m
| n 0 y m 0 }
i) L = { a
m
b
n
| 0 n m 2n }
j) L = { a
n
b
n+m
c
2m
| m 0, n 0 }
k) L = { a
m
b
n
c
p
| m 0, n 0, p 0, m n + p }
l) L = { a
m
b
n
c
p
| m = n o n = p }
m) L = { a
m
b
n
c
p
| m < n o m > p }
n) L = { a
m
b
n
c
p
| n > m + p }
o) L = { w {a, b}* | w = w
R
}
8.2 Cada una de las siguientes GICs generan a un Lenguaje Regular, encuentre la
Expresin Regular de cada caso y obtenga una Gramtica Regular equivalente:
a) S AabB, A aA | bA | , B Bab | Bb | ab | b
b) S SSS | a | ab
T E O R A D E L A C O M P U T A C I N
149
c) S AAS | ab | aab, A ab | ba |
d) S aSb | aSa | bSa | bSb |
e) S AB, A aA | Ab | a | b, B aB | bB |
f) S AA | B, A AAA | Ab | bA | a, B bB |
8.3 Identifique el lenguaje generado por cada una de las gramticas siguientes:
a) S aSa | bSb |
b) S aSa | bSb | a | b
c) S aSa | bSb | A, A aBb | bBa, B aB | bB |
d) S aS | aSbS |
e) S aS | bS | a
f) S SS | bS | Sb | a
8.4 Para cada una de las siguientes gramticas, Cul es el tipo de analizador
sintctico LL ms sencillo?
a) S AB, A aB | bA, B b
b) S BAb, A aaA | abB, B a
c) S cABc, A aAa | c, B bBb | c
d) S aaAa | abB, A bB, B a
e) S aAb | abB, A aB, B b



T E O R A D E L A C O M P U T A C I N
151
Aut mat as de Pila
Se define el concepto Lenguaje Independiente del Contexto, se define el Autmata de Pila como mecanismo para la
identificacin de este tipo de Lenguajes y se muestra su relacin con las Gramticas Independientes del Contexto.
Aut mat a de Pila Det erminist a
Un Autmata de Pila es un dispositivo que hace uso de una memoria infinita, la que
opera como una pila, de manera semejante a la operacin que se realiza en una
cocina donde se lavan los platos, una vez secados se amontonan en la pila y cada vez
que se requiere de un plato, siempre se toma el que est en la cima, a este tipo de
modelos se le llama UEPS (ltima entrada, primera salida).
Este tipo de autmatas pasa a distintos estados de manera similar a un AF, pero al
mismo tiempo, puede interactuar con la pila, agregando, sustituyendo o quitando
smbolos; adems el smbolo que se encuentre en la cima de la pila tambin puede
determinar las transiciones del autmata.
El empleo de la pila le permite al autmata la identificacin de cadenas para los
lenguajes independientes del contexto.
Formalmente definimos a un Autmata de Pila Determinista (APD) como una sexteta
M = (Q, , , s, F, ), en donde Q es el conjunto de estados, es el alfabeto de
entrada, es el alfabeto de la Pila, s es el estado inicial, F es el conjunto de estados
de aceptacin y es el conjunto de Reglas de Transicin, de las cuales, existe cuando
mucho una transicin aplicable para cada configuracin posible.
Oper ac i ones en l a Pi l a
Las transiciones de un AP nos sirven para realizar en la pila las operaciones de apilar,
desapilar, reemplazar smbolos e incluso para dejar la pila intacta. Adems, estas
operaciones pueden ser de dos tipos: las condicionadas o las incondicionales.
Capt ul o
9
J O R G E E D U A R D O C A R R I N V .
152
Una pila es representada por una cadena de Smbolos de la pila, por convencin, se
considera que el primer smbolo de la cadena es el que corresponde a la cima de la
pila y que el smbolo que se apila, se concatena a la izquierda de la misma.
Para expresar las operaciones en la pila empleamos la siguiente notacin:
Operaciones incondicionales
denota que no se hace ninguna operacin con la pila, sta se queda
intacta.
A denota que se agrega incondicionalmente el smbolo A en la cima de
la pila.
Operaciones condicionadas
A A denota que si en la cima de la pila se encuentra el smbolo A, ste
permanece ah, la pila no se altera.
A w denota que si en la cima de la pila se encuentra el smbolo A, ste
ser reemplazado por la cadena w.
A denota que si en la cima de la pila se encuentra el smbolo A, ste se
deber desapilar, (equivale a reemplazarlo por la cadena vaca)
A wA denota que si en la cima de la pila se encuentra el smbolo A, se
apilar sobre ste a la cadena w.
Las acciones a realizar por un APD se representan por medio de transiciones
definidas por la funcin : Q ( 4 ) ( 4 ) Q *. Estas transiciones se
pueden interpretar como en los ejemplos siguientes:
La transicin (q
1
, a, A) = (q
2
, ), se aplica cuando el APD se encuentra en el estado
q
1
, tiene el smbolo de entrada a y el smbolo A se encuentra en la cima de la pila,
entonces se realiza el cambio del estado q
1
al estado q
2
y se quita el smbolo A de la
cima de la pila.
Mientras que la transicin (q
2
, a, ) = (q
1
, ) cambia del estado q
2
al q
1
con el smbolo
de entrada a, sin tomar en cuenta a la pila ni actuar sobre ella. Y la siguiente
transicin: (q
3
, a, ) = (q
1
, A) cambia del estado q
3
al q
1
con el smbolo de entrada a
y, sin importar lo que hubiera en la cima de la pila, coloca en la pila al smbolo A.
T E O R A D E L A C O M P U T A C I N
153
Ej empl o 1
Sea el APD definido por: Q = { q
0
, q
1
}, = {a, b}, = { A }, s = q
0
, F = {q
1
} y est
dado por las siguientes transiciones:
(q
0
, a, ) = (q
0
, A)
(q
0
, b, A) = (q
1
, )
(q
1
, b, A) = (q
1
, )
Una cadena w ser aceptada por este APD siempre que sea posible llegar al estado
de aceptacin q
1
y agotar la cadena al mismo tiempo que la pila quede vaca. En
cambio, si el autmata se detiene por no existir una transicin definida, sin haber
agotado la cadena o sin haber vaciado la pila, la cadena ser rechazada.
Grficamente el APD anterior lo podemos representar por medio del diagrama de
transiciones mostrado en la siguiente figura, donde cada una de las transiciones
involucra un smbolo de entrada y una accin sobre la pila:
Si analizamos detalladamente al APD anterior, podemos observar que se apila un
smbolo A por cada smbolo de entrada a, despus, al encontrar un smbolo de
entrada b, cambia de estado a q
1
y desapila al smbolo A. En el estado q
1
contina
desapilando un smbolo A por cada b de entrada, eventualmente se agota la cadena y
si se encuentra con la pila vaca, la cadena es aceptada, de este anlisis podemos
deducir que este APD acepta las cadenas del lenguaje siguiente: L = { a
n
b
n
| n > 0 }
El autmata pasa por distintas fases instantneas, del mismo modo que los cuadros
de una pelcula, en la siguiente figura se ilustra como la cadena w = aabb es aceptada
por este autmata.
J O R G E E D U A R D O C A R R I N V .
154
Cada una de las fases se describe por medio de la combinacin de los tres elementos
del Autmata: el estado actual, el estado actual de la cadena, indicando el smbolo de
entrada correspondiente y la cadena que forma la pila, sealando el smbolo ubicado
en la cima de la pila.
En notacin ms compacta y prctica se hace uso del smbolo d para denotar el paso
entre dos descripciones instantneas consecutivas, de este modo podemos mostrar
cmo procesa el autmata a la cadena anterior pasando por cada una de las distintas
fases instantneas hasta alcanzar la configuracin de aceptacin:
(q
0
, aabb, ) d (q
0
, abb, A ) d (q
0
, bb, AA ) d (q
1
, b, A ) d (q
1
, , )
Las cadenas w
1
= aab, w
2
= abab y w
3
= abb, no pertenecen al lenguaje a
n
b
n
, por lo
que no deben ser aceptadas por este autmata, en todos los casos se detiene el
autmata en q
1
pero en el primer caso le quedan smbolos en la pila, mientras que en
los otros dos casos no se agota la cadena, tal como se ilustra por medio de sus
respectivas descripciones instantneas:
1: (q
0
, aab, ) d (q
0
, ab, A ) d (q
0
, b, AA ) d (q
1
, , A )
2: (q
0
, abab, ) d (q
0
, bab, A ) d (q
1
, ab, )
3: (q
0
, abb, ) d (q
0
, bb, A ) d (q
1
, b, )
Finalmente, si deseamos que este AFD tambin acepte a la cadena vaca, bastar
con marcar a q
0
como estado de aceptacin.
Ej empl o 2
Para mostrar que todo autmata finito tambin puede ser considerado como un caso
especial de autmata de pila, que nunca realizar operaciones sobre la pila,
considrese el siguiente AFN:
El APD equivalente estar dado por: Q = {q
0
, q
1
}, = {a, b}, = , s = q
0
, F = {q
1
} y
las transiciones siguientes:
(q
0
, a, ) = (q
0
, )
(q
0
, b, ) = (q
1
, )
T E O R A D E L A C O M P U T A C I N
155
Un APD que solamente apila y desapila una vez le se llama APD de Una Vuelta, y
sirve para reconocimiento de lenguajes generados por Gramticas Lineales, es decir,
de aquellas que contienen cuando mucho un Smbolo No Terminal del lado derecho
en cada una de sus producciones. La clase de Gramticas Regulares se considera un
subconjunto de la clase de Gramticas Lineales.
Ej empl o 3
Construir un APD que acepte el Lenguaje L = { wcw
R
| w {a, b}*}, entonces
consideremos que: Q = {q
0
, q
1
}, = { a, b, c }, = { A, B }, s = q
0
, F = {q
1
} y las
transiciones siguientes:
(q
0
, a, ) = (q
0
, A) (q
1
, a, A) = (q
1
, )
(q
0
, b, ) = (q
0
, B) (q
1
, b, B) = (q
1
, )
(q
0
, c, ) = (q
1
, )
Este APD de Una Vuelta trabaja de la siguiente manera, primero apila una A por cada
a y una B por cada b de la cadena w, al encontrar la c cambia de estado sin modificar
la pila, y despus, desapila una A por cada a y una B por cada b de la cadena w
R
,
hasta agotar la cadena y volver a encontrar la pila vaca, tal como se muestra en la
siguiente figura:
Una cadena aceptada por este autmata sera w = abbcbba, la cual pasa por las
siguientes fases instantneas:
(q
0
, abbcbba, ) d (q
0
, bbcbba, A) d (q
0
, bcbba, BA) d (q
0
, cbba, BBA) d
(q
1
, bba, BBA) d (q
1
, ba, BA) d (q
1
, a, A) d (q
1
, , )
Si la cadena no es palndroma, entonces el APD se detendr en q
1
por alguno de los
siguientes motivos: que no coincida el smbolo de entrada con el esperado en la cima
de la pila, que se vace la pila sin haberse agotado la cadena o que se agote la
cadena sin vaciarse la cadena.
J O R G E E D U A R D O C A R R I N V .
156
Aut mat a de Pila No Det erminist a
Un Autmata de Pila No Determinista (APN) es la sexteta M = (Q, , , s, F, ), que
contiene dos o ms transiciones definidas para una configuracin dada. Las
transiciones para este tipo de autmatas provienen de la siguiente funcin de
transicin : Q ( 4 ) ( 4 ) 2
Q *
. Los autmatas de este tipo son ms
poderosos que los APDs, por lo que permiten el reconocimiento de algunos lenguajes
que no pueden ser identificados por medio de ningn APD.
Debido a esto, los LICs se subdividen en dos subtipos, por un lado a los lenguajes
que pueden ser reconocidos por algn APD los identificaremos como LICDs, mientras
que a los lenguajes que no pueden ser reconocidos por ningn APD, los
denominaremos como LICNs, ya que requieren necesariamente de un APN para su
anlisis. Para mostrar que un APN resulta un dispositivo ms poderoso que cualquier
APD, consideremos el siguiente caso:
Ej empl o 1
Resulta imposible construir un APD que acepte el Lenguaje L = { ww
R
| w {a,b}* },
entonces consideremos como alternativa al APN, en el que: Q = { q
0
, q
1
}, = { a, b },
= { A, B }, s = q
0
, F = { q
1
} y las transiciones siguientes:
(q
0
, a, ) = {(q
0
, A)} (q
1
, a, A) = {(q
1
, )}
(q
0
, b, ) = {(q
0
, B)} (q
1
, b, B) = {(q
1
, )}
(q
0
, , ) = {(q
1
, )}
Este APN, cuyo diagrama de transiciones se muestra en la figura 9.5, es casi idntico
al APD presentado en un ejemplo anterior, sin embargo tiene una transicin psilon
que permite pasar del estado q
0
al q
1
de forma no determinista.
Por ejemplo, la cadena w = abba, pertenece al lenguaje referido y por tanto debe ser
aceptada por el autmata, en la siguiente figura se representa este proceso, y
podemos observar que existen mltiples trayectorias posibles, en la mayora de los
T E O R A D E L A C O M P U T A C I N
157
casos no se vaca la pila o no se agota la cadena, u ocurren ambas cosas; sin
embargo, existe un camino en el que cumplen ambas condiciones, se vaca la pila y
se agota la cadena, por lo tanto sta es aceptada por el APD.
Ej empl o 2
Otro caso de un lenguaje que requiere de un APN para ser reconocido es el siguiente:
L = { a
m
b
n
| m > n > 0 }, donde: Q = {q
0
, q
1
, q
2
}, = {a, b}, = {A}, s = q
0
, F = {q
2
} y las
transiciones siguientes:
(q
0
, a, ) = {(q
0
, A)} (q
0
, b, A) = {(q
1
, )}
(q
1
, b, A) = {(q
1
, )} (q
1
, , A) = {(q
2
, )}
(q
2
, , A) = {(q
2
, )}
Donde las ltimas dos transiciones psilon nos permiten desapilar las As que haya en
exceso en la pila, asegurndonos que al menos exista una para poder acceder al
estado de aceptacin q
2
, tal como se muestra en la siguiente figura:
J O R G E E D U A R D O C A R R I N V .
158
No-det er mi ni smo Removi bl e
El No Determinismo del ejemplo anterior es removible, ya que en casos como este, se
puede utilizar un pequeo truco para construir un APD equivalente, consistente en
agregar al final de la cadena un smbolo especial ($), que indique el final de la cadena,
en este caso las transiciones se redefiniran como sigue:
(q
0
, a, ) = {(q
0
, A)} (q
0
, b, A) = {(q
1
, )}
(q
1
, b, A) = {(q
1
, )} (q
1
, $, A) = {(q
2
, )}
(q
2
, , A) = {(q
2
, )}
Quedando el APD modificado como se muestra en la figura a continuacin:
De esta manera, el reconocimiento de la cadena w = aaab, se convierte en la
aceptacin de la cadena: w = aaab$, como se muestra a continuacin:
(q
0
,aaab$,) d(q
0
,aab$,A) d(q
0
,ab$,AA) d(q
0
,b$,AAA) d(q
1
,$,AA) d (q
2
,,A) d(q
2
,,)
Adems de que se puede omitir la ltima transicin si usamos el criterio anterior.
Aut mat as de Pila Condicionados
En los ejemplos precedentes la mayora de las transiciones son incondicionales, con
excepcin de las que desapilan, que no pueden serlo; pero en ciertos casos se
requiere que todas las transiciones sean condicionadas, para estos casos se suele
utilizar una variante de AP, tanto determinista como no determinista, en la que todas
las transiciones se definen de forma condicionada.
Para ello se requiere de la suposicin de que originalmente existe un smbolo en la
pila, al que denotaremos por Z, el cual viene a considerarse como el sptimo elemento
en la definicin de esta variante de AFDs: M = ( Q, , , s, F, , Z ), o para el caso de
los AFNs: M = ( Q, , , s, F, , Z ).
Esta suposicin es equivalente a considerar un autmata de pila convencional en el
que existe una transicin inicial de la forma: (q
0
, , ) = (q
0
, Z), cuyo nico fin es el de
colocar al smbolo Z en la pila, y rescribiendo todas las transiciones incondicionales de
forma condicional.
T E O R A D E L A C O M P U T A C I N
159
Los APNs condicionados se utilizan para el reconocimiento de lenguajes que
requieren identificar el final de la pila, pero sin vaciarla, se suelen construir de tal
forma que tengan un nico estado de aceptacin, al cual se acceda solamente cuando
se tenga la certeza de aceptar la cadena; en este estado no es usual que haya
transiciones, pero en ciertos casos las puede haber.
Con este enfoque ya no es necesario exigir que la pila se vace para aceptar la
cadena, lo nico que necesitamos verificar es que la cadena se agote y estar en un
estado de aceptacin cuando esto suceda.
Ej empl o 1
Podemos construir un APD condicionado que acepte el Lenguaje L = { a
n
b
n
| n > 0}, a
partir del APD mostrado previamente en este captulo: Q = { q
0
, q
1
, q
2
}, s = q
0
, F = {q
2
},
= { A, Z }, = { a, b } y las transiciones siguientes:
(q
0
, a, Z) = (q
0
, AZ) (q
0
, a, A) = (q
0
, AA)
(q
0
, b, A) = (q
1
, ) (q
1
, b, A) = (q
1
, )
(q
1
, , Z) = (q
2
, Z)
Este autmata es determinista a pesar de contener una transicin psilon. Obsrvese
que en este APD, hay que acceder al estado de aceptacin cuando se agota la
cadena y se encuentra a Z en la pila, y como se dijo antes, no es necesario quitarla de
la pila.
Ej empl o 2
Construir un APD condicionado, para reconocer el lenguaje: L = { a
m
b
n
| n > m > 0 }.
La solucin es muy semejante al anterior, pero con la diferencia que debemos
encontrar al smbolo Z antes de agotar la cadena, cuando esto sucede, pasamos al
estado q
2
, que es el de aceptacin, para agotar ah la cadena, verificando que
exclusivamente se acepten bs.
Las transiciones necesarias son:
(q
0
, a, Z) = (q
0
, AZ) (q
0
, a, A) = (q
0
, AA)
(q
0
, b, A) = (q
1
, ) (q
1
, b, A) = (q
1
, )
(q
1
, b, Z) = (q
2
, Z) (q
2
, b, Z) = (q
2
, Z)
J O R G E E D U A R D O C A R R I N V .
160
Ej empl o 3
Construir un APN condicionado que acepte a: L = { w {a, b}* | N
a
(w) = N
b
(w) }. El
APN est dado por: Q = { q
0
, q
1
}, s = q
0
, = { a, b }, = { A, B, Z }, F = { q
1
} y las
transiciones siguientes:
(q
0
, a, Z) = (q
0
, AZ) (q
0
, a, A) = (q
0
, AA)
(q
0
, b, Z) = (q
0
, BZ) (q
0
, b, B) = (q
0
, BB)
(q
0
, b, A) = (q
0
, ) (q
0
, a, B) = (q
0
, )
(q
0
, , Z) = (q
1
, Z)
Este APN trabaja de la siguiente manera, primero apila una A por cada a, pero si el
smbolo en la cima de la pila es una B, entonces la desapila. Si el smbolo de entrada
es una b, entonces apila una B, excepto cuando el smbolo en la cima es una A,
porque entonces la desapila.
Cada vez que se encuentra Z en la cima de la pila significa que la parte de la cadena
que ya fue analizada contiene la misma cantidad de as que de bs. Este autmata
pasa al estado q
1
de manera No Determinista cada vez que la Z est en la cima de la
pila, sin embargo, solamente cuando la cadena se agote y se encuentre el smbolo Z
en la cima de la pila, es pertinente pasar al estado q
1
y aceptar la cadena.
Una cadena aceptada por este autmata sera w = abba, la cual pasa por la siguiente
secuencia de fases instantneas:
(q
0
, abba, Z) d (q
0
, bba, AZ) d (q
0
, ba, Z) d (q
0
, a, BZ) d (q
0
, , Z) d (q
1
, , Z)
En la tercera fase existe una transicin psilon hacia la configuracin (q
1
, ba, Z), que
no se indica, puesto que no nos sirve para el reconocimiento de la cadena.
Para forzar a que la transicin psilon solamente se utilice cuando la cadena se haya
agotado, para aceptarla, accediendo al estado de aceptacin, podemos emplear la
tcnica del smbolo de fin de cadena ($), mostrada anteriormente, el APD equivalente
para esta variante sera:
(q
0
, a, Z) = (q
0
, AZ) (q
0
, a, A) = (q
0
, AA)
(q
0
, b, Z) = (q
0
, BZ) (q
0
, b, B) = (q
0
, BB)
(q
0
, b, A) = (q
0
, ) (q
0
, a, B) = (q
0
, )
(q
0
, $, Z) = (q
1
, Z)
T E O R A D E L A C O M P U T A C I N
161
Y la secuencia de fases instantneas para aceptar la cadena w = abba$, ser:
(q
0
, abba$, Z) d (q
0
, bba$, AZ) d (q
0
, ba$, Z) d (q
0
, a$, BZ) d (q
0
, $, Z) d (q
1
, , Z)
APD Complement o
Dado M un APD condicionado, que acepta a L(M), se puede construir un APD M, tal
que acepte a L
C
, agregando las transiciones necesarias hacia un estado de rechazo,
de modo que queden definidas todas las configuraciones posibles y cambiando los
estados de aceptacin por estados de no-aceptacin y viceversa.
Ej empl o
Construya un APD para el lenguaje complemento de L = { a
n
b
n
| n > 0}, a partir de
APD condicionado visto en la pgina 151, primeramente copiamos las cinco
transiciones originales:
(q
0
, a, Z) = (q
0
, AZ) (q
0
, a, A) = (q
0
, AA)
(q
0
, b, A) = (q
1
, ) (q
1
, b, A) = (q
1
, )
(q
1
, , Z) = (q
2
, Z)
Posteriormente, tenemos que agregar las siguientes transiciones hacia q
3
, (el estado
de rechazo de M)
(q
0
, b, Z) = (q
3
, Z) (q
1
, a, A) = (q
3
, )
(q
2
, b, Z) = (q
3
, Z) (q
2
, a, Z) = (q
3
, Z)
En el estado q
3
desapilamos todas las As y terminamos de aceptar el resto de la
cadena de entrada, con las siguientes transiciones:
(q
3
, , A) = (q
3
, ) (q
3
, a, Z) = (q
3
, Z)
(q
3
, b, Z) = (q
3
, Z)
Para este APD complemento, los estados de aceptacin son: F = { q
0
, q
1
, q
3
}
Const ruccin de un APN dada una GIC
Para demostrar que cualquier Lenguaje Independiente del Contexto L(G), definido por
una GIC dada, es aceptado por algn APN, describiremos un procedimiento para
construir un APN que acepte a L(G).
J O R G E E D U A R D O C A R R I N V .
162
Sea una GIC definida por G = (N, , S, P), deseamos construir un APN que acepte
L(G), para ello definimos los elementos del APN como sigue: Q = { q
0
, q
1
}, = N 4 ,
s = q
0
, F = {q
1
} y para obtener a se aplican los siguientes criterios:
Una transicin inicial para introducir en la pila el Smbolo No Terminal Inicial:
(q
0
, , ) = { (q
1
, S) }
Para cada produccin de la forma A w, se define una transicin que substituye
en la pila al smbolo no terminal A, por la cadena w:
(q
1
, , A) = { (q
1
, w) }
Definimos una transicin que desapila el smbolo de la cima de la pila para cada
Smbolo Terminal que coincida con el siguiente smbolo de entrada:
(q
1
, a, a) = { (q
1
, ) }
Ej empl o
Sea la gramtica: S aSa | bSb | c, que genera al lenguaje L = { wcw
R
| w{a,b}*},
aplicando los criterios anteriores, las reglas de transicin del autmata son:
(q
0
, , ) = { (q
1
, S) }
(q
1
, , S) = { (q
1
, aSa), (q
1
, bSb), (q
1
, c) }
(q
1
, a, a) = (q
1
, b, b) = (q
1
, c, c) = { (q
1
, ) }
La cadena w = abcba es aceptada mediante la siguiente secuencia:
(q
0
, abcba, ) d (q
1
, abcba, S) d (q
1
, abcba, aSa) d (q
1
, bcba, Sa) d (q
1
, bcba, bSba)
d (q
1
, cba, Sba) d (q
1
, cba, cba) d (q
1
, ba, ba) d (q
1
, a, a) d (q
1
, , )
El autmata obtenido por medio de esta tcnica es un APN, a pesar que se trata de
un LICD, como ya se demostr previamente, por ejemplo, en el tercer paso de la
derivacin se reemplaz la S por aSa, puesto que sabamos que el smbolo de
entrada era una a, pero el autmata debi reemplazar la S de manera no determinista
por las otras dos alternativas tambin, encontrado ms adelante que se trataba de una
sustitucin infructuosa.
Tc ni c a de Ant i c i pac i n
En algunos casos podemos modificar a un APN para obtener un APD equivalente, por
medio de la Tcnica de Anticipacin, que nos permite saber por adelantado cul es el
smbolo de entrada siguiente, para poder seleccionar adecuadamente la transicin
T E O R A D E L A C O M P U T A C I N
163
requerida. Esta tcnica es interesante, pues es la que se emplea en los Analizadores
Sintcticos para las gramticas tipo LL(k).
Aplicando esta tcnica, agregamos tres nuevos estados: q
a
, q
b
y q
c
, hacia los cuales
se definen las transiciones dependiendo del smbolo anticipado, entonces para definir
un APD equivalente al APN anterior, se tiene que: Q = { q
0
, q
1
, q
a
, q
b
, q
c
}, = {a,b,c},
= { S, a, b, c } s = q
0
, F = {q
1
} y las transiciones siguientes:
(q
0
, , ) = (q
1
, S) (q
1
, a, ) = (q
a
, )
(q
a
, , a) = (q
1
, ) (q
1
, b, ) = (q
b
, )
(q
b
, , b) = (q
1
, ) (q
1
, c, ) = (q
c
, )
(q
c
, , c) = (q
1
, ) (q
a
, , S) = (q
a
, aSa)
(q
b
, , S) = (q
b
, bSb) (q
c
, , S) = (q
c
, c)
La aceptacin de la cadena w = abcba sigue la secuencia siguiente:
(q
0
, abcba, ) d (q
1
, abcba, S) d (q
a
, bcba, S) d (q
a
, bcba, aSa) d (q
1
, bcba, Sa) d
(q
b
, cba, Sa) d (q
b
, cba, bSba) d (q
1
, cba, Sba) d (q
c
, ba, Sba) d (q
c
, ba, cba) d
(q
1
, ba, ba) d (q
b
, a, ba) d (q
1
, a, a) d (q
a
, , a) d (q
1
, , )
Este tipo de dispositivo se le conoce con el nombre de Derivador, ya que nos permite
reconstruir fcilmente el rbol de derivacin que genera la cadena en cuestin,
detectando las reglas que se aplicaron a cada paso.
Por ejemplo, la secuencia anterior nos indica que en el tercer paso se utiliz la
produccin S aSa, luego en el sexto se utiliz la produccin S bSb y en el
noveno paso se aplic S c, de ah se obtiene el rbol de derivacin mostrado en la
figura 9.9:
J O R G E E D U A R D O C A R R I N V .
164
Tc ni c a de Post er gac i n
Para poder aplicar la tcnica de Anticipacin eficazmente y construir un Derivador en
los casos donde existen producciones que inician del lado derecho con un smbolo no
terminal, debemos buscar una gramtica equivalente en la FNG, Vg., supongamos
que tenemos la siguiente gramtica:
S A | B
A aA | b
B bB | a
Podemos reemplazar las producciones del smbolo S por las producciones de A y de
B, tal como se muestra en la siguiente gramtica equivalente en FNG:
S aA | b | bB | a
A aA | b
B bB | a
Sin embargo, hay varias producciones que inician con el mismo smbolo terminal, por
lo que se requiere emplear otra tcnica adicional, llamada de Postergacin por
Factorizacin a la Izquierda, esto reduce el valor de k en las gramticas LL(k), y que
consiste en que las producciones de S se reemplazan por otras equivalentes, donde
definimos dos nuevos smbolos no terminales C y D, quedando finalmente la siguiente
gramtica:
S aC | bD
A aA | b
B bB | a
C aA | b |
D bB | a |
Const ruccin de las GICs
Ahora procederemos a construir la GIC que genere el lenguaje aceptado por un AP
dado. Esta gramtica se definir con smbolos no terminales de la forma [q
i
Aq
j
], con
objeto de mantener la referencia de las transiciones de donde proceden. Para aplicar
esta metodologa, es necesario que trate de un APD o un APN condicionado, el cual
debe vaciar la pila al llegar al estado de aceptacin, que debe ser nico.
T E O R A D E L A C O M P U T A C I N
165
En caso que no se cumpla alguna de estas condiciones, se deber modificar al
autmata a una forma equivalente que las satisfaga, agregndole las transiciones,
smbolos No Terminales y estados que se requieran.
Los criterios bsicos son:
El smbolo inicial de la GIC es: S = [q
0
Zq
f
], donde q
f
es el estado de aceptacin, Z
es el smbolo inicial de la pila y q
0
es el estado inicial.
Las transiciones de la forma: (q
i
, a, A) = (q
j
, ), nos generan producciones de la
forma: [q
i
Aq
j
] a
Las transiciones de la forma: (q
i
, a, A) = (q
j
, B), nos dan producciones de la forma:
[q
i
Aq
m
] a[q
j
Bq
m
], para cualquier estado q
m
de Q.
Las transiciones de la forma: (q
i
, a, A) = (q
j
, BC), nos dan producciones de la
forma: [q
i
Aq
m
] a[q
j
Bq
n
] [q
n
Cq
m
], para cualesquier estados q
n
y q
m
de Q.
Ej empl o 1
Construir la GIC que genere el lenguaje L = { a
n
b
n
| n > 0 }, aceptado por el APD
condicionado visto en la pgina 143, pero vaciando la pila al acceder a q
2
, primero, en
la GIC que vamos a construir se considera como smbolo inicial a S = [q
0
Zq
2
].
Ahora, iniciando el proceso con las transiciones que decrementan la pila, a saber:
(q
0
, b, A) = { (q
1
, ) }
(q
1
, b, A) = { (q
1
, ) }
(q
1
, , Z) = { (q
2
, ) }
Encontramos que stas ltimas nos originan las producciones siguientes:
[q
0
Aq
1
] b
[q
1
Aq
1
] b
[q
1
Zq
2
]
Continuando con las que apilan, que son:
(q
0
, a, Z) = (q
0
, AZ)
(q
0
, a, A) = (q
0
, AA)
Observamos que estas transiciones nos producen las siguientes expresiones:
[q
0
Zq
m
] a[q
0
Aq
n
] [q
n
Zq
m
], para cualesquier estados q
n
y q
m
de Q.
[q
0
Aq
m
] a[q
0
Aq
n
] [q
n
Aq
m
], para cualesquier estados q
n
y q
m
de Q.
J O R G E E D U A R D O C A R R I N V .
166
Esto representa 9 posibles combinaciones, para cada una, la mayora de las cuales
son intiles, por lo que conviene que determinar los valores de n y m para los que se
obtienen transiciones tiles, para ello se toman en cuenta a las producciones
anteriormente obtenidas:
Dado que existe [q
0
Aq
1
], entonces, para el primer caso tenemos que n = 1, y dado que
tambin existe [q
1
Zq
2
], entonces m = 2, quedando:
[q
0
Zq
2
] a[q
0
Aq
1
] [q
1
Zq
2
]
Dado que existe [q
0
Aq
1
], entonces, para el segundo caso tenemos que n = 1, y dado
que tambin existe [q
1
Aq
1
], entonces m = 1, quedando:
[q
0
Aq
1
] a[q
0
Aq
1
] [q
1
Aq
1
]
Finalmente, recomendamos hacer un cambio de variables como por ejemplo,
reemplazar: S = [q
0
Zq
2
], A = [q
0
Aq
1
], B = [q
1
Aq
1
] y C = [q
1
Zq
2
], resultando que nuestra
gramtica est formada por las siguientes producciones:
S aAC
A b | aAB
B b
C
Y reemplazando a las ltimas dos producciones, la gramtica equivalente queda:
S aA
A b | aAb
Por ejemplo, si aplicamos la gramtica precedente para realizar la generacin de la
cadena w = aabb, tenemos la siguiente derivacin:
S aA aaAb aabb
Ej empl o 2
Obtener una GIC que genere el lenguaje L = ab*a, el cual es aceptado por el APD:
Q = { q
0
, q
1
, q
2
}, = { a, b }, = { A, Z }, F = { q
2
}, s = q
0
y dado por:
(q
0
, a, Z) = { (q
0
, AZ) } (q
0
, b, A) = { (q
0
, AA) }
(q
0
, a, A) = { (q
1
, ) } (q
1
, , A) = { (q
1
, ) }
(q
1
, , Z) = { (q
2
, ) }
T E O R A D E L A C O M P U T A C I N
167
Ahora ya podemos encontrar la GIC correspondiente; para las transiciones que
desapilan tenemos:
[q
0
Aq
1
] a
[q
1
Aq
1
]
[q
1
Zq
2
]
Y para las transiciones que apilan, escribiendo slo las que son tiles tenemos:
[q
0
Zq
2
] a[q
0
Aq
1
] [q
1
Zq
2
]
[q
0
Aq
1
] b[q
0
Aq
1
] [q
1
Aq
1
]
Reemplazando [q
0
Zq
2
] por S, que es nuestro smbolo inicial, [q
0
Aq
1
] por A, [q
1
Aq
1
] por
B y [q
1
Zq
2
] por C tenemos:
S aAC
A bAB | a
B
C
Y eliminando las producciones psilon, nos resulta la siguiente gramtica regular:
S aA
A bA | a
Usando esta gramtica para la generacin de la cadena w = abba, tenemos:
S aA abA abbA abba
Resulta interesante observar que las gramticas obtenidas por esta tcnica se
encuentran en la FNG, esto facilita enormemente la generacin de las cadenas
correspondientes al lenguaje en cuestin, como se puede apreciar en los dos
ejemplos previos.
Pregunt as
a) Sean M
1
y M
2
dos APNs que aceptan los lenguajes L
1
y L
2
respectivamente,
Cmo es posible construir un APN que acepte al Lenguaje L
1
4 L
2
?
b) Sean M
1
y M
2
dos APNs que aceptan los lenguajes L
1
y L
2
respectivamente,
describa Cmo es posible construir un APN que acepte al Lenguaje L
1
L
2
?
c) Sean M
1
un APN que acepta al lenguaje L
1
, describa Cmo es posible construir
un APN que acepte al Lenguaje L
1
*?
J O R G E E D U A R D O C A R R I N V .
168
d) Es posible encontrar un APN complemento para cualquier APN dado?
e) Cmo disearas un autmata de dos pilas para el reconocimiento del siguiente
lenguaje: L = { a
n
b
n
c
n
| n > 0 }?
f) Es ms poderosos un autmata de dos pilas que uno de una sola?
g) Es posible disear un autmata que utilice una cola en vez de una pila para el
reconocimiento del lenguaje L = { ww | w { a, b }* }?
h) Para que situaciones conviene disear autmatas de cola en vez de los de pila
que hemos visto?
Ejercicios Capt ulo 9
9.1 Construya los APD para aceptar a cada uno los siguientes lenguajes:
a) L = { a
n
b
m
c
n
| n, m > 0 }
b) L = { a
n
b
2n
| n > 0}
c) L = { a
n
bc
n
| n 0}
d) L = { a
n
b
m
c
n+m
| n, m > 0}
e) L = { a
2n
b
n
| n > 0}
9.2 Construya un APD condicionado para aceptar el lenguaje regular L = ac*ba,
pero utilizando la pila en lugar de hacer cambios de estado, de este modo todas
las transiciones del APD se harn en un solo estado.
9.3 Construya los APDs condicionados que reconozcan a los siguientes lenguajes:
a) L = { a
n
b
m
a
n
| n, m > 0}
b) L = { a
n
b
n+m
a
m
| n, m > 0 }
c) L = { a
n
b
m
a
m
b
n
| n, m > 0 }
d) L = { a
n
b
n+1
| n 0 }
9.4 Construya los APNs que permitan aceptar a cada uno los siguientes lenguajes:
a) L = { a
m
b
n
| m, n 0 y m n}
b) L = { a
n
b
m
| 0 m n }
c) L = { a
n
b
m
| 0 n m }
d) L = { a
m
b
n
| 0 m n 3m}
e) L = { w { a, b }* | w = w
R
y |w| es impar }
f) L = { a
n
w | w { a, b }* y n |w| }
g) L = { xayb | x, y { a, b }*, |x| = |y| }
h) L = { w { a, b }* | w w
R
}
T E O R A D E L A C O M P U T A C I N
169
9.5 Construya los APN condicionados que reconozcan a los siguientes lenguajes:
a) L = { w { a, b }* | N
a
(w) = 2N
b
(w) }
b) L = { w { a, b }* | N
a
(w) < N
b
(w) < 2N
a
(w) }
9.6 Identifique el Lenguaje que acepta el APN condicionado: Q = { q
0
, q
1
, q
2
}, s = q
0
,
F = {q
2
}, = { a, b }, = { A, B, Z } y las transiciones siguientes:
(q
0
, a, Z) = { (q
1
, A), (q
2
, ) } (q
1
, a, B) = (q
2
, )
(q
1
, b, A) = (q
1
, B) (q
1
, b, B) = (q
1
, B)
9.7 Describa el Lenguaje que acepta el APD condicionado: Q = { q
0
, q
1
, q
2
}, s = q
0
,
F = {q
2
}, = {a, b}, = {A, Z} y las transiciones siguientes:
(q
0
, a, Z) = (q
0
, AZ) (q
0
, a, A) = (q
0
, AA)
(q
0
, b, A) = (q
0
, ) (q
0
, b, Z) = (q
1
, AZ)
(q
1
, b, A) = (q
1
, ) (q
1
, , Z) = (q
2
, )
9.8 Describa el proceso que realiza el APD del problema anterior, con cada una de
las cadenas siguientes: w
1
= abba, w
2
= abab y w
3
= abbb.
9.9 Obtenga un APN que acepte el lenguaje generado por cada una de las
siguientes GICs:
a) S aAA, A aA | bS | c
b) S abS | acSbb | c
c) S aABB | bAA, A aBB | bA, B bBB | a
9.10 Construya un APD equivalente para cada uno de los incisos del problema
anterior, utilizando la tcnica de la anticipacin.
9.11 Obtenga una GIC que genera a los lenguajes aceptados por los APs de los
ejercicios 9.6 y 9.7, respectivamente.
9.12 Obtenga una GIC que genere el lenguaje aceptado por el APD definido por: Q =
{ q
0
, q
1
, q
2
}, = { a, b }, = { A, Z }, s = q
0
, F = { q
2
} y dado por:
(q
0
, a, Z) = (q
0
, AZ) (q
0
, a, A) = (q
0
, A)
(q
0
, b, A) = (q
1
, ) (q
1
, , Z) = (q
2
, )
9.13 Obtenga una GIC que genere el lenguaje aceptado por el APN definido por: Q =
{ q
0
, q
1
, q
2
}, = { a, b }, = { X, Z }, s = q
0
, F = { q
2
} y dado por:
(q
0
, a, Z) = (q
0
, XZ) (q
0
, b, X) = (q
0
, XX)
(q
0
, a, X) = (q
1
, X) (q
1
, b, X) = (q
1
, )
(q
1
, a, Z) = (q
0
, Z) (q
0
, , Z) = (q
2
, )
J O R G E E D U A R D O C A R R I N V .
170
9.14 Obtenga una GIC que genere el lenguaje aceptado por el APN definido por: Q =
{ q
0
, q
1
, q
2
}, s = q
0
, F = { q
2
}, = { a, b }, = { A, Z} y dado por:
(q
0
, a, Z) = { (q
0
, AZ) } (q
0
, a, A) = { (q
0
, AA) }
(q
0
, b, A) = { (q
1
, ) } (q
0
, , Z) = { (q
2
, ) }
(q
1
, a, A) = { (q
1
, ) } (q
1
, b, Z) = { (q
0
, Z) }
9.15 Obtenga una GIC que genere el lenguaje aceptado por el APD definido por: Q =
{ q
0
, q
1
, q
2
}, s = q
0
, F = { q
2
}, = { a, b }, = { A, Z} y dado por:
(q
0
, a, Z) = { (q
0
, AZ) } (q
0
, a, A) = { (q
0
, AA) }
(q
0
, b, Z) = { (q
1
, AZ) } (q
0
, b, A) = { (q
0
, ) }
(q
1
, b, A) = { (q
1
, ) } (q
1
, , Z) = { (q
2
, ) }
9.16 Obtenga una GIC que genere el lenguaje aceptado por el APN definido por: Q =
{ q
0
, q
1
, q
2
, q
3
}, = { a, b }, = { A, B, Z}, s = q
0
, F = { q
3
} y dado por:
(q
0
, a, Z) = (q
1
, AZ) (q
1
, a, A) = { (q
1
, A), (q
2
, ) }
(q
0
, b, Z) = (q
1
, BZ) (q
1
, b, B) = { (q
1
, B), (q
2
, ) }
(q
1
, a, B) = (q
1
, B) (q
1
, b, A) = (q
1
, A)
(q
2
, , Z) = (q
3
, )
9.17 Obtenga una GIC que genere el lenguaje aceptado por el APN definido por: Q =
{ q
0
, q
1
, q
2
}, s = q
0
, F = { q
2
}, = { a, b }, = { A, Z} y dado por:
(q
0
, a, Z) = { (q
0
, AZ) } (q
0
, a, A) = { (q
0
, AA) }
(q
0
, b, Z) = { (q
1
, Z) } (q
1
, b, Z) = { (q
1
, Z) }
(q
0
, b, A) = { (q
0
, ) } (q
1
, , Z) = { (q
2
, ) }
9.18 Obtenga una GIC que genere el lenguaje aceptado por el APN definido por: Q =
{ q
0
, q
1
, q
2
}, s = q
0
, F = { q
2
}, = { 0, 1 }, = { A, Z} y dado por:
(q
0
, 0, Z) = { (q
0
, AZ) } (q
0
, 0, A) = { (q
0
, A) }
(q
0
, 1, Z) = { (q
1
, Z) } (q
1
, 0, Z) = { (q
1
, Z) }
(q
0
, 1, A) = { (q
0
, ) } (q
1
, , Z) = { (q
2
, ) }
9.19 Obtenga una GIC que genere el lenguaje aceptado por el APN definido por: Q =
{ q
0
, q
1
, q
2
}, s = q
0
, F = { q
2
}, = { a, b }, = { A, Z} y dado por:
(q
0
, a, Z) = { (q
0
, AZ) } (q
0
, a, A) = { (q
1
, ) }
(q
0
, b, A) = { (q
0
, AA) } (q
1
, a, A) = { (q
1
, ) }
(q
1
, b, Z) = { (q
0
, Z) } (q
0
, , Z) = { (q
2
, ) }
T E O R A D E L A C O M P U T A C I N
171
9.20 Obtenga una GIC que genere el lenguaje aceptado por el APD definido por: Q =
{ q
0
, q
1
, q
2
}, = { a, b, c }, = { X, Z}, s = q
0
, F = { q
2
} y dado por:
(q
0
, a, Z) = (q
0
, XZ) (q
0
, a, X) = (q
0
, XX)
(q
0
, b, Z) = (q
0
, XZ) (q
0
, b, X) = (q
0
, XX)
(q
0
, c, Z) = (q
1
, Z) (q
0
, c, X) = (q
1
, X)
(q
1
, a, X) = (q
1
, ) (q
1
, b, X) = (q
1
, )
(q
1
, , Z) = (q
2
, )


T E O R A D E L A C O M P U T A C I N
173
Mquinas de Turing
Se introduce la nocin de Cinta, Se define el concepto de Mquina de Turing, se analiza su aplicacin en el cmputo de
funciones y su utilizacin en la decisin de cadenas. Se describen algunas de sus variantes. Se estudian las Mquinas
Simples y Compuestas.
La Noc i n de Ci nt a
Cuando empleamos un Autmata Finito para el reconocimiento de un lenguaje
regular, se debe proporcionar una cadena para que sea analizada; imaginemos ahora
que esta cadena de entrada se encuentra escrita sobre una cinta infinita que est
subdividida en celdas unitarias, cada una de las cuales es capaz de contener un solo
smbolo y que existe un apuntador que inicialmente se encuentra sealando a la celda
que contiene al primer smbolo de la cadena.
Cada transicin realizada en el AF provocar un cambio de estado y har que el
apuntador avance una celda hacia la derecha; tal como se ilustra grficamente en el
ejemplo mostrado en la figura 10.1:
Sin embargo, cuando se trata de una transicin psilon, entonces solamente se
provoca un cambio de estado, pero el apuntador permanece en la celda que an no
ha sido leda, tal como se muestra en la figura 10.2:
Finalmente, se considera que la cadena ha sido agotada cuando el apuntador llega a
una celda que est vaca. Este hecho se suele representar por medio de un smbolo
Capt ul o
10
J O R G E E D U A R D O C A R R I N V .
174
especial como por ejemplo: #, el cual no pertenece al alfabeto y en ese momento el
autmata termina su proceso, y es cuando se considera el estado en que se finaliza,
para determinar la aceptacin o rechazo de la cadena propuesta, tal como se
ejemplifica en la figura 10.3.
Aut mat a Fi ni t o Det er mi ni st a Bi di r ec c i onal
Un Autmata Finito Determinista Bidireccional (AFDB) es aquel que permite que el
apuntador se pueda desplazar tanto hacia la derecha como hacia la izquierda. Se ha
demostrado que esta capacidad de movimiento no le agrega ningn poder a este tipo
de AF respecto de los otros, y en cambio, se pueden presentar situaciones en las que
se cicle y nunca alcance el fin de la cadena.
Ej empl o
Sea el AFDB definido por: Q = { q
0
, q
1
, q
2
}, = { 0, 1 }, s = q
0
, F = { q
0
, q
1
} y la
funcin que contiene a las transiciones siguientes:
(q
0
, 0) = (q
0
, R) (q
0
, 1) = (q
1
, R)
(q
1
, 0) = (q
1
, R) (q
1
, 1) = (q
2
, L)
(q
2
, 0) = (q
0
, R) (q
2
, 1) = (q
2
, L)
Donde se denota con la letra R a un desplazamiento hacia la derecha (Right) y con la
letra L un desplazamiento hacia la Izquierda (Left).
Ahora observemos el proceso que sigue para la aceptacin de w = 1010010.
(q
0
,1010010) d (q
1
,1010010) d (q
1
,1010010) d (q
2
,1010010) d (q
0
,1010010) d
(q
1
,1010010) d (q
1
,1010010) d (q
1
,1010010) d (q
2
,1010010) d (q
0
,1010010) d
(q
1
,1010010) d (q
1
,1010010#)
Este autmata acepta las cadenas que no contengan la subcadena 11, cada vez que
detecta un segundo 1, regresa para comprobar que el smbolo anterior es 0, sin
embargo, en caso de haber dos 1s consecutivos, se cicla indefinidamente, como se
muestra en la siguiente secuencia:
(q
0
, 011) d (q
0
, 011) d (q
1
, 011) d (q
2
, 011) d (q
2
, 011) d (q
0
, 011) d (q
1
, 011) d
T E O R A D E L A C O M P U T A C I N
175
En la figura que se muestra a continuacin, tenemos el AFN equivalente a este AFDB
y que acepta al lenguaje: L = ( 4 1)(0 4 01)*.
La Mquina de Turing
2

Conceptualmente una Mquina de Turing (MT) puede parecer muy semejante al
modelo de AFDB presentado previamente, pero la pequea gran diferencia es que
este dispositivo tiene la posibilidad de escribir sobre la cinta. Esta capacidad le
permite a la MT devolver una respuesta, por medio de una cadena de salida.
Formalmente definimos una Mquina de Turing como M = (Q, , , s, #, F, ), en
donde Q es el conjunto de estados, es el alfabeto de entrada, es el alfabeto de la
Cinta ( ), s es el estado inicial, # es el smbolo de vaco (# , pero # ), F es
el conjunto de estados finales y es la funcin de Transicin determinista.
En este caso, cada transicin provoca tres respuestas, primero un posible cambio de
estado, segundo, la escritura de un smbolo sobre la celda actual y, tercero, el
desplazamiento del apuntador (tambin llamado cabezal de lectura-escritura o CLE)
hacia la celda de la derecha o la celda de la izquierda. Las MTs pueden ser no
deterministas, pero como esta caracterstica no les da mayor poder, nos limitaremos a
estudiar solamente las MTD.
Ej empl o 1
Consideremos la MT definida por los siguientes elementos: Q = { q
0
, q
1
, q
2
}, = {a, b },
s = q
0
, = { a, b, #}, F = { q
2
} y las transiciones:
(q
0
, a) = (q
0
, a, R)
(q
0
, b) = (q
0
, a, R)
(q
0
, #) = (q
1
, #, L)
(q
1
, a) = (q
1
, a, L)
(q
1
, #) = (q
2
, #, R)

2
Alan Mathison Turing (1912-1954), matemtico britnico y pionero en la teora de la computacin. Naci en Londres y estudi
en las universidades de Cambridge y Princeton. En 1936, mientras era todava un estudiante, public un ensayo titulado On
Computable Numbers (Sobre nmeros calculables), con el que contribuy a la lgica matemtica al introducir el concepto
terico de un dispositivo de clculo que hoy se conoce como la mquina de Turing. El concepto de esta mquina, que podra
efectuar tericamente cualquier clculo matemtico, fue importante en el desarrollo de las computadoras digitales.
J O R G E E D U A R D O C A R R I N V .
176
Esta Mquina reemplaza una a por otra a y se desplaza a la derecha, si encuentra
una b la reemplazar tambin por una a y desplaza la CLE a la derecha, cuando
encuentre una celda en blanco cambiar de estado y se desplaza a la izquierda, en el
estado q
1
recorrer la cinta a la izquierda, hasta encontrar la celda vaca que se
encuentra antes de la cadena, donde cambiar de estado, se mover a la celda inicial
y se parar. La transicin (q
1
, b) no se define porque jams se utilizar.
El funcionamiento de esta MT para la cadena w = abba, lo podemos representar por
medio de las descripciones instantneas siguientes (las celdas anteriores y
posteriores a la cadena se asumen vacas y solo se indican cuando es necesario):
(q
0
,abba) d (q
0
,abba) d (q
0
,aaba) d (q
0
,aaaa) d (q
0
,aaaa#) d (q
1
,aaaa) d (q
1
,aaaa) d
(q
1
,aaaa) d (q
1
,aaaa) d (q
1
,#aaaa) d (q
2
,aaaa)
O bien, otra notacin ms compacta sera poniendo el estado antes del smbolo
correspondiente a la celda actual:
q
0
abba d aq
0
bba d aaq
0
ba d aaaq
0
a d aaaaq
0
# d aaaq
1
a d aaq
1
aa d aq
1
aaa d q
1
aaaa
d q
1
#aaaa d q
2
aaaa
Ej empl o 2
Consideremos la Mquina de Turing siguiente: Q = {q
0
, q
1
, q
2
}, = {0, 1}, = {0, 1, #},
s = q
0
, F = { q
2
} y las transiciones:
(q
0
, 0) = (q
0
, 1, R) (q
0
, 1) = (q
0
, 0, R)
(q
0
, #) = (q
1
, #, L) (q
1
, 0) = (q
1
, 0, L)
(q
1
, 1) = (q
1
, 1, L) (q
1
, #) = (q
2
, #, R)
Esta Mquina complementa las cadenas sobre el alfabeto hasta encontrar una
celda en blanco, entonces regresar hasta el primer smbolo no blanco y parar.
Como en el primer ejemplo, se asume que la CLE se ubica sobre el primer smbolo de
cadena de entrada. Por ejemplo, para la cadena w = 0110, tenemos:
(q
0
, 0110) d (q
0
, 1110) d (q
0
, 1010) d (q
0
, 1000) d (q
0
, 1001#) d (q
1
, 1001) d (q
1
, 1001)
d (q
1
, 1001) d (q
1
, 1001) d (q
1
, #1001) d (q
2
, 1001)
Este proceso se puede resumir de la siguiente forma: (q
0
, 0110) d* (q
2
, 1001). (Donde
el asterisco denota que se requieren de varias transiciones para llegar a la descripcin
de la derecha)
T E O R A D E L A C O M P U T A C I N
177
Funciones Turing-Comput ables
Puesto que se una MT puede leer y escribir sobre la cinta, podemos observar que la
cadena de entrada tambin se transforma en una cadena de salida, formada por los
smbolos que quedan en la cinta al terminar la ejecucin de la misma, para ello, es
conveniente construir la MT de tal forma que finalice con la CLE ubicada en la misma
posicin donde inici, tal como se hizo en los ejemplos precedentes. La posicin inicial
puede ser elegida arbitrariamente, en estos ejemplos hemos elegido la celda que
contiene al primer smbolo de la cadena, pero puede ser la celda vaca precedente o
la que est despus del final de la cadena, lo importante es que la celda inicial elegida
sea siempre la misma, para que la MT trabaje correctamente.
En estos ejemplos, las MTs se han construido de tal forma que siempre paren, que
siempre alcancen al estado final. A la secuencia de movimientos que nos conducen a
una configuracin de parada se le llama Computacin. En forma compacta,
expresamos una computacin como: (q
0
, w) d* (q
f
, u)
Si existe una funcin F sobre la cadena w, tal que F(w) = u, y si existe una Mquina de
Turing para la cual se puede efectuar la computacin (q
0
, w) d* (q
f
, u), donde s = q
0
y
q
f
F, para cualquier cadena w en el dominio de F, entonces se dice que la funcin
de cadena F es Turing-computable.
Ej empl o 1
Construir una Mquina de Turing para realizar la suma de dos nmeros en base uno,
es decir, el nmero n se representa como una cadena de n unos: 1
n
. El proceso a
realizar para sumar n + m consiste en computar: (q
0
, 1
n
+1
m
) d* (q
4
, 1
n+m
):
(q
0
, 1) = (q
0
, 1, R) (q
0
, +) = (q
1
, 1, R)
(q
1
, 1) = (q
1
, 1, R) (q
1
, #) = (q
2
, #, L)
(q
2
, 1) = (q
3
, #, L) (q
3
, 1) = (q
3
, 1, L)
(q
3
, #) = (q
4
, #, R)
Por ejemplo para sumar 3 + 2 tenemos la siguiente computacin:
(q
0
, 111+11) d (q
0
, 111+11) d (q
0
, 111+11) d(q
0
, 111+11) d (q
1
, 111111) d (q
1
, 111111)
d (q
1
, 111111#) d (q
2
, 111111) d (q
3
, 11111#) d (q
3
, 11111) d (q
3
, 11111) d (q
3
, 11111)
d (q
3
, 11111) d (q
3
, #11111) d (q
4
, 11111)
J O R G E E D U A R D O C A R R I N V .
178
Ej empl o 2
Para construir una Mquina de Turing para realizar la resta de dos nmeros, se debe
realizar un proceso ms elaborado que el del ejemplo anterior, pues debemos ir
eliminando un 1 del sustraendo por cada 1 del minuendo y repetir este proceso tantas
veces como sea necesario, hasta agotar la cantidad de unos en alguna de las dos
partes, considerando la posibilidad de que la diferencia sea negativa. Este proceso se
resume entonces en: (q
0
, 1
n
1
m
) d* (q
7
, 1
n-m
), si el resultado es positivo o cero y en:
(q
0
, 1
n
1
m
) d* (q
7
, 1
m-n
) para el caso contrario.
(q
0
, 1) = (q
0
, 1, R) (q
0
, ) = (q
1
, , R) (q
1
, 1) = (q
1
, 1, R)
(q
1
, #) = (q
2
, #, L) (q
2
, 1) = (q
3
, #, L) (q
3
, 1) = (q
3
, 1, L)
(q
3
, ) = (q
3
, , L) (q
3
, #) = (q
4
, #, R) (q
4
, 1) = (q
0
, #, R)
(q
4
, ) = (q
5
, 1, L) (q
5
, #) = (q
6
, , L) (q
6
, #) = (q
7
, #, R)
(q
2
, ) = (q
6
, #, L) (q
6
, 1) = (q
6
, 1, L)
Por ejemplo, para realizar la resta de 3 2, iniciamos con 11111 y tenemos que
realizar la siguiente secuencia, hasta obtener el resultado de 1:
(q
0
, 11111) d (q
0
, 11111) d (q
0
, 11111) d (q
0
, 11111) d (q
1
, 11111) d (q
1
, 11111)
d (q
1
, 11111#) d (q
2
, 11111#) d (q
3
, 1111##) d (q
3
, 1111) d (q
3
, 1111) d
(q
3
, 1111) d (q
3
, 1111) d (q
3
, #1111) d (q
4
, #1111) d (q
0
, ##111) d (q
0
, 111) d
(q
0
, 111) d (q
1
, 111) d (q
1
, 111#) d (q
2
, 111#) d (q
3
, 11##) d (q
3
, 11) d (q
3
, 11)
d (q
3
, #11) d (q
4
, #11) d (q
0
, ##1) d (q
0
, 1) d (q
1
, 1#) d (q
2
, 1#) d (q
6
, 1##) d
(q
6
, #1) d (q
7
, #1)
Ahora, para restar 2 3, la secuencia es como sigue:
(q
0
, 11111) d (q
0
, 11111) d (q
0
, 11111) d (q
1
, 11111) d (q
1
, 11111) d (q
1
, 11111)
d (q
1
, 11111#) d (q
2
, 11111#) d (q
3
, 1111##) d (q
3
, 1111) d (q
3
, 1111) d
(q
3
, 1111) d (q
3
, 1111) d (q
3
, #1111) d (q
4
, #1111) d (q
0
, ##111) d (q
0
, 111) d
(q
1
, 111) d (q
1
, 111) d (q
1
, 111#) d (q
2
, 111#) d (q
3
, 11##) d (q
3
, 11) d (q
3
, 11)
d (q
3
, #11) d (q
4
, #11) d (q
0
, ##1) d (q
1
,1#) d (q
1
,1#) d (q
2
,1#) d (q
3
, ##) d
(q
3
, #) d (q
4
, #) d (q
5
, #1) d (q
6
, #1) d (q
7
, #1)
T E O R A D E L A C O M P U T A C I N
179
Finalmente, para restar 1 1, se tiene la siguiente secuencia:
(q
0
, 11) d (q
0
, 11) d (q
1
, 11) d (q
1
, 11#) d (q
2
, 11#) d (q
3
, 1##) d (q
3
, 1) d
(q
3
, #1) d (q
4
, #1) d (q
0
, ##) d (q
1
, #) d (q
2
, #) d (q
6
, ##) d (q
7
, ##)
Ej empl o 3
Constryase una Mquina de Turing a la que se le da una cadena no vaca de unos y
ceros para que devuelva una cadena con los smbolos ordenados, primero los ceros y
a continuacin los unos, como se ejemplifica a continuacin:
(q
0
, 100101) d* (q
5
, 000111)
Las transiciones necesarias son:
(q
0
, 0) = (q
0
, 0, R) (q
0
, 1) = (q
1
, 1, R) (q
1
, 1) = (q
1
, 1, R)
(q
1
, 0) = (q
2
, 1, L) (q
2
, 1) = (q
2
, 1, L) (q
2
, 0) = (q
3
, 0, R)
(q
2
, #) = (q
3
, #, R) (q
3
, 1) = (q
1
, 0, R) (q
1
, #) = (q
4
, #, L)
(q
0
, #) = (q
4
, #, L) (q
4
, 0) = (q
4
, 0, L) (q
4
, 1) = (q
4
, 1, L)
(q
4
, #) = (q
5
, #, R)
Reconocimient o de Lenguajes con Mquinas de Turing
Otra aplicacin especfica de las MT es la determinacin de que una cadena dada
pertenezca o no a cierto lenguaje estipulado. A esta propiedad se le llama
Decidibilidad, ya que la MT puede decidir o reconocer si la cadena pertenece o no al
lenguaje dado. La MT nos hace saber que la cadena pertenece al referido lenguaje
cuando llega a un tipo de estado final llamado estado de Aceptacin, y en caso
contrario, nos indica que la cadena no pertenece a dicho lenguaje cuando llega a otro
estado final, llamado en este caso, estado de Rechazo.
Sea M una MT cualquiera, entonces decimos que el lenguaje aceptado por M es:
L(M) = { w * | (q
0
, w) d* (q
A
, u) para q
A
F}
Ej empl o 1
Construir una Mquina de Turing para decidir el Lenguaje Regular a*b
+
.
Sea Q = { q
0
, q
1
, q
A
, q
R
}, = { a, b }, = { a, b, #}, s = q
0
, F = { q
A
}, R = { q
R
} y las
transiciones:
J O R G E E D U A R D O C A R R I N V .
180
(q
0
, a) = (q
0
, a, R) (q
0
, b) = (q
1
, b, R)
(q
1
, b) = (q
1
, b, R) (q
1
, #) = (q
A
, #, R)
Las siguientes transiciones se utilizan en caso de rechazar la cadena:
(q
0
, #) = (q
R
, #, R) (q
1
, a) = (q
R
, a, R)
En la Figura 10.5 se compara esta MT obtenida con el AFD equivalente, ya que se
encontrar una gran similitud entre ambos, salvo las transiciones para la # y el hecho
de que la MT no requiere de agotar la cadena para rechazarla.
Ej empl o 2
El lenguaje dado por la expresin regular L = ( ( a 4 b )
2
)*, est formado por todas las
cadenas de longitud par, y es aceptado por el AFD definido por: Q = { q
0
, q
1
}, s = q
0
,
= { a, b }, F = { q
0
} y las transiciones siguientes:
( q
0
, a) = q
1
( q
0
, b) = q
1

( q
1
, a) = q
0
( q
1
, b) = q
0

Para hacer la MT equivalente, tenemos que: Q = { q
0
, q
1
, q
R
, q
A
}, s = q
0
, = { a, b },
= { a, b, # }, R = { q
R
}, F = { q
A
} y las transiciones siguientes:
(q
0
, a) = (q
1
, a, R) (q
0
, b) = (q
1
, b, R)
(q
1
, a) = (q
0
, a, R) (q
1
, b) = (q
0
, b, R)
(q
0
, #) = (q
A
, #, R) (q
1
, #) = (q
R
, #, R)
En la Figura 10.6 se muestra grficamente a la MT que decide el lenguaje en cuestin:
Tambin es posible construir una MT no determinista a partir de un AFN dado, sin
embargo, esto no es recomendable, siempre es preferible encontrar primero el AFD
mnimo equivalente antes de construir la MT determinista.
T E O R A D E L A C O M P U T A C I N
181
Dec i di bi l i dad de LI Cs
En el siguiente captulo vamos a mostrar una tcnica para construir una MT a partir de
un APD o un APN dados, por lo pronto, nos limitaremos a afirmar que Todo LIC es
Decidible y mostrar, con un par de ejemplos, como se puede construir una MT para
decidir esta clase de lenguajes.
Ej empl o 1
Construir una Mquina de Turing para decidir al siguiente LIC: L = { a
n
b
n
| n 0 }. Este
proceso requiere de varias fases, la primera consiste en reemplazar la primera a por
un smbolo # para luego buscar la ltima b y cambiarla por otro #, con el fin de
descartar por parejas. Para ello se usan las siguientes transiciones:
(q
0
, a) = (q
1
, #, R) (q
1
, b) = (q
1
, b, R)
(q
1
, a) = (q
1
, a, R) (q
1
, #) = (q
2
, #, L)
(q
2
, b) = (q
3
, #, L)
En la segunda fase usamos el estado q
3
para retroceder hasta localizar el # escrito
previamente y se regresa al estado q
0
para repetir el proceso anterior:
(q
3
, a) = (q
3
, a, L) (q
3
, b) = (q
3
, b, L)
(q
3
, #) = (q
0
, #, R)
El proceso termina si al regresar al estado q
0
ya no queda ninguna a y tampoco
ninguna b, sino que la cinta est en blanco y encontramos al smbolo #, esta situacin
tambin aplica si la cadena inicial es la cadena vaca, por tanto, la transicin final debe
ser:
(q
0
, #) = (q
A
, #, L)
J O R G E E D U A R D O C A R R I N V .
182
Si la cadena pertenece al lenguaje la cinta quedar en blanco y se finalizar en el
estado de aceptacin q
A
, en caso contrario, la MT se utilizar alguna de las tres
transiciones para ir al estado de rechazo, dependiendo del caso:
(q
2
, a) = (q
R
, a, L) (q
0
, b) = (q
R
, b, L)
(q
2
, #) = (q
R
, #, L)
La Mquina de Turing est dada por: Q = {q
0
, q
1
, q
2
, q
3
, q
A
, q
R
}, = {a,b}, = {a, b, #},
s = q
0
, F = {q
A
}, R = {q
R
} y las 12 transiciones anteriores, por ejemplo, para procesar la
cadena w
1
= aabb, tenemos las siguientes descripciones instantneas:
(q
0
, aabb) d (q
1
, #abb) d (q
1
, #abb) d (q
1
, #abb) d (q
1
, #abb#) d (q
2
, #abb#) d
(q
3
, #ab#) d (q
3
, #ab#) d (q
3
, #ab#) d (q
0
, #ab#) d (q
1
, #b#) d (q
1
, #b#) d (q
2
, #b#) d
(q
3
, ##) d (q
0
, ##) d (q
A
, ##)
Al aplicar la MT anterior para cadenas que no pertenecen al lenguaje citado,
tendremos situaciones como las siguientes, si sobra una a: (q
0
, aaabb) d* (q
R
, ##) o
bien si sobran varias as: (q
0
, aaaab) d* (q
R
, aa), mientras que, cuando sobra una o
varias bs: (q
0
, aabbb) d* (q
R
, #b), adems, podemos tener situaciones en las que se
encuentra una a donde debera haber una b, o que hay una b donde debera haber
una a y que tambin nos conducirn a q
R
.
Es frecuente que se considere innecesario definir las transiciones hacia el estado de
rechazo, sin perder el concepto de Decidibilidad, sino que, como en el caso de los
AFDs, se considere como rechazada a la cadena cuando no existen transiciones
definidas aplicables, de esta manera nos podemos ahorrar el esfuerzo de enlistar una
gran cantidad de transiciones hacia el estado de rechazo.
Ej empl o 2
Construir una Mquina de Turing para decidir el lenguaje { w { a, b }* | w = w
R
}.
Esta Mquina de Turing est dada por: Q = {q
0
, q
1
, q
2
, q
3
, q
4
, q
5
, q
A
}, s = q
0
, = {a, b},
= { a, b, # }, F = { q
A
} y las transiciones que se explican a continuacin:
Primero se lee el smbolo inicial de la cadena, si se trata de una a se borra, pasando
al estado q
1
y se utilizan las transiciones de la columna izquierda para verificar si
existe una a al final de la cadena. Pero si el smbolo inicial es una b, se borra pasando
al estado q
2
, y entonces se emplean las transiciones de la columna derecha para
verificar que el smbolo del final de la cadena sea una b:
T E O R A D E L A C O M P U T A C I N
183
(q
0
, a) = (q
1
, #, R) (q
0
, b) = (q
2
, #, R)
(q
1
, a) = (q
1
, a, R) (q
2
, a) = (q
2
, a, R)
(q
1
, b) = (q
1
, b, R) (q
2
, b) = (q
2
, b, R)
(q
1
, #) = (q
3
, #, L) (q
2
, #) = (q
4
, #, L)
(q
3
, a) = (q
5
, #, L) (q
4
, b) = (q
5
, #, L)
Si al regresar a la celda anterior la encuentra vaca, significa que se trataba de una
palndroma de longitud impar y se acepta la cadena:
(q
3
, #) = (q
A
, #, L) (q
4
, #) = (q
A
, #, L)
El estado q
5
se utilizar para regresar al inicio de la cadena y repetir nuevamente el
ciclo de transiciones, pero, si la cinta ya qued en blanco, se pasar al estado de
aceptacin, pues se trata de una palndroma de longitud par:
(q
5
, a) = (q
5
, a, L) (q
5
, b) = (q
5
, b, L)
(q
5
, #) = (q
0
, #, R) (q
0
, #) = (q
A
, #, L)
Ej empl o 3
Construir una Mquina de Turing para decidir el lenguaje { w {0, 1}* | N
0
(w)=N
1
(w) }.
La estrategia que se sigue para construir esta MT consiste en leer y borrar el primer
smbolo de la cadena, si ste es un 0, deber buscar un 1, si lo encuentra marcarlo y
si no, rechazar la cadena. Anlogamente, si el smbolo inicial es un 1, se buscar
posteriormente un 0. Pero si el smbolo inicial es uno previamente marcado, ste
simplemente se borra. Este proceso se repite hasta agotar la cadena y es entonces
cuando se acepta.
Las transiciones necesarias son:
(q
0
, 0) = (q
1
, #, R) (q
0
, 1) = (q
2
, #, R)
(q
1
, 0) = (q
1
, 0, R) (q
2
, 1) = (q
2
, 1, R)
(q
1
, x) = (q
1
, x, R) (q
2
, x) = (q
2
, x, R)
(q
1
, #) = (q
R
, #, L) (q
2
, #) = (q
R
, #, L)
(q
1
, 1) = (q
3
, x, L) (q
2
, 0) = (q
3
, x, L)
(q
3
, ) = (q
3
, , L) (q
3
, #) = (q
0
, #, R)
(q
0
, x) = (q
0
, #, R) (q
0
, #) = (q
A
, #, R)
Donde se emplea para representar a cualquier smbolo de la cinta distinto de #.
J O R G E E D U A R D O C A R R I N V .
184
Ot r os Lenguaj es Dec i di bl es
Finalmente, mostraremos un par de ejemplos de construccin de MTs que deciden
sobre las cadenas de un lenguaje que no es LIC.
Ej empl o 1
De manera anloga al caso presentado en el ejemplo anterior podemos construir una
Mquina de Turing para decidir el lenguaje {a
n
b
n
c
n
| n 0 }, del que ya se dijo antes
no es un LIC. Esta Mquina de Turing est dada por: Q = {q
0
, q
1
, q
2
, q
3
, q
4
, q
A
}, s = q
0
,
= { a, b }, = { a, b, c, d, # }, F = { q
A
} y las transiciones siguientes:
(q
0
, #) = (q
A
, #, L) (q
0
, a) = (q
1
, #, R)
(q
1
, a) = (q
1
, a, R) (q
1
, d) = (q
1
, d, R)
(q
1
, b) = (q
2
, d, R) (q
2
, b) = (q
2
, b, R)
(q
2
, c) = (q
2
, c, R) (q
2
, #) = (q
3
, #, L)
(q
3
, c) = (q
4
, #, L) (q
4
, ) = (q
4
, , L)
(q
4
, #) = (q
0
, #, R) (q
0
, d) = (q
0
, d, R)
Como ya se dijo, representa cualquier smbolo de la cinta distinto de #. En la Figura
10.7 tenemos la representacin grfica del diagrama de transiciones de esta MT:
Por ejemplo, para aceptar la cadena w
1
= abc, tenemos la siguiente secuencia de
descripciones instantneas:
(q
0
, abc) d (q
1
, #bc) d (q
2
, #dc) d (q
2
, #dc#) d (q
3
, #dc#) d (q
4
, #d#) d (q
4
, #d#) d
(q
0
, #d#) d (q
0
, #d#) d (q
A
, #d#)
T E O R A D E L A C O M P U T A C I N
185
Aunque lo nico necesario es alcanzar el estado de aceptacin q
A
para saber que la
cadena pertenece a un lenguaje, en ocasiones se requiere que la MT escriba una
respuesta de salida: generalmente un 1 o una S para indicar la aceptacin y un 0 o
una N para rechazarla. Por lo tanto, se puede complementar el ejemplo presente con
las siguientes transiciones adicionales, que borran el contenido de la cinta y escriben
el smbolo 1 para indicar que la cadena es aceptada:
(q
A
, d) = (q
A
, #, L) (q
A
, #) = (q
6
, 1, R)
(q
6
, #) = (q
7
, #, L)
Como se dijo, resulta muy laborioso determinar el conjunto de todas las transiciones
necesarias para indicar que la cadena es rechazada, adems, para todas las posibles
configuraciones se tendra, que limpiar el contenido restante de la cinta y escribir un 0
Ej empl o 2
Construir una Mquina de Turing para decidir el lenguaje L = { ww | w { a, b }* }. Las
transiciones necesarias para que esta MT pueda reconocer las cadenas de L se
dividen en dos procesos, el primero sirve para la localizacin de la mitad de la cadena,
y verificar si es de longitud par, para ello sustituimos minsculas por maysculas:
(q
0
, #) = (q
A
, #, R) (q
0
, a) = (q
1
, A, R)
(q
0
, b) = (q
1
, B, R) (q
1
, a) = (q
1
, a, R)
(q
1
, b) = (q
1
, b, R) (q
1
, #) = (q
2
, #, L)
(q
1
, A) = (q
2
, A, L) (q
1
, B) = (q
2
, B, L)
(q
2
, a) = (q
3
, A, L) (q
2
, b) = (q
3
, B, L)
(q
3
, a) = (q
3
, a, L) (q
3
, b) = (q
3
, b, L)
(q
3
, A) = (q
0
, A, R) (q
3
, B) = (q
0
, B, R)
Una vez concluido este primer proceso, marcamos con el smbolo x la celda donde
inicia la segunda mitad de la cadena e iniciamos las transiciones que corresponden al
segundo paso, y que dependen del smbolo que estaba en la celda marcada:
(q
0
, A) = (q
4
, x, L) (q
0
, B) = (q
5
, x, L)
Nos movemos al inicio de la cadena para verificar que el primer smbolo coincide con
el que acabamos de marcar en la segunda mitad de la misma, si es as lo borramos y
regresamos a la segunda mitad de la cadena, donde continuamos con el proceso de
marcado y borrado:
J O R G E E D U A R D O C A R R I N V .
186
(q
4
, ) = (q
4
, , L) (q
5
, ) = (q
5
, , L)
(q
4
, #) = (q
6
, #, R) (q
5
, #) = (q
7
, #, R)
(q
6
, A) = (q
8
, #, R) (q
7
, B) = (q
8
, #, R)
(q
8
, A) = (q
8
, A, R) (q
8
, B) = (q
8
, B, R)
(q
8
, x) = (q
9
, x, R) (q
9
, x) = (q
9
, x, R)
(q
9
, A) = (q
4
, x, L) (q
9
, B) = (q
5
, x, L)
Finalmente, para aceptar la cadena se tiene la ltima transicin, cuando hemos
borrado la primera mitad de la cadena y solamente quedan xs en la cinta:
(q
9
, #) = (q
A
, #, R)
Variant es de la Mquina de Turing
Hay otras versiones de Mquinas de Turing que, aunque todas son equivalentes al
modelo previamente descrito, son relevantes ya que permiten simplificar y eficientar
ciertas tareas especficas. A continuacin presentamos algunas de estas variantes.
Movi mi ent o Est ac i onar i o
La definicin original obliga a que la cabeza de lectura-escritura se desplace hacia la
izquierda (L) o hacia la derecha (R), a veces es necesario hacer que la cabeza pueda
permanecer en la posicin original (S), lo que en esencia sintetiza dos transiciones en
una sola, tal como se indica en el siguiente ejemplo:
(q
0
, b) = (q
1
, a, R) ) (q
1
, a) = (q
2
, a, L) (q
0
, b) = (q
2
, a, S)
Lo nico que hace falta en este caso es agregar la tercera opcin en el contradominio
de la funcin de transicin: :Q Q { L, R, S }.
Mqui nas Mul t i c el das
Otra modificacin interesante es la llamada Mquina de Turing Multicelda, en la cual
se considera que la cinta est formada por n pistas, por lo tanto, cada celda de la cinta
est subdividida en n subceldas, lo que permite almacenar n smbolos por celda,
como ejemplo tenemos la siguiente MT de tres pistas:
El contenido de cada celda puede ser representado entonces por una tercia ordenada
de smbolos, en el ejemplo anterior la celda actual contiene (0, 1, 1). Como ya se dijo,
T E O R A D E L A C O M P U T A C I N
187
estas mquinas no tienen ms poder, pero hacen ms fcil la solucin de ciertos
problemas.
Ej empl o 1
Podemos utilizar una MT Multicelda para hacer la suma binaria de dos cadenas de
unos y ceros de la misma longitud. En la primera pista se escribe la cadena que
representa el primer sumando y en la segunda al otro y se realiza la suma sobre la
tercer pista, inicialmente en blanco.
Por comodidad, se asume que la cabeza de lectura-escritura se encuentra en el
extremo derecho de la cinta. El estado q
0
, es para cuando la suma no implica acarreo,
mientras que q
1
es el estado para la suma con acarreo. El conjunto de transiciones
necesario para realizar la suma es:
(q
0
, (0, 0, #)) = (q
0
, (0, 0, 0), L) (q
0
, (0, 1, #)) = (q
0
, (0, 1, 1), L)
(q
0
, (1, 0, #)) = (q
0
, (1, 0, 1), L) (q
0
, (1, 1, #)) = (q
1
, (1, 1, 0), L)
(q
1
, (0, 0, #)) = (q
0
, (0, 0, 1), L) (q
1
, (1, 0, #)) = (q
1
, (1, 0, 0), L)
(q
1
, (0, 1, #)) = (q
1
, (0, 1, 0), L) (q
1
, (1, 1, #)) = (q
1
, (1, 1, 1), L)
(q
0
, (#, #, #)) = (q
2
, (#, #, #), R) (q
1
, (#, #, #)) = (q
2
, (0, 0, 1), S)
Como ejemplo se muestra la siguiente suma, usando las transiciones precedentes:
Ej empl o 2
Una situacin comn en la que se emplean las MT multiceldas, consiste en hacer el
reconocimiento de una cadena sin alterarla, empleando una segunda pista para hacer
J O R G E E D U A R D O C A R R I N V .
188
el marcaje de las celdas. Con base en lo anterior, construir una MT de dos pistas para
reconocer las cadenas del siguiente lenguaje: L = { w {a, b}* | N
a
(w)=N
b
(w) }.
Las transiciones necesarias son:
(q
0
, (a, #)) = (q
1
, (a, x), R) (q
0
, (b, #)) = (q
2
, (b, x), R)
(q
1
, (a, #)) = (q
1
, (a, #), R) (q
2
, (b, #)) = (q
2
, (b, #), R)
(q
1
, (b, y)) = (q
1
, (b, y), R) (q
2
, (a, y)) = (q
2
, (a, y), R)
(q
1
, (#, #)) = (q
R
, (#, #), L) (q
2
, (#, #)) = (q
R
, (#, #), L)
(q
1
, (b, #)) = (q
3
, (b, y), L) (q
2
, (a, #)) = (q
3
, (a, y), L)
(q
3
, (a, #)) = (q
3
, (a, #), L) (q
3
, (b, #)) = (q
3
, (b, #), L)
(q
3
, (a, y)) = (q
3
, (a, y), L) (q
3
, (b, y)) = (q
3
, (b, y), L)
(q
3
, (a, x)) = (q
0
, (a, x), R) (q
3
, (b, x)) = (q
0
, (b, x), R)
(q
0
, (a, y)) = (q
0
, (a, x), R) (q
0
, (b, y)) = (q
0
, (b, x), R)
(q
0
, (#, #)) = (q
A
, (#, #), R)
Debido a que este tipo de MTs no es ms eficiente que la correspondiente de una sola
pista, no existen otras razones prcticas para su uso, con excepcin de las
aplicaciones semejantes a la del primer ejemplo.
Mqui nas Semi -Ac ot adas
Otra variante comn es la MT semi-acotada, es aquella que solamente es infinita en
una direccin, mientras que en la otra direccin est acotada por una celda inicial, la
cual no se debe intentar traspasar hacia la izquierda, porque se provocara un error.
Debido a esto, conviene que se marque esta celda inicial con un smbolo especial,
como por ejemplo, el asterisco, para indicar que nos encontramos en el lmite
izquierdo de la misma y evitar cualquier transicin en esa direccin, tal como se
muestra en la Figura 10.10:
T E O R A D E L A C O M P U T A C I N
189
Mqui nas Mul t i c i nt as
El modelo multicinta es muy eficiente, ste consiste en una MT que contiene varias
cintas y cada una de ellas con su cabeza de lectura-escritura, las cuales se mueven
de manera independiente. Este modelo es muy flexible, cada transicin permite
cambiar de estado dependiendo del contenido en las celdas de todas las cintas,
escribir un smbolo distinto en cada celda para cada una de las cintas, as como
mover la cabeza de lectura-escritura de cada una de las cintas en direcciones
independientes, entonces tenemos que: : Q
n
Q
n
{R,L,S}
n
.
Ej empl o
Construir una MT multicinta para el reconocimiento de cadenas pertenecientes al
lenguaje L = { a
n
b
n
| n > 0 }, para ello se emplean las siguientes transiciones:
(q
0
, (a, #)) = (q
0
, (a, a), (R, R) ) (q
0
, (b, #)) = (q
1
, (b, #), (S, L) )
(q
1
, (b, a)) = (q
1
, (b, a), (R, L) ) (q
1
, (#, #)) = (q
2
, (#, #), (S, R) )
La operacin de esta MT la representamos en la Figura 10.11:
Mqui nas Mul t i di mensi onal es
Finalmente, tambin podemos hablar de la MT multidimensional, la cual puede realizar
desplazamientos en varias dimensiones, como por ejemplo, en la Figura 10.12 se
muestra una MT de dos dimensiones, la cual permite los desplazamientos a la
izquierda y a la derecha, as como tambin hacia arriba o hacia abajo (U, D).
J O R G E E D U A R D O C A R R I N V .
190
Por cada dimensin adicional se debern considerar dos direcciones ms, por
ejemplo, frente y atrs (F, B) para la tercera dimensin, y as sucesivamente.
A pesar de ser ms eficientes que los modelos anteriores, son poco utilizadas, debido
a la complejidad que involucran en su conceptualizacin, por lo que no incluiremos
ningn ejemplo de este modelo.
Aut mat a de Dos Pi l as
Una Mquina de Turing puede tambin ser simulada por un Autmata Determinista de
Dos Pilas, a continuacin se explica el procedimiento a seguir:
1. Primero se copia la cadena contenida en la cinta a la primera pila.
2. A continuacin se vaca el contenido de la primera pila a la segunda, con objeto
de que el smbolo de la cima de la pila coincida con el inicio de la cadena.
3. Ahora se inicia la simulacin propiamente: cada transicin de la MT hacia la
derecha se realiza desapilando un smbolo de la segunda pila y pasndolo a la
primera.
4. Cada transicin de la MT hacia la izquierda, por el contrario, se realiza
desapilando un smbolo de la primera pila y pasndolo a la segunda. De esta
forma el smbolo que apunta la CLE en la MT ser siempre el que se encuentre
en la cima de la segunda pila, y los smbolos a la izquierda de sta sern los
contenidos en la primera pila, tal como se ejemplifica en la Figura 10.13:
5. La escritura de la cinta se realiza simplemente definiendo transiciones en las que
se reemplace el smbolo que se desapila (lectura) por el nuevo smbolo que se
apila (escritura).
Mquina Universal de Turing
La Mquina Universal de Turing (MUT) es una MT que nos permite reproducir el
funcionamiento de cualquier otra mquina M. Para ello, es necesario establecer un
T E O R A D E L A C O M P U T A C I N
191
cdigo que nos permita proporcionar a la MUT la informacin de las transiciones de
mquina M, dada bajo las siguientes consideraciones:
Por ejemplo, sea M una MT cuyos estados son: Q = { q
1
, q
2
, , q
n
}, donde s = q
1
y
F = { q
2
}, entonces podemos iniciar la codificacin de los estados de M, de la
siguiente manera: al estado q
1
le asignamos el cdigo 1, a q
2
le corresponde 11, q
3

por 111, y as sucesivamente hasta llegar a q
n
representado por 1
n
.
Similarmente, si los smbolos admitidos por la cinta de M son = {
1
, ,
m
}, donde
# =
1
, representamos a cada smbolo
i
por una cadena de i unos, en este caso, el
smbolo # es representado por 1, mientras que
m
le corresponde 1
m
.
Finalmente los desplazamientos a la izquierda se representan por 1 y a la derecha por
11.
Entonces una transicin de M quedar codificada por cinco sucesiones de unos,
separadas por un cero, con un cero al principio y otro al final, de tal forma que, por
ejemplo, para codificar a la siguiente transicin:
(q
3
,
1
) = (q
2
,
3
, R )
La representamos mediante la siguiente cadena: 01110101101110110.
Entonces, la MUT se construir como una mquina de tres cintas; en la primera se
colocarn todas las transiciones codificadas de M, una a continuacin de otra y la
cabeza de lectura-escritura se ubica al inicio de esta cadena.
En la segunda cinta se escribe la codificacin del contenido de la cinta de M (la
cadena de entrada) como varias secuencias de unos, separadas por ceros, la cabeza
de lectura-escritura tambin se sita al inicio de esta cadena.
La tercera cadena contiene la codificacin del estado actual, que inicialmente es q
1
,
representado por un 1.
El funcionamiento de la MUT requiere de muchas transiciones para ejecutar cada
transicin de M, por ejemplo, primero deber leer el estado actual en la tercera cinta, a
continuacin el smbolo actual en la segunda y finalmente buscar la transicin
correspondiente en la primera cinta; una vez encontrada, modificar el estado actual y
el contenido de la cadena en la segunda cinta, segn indique la transicin, as como
buscar el siguiente cero a la derecha o a la izquierda, dependiendo de lo que indique
la transicin.
J O R G E E D U A R D O C A R R I N V .
192
La MUT aceptar la cadena si M la acepta, y el contenido de la tercera cinta ser 11,
que corresponde al estado de aceptacin y rechazar la cadena si M la rechaza, de tal
forma que la MUT se comportar de manera idntica a M.
Ej empl o
Codifique la MT definida por las siguientes transiciones:
(q
0
, a) = (q
0
, a, R) (q
0
, b) = (q
1
, b, R)
(q
1
, b) = (q
1
, b, R) (q
1
, #) = (q
A
, #, R)
Codificando los diferentes estados, tenemos: 1 q
0
, 11 q
A
y 111 q
1
.
Ahora, codificando los diferentes smbolos: 1 #, 11 a y 111 b.
Y como todos los desplazamientos son a la derecha, codificamos solamente: 11 R.
Por lo tanto, la siguiente cadena representa la codificacin solicitada:
0101101011011001011101110111011001110111011101110110011101011010110
Mquinas de Turing bsicas
Antes de pretender construir Mquinas de Turing ms compleja, debemos construir
una serie de MTs bsicas, que realicen operaciones muy elementales,
fundamentalmente las hay de dos tipos, las que sirven para posicionar la CLE y las
que sirven para escribir.
Movi mi ent os
La Mquina de Turing que se desplaza una celda a la derecha se denota por la letra R
y consiste de tan slo dos transiciones:
( q
0
, ) = ( q
1
, , R ) ( q
0
, # ) = ( q
1
, #, R )
Donde representa cualquier smbolo de la cinta distinto del vaco.
Similarmente, la Mquina de Turing que se desplaza una celda a la izquierda se
denota por la letra L y tambin consta de dos transiciones:
( q
0
, ) = ( q
1
, , L ) ( q
0
, # ) = ( q
1
, #, L )
T E O R A D E L A C O M P U T A C I N
193
Bsqueda de c el das vac as
La siguiente MT busca la primera celda en blanco #, ubicada a la derecha de la
posicin actual, y ah se para, a esta mquina se le suele referir como R
#
y es
aplicable a cualquier alfabeto y para cualquier contenido de la cinta.
Esta MT est dada por: Q = { q
0
, q
1
, q
2
, q
3
}, s = q
0
, = 4 {#}, F = { q
3
} y las
transiciones:
(q
0
, ) = (q
1
, , R) (q
0
, #) = (q
1
, #, R)
(q
1
, ) = (q
1
, , R) (q
1
, #) = (q
2
, #, L)
(q
2
, ) = (q
3
, , R) (q
2
, #) = (q
3
, #, R)
De manera muy similar se puede construir la mquina que realice la bsqueda del
primer smbolo blanco a la izquierda de la posicin actual: L
#
, basta reemplazar las L
por R y viceversa.
Bsqueda de c el das no vac as
Esta otra MT busca el primer smbolo no blanco , ubicado a la izquierda de la
posicin actual, y ah se para, a esta mquina se le suele referir como L
#
y es
aplicable a cualquier alfabeto y para cualquier contenido de la cinta.
Esta MT est dada por: Q = { q
0
, q
1
, q
2
, q
3
}, s = q
0
, = 4 { # }, F = { q
3
} y las
transiciones:
(q
0
, ) = (q
1
, , L) (q
0
, #) = (q
1
, #, L)
(q
1
, ) = (q
2
, , R) (q
1
, #) = (q
1
, #, L)
(q
2
, ) = (q
3
, , L) (q
2
, #) = (q
3
, #, L)
De manera muy similar se puede construir la mquina que realice la bsqueda del
primer smbolo no blanco a la derecha de la posicin actual: R
#
, basta reemplazar las
L por R y viceversa.
Sin embargo, si se pretende dirigir la bsqueda hacia una direccin en la que el resto
de la cinta est en blanco, ya sea a la derecha del fin de la cadena o a la izquierda de
su inicio, la MT correra por siempre y nunca parara.
J O R G E E D U A R D O C A R R I N V .
194
Bsqueda del smbol o a
Siguiendo el mismo orden de ideas, se puede construir una mquina que realice la
bsqueda del smbolo a, a la izquierda de la posicin actual: L
a
, o a la derecha de la
posicin actual: R
a
.
Complementariamente, se podran hacer mquinas que realicen la bsqueda del
primer smbolo diferente de a, a la izquierda o a la derecha de la posicin actual,
denotadas respectivamente como: L
a
y R
a
.
Esc r i t ur a del smbol o a
Esta MT reemplaza el contenido de la celda donde se encuentra, no importando cual
sea, por un smbolo a y permanece en esa misma celda; a esta mquina la vamos a
designar simplemente por la letra a.
Sea otra MT dada por: Q = { q
0
, q
1
, q
2
}, a, , = 4 {#}, s = q
0
, F = { q
2
} y
(q
0
, ) = (q
1
, a, R) (q
0
, #) = (q
1
, a, R)
(q
1
, ) = (q
2
, , L) (q
1
, #) = (q
2
, #, L)
Mquinas de Turing Compuest as
La combinacin de dos o ms Mquinas de Turing se realiza bajo la suposicin de
que ambas comparten la misma cinta, y que al terminar la ejecucin de la primera
mquina, la cadena de salida contenida en la cinta, ser la cadena de entrada para el
inicio de la segunda, la posicin de la cabeza de lectura ser sobre la celda donde
termin la ejecucin de la primera mquina.
Ej empl os var i os
La composicin siguiente: R
#
a es una nueva MT que busca el primer blanco a la
derecha de la posicin actual, lo reemplaza por una a y ah se queda, como se ilustra
en la figura 10.14:
Para buscar hacia la derecha de la celda actual a la tercer celda no vaca, utilizamos
la composicin R
#
R
#
R
#
, como se aprecia en la figura 10.15.
T E O R A D E L A C O M P U T A C I N
195
Y para buscar hacia la izquierda de la posicin actual a la tercera celda vaca, usamos
la composicin L
#
L
#
L
#
, (Figura 10.16)
La mquina LaLaLa, escribe una secuencia de tres as a la izquierda de la posicin
inicial (ver figura 10.17)
Finalmente, la Mquina: R
#
aL
#
R, busca el primer blanco al final de la cadena, adiciona
una a y se mueve a la celda inicial de la cadena, ver figura 10.18.
Bi f ur c ac i n
Podemos construir una Mquina de Turing ms verstil, que realice una accin si el
smbolo encontrado es uno y otra accin distinta si el smbolo ledo es otro distinto,
como por ejemplo, si halla un 0 deber escribir un 1, pero si hay un 1, entonces
escribir un 0, la parte esencial de esta mquina condicional es la Bifurcacin, que
consta de las siguientes transiciones:
(q
0
, 0) = (q
1
, 0, R) (q
0
, 1) = (q
3
, 1, R)
(q
1
, 0) = (q
2
, 0, L) (q
1
, 1) = (q
2
, 1, L)
(q
3
, 0) = (q
4
, 0, L) (q
3
, 1) = (q
4
, 1, L)
Como podemos observar, esta mquina no altera el contenido de la cinta, sino que
solamente elige uno de los dos estados finales, segn el smbolo que se encuentre en
la celda actual, si hay un 0 lo indicar terminando en el estado q
2
, mientras que si
encuentra un 1, lo sealar finalizando en el estado q
4
.
Grficamente podemos representar la bifurcacin mediante el siguiente diagrama:

J O R G E E D U A R D O C A R R I N V .
196
Ej empl o
Con esta idea, podemos construir una mquina compuesta como la que se muestra
en la Figura 10.20, para que analice una cadena y que produzca su complemento, es
decir, que reemplace los unos por ceros y los ceros por unos, como por ejemplo, en la
siguiente computacin: (q
0
, #0110) d* (q
f
, #1001):
Esta representacin nos permite construir mquinas ms complejas, sin entrar en el
detalle de las transiciones, como se muestra en los ejemplos siguientes.
Cor r i mi ent o a l a Der ec ha
En la figura 10.21 se representa a una Mquina de Turing que realiza el corrimiento de
una cadena a la derecha, es decir, que transforma la cadena #w# en ##w, la cual se le
identifica como S
R
(Shift-Right), de manera semejante se puede construir la MT S
L
,
que efecte el corrimiento a la izquierda de la cadena.
T E O R A D E L A C O M P U T A C I N
197
Copi a de Cadenas
En la siguiente figura se muestra a una Mquina de Turing, denominada C, que realiza
la copia de una cadena, es decir, que dada la cadena w {a, b}*, el resultado en la
cinta queda como #w#w.
Dupl i c ac i n de Cadenas
Para duplicar una cadena, se realiza la copia con C y luego se elimina el smbolo
vaco intermedio, con S
R
, para finalmente obtener ww, como se ilustra en la siguiente
figura:
Rec onoc i mi ent o de Cadenas
Por ltimo, en la figura 10.24 se muestra una MT que hace el reconocimiento de
cadenas de la forma ww
R
, (palndromas de longitud par), supongamos que el
contenido inicial de la cinta es #ww
R
#, procedemos a comparar los extremos de la
cadena para verificar que coinciden, borrando los smbolos identificados, continuando
de la misma manera mientras haya coincidencia si el proceso finaliza normalmente, la
cinta queda vaca y nicamente se escribe el smbolo 1 (Acepta), para confirmar que
la cadena es aceptada, en caso contrario, se termina de borrar la cadena y se escribe
el smbolo 0, para denotar que la cadena es rechazada.
J O R G E E D U A R D O C A R R I N V .
198
Pregunt as
a) Es necesario que una MT agote la cadena de entrada para aceptarla?
b) Es siempre posible encontrar una MT de una cinta equivalente a una MT
multicinta dada?
c) Se pueden disear MT que sean multicintas-multiceldas?
d) Se puede disear una MUT que permita emular a MTs multicintas?
e) En un autmata de dos pilas, Qu pasa si una de las pilas se vaca? Cmo se
puede simular a una MT que se desplaza ms all de los lmites de la cadena?
Ejercicios Capt ulo 10
10.1 Disee y escriba las transiciones de una Mquina de Turing que realice cada
una de las siguientes funciones:
a) Dada una cadena de entrada de la forma wcx, donde w, x {a, b}*, arroje
como resultado la cadena xw.
b) Que duplique una cadena, es decir, dada la cadena de entrada w {a, b}*,
arroje como resultado ww.
c) Dados dos nmeros, en notacin unaria, identifique el mnimo; la entrada es
una cadena de la forma 1
n
#1
m
, con n, m 0, mientras que la salida es: 1
m
, si
m < n o 1
n
, en caso contrario.
d) Dada una cadena cualquiera w {a, b, c}*, ordene los smbolos, colocando
primero las as, a continuacin las bs y finalmente las cs.
e) Dada una cadena cualquiera w {a, b}*, nos entregue una cadena de salida
que tenga tantos 1s como veces aparezca la secuencia ab dentro de la
cadena w.
f) Dada una cadena de entrada de la forma w = 1
n
, n 0, nos entregue una
cadena de salida que tenga la forma (01)
n
.
g) Dada una cadena de entrada de la forma w = (ab)
n
, n > 0, nos entregue una
cadena de salida que tenga la forma 1
n
, y nos entregue la cadena 0, si la
entrada no corresponde al formato esperado.
10.2 Disee y escriba las transiciones de una Mquina de Turing para realizar un
contador binario como sigue:
(q0, 0#) d* (q0, 1#) d* (q0, 10#) d* (q0, 11#) d* (q0, 100#) d*
10.3 Disee y escriba las transiciones de una mquina de Turing que iniciando en
una cinta en blanco, enumere en orden ascendente las cadenas del siguiente
lenguaje: L = { a
n
| n > 0 }, separadas por un espacio en blanco.
T E O R A D E L A C O M P U T A C I N
199
10.4 Disee y escriba las transiciones de una mquina de Turing que realice la
multiplicacin n m.
10.5 Disee y escriba las transiciones de una mquina de Turing que calcule n
2
,
utilizando el desarrollo de una suma de n impares: n
2
= 1 + 3 + + (2n 1).
10.6 Obtenga una definicin recursiva de n! y disee una MT que calcule n!
10.7 Disee y escriba las transiciones de una MT que permita decidir las cadenas
para cada uno de los siguientes lenguajes (omita las transiciones de rechazo):
a) L = { w {a, b}* | la longitud de w es par}
b) L = { w {a, b}* | w contiene al menos una a}
c) L = (aa 4 bb)*
d) L = {a
n
b
m
| n, m 0, m n }
e) L = { w {a, b}* | w = w
R
}
f) L = { w {a, b}* | w w
R
}
g) L = { wcw | w {a, b}* }
h) L = { w {a, b, c}* | w es una cadena de longitud par, no contiene ninguna a
en la primera mitad y ninguna b en la segunda}
i) L = { w {a, b, c}* | N
a
(w) = N
b
(w) = N
c
(w) }
j) L = { a
n
b
2n
| n 0 }
k) L = { a
m
b
n
a
m
b
n
| m, n > 0 }
l) L = { a
2
n
| n 0}
10.8 Disee y escriba las transiciones de una mquina de Turing de tres pistas que
haga la resta de dos nmeros binarios, asumiendo que el minuendo es mayor
que el sustraendo, es decir, que la diferencia es positiva.
10.9 Disee y escriba las transiciones de una mquina de Turing de dos pistas que
permita el reconocimiento del lenguaje L = { wcw | w {a, b}* }, deje intacta la
cadena original en la primera pista y utilice la segunda pista para ir marcando
los smbolos que van siendo comparados.
10.10 Disee y escriba las transiciones de una mquina de Turing de dos pistas que
permita el reconocimiento del lenguaje L = { ww | w {a, b}* }, de manera
semejante al problema anterior.
10.11 Disee y escriba las transiciones de una mquina de Turing de dos cintas que
permita el reconocimiento del lenguaje L = { ww
R
| w {a, b}* }.
10.12 Disee y escriba las transiciones de una mquina de Turing de dos cintas que
permita el reconocimiento del lenguaje L = { w {a, b}* | N
a
(w) = N
b
(w) }.
J O R G E E D U A R D O C A R R I N V .
200
10.13 Disee y escriba las transiciones de una mquina de Turing de dos cintas que
duplique una cadena, es decir, dado w {a,b}*, escriba ww.
10.14 Disee y escriba las transiciones para cada una de las siguientes Mquinas de
Turing bsicas:
a) La mquina de Turing L
#
, que busque el primer blanco a la izquierda de la
posicin actual y que se pare sobre dicha celda.
b) La mquina de Turing R
#
, que busca hacia la derecha de la posicin actual
el primer smbolo no blanco y que se pare sobre dicha celda.
10.15 Por medio de la composicin de mquinas bsicas, construir cada una de las
Mquinas de Turing siguientes:
a) Una Mquina de Turing que acepte las cadenas pertenecientes al siguiente
lenguaje L = { w { a, b }* | el tercer smbolo de w es una a }.
b) Una Mquina de Turing que acepte las cadenas pertenecientes al siguiente
lenguaje L = { w { a, b }* | el segundo y tercer smbolos de w son una b }
c) Una Mquina de Turing que acepte las cadenas pertenecientes al siguiente
lenguaje L = { w { a, b }* | w contiene a la subcadena ab }
d) Una Mquina de Turing que acepte las cadenas pertenecientes al siguiente
lenguaje L = { w { a, b }* | w contiene a la subcadena bba }
e) La Mquina de Turing S
L
, que realice el Corrimiento a la Izquierda (Shift-Left)
de la cadena w, es decir, que cambie la cadena #w en w#.
f) Dada una cadena de ceros y unos, ordene los smbolos, colocando primero
todos los ceros y a continuacin los unos.
g) La mquina de Turing que decida las cadenas pertenecientes al siguiente
lenguaje L = { wcw | w {a, b}* }
T E O R A D E L A C O M P U T A C I N
201
Gramt icas No Rest ringidas
Se define el concepto de Gramticas No Restringidas, se expone la Jerarqua de Chomsky para las Gramticas, se
definen la clase de Lenguajes Enumerables y se establece la equivalencia entre las GNR y las MTs.
Lenguajes Decidibles
En el captulo anterior estudiamos el caso de las MTs que siempre son capaces de
aceptar o rechazar cualquier cadena dada de un lenguaje determinado; es decir, estas
MTs siempre alcanzan un estado de parada, y pueden, por tanto, decidir si la cadena
pertenece o no al lenguaje en cuestin, es por esto, que a estos lenguajes se les
denomina como Lenguajes Decidibles (LD), todos los Lenguajes Independientes del
Contexto (LICs) son Decidibles, y por lo tanto, todos los Lenguajes Regulares (LRs)
tambin son LDs.
Todo LR es Dec i di bl e
En el captulo anterior se mostraron dos ejemplos de la construccin de MTs para el
reconocimiento de Lenguajes Regulares.
Ahora expondremos una tcnica para construir una MT a partir de un AFD cualquiera,
el procedimiento es como sigue:
Dado el AFD compuesto por M = ( Q, , s, F, ), entonces se puede construir la MT
equivalente como sigue: M = ( Q, , , s, #, F, R, ), tal que L(M) = L(M), en donde:
Q = Q 4 { q
A
, q
R
}, = 4 {#}, R = {q
R
} y F = {q
A
}.
Las transiciones de la MT se obtienen a partir de las transiciones del AFD, adems de
otras ms que nos llevan a los estados adicionales q
A
y q
R
, los cuales nos sirven para
decidir si la cadena pertenece o no al lenguaje en cuestin:
(q
i
,
j
) = ( (q
i
,
j
),
j
, R), para todo q
i
Q y
j

(q
i
, #) = (q
R
, #, R), para todo q
i
F
(q
i
, #) = (q
A
, #, R), para todo q
i
F
Capt ul o
11
J O R G E E D U A R D O C A R R I N V .
202
Todo LI CD es Dec i di bl e
Ahora veamos como es posible verificar que la clase de los Lenguajes Independientes
del Contexto es un subconjunto de la clase de los Lenguajes Decidibles.
Primero vamos a demostrar que todo Lenguaje Independiente del Contexto
Determinista es tambin un Lenguaje Decidible, para ello mostraremos, por medio de
un ejemplo, que se puede construir una Mquina de Turing que decida sobre las
cadenas de un lenguaje dado y que funciona de manera equivalente al Autmata de
Pila Determinista que acepta dicho lenguaje; en este ejemplo se hace uso del smbolo
de fin de cadena $, para enfatizar el carcter determinista del APD:
Ej empl o
Sea M el APD dado por Q = { q
0
, q
1
, q
A
}, = { a, b, $ }, = {A, B}, F = {q
A
} y las
transiciones siguientes:
( q
0
, a, ) = (q
0
, A) ( q
0
, b, A) = (q
1
, )
( q
1
, b, A) = (q
A
, B) ( q
1
, b, B) = (q
1
, )

( q
0
, $, ) = (q
1
, ) ( q
1
, $, ) = (q
A
, )
La estrategia consiste en utilizar una MT de dos cintas, en la primera cinta estar la
cadena a ser decidida y mientras que la segunda cinta simular a la pila, que
inicialmente estar vaca. El conjunto de estados es idntico al del APD:
Para las transiciones que desapilan tenemos sus equivalentes en la MT:
( q
0
, (b, A) ) = ( q
1
, (b, #), (R, R) )
( q
1
, (b, B) ) = ( q
1
, (b, #), (R, R) )
Ahora para la transicin que no modifica el tamao de la pila la transicin de la MT no
tiene movimiento en la segunda cinta, aunque si cambia el contenido de la celda:
( q
1
, (b, A) ) = ( q
1
, (b, B), (R, S) )
Mientras que para la transicin que apila, se requiere utilizar un estado intermedio
para desplazarse una celda hacia la izquierda sobre la cinta inferior (hacia donde
crece la pila), no importando el smbolo actual de la celda, para que luego se pueda
escribir el smbolo que se agrega a la cima de la pila:
( q
0
, (a, ) ) = ( p, (a, ), (S, L) )
( p, (a, #) ) = ( q
0
, (a, A), (R, S) )
T E O R A D E L A C O M P U T A C I N
203
Obsrvese que el apuntador de la segunda cinta siempre indica el smbolo de la cima
de la pila, que como dijimos, crece hacia la izquierda.
La cadena se acepta cuando sta se agote y la pila est vaca:
( q
0
, (#, #) ) = ( q
A
, (#, #), (S, S) )
( q
1
, (#, #) ) = ( q
A
, (#, #), (S, S) )
La Decidibilidad exige que siempre podamos determinar cuando una cadena no
pertenece al lenguaje en cuestin, para ello podemos introducir todas las transiciones
que nos conduzcan a un estado de rechazo para todas las distintas situaciones en
que esto sucede, que en este ejemplo son las siguientes:
( q
1
, (a, ) ) = ( q
R
, (a, ), (S, S) )
( q
0
, (b, #) ) = ( q
R
, (b, #), (S, S) )
( q
1
, (b, #) ) = ( q
R
, (b, #), (S, S) )
( q
0
, (#, A) ) = ( q
R
, (#, A), (S, S) )
( q
1
, (#, A) ) = ( q
R
, (#, A), (S, S) )
( q
1
, (#, B) ) = ( q
R
, (#, B), (S, S) )
Como enlistar todas las situaciones posibles resulta siempre muy tedioso y puede
incurrirse muy fcilmente en omisiones, se suele dar por sobreentendido que si la MT
se detiene en otro estado distinto al de aceptacin, la cadena es decidida
negativamente, rechazada, como si se hubiera llegado al estado de rechazo.
Todo LI CN es Dec i di bl e
Para cuando tenemos un APN, no es conveniente tratar de obtener una MT
equivalente que decida al mismo LICN, porque es posible que la MT as generada
nunca se detenga al analizar cadenas que no pertenezcan al lenguaje, debido a todas
las posibles situaciones que presenta el no-determinismo y que podran multiplicarse
hasta el infinito, lo que no probara que es Decidible.
La tcnica para demostrar que un LICN dado es Decidible y que evita el riesgo de que
la MT obtenida se cicle, consiste en encontrar una GIC que genere al lenguaje en
cuestin y demostrar que se puede construir una MT que decida si una cadena dada
es o no posible generarla por medio de esta gramtica, en un nmero finito de pasos,
esto sera equivalente a construir una MT que utilice el algoritmo CYK con este
objetivo, tal como lo vimos en el captulo 7.
J O R G E E D U A R D O C A R R I N V .
204
Gr amt i c as Sensi bl es al Cont ex t o
Las Gramticas Sensibles al Contexto son aquellas gramticas cuyas producciones
son de la forma siguiente: uAv uwv, donde u, w y v son cadenas de Smbolos
Terminales y No Terminales, posiblemente vacas. Este tipo de gramticas genera
una clase de lenguajes a los que se les denomina Lenguajes Dependientes del
Contexto o tambin Sensibles al Contexto.
La produccin uAv uwv es esencialmente distinta de la produccin: A w, en el
sentido de que el No terminal A puede ser reemplazado por la cadena w solamente si
A se encuentra dentro de un contexto donde le precede la cadena u y es seguida por
la cadena v, en caso contrario no puede hacerse la sustitucin.
Queda claro que si en todas las producciones de una gramtica, u y v son ambas
cadenas vacas, entonces la gramtica en cuestin es Independiente del Contexto.
Las Gramticas Sensibles al Contexto son muy tiles para el estudio de la formacin
de los Lenguajes Naturales, y que es una de las ramas de la Inteligencia Artificial.
Ej empl o
Se desea construir una Gramtica Sensible al Contexto (GSC) que permita generar
las cadenas que pertenecen al siguiente lenguaje: L = { a
n
b
n
c
n
| n 1 }.
Una forma interesante para lograrlo es por medio de la siguiente gramtica:
S abc | aAbc
Ab bA
Ac Bbcc
bB Bb
aB aa | aaA
Observe como es que esta gramtica emplea los SNTs A y B para agregar de manera
ordenada y controlada a los smbolos c, b y a, tal como se ejemplifica en la siguiente
derivacin:
S aAbc abAc abBbcc aBbbcc aaAbbcc aabAbcc aabbAcc
aabbBbccc aabBbbccc aaBbbbccc aaabbbccc
Otra gramtica equivalente, pero con un enfoque distinto, que nos permite generar las
cadenas de este lenguaje, se puede describir inicialmente con un par de transiciones
T E O R A D E L A C O M P U T A C I N
205
que nos permitan ir agregando tercias de smbolos a, B y C, hasta llegar a la cantidad
de n, pero como ya se dijo, no es posible generarlos de tal modo que queden
ordenados, entonces utilizamos los SNTs B y C en vez de los smbolos terminales b y
c, respectivamente:
S aSBC | aBC
A continuacin introducimos una produccin que reordene a los smbolos no
terminales B y C que aparezcan fuera de secuencia:
CB BC
Ahora requerimos de una serie de producciones que nos permitan realizar las
sustituciones de los Smbolos No Terminales por los terminales correspondientes,
solamente si estn en el orden (contexto) adecuado:
aB ab
bB bb
bC bc
cC cc
Comparemos como funciona esta gramtica en la generacin de la misma cadena del
caso anterior: aaabbbccc.
S aSBC aaSBCBC aaaBCBCBC aaaBCBBCC aaaBBCBCC
aaaBBBCCC aaabBBCCC aaabbBCCC aaabbbCCC aaabbbcCC
aaabbbccC aaabbbccc
Si pretendiramos reemplazar los terminales antes de reordenar los no terminales no
se puede concluir la generacin de ninguna cadena:
S aSBC aaBCBC aabCBC aabcBC
La produccin CB BC no parece ser sensible al contexto, de acuerdo con la forma
como se defini ms arriba, pero se puede comprobar fcilmente que esta produccin
es equivalente a un conjunto de cuatro producciones claramente sensibles al contexto:
CB BXB
XB XY
XY Y
Y C
J O R G E E D U A R D O C A R R I N V .
206
Aut mat as Li neal es Ac ot ados
Los Lenguajes Sensibles al Contexto pueden ser reconocidos por unos dispositivos
conocidos como Autmatas Lineales Acotados (ALA), los cuales son una clase
particular de MTs, deterministas o no, que satisfacen estas dos condiciones:
El alfabeto de la cinta contiene dos smbolos especiales [ y ], conocidos como
marcadores izquierdo y derecho, respectivamente, de esta forma, el contenido de la
cinta se representa inicialmente como [w].
El ALA no puede moverse a la izquierda del marcador [, ni a la derecha del
marcador ], as como tampoco escribir ningn otro smbolo sobre ellos, ni tampoco
usar esos smbolos en cualquier otra celda intermedia.
Todo LSC es t ambi n Dec i di bl e
De esta forma, un ALA queda restringido a realizar todas sus operaciones nicamente
sobre las celdas que ocupaba la cadena original. Finalmente, cabe sealar que dado
un ALA cualquiera, ste siempre llega a una configuracin de parada, por lo que todo
LSC al ser reconocido por un ALA tambin es Decidible.
Gramt icas No Rest ringidas
Una Gramtica No Restringida (GNR), tambin llamada Gramtica de Estructura de
Frase, es una cudrupla G = ( N, , S, P ), en la que N es un alfabeto de Smbolos No
Terminales, es el alfabeto de Smbolos Terminales, S es el Smbolo No Terminal
Inicial y P es el conjunto de Producciones de la forma: , donde la parte izquierda
contiene una cadena de smbolos terminales y no terminales, ( N 4 )* N ( N 4
)*, en la que al menos hay un smbolo no terminal, y la parte derecha est formada por
cualquier cadena de smbolos terminales y no terminales ( N 4 )*.
Esta es la definicin ms amplia de gramtica, incluye a todas las clases previamente
mencionadas y ya no hay otra clase de gramticas que sea superior a sta.
A la clase de lenguajes generados por una GNR se le llaman Lenguajes
Recursivamente Enumerables, o simplemente, Lenguajes Enumerables, dentro de los
que se incluye a la clase de los Lenguajes Decidibles. Sin embargo, existen Lenguajes
Enumerables que no son Decidibles, como veremos ms adelante.
Primeramemente, exponemos dos casos de Lenguajes decidibles que son generados
por sus respectivas GNRs, con el fin de entender su funcionamiento.
T E O R A D E L A C O M P U T A C I N
207
Ej empl o 1
Sea la Gramtica no Restringida (GNR) dada por las siguientes producciones:
S [a]
D] ]
[ [D
[
]
Da aaD
Con esta gramtica podemos derivar las cadenas w
1
= a, w
2
= aa, w
3
= aaaa, etc.
(cadenas as de longitud que es potencia de 2). Ahora, analicemos el comportamiento
de esta gramtica en la derivacin de la cadena w
3
= aaaa:
S [a] [Da] [aaD] [aa] [Daa] [aaDa] [aaaaD] [aaaa] aaaa
El lenguaje generado por esta gramtica es: L = { a
2
n
| n 0 }, en este caso el smbolo
D hace el papel de Duplicador de smbolos y solamente lo podemos descartar cuando
haya concluido su tarea de duplicar toda la cadena al extremo derecho de la misma y
es entonces cuando conviene quitar los corchetes.
Ej empl o 2
Sea la Gramtica no Restringida (GNR) dada por las producciones:
S M]
] Aa] | Bb]
aA Aa
aB Ba
bA Ab
bB Bb
MA aM
MB bM
]
M
Observemos como funciona esta gramtica en la derivacin de w = aabaab:
J O R G E E D U A R D O C A R R I N V .
208
S M] MAa] aMa] aMaAa] aMAaa] aaMaa] aaMaaBb] aaMaBab]
aaMBaab] aabMaab] aabaab] aabaab
Esta gramtica genera el siguiente lenguaje: L = { ww | w { a, b}* }, en este caso el
smbolo M marca la mitad de la cadena.
Toda MT puede simularse por alguna GNR
Todo Lenguaje Enumerable, es aceptado por alguna MT y puede ser generado por
alguna GNR, para mostrar esta equivalencia, se plantear un procedimiento general
que nos permita encontrar una GNR que simule la MT mediante el siguiente ejemplo:
Ej empl o
Sea la MT que acepta el lenguaje regular L = a*, dada por. Q = { q
0
, q
1
, q
A
}, = { a },
= { a, 1, # }, s = q
0
, F = { q
A
} y las transiciones siguientes:
( q
0
, a ) = (q
0
, a, R )
( q
0
, # ) = (q
1
, #, R )
( q
1
, # ) = (q
A
, 1, L )
Primeramente analicemos las descripciones instantneas que muestran el
comportamiento de la MT para aceptar la siguiente cadena aaa:
q
0
aaa d aq
0
aa d aaq
0
a d aaaq
0
# d aaa#q
1
# d aaaq
A
#1
Vamos a construir un conjunto de reglas gramaticales que nos permitan generar
invariablemente a la cadena de la configuracin final: aaaq
A
#1 y luego por medio de
diversas producciones tratar de llegar a la configuracin inicial: q
0
aaa. La razn de ir
en sentido inverso es que la configuracin inicial es nica.
Para obtener esas reglas, obsrvese en el primer paso que lo que cambia es: q
0
a por
aq
0
, mientras que el resto permanece invariable, si el objetivo de la gramtica es
moverse en el sentido inverso al descrito, resulta evidente que una produccin de la
forma: aq
0
q
0
a realiza dicho cambio en sentido contrario. Esto es vlido para
cualquier transicin a la derecha.
Para ejemplificar las transiciones a la izquierda, hemos definido una transicin que
cambia el contenido de la cinta para hacerlo ms claro, en este caso la subcadena
que cambia es #q
1
# por q
A
#1, y entonces la produccin necesaria para nuestra
gramtica deber tener la forma siguiente: q
A
#1 #q
1
#.
T E O R A D E L A C O M P U T A C I N
209
El lector deber ser capaz de deducir como son las producciones para las transiciones
estacionarias en caso de haberlas. Aclarado lo anterior, podemos construir una GNR
que genere a L, por medio de los siguientes pasos:
Paso 1. Inicializacin, donde se incluyen las producciones que nos permiten
regenerar la configuracin final del proceso de aceptacin, por lo que se deben poder
adicionar cualquier smbolo del alfabeto de la cinta y el estado de aceptacin q
A
, en
donde convenga:
S [A
A aA | Aa | #A | A# | 1A | A1 | q
A

Paso 2. Transiciones a la derecha, como se coment arriba, se tiene que:
aq
0
q
0
a
#q
1
q
0
#
Paso 3. Transiciones a la izquierda, ya antes comentado, tenemos:
q
A
#1 #q
1
#
Paso 4. Finalizacin, Reemplaza por cadenas vacas los smbolos no terminales:
#
[q
0

Aplicando nuestra gramtica para generar la cadena anterior se tiene la siguiente
derivacin:
S [A [A1 [A#1 [aA#1 [aaA#1

[aaaA#1 [aaaq
2
#1 [aaa#q
1
#
[aaaq
0
## [aaq
0
a## [aq
0
aa## [q
0
aaa## aaa## aaa
Jerarqua de Chomsky
Chomsky clasific a las gramticas en cuatro clases bsicas; las gramticas ms
simples son las gramticas del tipo 3, que corresponden a las Gramticas Regulares,
las cuales generan a los Lenguajes Regulares y stos a su vez pueden ser
reconocidos por los Autmatas Finitos, tal como se trat en los captulos iniciales de
esta obra.
Un nivel ms arriba, siguen las gramticas del tipo 2, que corresponden a las que ya
conocemos como Gramticas Independientes del Contexto, las cuales generan los
Lenguajes Independientes del Contexto y que pueden ser reconocidos por medio de
J O R G E E D U A R D O C A R R I N V .
210
los Autmatas de Pila No Deterministas, como ya se abord en los captulos
respectivos.
A continuacin, siguen las gramticas del tipo 1, que podemos identificar con las
Gramticas Sensibles al Contexto, a las que Chomsky les impone la condicin de que
todas las producciones en este tipo de gramticas deben ser de la forma , y
deben cumplir que || ||, esta definicin es casi equivalente a la condicin expuesta
al inicio de este captulo, con la salvedad de que con esta restriccin, Chomsky
excluye de este tipo de gramticas a todas aquellas que generen lenguajes que
contienen a la cadena vaca. Siendo estrictos, este es un impedimento para que esta
clase contenga completamente a todas las gramticas regulares e independientes del
contexto, para salvar este inconveniente, basta considerar de manera excepcional a la
produccin S , para los lenguajes que tengan a la cadena vaca.
Finalmente tenemos a las gramticas del tipo 0, que corresponden a las Gramticas
No Restringidas, tambin conocidas como las Gramticas Irrestrictas o Gramticas de
Estructura de Frase.
A los lenguajes generados por estas gramticas se les llama Lenguajes
Recursivamente Enumerables, o simplemente Lenguajes Enumerables y pueden ser
aceptados, pero tal vez no decididos, por alguna Mquina de Turing.
Lenguajes Enumerables
En el captulo anterior mencionamos que una MT poda decidir si una cadena
perteneca o no a un lenguaje. Sin embargo, es posible disear las MTs para que
solamente se detengan en el caso que una cadena pertenezca a un determinado
lenguaje y se ciclen indefinidamente cuando no, a esta situacin se le denomina
Aceptar a una cadena, incluso con lenguajes decidibles.
En la siguiente figura, se muestran dos representaciones equivalentes de MTs que
aceptan a un lenguaje formado por las cadenas del alfabeto = { x, y } que contienen
al menos una x, la primera MT decide, la segunda slo acepta.
T E O R A D E L A C O M P U T A C I N
211
Mientras que en la Figura 11.2 se muestra una MT que slo acepta el lenguaje
formado por todas las cadenas que no empiezan por x.
El punto es que, aunque no hayamos visto un ejemplo an, existen Lenguajes
Enumerables que no son, ni pueden ser, Decidibles; slo son aceptados por alguna
MT, la cual aceptar a toda cadena que pertenezca al lenguaje en cuestin, pero si la
cadena que se analiza no pertenece a dicho lenguaje, entonces probablemente la MT
se cicle indefinidamente y no es posible modificarla para forzar a que se detenga al
analizar las cadenas con las que se cicla, ni tampoco es posible encontrar otra MT
equivalente que no se cicle con aquellas cadenas que deberan ser rechazadas.
Lo desafiante de este problema consiste en que no es posible determinar con certeza
en que casos la MT se va a ciclar indefinidamente o en que casos se va a tardar
demasiado porque esa cadena requiere de un anlisis muy complejo, pero es cuestin
de esperar ms tiempo para que se detenga finalmente.
Esta situacin es conocida como el Problema de Detencin (o Problema de Parada)
de las MT, el cual retomaremos nuevamente ms adelante, dada su importancia. Por
ahora, la conclusin que surge de todo lo anterior, es que existe una correspondencia
exacta entre las MTs, las GNRs y los Lenguajes Enumerables.
En la siguiente figura se resume todo lo que hemos hablado hasta ahora sobre las
diferentes clases de lenguajes y los distintos dispositivos empleados para su
reconocimiento, incluso se hace referencia a que existen lenguajes que no son
Enumerables y para los cuales no existe nada que permita reconocerlos.
J O R G E E D U A R D O C A R R I N V .
212
La Mquina de Turing como Enumerador
Ya hemos visto que una MT puede utilizarse para el reconocimiento de lenguajes, as
como tambin para el clculo de funciones sobre enteros positivos, un tercer uso de
las MT consiste en emplearlas como un dispositivo generador de cadenas.
Considere que se puede construir una MT que enumere todas las cadenas que
pertenecen a un lenguaje dado, para ello imaginemos que se tiene una MT multicinta
en la que haya una cinta de salida, donde escriba las cadenas que pertenecen a un
determinado lenguaje y que nicamente avance hacia la derecha, de modo que una
vez escrito el smbolo no puede ser modificado, adems se emplea un smbolo
especial como por ejemplo el # para separar las distintas cadenas generadas.
El lenguaje generado por la mquina M es el conjunto de cadenas w * que
aparecen en la cinta de salida separadas por el smbolo especial # y si recordamos
que una Gramtica es un conjunto de reglas para generar un lenguaje determinado,
podemos constatar que en este caso, la MT se estar comportando de manera
equivalente a una GNR.
No se requiere que las cadenas sean generadas una sola vez, ni tampoco en algn
orden determinado, pero se puede verificar que la clase de lenguajes generados por
alguna MT corresponde a la de los Lenguajes Enumerables.
Sin embargo, si podemos hacer que el conjunto de cadenas de cierto lenguaje, sea
generado de una manera ordenada; generando primero las cadenas de menor tamao
y luego avanzando en orden creciente en extensin; y para las cadenas que sean del
mismo tamao, procedemos a generarlas de acuerdo a un orden alfabtico
preestablecido de los smbolos que las conforman. Si esto es posible, se dice que ese
lenguaje se encuentra en un Orden Cannico.
Si un lenguaje puede ser generado en un Orden Cannico, entonces dicho lenguaje
pertenece a la clase de los Lenguajes Recursivos, que es otro nombre con el que
tambin se conoce a la clase de los Lenguajes Decidibles.
Ej empl o 1
Un ejemplo muy sencillo de un lenguaje que puede ser generado en orden cannico
es el lenguaje universal: L = { 0, 1 }* = { , 0, 1, 00, 01, 10, 11, 000, 001, }.
T E O R A D E L A C O M P U T A C I N
213
Ej empl o 2
Otro ejemplo ms interesante es la generacin de pares ordenados de la forma ( i, j ),
pues en este caso, si pretendemos generarlos en el orden siguiente: (1,1), (1,2), (1,3),
(1,4), (1,5), , jams se podrn generar las parejas que contengan un valor de i 1.
Pero si seguimos una estrategia distinta para generar las parejas ( i, j ), consistente en
generarlas de acuerdo al orden creciente de la suma i + j, y ordenando las parejas
que tengan una misma suma en orden creciente del valor de la i, entonces es posible
generar de manera previsible cualquier pareja de nmeros enteros.
La secuencia en que se generen sera como sigue: (1,1), (1,2), (2,1), (1,3), (2,2), (3,1),
(1,4), (2,3), (3,2), (4,1), . , de esta forma, cualquier pareja de la forma ( i, j ) puede
ser generada y hasta es posible determinar el lugar que ocupar en la secuencia,
utilizando la frmula: ( i + j 1 )( i + j 2 )/2 + i.
De esta manera, se puede ver que es posible establecer una correspondencia
biunvoca entre los pares ordenados de enteros positivos con el conjunto de los
nmeros naturales, lo que significa que ambos conjuntos son Equinumerosos.
An hay ms, con la tcnica anterior se puede confirmar lo que establece el Teorema
de Georg Cantor, que dice que los nmeros racionales son tan numerosos como los
enteros, simplemente porque cualquier nmero racional se puede representar como la
fraccin de dos enteros, de la misma forma que las parejas de enteros ya tratadas, a
la clase de conjuntos infinitos Equinumerosos con los Nmeros Naturales, se dice que
tienen un tamao Aleph cero:
0
.
Tesi s de Chur c h
Esta tesis establece que la construccin de una Mquina de Turing que siempre para,
es equivalente al concepto formal de un Algoritmo, entendido como un proceso, por
medio del cual se puede realizar una tarea en un nmero finito de pasos, y que en
ambos casos, lo importante es que siempre se alcanza un resultado.
Esta nocin formal nos ha permitido demostrar, en muchos casos, la inexistencia de
algunos algoritmos que hasta hace unos cien aos no se haba podido determinar si
existan o no, simplemente porque carecan de las herramientas formales para ello;
por ejemplo, en 1900, Hilbert plante el desafo de 23 problemas matemticos, entre
ellos, el dcimo, concerniente a hallar un algoritmo para saber si un polinomio dado
J O R G E E D U A R D O C A R R I N V .
214
tiene una raz entera, no fue sino hasta 1970, que se prob formalmente que tal
algoritmo no existe.
Replanteemos el problema de la siguiente manera; supongamos que se construye una
MT que permita reconocer el siguiente lenguaje:
L
P
= { p | p es un polinomio que tiene una raz entera}
La manera como debe trabajar esta MT requerir que evale al polinomio p sobre la
sucesin de enteros: 0, 1, -1, 2, -2, 3, -3, . Si la raz existe, eventualmente la
encontrar y la ejecucin de la MT terminar; pero si no existe esa raz, la MT seguir
buscndola para siempre. Evidentemente esta MT es una aceptadora, pero no es una
decididora, por lo tanto, concluimos que L
P
es un Lenguaje Enumerable pero que no
es Decidible.
Por lo tanto, Church lleg a la siguiente conclusin: Un problema es computable si y
solo si es Decidible por alguna Mquina de Turing si y solo si existe un algoritmo que
permita resolverlo, Adems, no se ha probado que exista algn modelo terico que
sea ms poderoso que una MT y es muy poco probable que pudiera existir, Porque
de haberlo, se revolucionara el diseo de computadoras en su totalidad!
Pregunt as
a) La unin de dos lenguajes Decidibles es un Lenguaje Decidible?
b) La concatenacin de dos lenguajes Decidibles es un Lenguaje Decidible?
c) Si no existe un algoritmo para resolver un problema dado, significa que no ser
posible construir una MT que decida sobre ste?
d) Un lenguaje que no es Decidible puede ser que tampoco sea aceptado por ninguna
MT?
Ejercicios Capt ulo 11
11.1 Obtener una GNR para generar cada uno de los siguientes lenguajes:
a) L = { a
i
b
j
c
k
| 0 i < j < k }
b) L = { a
n
b
n
c
n
d
n
| n 0 }
c) L = { a
n
b
n
a
n
b
n
| n 0 }
d) L = { a
3
k
| k 0 }
e) L = { www | w { a, b} }
T E O R A D E L A C O M P U T A C I N
215
11.2 Encontrar una MT determinista que decida el lenguaje aceptado por el AFN
mostrado en el diagrama de la figura 11.4:
11.3 Construya una MT que decida el lenguaje aceptado por el AFD mostrado en el
siguiente diagrama:
11.4 Construya una Mquina de Turing que decida sobre el lenguaje aceptado por el
siguiente APD condicionado: Q = { q
0
, q
1
}, s = q
0
, F = { q
1
}, = { a, b }, = {
A, B, Z } y las transiciones siguientes:
(q
0
, a, Z) = (q
0
, AZ) (q
0
, a, A) = (q
0
, AA)
(q
0
, b, Z) = (q
0
, BZ) (q
0
, b, B) = (q
0
, BB)
(q
0
, b, A) = (q
0
, ) (q
0
, a, B) = (q
0
, )
(q
0
, , Z) = (q
1
, )
11.5 Construir una GNR que genere el lenguaje aceptado por la MT cuyas
transiciones son, pruebe la gramtica generando la cadena aabbaa:
( q
0
, a ) = (q
1
, x, R ) ( q
1
, a ) = (q
0
, x, R )
( q
0
, b ) = (q
2
, x, R ) ( q
2
, b ) = (q
0
, x, R )
( q
0
, # ) = (q
3
, #, L )


T E O R A D E L A C O M P U T A C I N
217
Resolubilidad
Se define Resolubilidad y Se establece una correlacin entre los Lenguajes Decidibles y los Problemas Resolubles por
medio de Mquinas de Turing. Se plantean ejemplos de problemas irresolubles.
Definicin de Resolubilidad
En los captulos anteriores se mencion que es posible disear una MT que decida si
una cadena pertenece o no a un determinado lenguaje L, de tal forma que si finaliza
en un estado de aceptacin, la cadena pertenece a L, pero si termina en un estado de
rechazo, la cadena no pertenece a L. A los lenguajes que pueden ser decididos por
medio de una MT, se les conoce tambin como Lenguajes Recursivos.
Ahora veremos como es que dado un determinado problema, lo podemos replantear
de tal forma que se interprete como un Lenguaje y por tanto, que podamos construir
una MT que acepte dicho lenguaje. A los problemas que puedan replantearse como
Lenguajes Decidibles les llamamos Problemas Resolubles, mientras que los que
corresponden a Lenguajes Enumerables se les identificar como Irresolubles.
Reformulacin de Problemas
A fin de entender mejor como se hace la reformulacin de problemas, recordemos el
modelo de la Mquina Universal de Turing vista en el captulo 10, e imaginemos que
es posible disear un dispositivo capaz de emular el comportamiento del modelo
matemtico de cualquier problema. As es como haremos ahora para replantear varios
de los problemas relacionados con autmatas y gramticas:
Un AFD dado ac ept a a una c adena w ?
Para concebir a un dispositivo que nos responda a la pregunta: Sea B, un AFD
cualquiera, ste acepta a una cadena dada w?, primero necesitamos definir al
lenguaje siguiente:
L
AFD
= { B, w | B es un AFD que acepta la cadena w }
Capt ul o
12
J O R G E E D U A R D O C A R R I N V .
218
Entonces, la pregunta de que si B, un AFD, acepta a una cadena w se replantea como
la pregunta de que la cadena B, w L
AFD
?
Como se trata de un AFD, siempre es posible responder la pregunta si B acepta o no
a la cadena w, por lo tanto siempre es posible decir si B, w pertenece o no a L
AFD
,
por lo que claramente este lenguaje es Decidible.
Qu pasara si en vez de un AFD se tratara de un AFN? El lenguaje L
AFN
tambin es
Decidible ya que conocemos un procedimiento para encontrar un AFD equivalente a
un AFN dado.
Una GR dada gener a a una c adena w ?
Ahora queremos concebir un dispositivo que nos responda a la pregunta: Dada G, una
GR, sta puede generar a una cadena dada w?, para ello, definimos el lenguaje
siguiente:
L
GR
= { G, w | G es una GR que genera la cadena w }
Dado que siempre es posible construir un AFD que acepte el mismo lenguaje que es
generado por una Gramtica Regular dada, entonces el lenguaje L
GR
es Decidible.
Dado un AFD, ac ept a al Lenguaj e Vac o?
Si deseamos una forma para determinar si un AFD dado acepta o no al lenguaje
vaco, podemos definir al lenguaje:
V
AFD
= { A | A es un AFD donde L(A) = }
Para responder esto, basta con comprobar que el AFD no tiene ningn estado de
aceptacin que sea accesible desde el estado inicial, por tanto V
AFD
es Decidible.
Dados dos AFDs, son equi val ent es?
Para replantear el problema de determinar si dos AFDs cualesquiera son
equivalentes, definimos el lenguaje siguiente:
E
AFD
= { A, B | A y B son dos AFDs tales que L(A) = L(B) }
Para probar esto, basta con construir un tercer AFD C, tal que acepte el lenguaje que
resulte de la diferencia simtrica de los lenguajes aceptados por A y B, es decir que:
L(C) = L(A) L(B). Si resulta que L(C) = , problema que es Resoluble, entonces
esto implica que L(A) = L(B), por lo tanto, tambin E
AFD
es Decidible.
T E O R A D E L A C O M P U T A C I N
219
Una GI C dada gener a a una c adena w ?
Ahora queremos un dispositivo que nos responda a la pregunta Dada G un GIC, sta
puede generar a una cadena dada w?, entonces definimos el lenguaje:
L
GIC
= { G, w | G es una GIC que genera la cadena w }
Este problema es ms interesante, pues si pretendemos construir una MT que pruebe
todas las posibles derivaciones, el problema aparenta ser No Decidible, pero, si
encontramos una gramtica equivalente, en la forma Normal de Chomsky, se puede
probar que si |w| = n, entonces la derivacin ms larga posible consta de 2n 1
pasos, y por tanto el lenguaje L
GIC
si es Decidible.
Dada una GI C, Gener a al Lenguaj e Vac o?
Si deseamos determinar si G una GIC cualquiera, genera al lenguaje vaco, podemos
definir al lenguaje:
V
GIC
= { G | G es una GIC donde L(G) = }
En este caso, no es factible probar a todas y cada una de las cadenas posibles para
ver que ninguna es generada por G, en cambio, es viable determinar si hay Smbolos
No Terminales que generan solamente Smbolos Terminales; y despus determinar si
hay alguna derivacin posible hacia esos Smbolos No Terminales desde el Smbolo
Inicial, por lo que queda claro que el lenguaje V
GIC
es Decidible.
Propiedades de los Lenguajes Decidibles
El c ompl ement o de un LD t ambi n es Dec i di bl e
Para probar esta propiedad basta con suponer que M
1
es una MT que decida el
lenguaje L(M
1
), entonces es posible construir una mquina M
2
, que decida al lenguaje
L(M
2
) = L
C
(M
1
), simplemente complementando las salidas de M
1
, si la respuesta de M
1

es afirmativa, entonces la de M
2
ser negativa y viceversa, tal como se ilustra en la
Figura 12.1:
J O R G E E D U A R D O C A R R I N V .
220
Al lector le debe resultar fcil demostrar las siguientes propiedades de los LDs:
La unin de dos Lenguajes Decidibles tambin es un LD.
La concatenacin de dos Lenguajes Decidibles tambin es un LD.
La Cerradura de Kleene de un Lenguaje Decidible tambin es un LD.
La interseccin de dos Lenguajes Decidibles tambin es un LD.
Problema de la Det encin
Hemos visto que si un problema codificado corresponde a un Lenguaje Recursivo,
entonces es Resoluble, porque existe un algoritmo capaz de responder Si o No en
todos los casos posibles, pero si tal algoritmo no existe, entonces el problema es
Irresoluble, ya que habr instancias en las que no sea capaz de responder Si o No,
este es el caso de un Lenguaje Enumerable y que no sea Recursivo, para el que
habr algunas cadenas con las cuales la MT que lo acepta nunca se detiene. Este es
el Problema de la Detencin, que nos conduce a dividir los problemas en dos clases:
los que son computables y los que no lo son.
Con objeto de probar que existe un lenguaje que sea Enumerable, pero que no sea
Recursivo, vamos a suponer que esto no es cierto, y que existe, por tanto, una Super
Mquina de Turing (SMT) que es capaz de determinar siempre si M, una MT dada, va
a poder aceptar o no a una cadena cualquiera w. De esta manera, el problema de la
Decidibilidad de cualquier MT lo reducimos a la prueba e que esta SMT es Decidible.
Por lo tanto, podemos empezar por considerar que la SMT debe aceptar al lenguaje
siguiente:
L
SMT
= { M, w | M acepta a w }
Ms an, el resolver el problema de que si L
SMT
es Decidible, se puede reducir a la
demostracin de que el lenguaje L
M
= { M | M acepta a M } es Decidible, con la
ventaja de que es fcil verificar que L
M
es Enumerable, ya que el conjunto de todas las
MT posibles es un conjunto contable, bastara con listar en orden cannico a todas las
cadenas que correspondan a una codificacin vlida de M.
Ahora bien, si L
M
fuera Decidible, el lenguaje complemento L
M
tambin debera ser
Decidible, como lo mostramos anteriormente, es decir, si existe M
0
que decida a L
M
,
deber existir M
1
que decida al lenguaje: L
M
= { M | M no acepta a M }.
T E O R A D E L A C O M P U T A C I N
221
Entonces, si suponemos que M
1
pertenece a L
M
, debera de cumplirse que M
1
no
acepta a la cadena M
1
, y por lo tanto, M
1
no puede pertenecer a L
M
, con lo que
tenemos una contradiccin, esto demuestra que nuestra suposicin es invlida, y por
tanto, L
M
no puede ser Decidible y en consecuencia L
M
tampoco es Decidible.
De todo lo anterior, se concluye que tanto L
SMT
como L
M
son Lenguajes Enumerables
no Decidibles y por consecuencia, se prueba que el Problema de la Detencin es
Irresoluble.
Diagonalizacin
Con objeto de encontrar un lenguaje que no sea Enumerable, vamos a imaginar una
matriz, en la cual ordenamos todas las posibles cadenas formadas a partir del alfabeto
= { 0, 1 }, encabezando los renglones, y a todas las codificaciones de Mquinas de
Turing encabezando las columnas, de modo que cada elemento de la matriz es de la
forma (w
i
, M
j
), cuyo valor es 1, si la i-sima cadena es aceptada por la j-sima MT, y
es 0 en caso contrario.
Dicha matriz se muestra en la figura 12.2, y sobre la cual, nos concentraremos
solamente en los elementos (w
i
, M
i
), que se encuentran sobre la diagonal principal, en
un proceso que se denomina Diagonalizacin:
A partir de los elementos de la diagonal principal de esta matriz construyamos el
siguiente lenguaje que llamaremos L
d
, definido de la siguiente manera:
L
d
= { w
i
| ( w
i
, M
i
) = 0 }
De esta manera nos aseguramos que ninguna MT acepta al lenguaje L
d
, ya que si
suponemos que existe M
d
, una MT que acepta al lenguaje L
d
, entonces se debe
J O R G E E D U A R D O C A R R I N V .
222
cumplir que para toda w
i
L
d
, se tiene que (w
i
, M
i
) = 0, por lo que M
d
no puede ser
ninguna de las M
i
, esto significa que existe w
d
L
d
, tal que (w
d
, M
d
) = 1, pero esto
indicara que w
d
es aceptada por M
d
, es decir que w
d
L
d
, lo que contradice todo lo
anterior, por lo tanto, no es posible que exista tal MT y entonces se concluye que L
d
es
un lenguaje No Enumerable.
Aunque resulta difcil describir e identificar a un lenguaje No Enumerable, ya que no
tiene bases gramaticales, se sabe que existe una infinidad de ellos, porque el conjunto
de todos los lenguajes es incontable, equiparables con el conjunto de los nmeros
reales, de los que se dice que tienen tamao Aleph 1:
1
, en contraste con el conjunto
de las MTs, que, como se dijo, es numerable (de tamao
0
).
Pr opi edades de l os Lenguaj es Enumer abl es
Las propiedades de los LEs, ms interesantes son las siguientes:
La unin de dos Lenguajes Enumerables L
1
y L
2
, es un Lenguaje Enumerable.
Si L es un Lenguaje Enumerable y no Recursivo, entonces L
C
no es un Lenguaje
Enumerable, al que se le llama Lenguaje Co-Enumerable.
Si L y L
C
son ambos Lenguajes Enumerables entonces L y L
C
son ambos
Lenguajes Recursivos (Decidibles).
Reducibilidad
La Reducibilidad es una tcnica para demostrar la irresolubilidad de determinados
problemas, a partir de su semejanza con problemas que ya han sido probados como
irresolubles. Con la reducibilidad se busca reemplazar un problema por otro
equivalente ms simple, por ejemplo, el problema de llegar a un Museo en una ciudad
desconocida se reduce al problema de conseguir un mapa.
Ahora ya sabemos que el problema de detencin de las MTs es irresoluble, puesto
que demostramos que L
SMT
es no Decidible, mostrando primero que es equivalente a
resolver el problema de L
M
, el cual encontramos que es Enumerable no Decidible.
Igualmente podemos verificar que el lenguaje L
M
es equivalente al lenguaje L
d
, por lo
que ambos lenguajes son No Enumerables.
La semejanza de L
SMT
con otros problemas se puede utilizar para demostrar su
irresolubilidad, como se ejemplifica a continuacin:
T E O R A D E L A C O M P U T A C I N
223
Det er mi nar si una MT ac ept a
Definamos ahora el siguiente lenguaje, que nos permite determinar si M una MT dada
acepta al lenguaje vaco:
V
M
= { M | L(M) = }
Y a su complemento:
V
M
= { M | L(M) }
Para ello probaremos primero que V
M
es un LE, por lo que deber existir M, una MT
que acepte los cdigos de todas las MT que aceptan Lenguajes no vacos. Dada M
i

como entrada y utilizando un generador de parejas (j, k), podemos verificar que la j-
sima cadena es aceptada por M
i
en k pasos, y por lo tanto, M acepta a M
i
.
Ya demostramos que V
M
es un LE, ahora supongamos que es un LD, entonces el
lenguaje L
M
tambin tendra que ser decidible, porque el problema de demostrar que
V
M
es Decidible se reduce a que L
M
tambin lo sea, y como ya se prob que no lo es,
entonces, V
M
no es un LD. Adicionalmente podemos concluir que V
M
no es un LE.
Ot r os pr obl emas i r r esol ubl es
Los siguientes problemas relativos a Mquinas de Turing son irresolubles, porque
todos ellos se pueden reducir al hecho probado de que L
M
no es Decidible:
Dada M una MT determinada y una cadena w, M acepta a w?
Dada M una MT cualquiera, M acepta la cadena vaca?
Dada M una MT cualquiera, Existe alguna cadena w, que M acepte?
Dada M una MT cualquiera, M se detiene para cada cadena w?
Dadas M
1
y M
2
dos MTs cualesquiera, ambas aceptan al mismo lenguaje?
Dada M una MT, Es L(M) un LR?, Es L(M) un LIC?, Es L(M) un LD?
Los siguientes problemas relativos a Gramticas son irresolubles y se pueden reducir
a algunos de los problemas sobre MT anteriores:
Dada G una gramtica cualquiera y una cadena w, w L(G)?
Dada G una gramtica determinada y una cadena w, w L(G)?
Dadas G
1
y G
2
dos gramticas cualesquiera, L(G
1
) = L(G
2
)?
Dada G una gramtica cualquiera, Se puede determinar si L(G) = ?
J O R G E E D U A R D O C A R R I N V .
224
Teor ema de Ri c e
De lo dicho anteriormente, se concluye que ninguna propiedad no trivial de las MTs es
Decidible o sea que todos los problemas no triviales sobre MTs son Irresolubles. Esto
queda plasmado en el siguiente teorema, debido a Rice:
Si la Propiedad C es un subconjunto propio no vaco del conjunto de los lenguajes
Enumerables, entonces C es irresoluble si para M, una dada MT, se cumple L(M) C.
Si suponemos que existe R
C
la MT que decida a C y construyamos a M
0
tal que si M
acepta a x, entonces L(M
0
) C, si M no acepta a x, entonces L(M
0
) C. Entonces si
fuera posible que R
C
decida a L(M
0
), se reduce a que L
SMT
pueda decidir a M, x, lo
cual se prob que es Irresoluble.
El pr obl ema de Cor r espondenc i a de Post
Un Sistema de Correspondencia de Post (SCP) est compuesto de tres elementos,
primero un alfabeto y dos conjuntos de cadenas de
+
del mismo tamao: A y B,
identificados como: A = { a
1
, a
2
, , a
k
} y B = { b
1
, b
2
, , b
k
}.
Una solucin del SCP es una secuencia de ndices i
1
, i
2
, , i
n
, para los cuales se
cumple que existe una cadena w
+
, tal que:
w = a
i
1
a
i
2
a
i
n
= b
i
1
b
i
2
b
i
n

El problema de Correspondencia de Post (PCP) consiste en determinar si un SCP
dado tiene o no una solucin. Se puede probar que el PCP es irresoluble, porque si
fuera resoluble implicara que tambin el problema de Detencin de las MT tendra
que ser resoluble, lo que ya se mostr que no es posible.
Una forma de visualizar el SCP si agrupamos las cadenas de A y B en bloques
semejantes a unas fichas del domin, de tal forma, que si podemos juntar una serie de
fichas que tanto arriba como abajo formen la misma cadena, tendremos una solucin
del SCP:
T E O R A D E L A C O M P U T A C I N
225
Ej empl o 1
Sea el SCP dado por = { a, b }, A = { a, abaaa, ab } y B = { aaa, ab, b }, entonces el
SCP anterior se puede representar as:
De este modo, se puede ver al problema de SCP como la manera de colocar bloques
de los tres tipos anteriores uno al lado del otro hasta que la cadena formada por la
parte superior coincida con la cadena formada por la parte inferior, por lo tanto, la
respuesta al problema anterior sera:
La solucin de este problema viene dada por los ndices: i
1
= 2, i
2
= 1, i
3
= 1 y i
4
= 3,
dado que la cadena: w = a
2
a
1
a
1
a
3
= b
2
b
1
b
1
b
3
= abaaaaaab.
Ej empl o 2
Sea el SCP dado por = { a, b }, A = { ab, aba, baa } y B = { aba, baa, aa }, Otra
representacin interesante de este tipo de problemas es por medio de piezas de un
rompecabezas, tal como se ejemplifica en la siguiente figura:
Se puede observar que el primer ndice forzosamente debe ser i
1
= 1, ya que es el
nico caso que inicia con la misma letra en ambas celdas, a continuacin, la nica
posibilidad consiste en colocar el segundo bloque, ya que debe iniciar con a en la
parte superior y la cadena inferior debe iniciar con la segunda letra de la cadena
superior, quedando as:
J O R G E E D U A R D O C A R R I N V .
226
Para continuar, se puede observar que el nico bloque posible es nuevamente el
segundo y este razonamiento se cicla de manera infinita, ya que no hay manera de
terminar y por lo tanto este problema no tiene solucin.
Ej empl o 3
Sea el SCP dado por = { 0, 1 }, A = { 100, 0, 1 } y B = { 1, 100, 00 }, a pesar de que
los ejemplos anteriores son sumamente sencillos, no siempre es as, en este caso
tenemos un ejemplo un poco ms difcil, la representacin por medio de piezas de
rompecabezas no es simple, como se aprecia en la grfica de la solucin:
Se han documentado casos donde la solucin es an muchsimo ms compleja.
El pr obl ema de i nt er sec c i n vac a de dos GI Cs.
Este problema consiste en que dadas dos GICs, G
1
y G
2
, determinar si la interseccin
de los lenguajes generados por ambas es vaca: L(G
1
) 3 L(G
2
) = ; este problema no
tiene solucin.
Para probar esto, supongamos el caso en el que L(G
1
) = { wcw
R
| w {a,b}* } y que
L(G
2
) = { a
i
1
a
i
2
a
i
n
cb
i
n
R
b
i
2
R
b
i
1
R
| A = { a
1
, a
2
, , a
k
} y B = { b
1
, b
2
, , b
k
} es un
SCP}, entonces se puede verificar que L(G
1
) 3 L(G
2
) = { wcw
R
| w es solucin del
SCP}, por lo tanto, resolver L(G
1
) 3 L(G
2
) = es equivalente a resolver el PCP, por
consiguiente, este problema tambin es irresoluble.
T E O R A D E L A C O M P U T A C I N
227
El pr obl ema de Ambi gedad par a GI Cs.
Este problema consiste en que dada G una GIC, Es posible determinar si G es
Ambigua? Este problema no tiene solucin, en la prueba de este teorema tambin se
utiliza el resultado del PCP.
Pregunt as
a) La diferencia de dos lenguajes Decidibles es un Lenguaje Decidible?
b) Si el lenguaje L
d
es No Enumerable, Cmo debe ser el lenguaje L
d
C
?
c) Es posible que L y L
C
sean ambos Lenguajes No Enumerables?
d) Del Teorema de Rice se deduce entonces que no podemos saber nada respecto
de ninguna Mquina de Turing?
Ejercicios Capt ulo 12
12.1 Probar que los siguientes problemas son resolubles (Decidibles), Sea un AFD M
y una cadena w *:
a) Hay una cadena uw L(M), para algn u *?
b) Hay una cadena wu L(M), para algn u *?
c) Hay una cadena uwv L(M), para algunos u, v *?
d) Sea un AFD M y una expresin regular r, Es L(M) = L(r)?
e) Sea una GIC G, L(G)?
12.2 Realizar un anlisis e interpretacin de los siguientes problemas no resolubles:
a) Dada una MT M, M?
b) Dada una MT M, Es L(M) = ?
c) Dada una MT M, Es L(M) finito?
12.3 Dados M y N, los dos AFDs mostrados en la Figura 12.10 y los conjuntos
siguientes, responder a cada una de las preguntas:
J O R G E E D U A R D O C A R R I N V .
228
A = { M,w | M es un AFD que acepta como entrada la cadena w }
B = { M | M es un AFD y L(M) = }
C = { M,N | M, N son AFDs y L(M) = L(N) }
D = { r,w | r es una expresin regular que comprende a la cadena w }
a) Est M,001 en A?
b) Est M,0111 en A?
c) Est N,000 en A?
d) Est M en B?
e) Est M,N en C?
f) Est N,N en C?
g) Est N,0111 en D?
h) Est 0111,0111 en D?
i) Est 01*0,0111 en D?
12.4 Para cada uno de los siguientes sistemas de correspondencia de Post, sobre el
alfabeto = { a, b }, obtener una solucin o explicar por qu no existe.
a) A = { aaa, baa } y B = { aa, abaaa }
b) A = { ab, bba, aba } y B = { aba, aa, bab }
c) A = { a, bb, a } y B = { aa, b, bb }
d) A = { a, aab, abaa } y B = { aaa, b, ab }
e) A = { ab, ba, b, ba } y B = { a, bab, aa, ab }
f) A = { ab, aa, ab, bb } y B = { bb, ba, abb, bab }
g) A = { aa, bb, abb } y B = { aab, ba, b }
h) A = { ab, baa, aba } y B = { aba, aa, baa }
i) A = { a, ba, b, bba } y B = { ab, aba, aba, b }
j) A = { b, aa, bab, ab } y B = { ba, b, aa, ba }
k) A = { abb, aba, aab } y B = { ab, ba, abab }
12.5 Decidir si las siguientes instancias de PCP, sobre el alfabeto = { 0, 1 }, tiene
solucin. Justificar la respuesta en cada caso.
a) A = { 1, 11, 011 } y B = { 11, 10, 1 }
b) A = { 1, 11, 011 } y B = { 11, 100, 1 }
c) A = { 01, 110010, 1, 11 } y B = { 0, 0, 1111, 01 }
d) A = { 0, 01 } y B = { 10, 1 }
T E O R A D E L A C O M P U T A C I N
229
Comput abilidad
Se definen el concepto de Computabilidad. Se describen las Funciones Iniciales y las Construcciones Primitivas. Se
definen Funciones Recursivas de diferentes tipos y las Funciones Caractersticas. Se define Incomputabilidad.
El objetivo de este captulo es identificar cules son todas las funciones que pueden
calcularse por medio de algn sistema computacional; en otras palabras, diremos que
una funcin es computable, si se puede calcular mediante algn algoritmo, sin
necesidad de especificar ningn algoritmo en concreto.
Como punto de partida, comenzaremos por definir una serie de funciones iniciales, tan
sencillas que no crean dudas en cuanto a su Computabilidad, para luego mostrar que
estas funciones pueden combinarse para formar otras, cuya Computabilidad se
desprenda de las funciones originales.
Para que finalmente obtengamos una coleccin que contenga a todas las funciones
computables. As, si un sistema computacional (lenguaje de programacin), abarca
todas esas funciones, diremos que el sistema tiene todo el poder posible.
Funciones Iniciales
La nica capacidad que se le reconoce inicialmente a nuestro sistema computacional
es que sea capaz de Contar, mediante el uso de tres tipos de funciones iniciales:
1. Fijar un punto inicial como 0 (Funcin Cero )
2. Reconocer el nmero siguiente de cada nmero natural (Funcin Sucesor ).
3. Y la familia de funciones , son necesarias para cambiar de dimensin entre
espacios (Funciones Proyeccin).
Func i n Cer o
La funcin Cero se representa por . Establece una correspondencia entre una
variable vaca y el 0. Es computable porque corresponde al proceso de escribir un
cero en un papel en blanco, o registrar un cero en una celda de memoria vaca.
Capt ul o
13
J O R G E E D U A R D O C A R R I N V .
230
Func i n Suc esor
Se representa por . Establece una correspondencia entre un nmero natural y su
sucesor, de manera que (x) = x + 1 para cada entero x > 0. Es computable, porque
se conoce desde hace tiempo un proceso computacional para sumar uno a un entero.
Func i ones Pr oyec c i n
La familia de Funciones Proyeccin se representa por . Obtiene como salida un
componente especfico de su tupla de entrada. Utiliza un superndice para indicar el
tamao de la entrada, y un subndice para indicar el lugar que ocupa en la tupla el
componente que se extrae.
De esta forma se tiene que:
3
2
(7,6,4) = 6,
2
1
(5,14) = 5,
2
2
(3,17) = 17, y como caso
especial,
2
0
(6,5) = (), es decir, un valor vaco. Al igual que las anteriores, es fcil ver
que las funciones Proyeccin, estn en la clase de las Funciones Computables.
Const rucciones Primit ivas
Las Funciones Iniciales forman la base de la jerarqua de un grupo de Funciones ms
extensas llamadas Funciones Primitivas Recursivas. Nuestra siguiente tarea es
investigar cmo pueden emplearse las Funciones Iniciales para construir otras
funciones ms complejas.
Combi nac i n
Una forma de construir funciones ms complejas a partir de las funciones iniciales es
por medio de la combinacin, definida como sigue:
Sean dos funciones f: N
k
N
m
y g: N
k
N
n
, la combinacin de ambas se representa
por el smbolo y es una funcin: f g: N
k
N
m+n
.
Es decir, toma entradas en forma de k-tuplas, y produce salidas cuyos primeros m
componentes consisten en la salida de f, y los n siguientes, en la salida de g.
Por tanto, la combinacin de dos funciones computables produce una funcin
computable.
Ej empl o
(5)
3
2
(1,5,3) = (6,5)
T E O R A D E L A C O M P U T A C I N
231
Composi c i n
Sean dos funciones f: N
k
N
m
y g: N
m
N
n
, la composicin de ambas funciones est
definida como una funcin: f ) g: N
k
N
n
.
Es decir, para encontrar la salida de f ) g, primero aplicamos f a la entrada, y despus
la funcin g, a la salida de f. Por tanto, la composicin de dos funciones computables
produce una funcin computable.
Ej empl o
) () = 1, ya que () es 0, y (0) es 1, otra manera de representarlo es: (()) = 1.
Rec ur si vi dad pr i mi t i va
La recursividad primitiva dice de manera general que, si dada f una funcin cualquiera
f: N
k+1
N
m
, sta se puede definir por medio de dos funciones g y h, con g: N
k
N
m

y h: N
k+m+1
N
m
, respectivamente. Entonces decimos que f esta construida a partir de
g y h por medio de recursividad primitiva.
Una funcin construida por recursividad primitiva a partir de funciones computables,
debe considerarse computable.
Ej empl o
Podemos definir recursivamente la funcin Mas de la siguiente manera:
Mas(x,0) =
1
1
(x) = x
Mas(x,y+1) = )
3
3
(x,y,Mas(x,y))
Es decir, que x + 0 es x, mientras que x + (y + 1) se obtiene (recursivamente)
encontrando al sucesor de x + y.
Funciones Recursivas Primit ivas
La clase de las funciones que estn por encima de las funciones iniciales, es la clase
de las funciones recursivas primitivas, que consisten en todas las funciones que se
construyen a partir de Funciones Iniciales aplicando un nmero finito de
Combinaciones, Composiciones y Recursividades Primitivas.
Esta clase es muy extensa, incluyendo a casi todas las funciones totales que se
requieren en las aplicaciones de un computador tradicional. (Funciones Totales son
J O R G E E D U A R D O C A R R I N V .
232
las que estn definidas para todos las tuplas de su dominio). A continuacin
describiremos a las Funciones Recursivas Primitivas ms comunes.
Func i ones Const ant es
Las Funciones Constates producen una salida fija, predeterminada, sin importar cul
sea la entrada. Se representan por K
n
m
, donde n indica la dimensin del dominio, y m
es el valor de salida de la funcin. Por ejemplo, K
3
5
establece la correspondencia
entre cualquier tupla de tres elementos, y el valor 5.
Es evidente, que las funciones constantes son recursivas primitivas.
Ej empl o
Para producir la funcin K
0
n
se puede aplicar la funcin sucesor un nmero n de
veces: K
0
2
= ) ) .
Tambin son recursivas primitivas, las funciones constantes cuyas salidas tienen ms
de una componente, ya que slo son combinaciones de funciones del tipo K
n
m
.
Ej empl o
La funcin que establece una relacin entre cualquier tripleta, y el par (2,5) est
definida por: K
3
2
K
3
5
.
Para evitar complicaciones de notacin, si el tamao del dominio queda claro,
sealaremos estas funciones como su valor, es decir: K
3
5
5 y K
3
2
K
3
5
(2,5).
Mul t i pl i c ac i n
Con base en las funciones constantes y la funcin Mas, podemos definir a la
multiplicacin como funcin recursiva primitiva:
Mult(x,0) = 0
Mult(x,y+1) = Mas(x, Mult(x,y))
Ex ponenc i ac i n
De manera semejante, con base en las funciones constantes y la funcin Mult,
podemos definir a la exponenciacin como funcin recursiva primitiva:
Exp(x,0) = 1
Exp(x,y+1) = Mult(x,Exp(x,y))
T E O R A D E L A C O M P U T A C I N
233
Func i n Pr edec esor
Da el valor de su predecesor, excepto cuando la entrada es cero, que no lo vara,
dando tambin cero a la salida.
Pred(0) = ()
Pred(y+1) =
2
1
(y,Pred(y))
Rest a posi t i va
En cierta forma, Pred es la funcin inversa de , por lo que puede usarse para
construir la resta de la misma manera que se usa para definir la suma. La funcin
Monus(a,b), la representaremos tambin como a b.
Monus(x,0) = x
Monus(x,y+1) = Pred(Monus(x,y))
Funciones Caract erst icas
Las funciones caractersticas, son aquellas en que slo tienen dos posibles valores de
salida. Son la representacin funcional de un problema de decisin, como por
ejemplo:
Func i n I gual dad
La Funcin Igualdad determina si dos valores son iguales, dando 1 si son iguales, y 0
si son diferentes.
Eq(x,y) = Monus ) ( K
2
1
(Mas ) ((Monus ) (
2
2

2
1
)) (Monus ) (
2
1

2
2
)))))
O lo que es lo mismo:
Eq(x,y) = 1 ( (y x) + (x y) )
Func i ones Tabul ar es
Son funciones que estn definidas por una tabla con un nmero finito de entradas, y
sus valores de salida correspondientes. Por ejemplo:
Entrada Salida
0 3
4 5
otros 2
Tabla 13.1
J O R G E E D U A R D O C A R R I N V .
234
Estas funciones son recursivas primitivas, y para demostrarlo, primero veremos la
Funcin Caracterstica
i
que da como salida 1 si la entrada es i, y cero en los dems
casos. Esta funcin
i
se puede formar con:

i
= Monus(I
i
, I
i
1), donde I
i
= Eq((x i), 0).
De esta forma, vemos que una funcin tabular no es ms que la suma finita del
producto de funciones caractersticas, constantes y caractersticas negadas. Por
ejemplo, la funcin de la tabla anterior, se puede construir mediante:
Mult(3,
0
) + Mult(5,
4
) + Mult(2, Mult(
0
,
4
))
Func i n Coc i ent e:
La funcin Coc: N
2
N, definida por la parte entera del cociente de sus
componentes, o cero en el caso de que el segundo sea cero, es recursiva primitiva y
puede construirse de la siguiente forma:
Coc(0,y) = 0
Coc(x+1,y) = Coc(x,y) + Eq(x+1, Mult(Coc(x,y), y) + y)
Ej empl o
Para calcular Coc(9, 3), se hara:
Coc(9, 3) = Coc(8+1, 3) = Coc(8, 3) + Eq(9, Mult(Coc(8, 3), 3) + 3)
= 2 + Eq(9, Mult(2, 3) + 3) = 2 + Eq(9, 6 + 3) = 2 + Eq(9, 9) = 2 + 1 = 3
Funciones -recursivas
Con lo visto hasta ahora, utilizamos las Funciones Iniciales para crear a las Funciones
Recursivas Primitivas. Pero stas, no abarcan a todas las funciones totales
computables. Como ejemplo de esta ltima afirmacin tenemos a la funcin de
Ackermann, que es la funcin A: N
2
N, definida por:
A(0, y) = y + 1
A(x+1, 0) = A(x, 1)
A(x+1, y+1) = A(x, A(x+1, y))
La cual es computable y total, pero no es recursiva primitiva.
De todas formas, no necesitamos un ejemplo de estas funciones para demostrar el
siguiente teorema:
T E O R A D E L A C O M P U T A C I N
235
Teor ema
Existe una funcin total computable de N a N, que no es recursiva primitiva.
Para demostrarlo, supongamos que es posible representar cada una de las funciones
recursivas primitivas, mediante una cadena finita de smbolos, por lo que es posible
ordenarlas y hablar as de f
1
la primera, f
2
la segunda, etc.
Si definimos ahora una nueva funcin g(n) = f
n
(n)+1. Podemos decir que g es total y
computable (se puede calcular a partir de f
n
). Sin embargo no es recursiva primitiva,
porque si lo fuera, sera un f
m
(para algn m), pero entonces, g(m) sera igual a f
m
(m),
lo cual no puede ser, porque la definimos como: g(m) = f
m
(m) + 1
La clase de las funciones totales computables, se conoce como la clase de las
funciones -recursivas.
Funciones Parciales
No todas las funciones tienen la forma: f: N
m
N
n
(una m-tupla de enteros como
entrada, y una n-tupla de enteros como salida), es decir, no siempre la funcin est
definida para todas las m-tuplas. Por ejemplo, la funcin Coc(x, y), no es de la forma
f: N
2
N, ya que no est definida para los pares donde el segundo componente sea
cero.
Una funcin parcial de un conjunto X, es aquella cuyo dominio consiste en un
subconjunto de X, entonces, la funcin Coc(x, y) es una funcin parcial de N
2
ya que
su dominio es un subconjunto de N
2
. Es posible identificar cualquier funcin
computable como una funcin parcial de la forma: f: N
m
N
n

Funciones Recursivas Parciales
Para ampliar nuestro estudio ms all de las funciones totales computables, siempre
dentro de las funciones computables, aplicamos la tcnica de la minimalizacin.
Mi ni mal i zac i n
La tcnica de Minimalizacin nos permite crear una funcin f: N
n
N, a partir de otra
funcin g: N
n+1
N, declarando a f(x) como la menor y, tal que g(x, y) = 0, y donde
g(x, z) est definida para todos los enteros no negativos z menores que y.
Esta construccin se representa como f(x) = y[g(x, y) = 0].
J O R G E E D U A R D O C A R R I N V .
236
Ej empl o
Supongamos que la funcin g(x,y) est definida por la tabla siguiente y que f(x) se
define como y[g(x, y) = 0]:
g(0,0) = 2 g(0,0) = 3 g(2,0) = 8 g(3,0) = 2
g(0,1) = 3 g(1,1) = 4 g(2,1) = 3 g(3,1) = 6
g(0,2) = 1 g(1,2) = 0 g(2,2) = ind. g(3,2) = 7
g(0,3) = 5 g(1,3) = 2 g(2,3) = 6 g(3,3) = 2
g(0,4) = 0 g(1,4) = 2 g(2,4) = 0 g(3,4) = 8

Tabla 13.2
Entonces f(0) = 4, puesto que g(0,4) = 0, f(1) = 2, porque g(1,2) = 0 y f(2) no est
definida porque antes de encontrar el primer valor igual a cero se encuentra uno que
no est definido. En lo que se refiere a f(3), la tabla no nos da suficiente informacin.
Como se ve en este ejemplo, la minimalizacin puede producir funciones que no estn
definidas para ciertas entradas.
Con esta tcnica podemos construir la funcin Coc (cociente entero):
Coc(x,y) = t[(x+1) (Mult(t, y) + y) = 0]
Coc(5,4) = 1, ya que 1 es el menor valor de t, para el que se cumple que:
(5 + 1) (Mult(t,4) + 4) = 0 6 (1 4) + 4 6 8 = 0
Coc(3,4) = 0, ya que 0 es el menor valor de t, para el que se cumple que:
(3 + 1) (Mult(t,4) + 4) = 0 4 (0 4) + 4 4 4 = 0
Coc(3,0) no est definida, ya que no hay ningn valor de t, que haga cumplir que:
(3 + 1) (Mult(t,0) + 0) = 0 4 0 0.
Habamos visto que la funcin Coc, no era recursiva primitiva, pero puede construirse
mediante la minimalizacin, por lo que pertenece a la clase de las Funciones
Recursivas Parciales.
Es evidente, que una funcin creada mediante la minimalizacin, es computable. La
nueva clase descrita, es decir, la de las funciones recursivas parciales, es la clase de
las funciones creadas a partir de funciones iniciales, y aplicando un nmero finito de
combinaciones, composiciones, recursividades primitivas y minimalizaciones.
T E O R A D E L A C O M P U T A C I N
237
En la Figura 13.1 se muestra toda la jerarqua de las funciones computables, ya que la
clase de las funciones recursivas parciales, contiene a todas las funciones parciales
computables.
Esta tesis se conoce como Tesis de Church (anloga a la forma referida al final del
Captulo 11). Nadie ha encontrado una funcin parcial que sea computable, pero que
no sea recursiva parcial, lo que da validez a esta tesis.
Los problemas cuya solucin puede especificarse como una funcin recursiva parcial
son exactamente los mismos que pueden solucionarse mediante mquinas de Turing.
Para sustentar una afirmacin as es conveniente enunciar un teorema:
Teor ema
Todo proceso computacional puede ser realizado por una mquina de Turing si y slo
si es el clculo de una funcin recursiva parcial.
Incomput abilidad
No es lo mismo afirmar que todava no se ha encontrado la solucin de un problema,
a decir, que se ha demostrado que no puede existir un algoritmo, procedimiento o
funcin que lo resuelva.
Cuando nos referimos a Incomputabilidad, nos referimos a que existen muchos ms
problemas que soluciones que puedan ser construidas. De esta forma, aunque no se
digan cuales, se sabe que existen una infinitud de problemas sin solucin.
La nica manera eficaz de dar un ejemplo de alguno de estos problemas, y demostrar
que no pueden solucionarse, es por reduccin al absurdo: Esto es, se demuestra que
J O R G E E D U A R D O C A R R I N V .
238
no pueden ser ciertas a la vez toda la teora construida hasta el momento, y la
afirmacin de que ese problema tiene solucin computable.
Pregunt as
a) En qu nos basamos al afirmar que existen ms problemas que soluciones
posibles?
b) Hay funciones parciales que no sean recursivas?
c) Todas las Funciones Totales son Computables?
Ejercicios Capt ulo 13
13.1 Calcule el elemento imagen de las siguientes Funciones Recursivas Primitivas:
a) )
2
1
(3, 5)
b)
1
1
) (4)
c) ) ()
d) ) )
3
0
(5, 6, 2)
13.2 Considere las funciones siguientes y determine, si estn bien definidas, cul es
su dominio y su espacio final:
a) f =
2
1
)
b) g = ) )
2
2

c) h = )
d) k = ) )
3
0

13.3 Calcule el elemento imagen de las siguientes funciones:
a)
3
2

3
1
(4, 2, 5)
b)
3
1

3
2
(4, 2, 5)
c) ( )
3
2
) ( )
3
0
)(4, 2, 5)
d)
2
2
( )
2
0
) ( ) )
2
2
) ) (( )
2
2
)
2
1
) (4, 6)
13.4 Defina las funciones siguientes de forma tal que se verifiquen las igualdades.
Utilice exclusivamente composicin, combinacin o recursividad primitiva de
funciones proyeccin o funciones constantes.
a) f(2, 3, 4) = (3, 4, 7)
b) g(2,3) = (3, 3, 9)
c) h(2, 3, 4) = (7, 2)
T E O R A D E L A C O M P U T A C I N
239
13.5 Dado que el esquema general de definicin utilizando recursividad primitiva es:
f(x, y) = g(x) y f(x, y + 1) = h(x, y, f(x, y)). Obtenga las expresiones adecuadas de
g y h para las funciones Mas(x, y), Mult(x, y) y Exp(x, y).
13.6 Sea A la funcin de Ackermann, definida previamente en la pgina 212,
demuestre que A(1, z) = z + 2 para todo z.
13.7 Si g(x) = x y h(x, y, z)= z + 2, Que funcin se obtiene desde g y h por recursin
primitiva?
13.8 Mostrar que las siguientes funciones son recursivas primitivas:
a) Abs(x, y) = | x y |
b) Fact(x) = x!
c) Min(x, y)
d) Max(x, y)
13.9 Construir una funcin de la forma -recursiva de la definicin de la funcin
Mdulo (Residuo).


T E O R A D E L A C O M P U T A C I N
241
Complejidad
Se define el concepto de Complejidad. Se estudia el impacto de la duracin para tratabilidad de los problemas por medio
de Mquinas de Turing.
Un problema es Decidible (Computable o Resoluble) si existe un algoritmo para
resolverlo, sin embargo, en la prctica esto no es suficiente, ya que pueden existir otro
tipo de limitaciones en cuanto a los recursos de tiempo y espacio necesarios para
solucionarlo, por lo que, desde el punto de vista prctico, un problema, a pesar de ser
soluble, puede permanecer sin solucin.
El objetivo de este captulo es el de clasificar a los problemas solubles desde el punto
de vista de la dificultad intrnseca que presentan para resolverlos.
Compl ej i dad de l os c l c ul os
Primeramente hay que establecer una escala para clasificar los problemas de acuerdo
a su complejidad, para ello, debemos aprender a medir la complejidad de los clculos
individuales, a partir de lo cual podemos determinar la complejidad de los algoritmos, y
como consecuencia, la complejidad de los problemas.
Comenzamos el estudio formalizando el concepto de clculo: Un clculo consiste en
un par determinado formado por un algoritmo y una entrada; o bien, desde otro punto
de vista: la combinacin de una MT en concreto y una cadena de entrada en concreto.
Medi c i n de l a c ompl ej i dad
La complejidad de un algoritmo se refiere entonces, a la cantidad de tiempo y espacio
requeridos para ejecutarlo, para una entrada determinada. Es posible medir tanto su
complejidad temporal como espacial y ambas sern unos nmeros determinados.
El tiempo es uno de estos recursos. Llamamos complejidad temporal a la cantidad de
tiempo necesaria para efectuar el clculo: Por ejemplo, la bsqueda binaria de un
elemento en una lista ordenada, tiene una complejidad temporal estimada, menor que
la bsqueda secuencial, puesto que usualmente se realiza ms rpido.
Capt ul o
14
J O R G E E D U A R D O C A R R I N V .
242
La cantidad de espacio de almacenamiento requerido, es otro de los recursos
mencionados. Llamamos complejidad espacial, a la cantidad de espacio de
almacenamiento requerido para efectuar un clculo.
La complejidad espacial o temporal de un clculo, puede variar dependiendo del
sistema en donde se ejecute el clculo (ste puede hacerse en una computadora
rapidsima, o con una calculadora de bolsillo. As mismo, los datos pueden estar
codificados en binario o escritos en papel, etc.) Para evitar estas variaciones, es
comn estudiar la complejidad, en el contexto de un sistema computacional fijo, en
este caso, nos referimos a la mquina de Turing.
Compl ej i dad de l os c l c ul os de Mqui nas de Tur i ng
Definimos la complejidad temporal de una mquina de Turing, como el nmero de
pasos que se ejecutan durante los clculos. Por ejemplo, la MT de la Figura 14.1,
tendr una complejidad temporal de 5 para un clculo en el que la cinta contenga
originalmente: #xxx##, (La cabeza recorrer un espacio, las tres x, y despus otro
espacio en blanco ms). Similarmente, si se inicia con una cinta que contenga solo
espacios en blanco: ###, la complejidad espacial ser solamente de 2.
En general, las complejidades espacial y temporal son diferentes, sin embargo, no son
completamente independientes, ya que en n pasos, una MT tiene acceso cuando
mucho a n + 1 posiciones de la cinta. Por tanto, si la complejidad temporal es n,
entonces la complejidad espacial nunca ser mayor que n + 1.
Si no exigimos que la mquina borre la cinta antes de pararse, es posible que dicha
mquina acepte una cadena con una complejidad espacial menor que el espacio
requerido para contener la cadena. Por ejemplo, si las cadenas aceptadas slo se
caracterizan por comenzar por el smbolo x, entonces, una vez examinado el primer
smbolo, podemos aceptar o rechazar la cadena sin necesidad de desplazarnos por el
resto de posiciones de la cinta que contienen a la cadena, sin embargo, si se exige
que se borre la cinta, la complejidad espacial ser por lo menos igual a la longitud de
su cadena de entrada.
T E O R A D E L A C O M P U T A C I N
243
Complejidad de los algorit mos
En general, el uso de un mismo algoritmo para distintas entradas, produce clculos de
complejidades diferentes. Para calcular si un algoritmo es complejo, nos basamos en
si los clculos son complejos o no, entonces, qu ocurre cuando unas entradas nos
llevan a clculos sencillos, y otras generan clculos complejos?
En este caso, se mantiene fija (y nica) la MT utilizada y se estudia para todas las
entradas posibles. Las complejidades medidas pueden variar enormemente. Uno de
los factores que ms influyen en esta variacin es la longitud de la cadena de entrada,
por lo que se deben estudiar por separado las distintas entradas con la misma
longitud. Se escoge el peor caso posible dentro de cada una de las familias de
entradas de cada longitud y todo esto se sintetiza como una funcin de la longitud de
la entrada.
Complejidad t emporal de las mquinas de Turing
Consideremos una mquina de Turing, para determinar si dos cadenas de igual
longitud son iguales, para el alfabeto = { x, y, z }. Suponemos que ambas estn
escritas en la cinta, una detrs de la otra, y separadas por un signo de igual. Por
ejemplo, se puede comenzar con una cinta que contenga #yxxz=yxzx##, y terminar
con #1## o con #0##, si las cadenas son iguales o distintas respectivamente.
Nuestra MT observa el primer smbolo de la primera cadena, y mueve la cabeza hasta
el primer smbolo de la segunda cadena. Si son iguales, hace lo mismo con los
segundos smbolos de ambas cadenas, y as hasta encontrar una discrepancia o
hasta agotar ambas cadenas.
Evidentemente, el tiempo requerido para ejecutar este algoritmo, debe ser funcin de
la longitud de las cadenas de entrada. As, sin entrar en ms detalle, diremos que el
tiempo necesario (nmero de pasos ejecutados) para confirmar que dos cadenas de
longitud n son idnticas, es: T(n) = 2n + 6n + 6
Esto incluye (2n + 3n + 1) pasos para la comparacin, (3n + 3) pasos para mover la
cabeza hacia el extremo derecho de la entrada y borrar la cinta de derecha a izquierda
y por ltimo un paso para escribir el smbolo 1.
Es decir, comparar dos cadenas de 4 elementos requerir una complejidad temporal
de 62, mientras que comparar dos cadenas de longitud 10, requerira de 266 pasos.
J O R G E E D U A R D O C A R R I N V .
244
Esto no es siempre cierto, ya que slo nos referimos a la comparacin de dos
cadenas idnticas, pero si las cadenas son diferentes, la complejidad depender del
momento en que se encuentre la primera discrepancia, y esto puede ocurrir en un
tiempo muy corto. Generalmente se manejan estas variaciones en el rendimiento de
un algoritmo, identificando las situaciones de mejor caso y peor caso. Esto nos
garantiza que cualquier aplicacin de dicho algoritmo, cae dentro de ese intervalo.
En nuestro ejemplo, el peor caso ser cuando las cadenas son idnticas y haya que
analizarlas completamente, y el mejor caso, cuando la discrepancia se encuentra en el
primer smbolo. Entonces, podemos afirmar que la complejidad se encontrar dentro
del rango entre T
m
(n) = 4n + 5 y T
p
(n) = 2n + 6n + 6.
Generalmente se acostumbra adoptar un punto de vista pesimista y definir la
complejidad temporal de un algoritmo como su rendimiento en el peor caso posible.
Rendi mi ent o medi o
Si utilizamos un algoritmo con mucha frecuencia, nos interesar encontrar su
rendimiento promedio, ms que describir el comportamiento en el peor o en el mejor
de los casos.
La estimacin del rendimiento promedio no consiste en el promedio aritmtico de los
peor y mejor casos, sino que se calcula de una forma ms precisa, multiplicando la
complejidad de cada clculo posible (c
1
, c
2
, , c
m
), por la probabilidad de que ocurra
dicho clculo (p
1
, p
2
, , p
m
) y realizando la sumatoria para todos estos casos, as:
Anl i si s i nf or mal de al gor i t mos
Generalmente, determinar la complejidad temporal de un algoritmo no es tan sencillo,
y hemos de conformarnos con una estimacin muy aproximada, lo que, sin embargo,
suele ser suficiente. Por ejemplo, nos basta con tener una idea aproximada de las
complejidades de dos distintas tcnicas, para poder evaluar las ventajas relativas
entre ambos algoritmos, y tomar una decisin de cual es la ms adecuada.
As, por ejemplo, si queremos calcular la complejidad del algoritmo de ordenacin por
insercin, debemos suponer que ser proporcional al nmero de veces que se ejecuta
T E O R A D E L A C O M P U T A C I N
245
su bucle ms interno. De esta forma podramos determinar que la complejidad
temporal del algoritmo ser proporcional a n
2
n, donde n es la longitud de la lista a
ordenar.
Por supuesto, esto es una aproximacin, y no podemos esperar que nos calcule el
tiempo exacto de una aplicacin del algoritmo. Sin embargo, s podemos afirmar que
si vamos aumentando la longitud de entrada, el tiempo necesario aumentar en
proporcin a una expresin cuadrtica. Es decir, si se duplica el tamao de la lista, el
tiempo aumentar en un factor aproximadamente de cuatro.
Estas aproximaciones son de gran utilidad para elegir entre varias estrategias para
resolver un problema concreto. Sin embargo, las consideraciones necesarias para
juzgar el rendimiento estimado de un algoritmo, varan de acuerdo con la situacin
concreta. Hay que considerar, por tanto, no slo los casos peor, mejor y promedio,
sino tambin el ambiente donde se aplicar el algoritmo.
Esta eleccin debe ser independiente del mecanismo empleado para su ejecucin, ya
que los algoritmos de complejidad temporal muy grande, no mejoran por el simple
hecho de que se ejecuten en una veloz supermquina.
Complejidad de los problemas
A veces decimos que un problema es difcil cuando nos resulta difcil resolverlo. Sin
embargo, siempre existe una forma difcil de resolver cualquier problema, por ello, la
complejidad de un problema se debe medir considerando la complejidad de la
solucin ms sencilla posible.
Normalmente no es fcil identificar cual es la solucin ms sencilla, para ello se
tendran que considerar todas las posibles MTs conocidas para resolver el problema, y
analizar a cada una de ellas bajo todas las entradas posibles, y de esta manera, poder
asignar al problema la complejidad del algoritmo que resulte el mejor, hasta ese
momento, pues posteriormente puede surgir uno ms eficiente. De este modo, la
bsqueda de una solucin ptima, se puede convertir en una labor sin fin de
descubrimientos sucesivos de mejores soluciones.
Mej or ami ent o de sol uc i ones
En la mquina de Turing que analizamos anteriormente, donde se comparaban dos
cadenas de igual longitud, cotejando los primeros elementos de cada cadena,
J O R G E E D U A R D O C A R R I N V .
246
despus los segundos, y as sucesivamente; conseguimos, de este modo, una
complejidad de T(n) = 2n
2
+ 6n + 6.
Podemos producir una solucin ms rpida, si diseamos una MT que compare dos
smbolos cada vez. Esto reducira aproximadamente a la mitad el nmero de
movimientos. Si continuamos con esa tcnica, podramos construir mquinas que
compararan k smbolos a cada vez y obtendramos una solucin que sea
aproximadamente 1/k veces mejor.
Esto nos lleva a un sin fin de soluciones cada una ms eficiente que la anterior, de
hecho, el teorema de aceleracin de Blum establece que existen problemas para los
cuales es posible mejorar considerablemente cualquier solucin. Y que en trminos
generales, dice que:
En el contexto de las mquinas de Turing (y por ende en otros sistemas), para
cualquier funcin -recursiva g, existe un problema para el cual, cualquier solucin
con complejidad temporal t(n), se puede mejorar para obtener una nueva solucin con
complejidad temporal g(t(n)) para todos, excepto un nmero finito de valores, a su vez,
sta nueva solucin se puede mejorar para obtener una complejidad g(g(t(n))) y as
sucesivamente.
Sin embargo, este teorema no ha sido aplicado fuera de las ciencias tericas, por lo
que tiene poca importancia en situaciones prcticas.
Por todo esto, al clasificar a los problemas de acuerdo con su complejidad, nos
conformaremos con dar una magnitud: Por ejemplo, el problema de comparacin de
cadenas, tiene una complejidad que es del orden de una expresin cuadrtica. Es
decir, hemos clasificado la complejidad del problema en la clase de las funciones
cuadrticas.
En la mayora de los casos, esta clasificacin ser ms que suficiente para nuestros
propsitos. Una forma til para medir la complejidad de los problemas consiste en
establecer una escala basada en Clases de funciones. Una de estas escalas es la de
las Tasas de Crecimiento.
Tasas de Crecimient o
Dada una funcin f: N R
+
, decimos que el Orden de la funcin f (se denota O(f),
ledo como o mayscula de f) es el conjunto de todas las funciones g: N R
+
,
T E O R A D E L A C O M P U T A C I N
247
acotadas superiormente por un mltiplo real positivo de f, para valores de n
suficientemente grandes.
Hay que notar que O(f) es un conjunto de funciones, y no una sola funcin y que para
cada funcin g(n) del conjunto, existe un entero n
0
, denominado umbral, tal que se
cumple lo anterior para todo n n
0
.
O(f) = { g: N R
+
| c R
+
, n
0
N | n n
0
, g(n) cf(n) }
Dos funciones f y g son equivalentes si O(f) = O(g). El conjunto de funciones
equivalentes a f, se denota como (f), es decir, theta mayscula de f. A cada clase
(f), se le llama tasa de crecimiento.
La tasa de crecimiento de cualquier polinomio de grado d, es (n
d
):
Ahora, aunque no podemos identificar una funcin especfica como la complejidad
temporal de cualquier problema, s podemos decir que es posible resolverlo con un
algoritmo cuya complejidad se encuentra, por ejemplo, en la clase (n
2
).
As pues, las tasas de crecimiento pueden proporcionar un esquema de clasificacin
para determinar la complejidad de los problemas. La complejidad de un problema ser
de la clase (f), si se puede resolver mediante un algoritmo de esa complejidad y
donde cualquier mejor solucin tambin est en esa clase.
Li mi t ac i ones de l a esc al a de t asas de c r ec i mi ent o
La escala de tasas de crecimiento tiene xito para clasificar la complejidad de varios
problemas en distintas situaciones, sin embargo, si cambiamos de un sistema
computacional a otro, es posible que la complejidad temporal corresponda a otra tasa
de crecimiento (por ejemplo, un problema puede tener una complejidad cuadrtica
usando mquinas de Turing de una cinta, pero puede ser lineal si usamos mquinas
de Turing de dos cintas).
Por lo tanto, la complejidad de un problema, medida como una tasa de crecimiento, no
constituye una propiedad exclusiva del problema, sino que adems, depende del
sistema computacional subyacente.
J O R G E E D U A R D O C A R R I N V .
248
En la tabla 14.1 se muestran diferentes funciones de complejidad y el tiempo que
consumira en resolver problemas de diferente tamao, suponindose que cada paso
tarda un microsegundo en ejecutarse.
O(n) n = 10 20 50 100 500 1000
ln n 2.3 x 10
-6
seg 3 x 10
-6
seg 3.9 x 10
-6
seg 4.6 x 10
-6
seg 6.2 x 10
-6
seg 6.9 x 10
-6
seg
N 1 x 10
-5
seg 2 x 10
-5
seg 5 x 10
-5
seg .0001 seg .0005 seg .001 seg
n ln n 2.3 x 10
-5
seg 6 x 10
-5
seg 2 x 10
-4
seg 4.6 x 10
-4
seg .0031 seg .0069 seg
n
2
.0001 seg .0004 seg .0025 seg .01 seg .25 seg 1 seg
n
3
.001 seg .008 seg .125 seg 1 seg 125 seg 1000 seg
n
5
.1 seg 3.2 seg 5.2 min 2.8 hrs 1 ao 31.7 aos
2
n
.001 seg 1 seg 35.7 aos 4 x 10
14
sig
3
n
.059 seg 58 min 2.3 x 10
8
sig 1.6 x 10
32
sig
n! 3.6 seg 771 siglos 9.6 x 10
48
sig
Tabla 14.1
Como podemos ver, existen algunos problemas, que debido a su complejidad, no es
posible resolverlos en la prctica, por la magnitud de tiempo tan considerable que
requerira su solucin, incluso para valores de n razonablemente pequeos.
Cualquier algoritmo se vuelve intil cuando el tiempo requerido para su ejecucin es
demasiado grande, por ello, siempre es necesario estimar de qu orden es la funcin
del tiempo requerido para la ejecucin de algunos algoritmos.
Y en los casos en que los problemas sean muy complejos, se debe tratar de encontrar
otro algoritmo equivalente que sea ms eficiente. La eficiencia entonces, consiste en
reemplazar algoritmos realizables por otros cuya funcin del tiempo se encuentre ms
arriba de la tabla.
Int rat abilidad
Cuando la funcin de complejidad de un problema depende polinomialmente del
tamao del problema, se dice que el problema es Tratable, (esto incluye tambin a
cualquier funcin logartmica), pero cuando la complejidad del problema depende
exponencialmente de su tamao, es decir, cuando no se puede limitar a una expresin
polinomial, como en el caso de las funciones exponenciales, entonces el problema es
considerado como Intratable.
T E O R A D E L A C O M P U T A C I N
249
El problema de intratabilidad no se resuelve simplemente esperando a que podamos
conseguir un equipo de cmputo mucho ms poderoso. En la tabla 14.2 se compara el
tamao de un problema que puede ser resuelto en el lapso de una hora, a la velocidad
actual de un microsegundo por paso, contra los tamaos de problemas que podran
resolverse con equipos muchas veces ms veloces en ese mismo lapso, para las
diferentes funciones de complejidad:
Tamao del problema a resolver en una hora
A la velocidad
actual
100 veces ms
rpido
1000 veces ms
rpido
n 3.6 x 10
9
3.6 x 10
11
3.6 x 10
12

n
2
6 x 10
4
6 x 10
5
1.9 x10
6

n
3
1533 7114 15326
n
5
82 205 325
2
n
31.7 38.4 41.7
3
n
20 24.2 26.3
Tabla 14.2
Como se puede apreciar, para las funciones exponenciales el incremento en el
tamao de los problemas a resolver es insignificante con respecto al aumento en
velocidad del equipo disponible, de ah su clasificacin como Intratables.
Ej empl o
Como se mencion en el captulo 12, el lenguaje siguiente es Decidible:
L
GIC
= { G, w | G es una GIC que genera la cadena w }
Primero debemos encontrar una gramtica en la FNCh equivalente, y luego probar
todas las derivaciones posibles de longitud 2n 1 o menos.
El problema radica en que usando esta tcnica, el nmero de derivaciones posibles
crece de forma exponencial, por lo que no es tratable de esta manera.
Sin embargo, podemos replantear este problema desde la perspectiva de la
Programacin Dinmica, cuya idea bsica es la de reutilizar soluciones parciales ya
obtenidas, y as evitar la repeticin innecesaria de muchos pasos. Este criterio es el
fundamento del procedimiento que hemos descrito en el captulo 7 como el algoritmo
CYK, el cual es Polinomial de orden O(n
3
).
J O R G E E D U A R D O C A R R I N V .
250
Clculos de t iempo polinomial
Volvemos a estudiar los problemas de reconocimiento de lenguajes, pero desde el
punto de vista de su complejidad: Nos interesa saber si el procesamiento de un
lenguaje es una tarea prctica, una vez que sabemos que es tericamente posible.
Decimos que una mquina de Turing M, calcula la funcin f en un tiempo polinomial, si
existe un polinomio p(x) tal que para cualquier entrada w (para la cual est definida
f(w)), M calcula f(w) en no ms de p(|w|) pasos.
Una propiedad importante de las funciones que pueden calcular las mquinas de
Turing en tiempo polinomial, es que la composicin de dos de estas funciones tambin
se calcula en tiempo polinomial.
Tambin es cierto que la clase de las funciones que pueden calcularse en tiempo
polinomial con mquinas de Turing de varias cintas, es igual que la de las mquinas
de una cinta.
La c l ase P
Definimos que P es la clase de los lenguajes que las mquinas de Turing pueden
decidir en un tiempo polinomial. Es decir, son todos los lenguajes que pueden ser
aceptados en un tiempo razonable. Otra caracterstica de la clase P, es que
permanece estable para una amplia gama de sistemas computacionales.
Teor ema
Si una mquina de Turing decide un lenguaje L en tiempo polinomial, entonces existe
otra mquina que tambin lo decide en tiempo polinomial pero que indica su
aceptacin detenindose con la configuracin de cinta #1## y su rechazo con la
configuracin #0##.
Problemas de decisin
Un problema de decisin es aquel problema que puede expresarse en forma de una
pregunta cuya respuesta es s o no. Desde esta perspectiva, la clase P corresponde a
la clase de los Problemas de Decisin que pueden resolverse con Mquinas de Turing
en tiempo polinomial.
T E O R A D E L A C O M P U T A C I N
251
Tanto es as, que con frecuencia consideramos a P ms que una clase de lenguajes
Decidibles, como una clase de problemas de decisin.
Tambin vimos que haba lenguajes que eran aceptados por mquinas de Turing,
pero no eran Decidibles. Deducimos por tanto, que estos lenguajes no se encuentran
en la clase P.
La c l ase NP
Definimos que NP es la clase de los lenguajes que las mquinas de Turing no
deterministas pueden aceptar en tiempo polinomial. Por supuesto, ya que cualquier
mquina de Turing determinista est contenida en la clase de las mquinas de Turing
no deterministas, podemos afirmar que P ` NP.
Sin embargo, la cuestin de que si P = NP, an no se ha resuelto. Existen numerosos
problemas de reconocimiento de lenguajes que se sabe que pertenecen a NP, pero se
desconoce su pertenencia (o no pertenencia) a P. Si descubriramos que P = NP,
podramos afirmar que estos problemas tienen soluciones prcticas. En caso de
probarse lo contrario, la posibilidad de encontrar soluciones eficientes, se desvanece.
No se ha podido resolver tampoco la relacin entre la aceptacin y la decisin de
lenguajes en tiempo polinomial en el contexto de las mquinas de Turing no
deterministas (Sin embargo, s se determin para el caso de la clase P).
Un ejemplo de este tipo de problemas es el conocido como El Problema del Agente
Viajero. En l se define un lenguaje L
s
que consiste en las cadenas que contienen una
ruta vlida. Este lenguaje puede aceptarse por una mquina no determinista en
tiempo polinomial (la mquina se detiene si la ruta es suficientemente corta. En caso
contrario, el tiempo crece considerablemente), pero no puede afirmarse que este
lenguaje pueda ser decidido por una mquina no determinista.
Todos los algoritmos conocidos en la actualidad deben revisar todos los posibles
caminos, y este chequeo es exponencial, sin embargo tampoco se ha probado que no
exista algn algoritmo tratable para resolver este problema.
Los problemas de clase NP, son verificables polinomialmente, un verificador es un
lenguaje dado por: L = { w | El algoritmo V acepta a w, c para una cadena c } el
verificador Polinomial es de orden O(|w|), donde la cadena c es la clave para probar
que w L.
J O R G E E D U A R D O C A R R I N V .
252
Ej empl o
Resulta muy difcil encontrar los factores del nmero 4,294,967,297, incluso Pierre de
Fermat declar en 1640 que se trataba de un nmero primo, y no fue sino hasta 1732
que Euler demostr que 6,700,417 y 641 son factores de ese nmero, lo que nos
resulta ahora muy sencillo de verificar.
Si se pudiera demostrar que P = NP, entonces L
s
pertenecera a P y podra ser
decidido en tiempo polinomial y entonces resolveramos en un tiempo razonable al
Problema del Agente Viajero y otros semejantes.
Reduc c i ones Pol i nomi al es
Demostrar que uno de los muchos ejemplos que sabemos que pertenecen a NP
pertenece tambin a P, sera un pequeo paso hacia la resolucin de la relacin entre
P y NP. Sin embargo, existe un camino para atacar muchos problemas a la vez. Este
mtodo se basa en el concepto de completez-NP, que a su vez se apoya en el
concepto de las reducciones polinomiales.
Una reduccin polinomial (o transformacin polinomial) de un lenguaje a otro, es una
funcin que puede ser calculada por una mquina de Turing en tiempo polinomial, y
para la cual w L
1
si y slo si f(w) L
2
. Si existe una reduccin polinomial de L
1
a L
2
,
decimos que L
1
se reduce a L
2
y lo escribimos como L
1
L
2
.
De esta forma, si tenemos una mquina M
f
, que ejecuta una funcin f la cual es una
reduccin polinomial de L
1
a L
2
, y si tenemos una segunda mquina M
2
, que acepta el
lenguaje L
2
, entonces el lenguaje que acepta la mquina compuesta M
f
M
2
es L
1
(M
f

convierte L
1
en L
2
, y L
2
es aceptado por M
2
)
Adems, como M
f
se calcula en tiempo polinomial, la complejidad temporal de la
mquina compuesta es comparable con la de M
2
. Esta afirmacin justifica el siguiente
teorema:
Teor ema
Si L
1
L
2
, y L
2
est en P, entonces L
1
est en P.
Una de las principales aplicaciones de este teorema es para demostrar la pertenencia
(o no pertenencia) a P de ciertos lenguajes: Si podemos demostrar la reduccin
polinomial de un lenguaje L
1
a otro L
2
, entonces ambos pertenecen (o ninguno
pertenece) a P, con solo demostrar que L
2
se halla (o no se halla) en P.
T E O R A D E L A C O M P U T A C I N
253
Teorema de Cook
Este teorema, descubierto por S. A. Cook, identifica que existe un lenguaje de la clase
NP (problemas de decisin) al que se puede reducir por reduccin polinomial
cualquier otro lenguaje en NP.
Desde el descubrimiento del teorema de Cook, se han encontrado que existe un gran
nmero de lenguajes en NP que son reducciones polinomiales de cualquier otro
lenguaje en NP. A esta clase de lenguajes se le conocen como completos-NP.
As, si alguna vez se demuestra que uno de estos lenguajes se halla en P, todos los
lenguajes en NP, se hallarn en P, porque la clase de lenguajes completos-NP est
formada por los lenguajes ms difciles de la clase NP, ver Figura 14.2.
Si se demostrara que alguno de estos lenguajes se puede aceptar por una mquina
de Turing determinista en tiempo polinomial, entones NP debera ser igual a P, y
muchos de los problemas que ahora no tienen solucin prctica (por tener una
complejidad que los hace intratables), podran ser finalmente Tratables.
Al contrario, si se demostrara que algn lenguaje de NP yace fuera de P, entonces
sera intil seguir buscando soluciones eficientes para dichos problemas. Hasta el
momento, no se ha demostrado ninguna de estas opciones.
Coment arios Finales
Vimos los autmatas finitos, que aceptaban los lenguajes regulares. Con el objetivo de
desarrollar tcnicas ms potentes para el reconocimiento de lenguajes, llegamos al
estudio de los autmatas de pila y los lenguajes independientes de contexto. Y
posteriormente, se estudi las mquinas de Turing, y los lenguajes estructurados por
frases donde llegamos al aparente lmite identificado por la Tesis de Church-Turing.
J O R G E E D U A R D O C A R R I N V .
254
Ampliamos el uso de las mquinas de Turing, que dejaron de ser simples dispositivos
de reconocimiento de lenguajes para convertirse en mquinas de propsito general
que calculaban funciones. De esta forma, vimos que la clase de funciones que era
calculable por una mquina de Turing era la clase de las funciones recursivas
parciales, que coincide con las funciones calculables con un sencillo lenguaje de
programacin esencial. As vimos la equivalencia entre diferentes disciplinas de la
tesis de Church-Turing.
Una vez investigada la frontera entre la computabilidad y la no computabilidad, nos
limitamos a los problemas que en teora pueden resolverse mediante algoritmos, y
estudiamos la complejidad de la mejor de las soluciones. Esto nos llev a la clase P,
como la clase de los problemas que pueden resolverse por una mquina de Turing
determinista en tiempo polinomial. La clase NP por el contrario, es la clase de los
problemas que pueden resolverse por una mquina de Turing no determinista en
tiempo polinomial. Una de las preguntas que queda sin resolver es si la clase P y NP
son idnticas o no.
Pregunt as
a) En qu nos basamos al afirmar que existen ms problemas que soluciones
posibles?
b) Por qu usualmente es ms importante estudiar la intratabilidad de problemas en
el tiempo, ms que en el espacio?
c) En que casos es relevante analizar la complejidad en el espacio?
Ejercicios Capt ulo 14
14.1 Dadas las funciones f(n) = 3n
3
+ 2n + 5 y g(n) = n
3
, demuestre que f O(g).
14.2 Observe la mquina de Turing, con alfabeto = { x, y }, mostrada en la Figura
14.3, de la pgina siguiente, describa su comportamiento y seale los valores
mximo y mnimo de su complejidad temporal.
14.3 Demuestre que si una MT requiere un espacio de O(f(n)), entonces necesita un
tiempo 2
O(f(n))
.
T E O R A D E L A C O M P U T A C I N
255
14.4 Para cada una de las siguientes funciones, elija la mejor O de acuerdo a la
tabla que describe la velocidad de crecimiento de la funcin:
a) 6n
2
+ 500
b) 2n
2
+ n
2
log
2
n
c) (n
3
+ 2n) (n + 5)/n
2

d) n
2
2
n
+ n!
e) 25n
3/2
+ 5n
2
+ 23
14.5 Utilizar la definicin de O(g), para establecer las siguientes relaciones:
a) n log
2
n O(n
2
)
b) n
2
O(n log
2
n)
c) n
r
O(2
n
)
d) n! O(2
n
)
14.6 Determinar la complejidad temporal de las siguientes Maquinas de Turing:


T E O R I A D E L A C O M P U T A C I N
257
Glosario de Tr minos
Al f abet o
Un alfabeto es un conjunto ordenado, finito no vaco de smbolos.
r bol
Un rbol es un dgrafo que tiene las siguientes propiedades:
Existe un nico vrtice llamado raz, que no tiene predecesores y desde el cual
existen trayectorias hacia cada vrtice.
Cada vrtice, menos la raz, tiene un solo predecesor.
Los sucesores de un vrtice se ordenan de izquierda a derecha.
Los rboles se trazan poniendo la raz en la parte superior y los arcos en direccin
descendente (por eso no se requiere poner la flecha)
A los vrtices que no tienen descendientes se les denomina Hojas.
r bol de Der i vac i n
Un rbol de derivacin es un rbol que representa en forma grfica la manera como
una gramtica dada genera a una cadena concreta y tiene las siguientes propiedades:
La etiqueta de la raz es S.
La etiqueta de cualquier vrtice que no es hoja es un smbolo no terminal.
La etiqueta de cualquier vrtice hoja es un smbolo terminal o .
Para cada produccin de la forma A w, que se aplique en una derivacin, deber
haber un nodo etiquetado con el SNT A, cuyos descendientes correspondan a cada
uno de los smbolos que forman la cadena w (en el mismo orden).
La concatenacin de los smbolos que haya en cada una de las hojas (ledos de
izquierda a derecha) nos proporciona la cadena obtenida en la derivacin que
representa el rbol.
Apndi c e
A
J O R G E E D U A R D O C A R R I N V .
258
Aut mat a Fi ni t o
Un autmata finito es un conjunto finito de estados y un conjunto de transiciones entre
estado y estado que pueden ocurrir, dependiendo del smbolo de entrada que se elija
dentro de un alfabeto .
Cadena
Una Cadena es una secuencia finita de smbolos de un alfabeto dado yuxtapuestos
uno a continuacin de otro en una secuencia determinada.
Cadena I nver sa
La Inversa de una Cadena w es la cadena w
R
, tal que es la imagen refleja de w, es
decir, que equivale a w cuando se lee de derecha a izquierda.
Cer r adur a de Kl eene
Sea L un lenguaje sobre el alfabeto , se define a L* como la Cerradura de Kleene o
Cerradura Estrella como la unin infinita de todas las potencias de L, incluyendo la
potencia cero.
Cer r adur a Posi t i va
Se define a L
+
, la Cerradura Positiva de L, como la unin infinita de todas las
potencias de L a partir de uno.
Ci c l o
Un Ciclo es cuando existe una trayectoria de k vrtices de un grafo: v
1
, v
2
, , v
k
, tal
que v
1
= v
k
, para k > 1.
Conc at enac i n
Concatenacin es la yuxtaposicin de dos cadenas, una a continuacin de la otra, de
tal forma que si w y x son dos cadenas, la concatenacin de w con x es la cadena que
se obtiene de aadir la cadena x a la cadena w.
Di agr ama de Tr ansi c i n
Un dgrafo es un diagrama de transicin si est asociado a un Autmata Finito de la
siguiente manera: Los vrtices del dgrafo representan los posibles estados del AF,
T E O R I A D E L A C O M P U T A C I N
259
Una transicin desde el estado q al estado p se representa por un arco etiquetado con
el valor del smbolo de entrada que la provoca.
Dgr af o
Un dgrafo es un conjunto de vrtices y un conjunto de pares ordenados llamados
arcos y se denota como v w. Al vrtice v se le llama Predecesor (Padre) y al vrtice
w se le llama Sucesor (Hijo).
Ejemplo: G = ( {1,2,3,4}, { i j | i < j } )
Est ado
Se llama estado a cada una de las distintas configuraciones internas en que puede
estar un sistema en un momento dado.
Est ado I ni c i al
Usualmente se denota como q
0
al estado inicial y es en el que se asume se encuentra
un Sistema al principio.
Est ados Fi nal es
A los estados de aceptacin tambin se les conoce como estados finales.
Gr af o
Un Grafo G = { V, E } es un conjunto finito V de vrtices o nodos y un conjunto E de
pares de vrtices conectados, llamados aristas.
Ejemplo: V = { 1, 2, 3, 4, 5 }, E = { ( n, m ) | n + m = 4 n + m = 7 }, en este caso, el
par ( 1, 3 ) y el par ( 3, 1 ) representan a la misma arista.
Gr amt i c as de Est r uc t ur a de Fr ase
Una gramtica de estructura de frase es aquella cuyo lado izquierdo de las reglas de
produccin puede estar formado por cualquier cadena no vaca sobre N 4 , siempre
que contengan al menos un smbolo no terminal. Las producciones son de la forma: A
w, donde A (N 4 )* N (N 4 )* y w (N 4 )*. Este tipo de gramticas se
conocen tambin como Gramticas No Restringidas o Gramticas del Tipo Cero.
J O R G E E D U A R D O C A R R I N V .
260
Gr amt i c as Sensi bl es al Cont ex t o
Las Gramticas Sensibles al Contexto son aquellas cuyas producciones son de la
forma A w, donde |A| |w|.
Adems, la forma normal de estas gramticas establece que toda produccin debe ser
de la forma:
1
A
2

1
w
2
, con w . Estas producciones permiten que A sea
reemplazado por w slo cuando A aparezca en el contexto de
1
y
2
.
A estas gramticas se les llama tambin Gramticas Dependientes del Contexto.
Hoj a
Un vrtice de un rbol que no tiene sucesores se denomina hoja.
Lazo
Se llama lazo a un ciclo en un grafo, de longitud uno.
Lenguaj e
Un lenguaje formal es un conjunto de palabras o cadenas formadas por smbolos de
un alfabeto dado.
Lenguaj e Dec i di bl e
Un lenguaje Decidible es aquel que puede ser decidido por alguna Mquina de Turing,
tambin se les llama Lenguajes Recursivos.
Lenguaj e Enumer abl e
Un lenguaje Enumerable o Recursivamente Enumerable puede ser aceptado pero no
necesariamente decidido por alguna Mquina de Turing.
Lenguaj e Uni ver sal
Definimos al Lenguaje Universal sobre como el lenguaje formado por todas las
cadenas que se pueden formar sobre , tambin se le conoce como la cerradura de
, y se denota como *. Para cualquier alfabeto, * es siempre infinito.
Lenguaj e Vac o
El lenguaje vaco se denota como , y es el que no contiene ninguna cadena, es decir
= { },
T E O R I A D E L A C O M P U T A C I N
261
Smbol o
Un smbolo es un signo, dgito, letra o incluso un grupo de letras que se utiliza en
algn lenguaje y que tiene algn significado convencional.
Tr ayec t or i a
Una trayectoria es una sucesin de k vrtices: v
1
, v
2
, , v
k
, tales que exista una arista
entre dos elementos sucesivos que los una, (v
i
, v
i+1
), para todo 1 i < k.


T E O R I A D E L A C O M P U T A C I N
263
Solucin a Problemas Plant eados
1.1. A 4 B = { , , , , }, A 3 B = { }, A / B = { , , , }, A B = { , } y
B A = { , }
1.2. Prefijos propios: , p, pi, pin. Sufijos propios: , o, no, ino.
Subcadenas: , p, i, n, o, pi, in, no, pin, ino.
1.3. w
2
= papapapa, w
3
= papapapapapa y w
R
= apap.
1.4. Prefijos: , p, pi, pi, pia, piat, piata.
1.5. Sufijos: , a, ma, oma, roma, aroma, maroma.
1.6. Subcadenas: , b, a, n, ba, an, na, ban, ana, nan, bana, anan, nana, banan,
anana.
1.7. xy
R
z = piataamorambanana, z
2
x = bananabananapiata.
1.8. Subcadenas: , 0, 1, 2, 01, 11, 10, 02, 22, 20, 011, 111, 110, 102, 022, 220.
1.9. (A 4 B
2
) = { a, b, c, cc, dc, ec, cd, dd, ed , ce, de, ee }
(AB)* = { , ac, ad, ae, bc, bd, be, cc, cd, ce, acac, acad, }
(BA)
R
= { ac, ad, ae, bc, bd, be, cc, cd, ce }.
1.10. L
1
$ L
2
= { , 1, 01, 11, 0, 001, 011, 10, 101, 1001, 1011, 111, 1101, 1111},
L
2
$ L
1
= { , 0, 10, 11, 1, 110, 111, 01, 010, 0110, 0111, 1110, 1111},
L
1
4 L
2
= { , 0, 10, 11, 1, 01}, L
1
3 L
2
= { , 11}, L
1
L
2
= { 0, 10 },
L
2
L
1
= { 1, 01 }, L
1
* = { , 0, 10, 11, 00, 010, 011, 100, 1010, 1011, },
L
2
* = { , 1, 01, 11, 101, 111, 011, 0101, 0111, } y L
1
L
2
= { 0, 10, 1, 01 }
1.11. L
0
= { }, L
1
= { , a }, L
2
= { , a, aa }, L
3
= { , a, aa, aaa }.
1.12. { b, ab, aab, aaab, }, { a, ab, abb, abbb, } y { , ab, abab, ababab, }
1.13. L
1
4 L
2
= { , aa, ab, bb }, L
1
4 L
3
= { , aa, ab }, L
1
4 L
4
= { },
L
2
4 L
4
= {aa, ab, bb}, L
1
3 L
2
= , L
2
3 L
3
= {aa, ab}, L
3
3 L
4
= y L
1
3 L
4
= .
Apndi c e
B
J O R G E E D U A R D O C A R R I N V .
264
1.14. (A 4 B
2
) = { ab, b, cb, aa, aba, baa, baba }, (B 4 A)
R
= { a, ab, ba, b, bc },
(AB) = { aba, ba, cba, abba, bba, cbba }, (A
2
3 BA) = { bab },
(A / B
R
) = { b, cb, a } y (A
R
B)
2
= { bb, bbc, bcb, bcbc }.
1.15. (L
1
4 L
2
)
R
= { 110, 101, 11, 10 }. (L
2
L
1
)
2
= {011011, 011101, 101011, 101101}.
(L
1
L
2
)
+
= { 01, 0101, 010101, }. (L
1
3 L
2
)* = { , 11, 1111, 11111, }.
L
1
R
L
2
= { 10011, 10101, 1011, 11011, 11101, 1111}.
1.16. L
C
= { b, ab, bb, aab, abb, bab, bba, bbb, }.
2.1. a) 00 ( 1 4 0 )*, b) 1*( 01*01*01* )*, c) ( 1 4 0 )* 11 ( 1 4 0 )*,
d) 1* 4 1*01* 4 1*01*01*, e) 1*( 01
+
4 001
+
)* 000 ( 1
+
0 4 1
+
00 )*1*,
f) 0 4 (1 4 2 4 4 9)*, g) ( 4 1 4 0 )
5
, h) ( 0 4 1 )* ( 11 4 0 ) 4 1 4 ,
i) ( 01 4 1 )
+
, j) (( 0 4 1 )
5
)*, k) ( 11 4 00 )( 1 4 0 )* 4 ( 1 4 0 )*( 11 4 00 ).
2.2. a) Las cadenas formadas por una cantidad par de ceros, incluyendo la vaca.
b) Las cadenas que inician con cualquier cantidad (incluso ninguno) de ceros
seguida por cualquier cantidad (incluso ninguno) de unos.
c) Las cadenas de ceros y unos que inician con uno.
d) Las cadenas de ceros y unos que terminan con doble cero.
e) Las cadenas de ceros y unos que contienen la subcadena 10.
f) Las cadenas de ceros y unos que contienen al menos dos ceros.
2.3. a) No, b) Si, c) No, d) Si, e) No.
2.4. L = { a, ca, cca, ccca, , , bc, bcbc, bcbcbc, , b, bb, bbb, bbbb, }
2.5. 18
2.6. a) (ab)*, b) (aa)*, c) a*b, d) a*b, e) (aa)*, f) a*, g) (b*a)
+
b*, h) a(aa)*, i) (a 4 b)*
j) (a 4 b)*, k) (a 4 b)*, l) a*bb
+
c*, m) y
+
x*, n) x*, o) (a 4 b)*, p) (a 4 b) (aa)*,
q) (a 4 ba 4 b
2
)*b, r) ( b*a)*, s) ( abc*)*
3.1.



3.2.

T E O R I A D E L A C O M P U T A C I N
265










3.3.











3.4.


J O R G E E D U A R D O C A R R I N V .
266





3.5. No son equivalentes.
3.6. Si son equivalentes.
3.7. Si son equivalentes.
3.8.



3.9.



3.10.



3.11.


3.12.

T E O R I A D E L A C O M P U T A C I N
267
3.13.


4.1.






4.2.





4.3. a) No, b) S, c) No, d) S, e) No.
4.4.








J O R G E E D U A R D O C A R R I N V .
268
4.5.







4.6.



4.7.













T E O R I A D E L A C O M P U T A C I N
269
4.8.



5.1.









5.2.



5.3.





5.4. L = (ab)* ((ba)*b 4 (ba)
+
4 a)
J O R G E E D U A R D O C A R R I N V .
270
5.5. L = ab(aab)* = (aba)* ab
5.6.





5.7. a) L = ( a 4 b )*ba, b) L = ( a 4 ba*b )*, c) L = ( a 4 ba 4 bba )*( bb 4 b 4 )
d) L = ( a 4 ba 4 bba )* bbb ( a 4 b )*, e) L = ( 11 4 0 )( 1 4 0 )*
5.8. a) L = ( a 4 b( b 4 ab )* a
2
)* = ( a 4 b
+
( ab
+
)* a
2
)* = ( ( b
+
a )* a )*
b) L = ( a 4 ba ( a
2
4 b )* ab 4 b
2
)* = ( a 4 b ( ab*a )* b )*
c) L = a*b ( ab*a 4 ba*b )*
d) L = ( a 4 b )( ( a 4 b )
2
)*
e) L = ( a 4 ba*b )(ab)* b ( a 4 b )*
f) L = ( b*a
+
b )( b
+
a
+
b 4 ab )* a
2
( a 4 b )*
5.9. a) L = ( ab 4 abb )
+

b) L = ( ( ab* 4 a*b ) ab )
+

c) L = ( ab*a 4 baaba )*
6.1. a) S aS | bc
b) S aA | bA, A cA |
c) S aS | bS | c
d) S aS | bS | A, A cA |
e) S bA | aB, A bA | , B aC | bC, C aC | bC | b
f) S aA | bB, A aA | ba, B aB | bB |
6.2. a) S aS | baa
b) S aS | baS | acS |
c) S A | cbB, A aA | bcC, B bB | , C cC |
d) S aA, A aA | bB, B bC | aC, C bC | aC |
e) S bA | abB, A bA | a, B aB | bB |
6.3. S abaS | babS |
T E O R I A D E L A C O M P U T A C I N
271
6.4. S 101A, A 0A |
6.5. S abA | bC, A aA | B | aC, B bS | aD | , C aA | bD, D aA | abD |
6.6. a) L = ( bb 4 aab 4 baab )
+

b) L = ( ab )* ( ab 4 ba )
c) L = b* ( baa 4 ba )
d) L = ( a 4 b(b
+
a)*a ) ( a 4 b )*
e) L = ( ab*a 4 b(b
+
a)*a )* ab
+
f) L = ( a
+
b 4 ba 4 bba*b ) ( a 4 b )* b
g) L = ( ab*aa 4 ab*aba*b 4 b ) ab*b
6.7. L = ( bb 4 ba 4 b ) ( ab 4 aa 4 bb )*
7.1. a) S a
b) S aA | bA | a | b, A aA | bbA | a | bb
c) S abA, A ccC, C a | eA
d) S a | aA | b | , A b
e) S a |
7.2. a) S AB | aA | ab | abB | aa, A aA | ab | abB | aa, B bA | BB
b) S aB, B aB | e
c) S ABa | Aa | a | AA | AAA, A ABa | Aa | a, B ABa | Aa | Ab
d) S a | b
e) S aED | aD | Ea | a | b, D Ea | a | b, E Ea | a
f) S DB | aE | b, B aB | bS | a, D b, E BEa | Ea | Dab
g) S a | aA | Aa, A aB, B a | Aa
h) S aAb, A eeC, C ae
i) S bA, A bA | a, D aA | b
j) S AC | bC | Sb | a | b, A Sb | a, C SC | AC | bC | Sb | a | b
7.3. a) S AB | C
a
C
c
| , A C
a
B | BD
1
, B b, C
a
a, C
c
c, D
1
D
2
A,
D
2
BB
b) S C
a
A | a | AC
b
, A D
1
C
b
, B b | AC
a
, C
a
a, C
b
b, D
1
C
a
B
c) S C
a
A | BC
a
| b, A C
a
C | D
1
S, B D
2
C
b
| a, C AD
3
| SC
b
, C
a
a,
C
b
b, D
1
C
b
B, D
2
BC
a
, D
3
CC
a
d) S a | D
1
B, A C
a
S | C
b
B | D
2
A, B C
a
S | b, C C
b
B | C
c
B | CC
a
,
C
a
a, C
b
b, C
c
c, D
1
C
b
A, D
2
C
c
C

J O R G E E D U A R D O C A R R I N V .
272
e) S D
1
S | C
a
B | , A AC
b
| CC
a
| b, B C
a
A | C
b
B | a, C CD
2
| C
a
B,
C
a
a, C
b
b, D
1
AC
b
, D
2
C
a
C
b
f) S C
b
A | C
a
B | , A C
a
B | D
1
S | b, B C
a
A | D
2
S | a, C D
3
C | BC
a
,
C
a
a, C
b
b, D
1
C
b
C, D
2
C
b
A, D
3
SC
a

7.4. a) S D
1
C
b
, A C
e
D
2
, B f, C C
a
C
h
, C
a
a, C
b
b, C
e
e, C
h
h,
D
1
C
a
A, D
2
C
b
C
b) S C
a
B | AC
a
, A C
b
B, B C
b
B | b, C
a
a, C
b
b
c) S D
1
A | AA | a | C
a
A | BC
b
| D
2
S | , A BC
b
| D
2
S, B C
b
C
a
| C
a
C
b
,
C
a
a,C
b
b, D
1
AA, D
2
C
a
B
7.5. No puede ser generada {C}
{C}

{S,A,C} {B}


{S,A,C} {B}

{A,C} {S,B} {S,B} {A,C} {A,C}
b a a b b

7.6. No puede ser generada {A,B}
{S} {B}

{A,B} {A,B}


{S} {B} {S} {B}

{A,B} {S} {A,B} {S} {A,B}
b a b a b

7.7. Si puede ser generada {S,B}
{S,B} {A}

{S,B} {A} {A}


{S,B} {A} {A} {S,B}

{S,B} {S,A} {S,A} {S,B} {S,A}
0 1 1 0 1

7.8. No puede ser generada {A}
{A} {A}

{A} {A} {A}


{A} {A} {A} {A}

{S,A} {S,A} {S,A} {S,A} {S,A}
1 1 1 1 1
T E O R I A D E L A C O M P U T A C I N
273

7.9. No puede ser generada {A}
{A} {B}

{A} {B} {A}


{A} {B} {A}

{S,A} {B} {S,A} {B} {B}
a b a b b

7.10. a) Si {S,A,C} b) No
{B} {B} {S,C} {S,A}
{A,C} {A,C} {A,C} {A,C} {B} {A,C}
a a a a b a

c) No d) Si {S}
{S,A} {S,C}
{S} {B} {S,A,C} {B}
{S,C} {S,A} {S,C} {S,A} {S,A} {B} {B} {S,C}
{A,C} {B} {A,C} {B} {A,C} {B} {A,C} {A,C} {A,C} {B}
a b a b a b a a a b

7.11. a) No {A,B} b) Si {S,D}
{S,D} {S,D} {B}
{A,B} {C} {A,B} {C} {A,B}
{B,C} {B,C} {S,D} {B,C} {B,C} {S,D} {B,C} {S,D}
b b a b b a b a

c) No d) Si {S,D}
{A} {S,D}
{B} {A} {C}
{C} {A,B} {C} {A,B} {C}
{S,D} {B,C} {B,C} {B,C} {S,D} {S,D} {B,C} {S,D} {S,D} {B,C}
a b b b a a b a a b
7.12. a) S aSc | b | aScS | bS, S c | cS
b) S bS | a | bSS | aS, S a | ba | aS | baS
c) S cA | cAS, S a | b | aS | bS, A a | aA, A a | aA
J O R G E E D U A R D O C A R R I N V .
274
d) S aab | aabS | aAab | aAabS, S a | b | aS | bS, A a | aA,
A ba | aba | abSa | baA | abaA | abSaA
e) S 1AS | 0S | 1A | 0, S 1ASAS | 0SAS | 1AAS | 0AS | 1ASA |
0SA | 1AA | 0A, A 1ASS | 0SS | 1AS | 0S | 1
f) S aAb | cSB | aAbS | cSBS, S aAbS | cSBS | aAbSS | cSBSS |
aAbSS | cSBSS | aAbSSS | cSBSSS,
A bBA | baA, B ac | aAbA | cSBA | aAbSA | cSBSA
g) S babBA | abbBA | aBSBA | babABA | abbABA | aBSABA | b | aS,
A bab | abb | aBS | babA | abbA | aBSA, B ba | ab,
A babBA|abbBA|aBSBA | babABA|abbABA|aBSABA | b | aS | babBAA
| abbBAA | aBSBAA | babABAA | abbABAA | aBSABAA | bA | aSA
8.1. a) S aSc | bc
b) S aSb | aS | a
c) S aSb | aa
d) S aaSc | b
e) S aSc | A, A bAc |
f) S aSa | A, A bAc |
g) S AB, A aAb | , B cBd |
h) S AB, A aAb | , B bBc |
i) S aSb | aaSb |
j) S AB, A aAb | , B bBcc |
k) S aSc | A | Bb | Cc, A aAb | aA | a, B aBb | Bb | , C Cc | B
l) S AC | BD, A aAb | , B aB | , C cC | , D bDc |
m)S AC | B, A aAb | Ab | b, B aBc | aB | aC, C bC |
n) S ABC, A aAb | , B bB | b, C bCc |
o) S bSb | aSa | a | b |
8.2. a) L(G) = ( a 4 b)*ab( ab 4 b)
+

b) L(G) = ( a 4 ab ) (( a 4 ab )
2
)*
c) L(G) = ( ab 4 ba )*( ab 4 aab )
d) L(G) = ( ( a 4 b )
2
)*. S aA | bA | , A aS | bS.
e) L(G) = a*( a 4 b )b*( a 4 b )*
f) L(G) = ( ( b*ab*)
2
)* 4 b*
T E O R I A D E L A C O M P U T A C I N
275
8.3. a) Palndromas de longitud par sobre = { a, b }
b) Palndromas de longitud impar sobre = { a, b }
c) Cadenas No Palndromas sobre = { a, b }
d) Cadenas cuyos prefijos propios contienen ms as que bs.
e) L = ( a 4 b )*a
f) L = ( a 4 b*a 4 ab* )
+

8.4. a) LL(1), b) LL(2), c) LL(1), d) LL(2), e) LL(2)
9.1. a) (q
0
,a,) = (q
0
,A), (q
0
,b,A) = (q
1
,A), (q
1
,b,) = (q
1
, ), (q
1
,c,A) = (q
2
,),
(q
2
,c,A) = (q
2
,), F = {q
2
}
b) (q
0
,a,) = (q
0
,AA), (q
0
,b,A) = (q
1
,), (q
1
,b,A) = (q
1
,), F = {q
1
}
c) (q
0
,a,) = (q
0
,A), (q
0
,b,) = (q
1
,), (q
1
,c,A) = (q
1
, ), F = {q
1
}
d) (q
0
,a,) = (q
0
,A), (q
0
,b,A) = (q
1
,AA), (q
1
,b,) = (q
1
,A), (q
1
,c,A) = (q
2
,),
(q
2
,c,A) = (q
2
,), F = {q
2
}
e) (q
0
,a,) = (q
1
,A), (q
1
,a,) = (q
0
,), (q
0
,b,A) = (q
2
,), (q
2
,b,A) = (q
2
,),
F = {q
2
}
9.2. (q
0
,a,Z) = (q
0
,A), (q
0
,c,A) = (q
0
,A), (q
0
,b,A) = (q
0
,B), (q
0
,a,B) = (q
1
,), F= {q
1
}
9.3. a) (q
0
,a,Z) = (q
0
,AZ), (q
0
,a,A) = (q
0
,AA), (q
0
,b,A) = (q
1
,A), (q
1
,b,A) = (q
1
,A),
(q
1
,a,A) = (q
2
,), (q
2
,a,A) = (q
2
,), (q
2
,,Z) = (q
3
,), F = {q
3
}
b) (q
0
,a,Z) = (q
0
,AZ), (q
0
,a,A) = (q
0
,AA), (q
0
,b,A) = (q
1
,), (q
1
,b,A) = (q
1
,),
(q
1
,b,Z) = (q
2
,AZ), (q
2
,b,A) = (q
2
,AA), (q
2
,a,A) = (q
3
,), (q
3
,a,A) = (q
3
,),
(q
3
,,Z) = (q
4
,), F = {q
4
}
c) (q
0
,a,Z) = (q
0
,AZ), (q
0
,a,A) = (q
0
,AA), (q
0
,b,A)= (q
1
,BA), (q
1
,b,B)= (q
1
,BB),
(q
1
,a,B) = (q
2
,), (q
2
,a,B) = (q
2
,), (q
2
,b,A) = (q
3
,), (q
3
,b,A) = (q
3
,),
(q
3
,,Z) = (q
4
,), F = {q
4
}
d) (q
0
,a,Z) = (q
0
,AZ), (q
0
,a,A) = (q
0
,AA), (q
0
,b,A) = (q
1
,), (q
1
,b,A) = (q
1
,),
(q
0
,b,Z) = (q
2
,), (q
1
,b,Z) = (q
2
,), F = {q
2
}
9.4. a) (q
0
,a,) = (q
0
,A), (q
0
,,) = (q
1
,), (q
1
,b,A) = (q
1
,), (q
1
,b,) = (q
2
,),
(q
2
,b,) = (q
2
,), (q
1
,,A) = (q
3
,), (q
3
,,A) = (q
3
,), F = {q
2
,q
3
}
b) (q
0
,a,) = (q
0
,A), (q
0
,,A) = (q
0
,), (q
0
,b,A) = (q
1
,), (q
1
,b,A) = (q
1
,),
(q
1
,,A) = (q
1
,), F = {q
0
,q
1
}
c) (q
0
,a,) = (q
0
,A), (q
0
,b,A) = (q
1
,), (q
0
,b,) = (q
1
,), (q
1
,b,A) = (q
1
,),
(q
1
,b,) = (q
1
,), F = {q
0
,q
1
}
J O R G E E D U A R D O C A R R I N V .
276
d) (q
0
,a,) = (q
0
,A), (q
0
,,) = (q
1
,), (q
1
,b,A) = { (q
1
,), (q
2
,) },
(q
2
,b,) = { (q
1
,), (q
3
,) }, (q
3
,b,) = (q
1
,), F = {q
1
}
e) (q
0
,a,) = { (q
0
,A), (q
1
,) }, (q
0
,b,) = {(q
0
,B),(q
1
,)}, (q
1
,b,B) = (q
1
,),
(q
1
,a,A) = (q
1
,), F = {q
1
}
f) (q
0
,a,) = (q
0
,A), (q
0
,b,A) = (q
1
,), (q
1
,a,A) = (q
1
,), (q
1
,b,A) = (q
1
,),
(q
0
,,A) = (q
1
,), (q
1
,,A) = (q
1
,), F = {q
0
,q
1
}
g) (q
0
,a,) = { (q
0
,A), (q
1
,) }, (q
0
,b,) = (q
0
,A), (q
1
,a,A) = (q
1
,),
(q
1
,b,A) = (q
1
,), (q
1
,b,) = (q
2
,), F = {q
2
}
h) (q
0
,a,) = { (q
0
,A), (q
1
, ) }, (q
0
,b,) = { (q
0
,B), (q
1
,) }, (q
0
,,) = (q
1
,),
(q
1
,a,A) = (q
1
,), (q
1
,b,B) = (q
1
,), (q
1
,a,B) = (q
2
,), (q
1
,b,A) = (q
2
,),
(q
2
,a,A) = (q
2
,), (q
2
,b,B) = (q
2
,), (q
2
,a,B) = (q
2
,), (q
2
,b,A) = (q
2
,)
9.5. a) (q
0
,a,Z)=(q
0
,AZ), (q
0
,b,Z)=(q
0
,BZ), (q
0
,a,A)=(q
0
,AA),(q
0
,b,B)=(q
0
,BB),
(q
0
,a,B)= (q
0
,C), (q
0
,a,C)= (q
0
,), (q
0
,b,C) = (q
0
,CB), (q
0
,b,A) = (q
1
,),
(q
1
,,A) = (q
0
,), (q
0
,,Z) = (q
2
,), F = {q
2
}
b) (q
0
,a,Z)=(q
0
,AZ), (q
0
,b,Z)=(q
0
,BZ), (q
0
,a,A)=(q
0
,AA), (q
0
,b,B)=(q
0
,BB),
(q
0
,a,B) = { (q
0
,), (q
0
,C) }, (q
0
,a,C) = (q
0
,), (q
0
,b,C) = (q
0
,CB),
(q
0
,b,A) = { (q
0
,), (q
1
,) }, (q
1
,,A) = (q
0
,), (q
0
,,Z) = (q
2
,), F = {q
2
}
9.6. L = ab
+
a 4 a
9.7. Las cadenas de L estn formadas por una subcadena que tiene la misma
cantidad de as que bs, pero que cada prefijo propio de esa subcadena siempre
tendr una cantidad mayor o igual de as que bs, adicionalmene, todas las
cadenas de L terminan con el sufijo bb.
9.8. w
1
: (q
0
, abba, Z) d (q
0
, bba, AZ) d (q
0
, ba, Z) d (q
1
, a, AZ)
w
2
: (q
0
, abab, Z) d (q
0
, bab, AZ) d (q
0
, ab, Z) d (q
0
, b, AZ) d (q
0
, , Z)
w
3
: (q
0
, abbb, Z) d (q
0
, bbb, AZ) d (q
0
, bb, Z) d (q
1
,b,AZ) d (q
1
,b,Z) d (q
2
,,)
9.9. a) (q
0
, , ) = { (q
1
, S) }, (q
1
, , S) = { (q
1
, aAA) },
(q
1
, , A) = { (q
1
, aA), (q
1
, bS), (q
1
, c) },
(q
1
, a, a) = (q
1
, b, b) = (q
1
, c, c) = { (q
1
, ) }
b) (q
0
, , ) = { (q
1
, S) }, (q
1
, , S) = { (q
1
, abS), (q
1
, acSbb), (q
1
, c) },
(q
1
, a, a) = (q
1
, b, b) = (q
1
, c, c) = { (q
1
, ) }

T E O R I A D E L A C O M P U T A C I N
277
c) (q
0
, , ) = { (q
1
, S) }, (q
1
, , S) = { (q
1
, aABB), (q
1
, bAA) }
(q
1
, , A) = { (q
1
, aBB), (q
1
, bA) }, (q
1
, , B) = { (q
1
, bBB), (q
1
, a) },
(q
1
, a, a) = (q
1
, b, b) = { (q
1
, ) }
9.10. a) (q
0
, , ) = { (q
1
, S) }, (q
1
, a, ) = (q
a
, ), (q
a
, , a) = (q
1
, ),
(q
1
, b, ) = (q
b
, ), (q
b
, , b) = (q
1
, ), (q
1
, c, ) = (q
c
, ),
(q
c
, , c) = (q
1
, ), (q
a
, , S) = { (q
a
, aAA) }, (q
a
, , A) = { (q
a
, aA) },
(q
b
, , A) = { (q
b
, bS) }, (q
c
, , A) = { (q
c
, c) }, (q
1
, $, ) = (q
2
, )
b) (q
0
, , ) = { (q
1
, S) }, (q
1
, a, ) = (q
a
, ), (q
a
, , a) = (q
1
, ),
(q
1
, b, ) = (q
b
, ), (q
b
, , b) = (q
1
, ), (q
1
, c, ) = (q
c
, ),
(q
c
, , c) = (q
1
, ), (q
a
, , S) = { (q
a
, aA) }, (q
b
, , A) = { (q
b
, bS) },
(q
c
, , A) = (q
c
, cSbb) }, (q
c
, , S) = (q
c
, c) }, (q
1
, $, ) = (q
2
, )
c) (q
0
, , ) = { (q
1
, S) }, (q
1
, a, ) = (q
a
, ), (q
a
, , a) = (q
1
, ),
(q
1
, b, ) = (q
b
, ), (q
b
, , b) = (q
1
, ), (q
a
, , S) = { (q
a
, aABB) },
(q
a
, , A) = { (q
a
, aBB) }, (q
a
, , B) = { (q
a
, a) }, (q
b
, , S) = { (q
b
, bAA) },
(q
b
, , A) = { (q
b
, bA) }, (q
b
, , B) = { (q
b
, bBB) }, (q
1
, $, ) = (q
2
, )
9.11. a) S aA | a, A bB, B bB | a
b) S aAS | bb, A aAA | b
9.12. S aA, A b | aA
9.13. S aAB | , A bAC | aC, B aS, C b
9.14. S aAB | , A aAC | b, B bS, C a
9.15. S aAS | bBC, A aAA | b, B b, C
9.16. S aA | bB, A aA | bA | a, B aB | bB | b
9.17. S aAS | bB, A aAA | b, B bB |
9.18. S 0AS | 1B, A 0A | 1, B 0B |
9.19. S aAC | , A bAB | a, B a, C bS
9.20. S c | aA | bA, A aAa | aAb | bAb | bAa | ca | cb
10.1. a) (q
0
,) = (q
0
,,R), (q
0
,#) = (q
1
,#,L), (q
1
,a) = (q
2
,#,L), (q
1
,b) = (q
3
,#,L),
(q
1
,c) = (q
4
,#,L), (q
2
,) = (q
2
,,L), (q
2
,#) = (q
0
,a,R), (q
3
,) = (q
3
,,L),
(q
3
,#) = (q
0
,b,R), (q
4
,) = (q
4
,,L), (q
4
,#) = (q
5
,#,R)

J O R G E E D U A R D O C A R R I N V .
278
b) (q
0
,a) = (q
1
,c,R), (q
0
,b) = (q
2
,d,R), (q
1
,) = (q
1
,,R), (q
2
,) = (q
2
,,R),
(q
1
,#) = (q
3
,A,L), (q
2
,#) = (q
3
,B,L), (q
3
,a) = (q
3
,a,L), (q
3
,b) = (q
3
,b,L),
(q
3
,A) = (q
3
,A,L), (q
3
,B) = (q
3
,B,L), (q
3
,c) = (q
0
,a,R), (q
3
,d) = (q
0
,b,R),
(q
0
,A) = (q
4
,a,R), (q
0
,B) = (q
4
,b,R), (q
4
,A) = (q
4
,a,R), (q
4
,B) = (q
4
,b,R),
(q
4
,#) = (q
5
,#,L), (q
5
,) = (q
5
,,L), (q
5
,#) = (q
6
,#,R), (q
0
,#) = (q
6
,#,R)
c) (q
0
,1) = (q
1
,0,R), (q
0
,#) = (q
11
,#,L), (q
1
,1) = (q
1
,1,R), (q
1
,#) = (q
1
,#,R),
(q
1
,#) = (q
2
,#,L), (q
1
,0) = (q
2
,0,L), (q
2
,1) = (q
3
,0,L), (q
3
,1) = (q
3
,1,L),
(q
3
,#) = (q
3
,#,L), (q
3
,0) = (q
0
,#,R), (q
0
,#) = (q
4
,#,R), (q
4
,) = (q
4
,,R),
(q
4
,#) = (q
5
,#,L), (q
5
,0) = (q
5
,#,L), (q
5
,1) = (q
5
,#,L), (q
5
,#) = (q
6
,#,L),
(q
6
,0) = (q
6
,1,L), (q
6
,#) = (q
11
,#,R), (q
2
,#) = (q
7
,#,L), (q
7
,) = (q
7
,,L),
(q
7
,#) = (q
8
,#,R), (q
8
,0) = (q
8
,#,R), (q
8
,1) = (q
8
,#,R), (q
8
,#) = (q
9
,#,R),
(q
9
,0) = (q
9
,1,R), (q
9
,#) = (q
10
,#,L), (q
10
,1) = (q
10
,1,L), (q
10
,#) = (q
11
,#,R)
d) (q
0
,a) = (q
0
,a,R), (q
0
,#) = (q
10
,#,L), (q
0
,b) = (q
1
,b,R), (q
1
,b) = (q
1
,b,R),
(q
1
,#) = (q
10
,#,L), (q
0
,c) = (q
2
,c,R), (q
1
,c) = (q
2
,c,R), (q
2
,c) = (q
2
,c,R),
(q
2
,#) = (q
10
,#,L), (q
1
,a) = (q
3
,b,L), (q
3
,b) = (q
3
,b,L), (q
3
,a) = (q
4
,a,R),
(q
3
,#) = (q
4
,#,R), (q
4
,b) = (q
1
,a,R), (q
2
,a) = (q
5
,c,L), (q
5
,c) = (q
5
,c,L),
(q
5
,b) = (q
6
,b,R), (q
6
,c) = (q
3
,b,L), (q
5
,a) = (q
7
,a,R), (q
5
,#) = (q
7
,#,R),
(q
7
,c) = (q
2
,a,R), (q
2
,b) = (q
8
,c,L), (q
8
,c) = (q
8
,c,L), (q
8
,b) = (q
9
,b,R),
(q
8
,a) = (q
9
,a,R), (q
8
,#) = (q
9
,#,R), (q
9
,c) = (q
2
,b,R), (q
10
,) = (q
10
,,L),
(q
10
,#) = (q
11
,#,R)
e) (q
0
,b) = (q
0
,#,R), (q
0
,a) = (q
1
,#,R), (q
1
,a) = (q
1
,#,R), (q
1
,b) = (q
2
,#,R),
(q
2
,) = (q
2
,,R), (q
2
,#) = (q
3
,1,L), (q
3
,) = (q
3
,,L), (q
3
,#) = (q
0
,#,R),
(q
0
,1) = (q
4
,1,L), (q
0
,#) = (q
5
,#,R), (q
4
,#) = (q
5
,#,R)
f) (q
0
,1) = (q
1
,#,R), (q
1
,) = (q
1
,,R), (q
1
,#) = (q
2
,0,R), (q
2
,#) = (q
3
,1,L),
(q
3
,) = (q
3
,,L), (q
3
,#) = (q
0
,#,R), (q
0
,0) = (q
4
,0,L), (q
0
,#) = (q
5
,#,R),
(q
4
,#) = (q
5
,#,R)
g) (q
0
,a) = (q
1
,#,R), (q
1
,b) = (q
2
,#,R), (q
2
,) = (q
2
,,R), (q
2
,#) = (q
3
,1,L),
(q
3
,) = (q
3
,,L), (q
3
,#) = (q
0
,#,R), (q
0
,b) = (q
4
,#,R), (q
1
,a) = (q
4
,#,R),
(q
4
,) = (q
4
,#,R), (q
4
,#) = (q
5
,0,L), (q
0
,1) = (q
5
,1,L), (q
5
,#) = (q
6
,#,R)
10.2. (q
0
,0) = (q
2
,1,R), (q
2
,#) = (q
0
,#,L), (q
0
,1) = (q
1
,0,L), (q
1
,1) = (q
1
,0,L),
(q
1
,0) = (q
2
,1,R), (q
1
,#) = (q
2
,1,R), (q
2
,0) = (q
2
,0,R)
10.3. (q
0
,#) = (q
1
,a,R), (q
1
,#) = (q
2
,#,L), (q
2
,a) = (q
2
,a,L), (q
2
,#) = (q
3
,#,R),
(q
3
,a) = (q
4
,0,R), (q
4
,a) = (q
4
,a,R), (q
4
,#) = (q
5
,#,R), (q
5
,a) = (q
5
,a,R),
T E O R I A D E L A C O M P U T A C I N
279
(q
5
,#) = (q
6
,a,L), (q
6
,a) = (q
6
,a,L), (q
6
,#) = (q
6
,#,L), (q
6
,0) = (q
3
,a,R),
(q
3
,#) = (q
0
,#,R), (q
0
,a) = (q
0
,a,R)
10.4. (q
0
,1) = (q
1
,0,R), (q
1
,1) = (q
1
,1,R), (q
1
,) = (q
2
,,R), (q
2
,1) = (q
3
,0,R),
(q
3
,1) = (q
3
,1,R), (q
3
,=) = (q
3
,=,R), (q
3
,#) = (q
4
,1,L), (q
4
,1) = (q
4
,1,L),
(q
4
,=) = (q
4
,=,L), (q
4
,0) = (q
2
,0,R), (q
2
,=) = (q
5
,=,L), (q
5
,0) = (q
5
,1,L),
(q
5
,) = (q
6
,,L), (q
6
,1) = (q
6
,1,L), (q
6
,0) = (q
0
,1,R), (q
0
,) = (q
7
,1,L),
(q
7
,1) = (q
7
,1,L), (q
7
,#) = (q
8
,#,R), (q
8
,1) = (q
8
,#,R), (q
8
,=) = (q
9
,#,R)
10.5. (q
0
,1) = (q
0
,1,R), (q
0
,#) = (q
1
,#,L), (q
1
,1) = (q
2
,x,L), (q
1
,#) = (q
10
,#,R),
(q
2
,1) = (q
3
,x,R), (q
3
,x) = (q
3
,x,R), (q
3
,#) = (q
2
,x,L), (q
2
,x) = (q
2
,x,L),
(q
2
,#) = (q
4
,#,R), (q
4
,x) = (q
4
,x,R), (q
4
,#) = (q
5
,#,L), (q
5
,x) = (q
6
,1,L),
(q
6
,x) = (q
7
,1,L), (q
7
,x) = (q
8
,0,R), (q
8
,0) = (q
8
,0,R), (q
8
,1) = (q
8
,1,R),
(q
8
,#) = (q
7
,1,L), (q
7
,0) = (q
7
,0,L), (q
7
,1) = (q
7
,1,L), (q
7
,#) = (q
9
,#,R),
(q
9
,0) = (q
9
,x,R), (q
9
,1) = (q
5
,1,L), (q
6
,#) = (q
10
,1,S)
10.6. (q
0
,1) = (q
1
,0,R), (q
0
,=) = (q
3
,=,R), (q
1
,1) = (q
1
,1,R), (q
1
,=) = (q
1
,=,R),
(q
1
,#) = (q
2
,1,L), (q
2
,1) = (q
2
,1,L), (q
2
,=) = (q
2
,=,L), (q
2
, 0) = (q
0
,0,R),
(q
3
,1) = (q
3
,1,R), (q
3
, #) = (q
4
,,L), (q
4
,1) = (q
4
,1,L), (q
4
,=) = (q
4
,=,L),
(q
4
,0) = (q
4
,1,L), (q
4
,#) = (q
5
,#,R), (q
5
, 1) = (q
6
,#,R), (q
6
,1) = (q
7
,#,R),
(q
6
,=) = (q
17
,#,R), (q
7
,1) = (q
8
,0,R), (q
7
, =) = (q
14
, =,R), (q
8
,1) = (q
8
,1,R),
(q
8
,=) = (q
9
,=,R), (q
9
,1) = (q
10
,0,R), (q
9
,) = (q
12
,,L), (q
10
,1)= (q
10
,1,R),
(q
10
,)= (q
10
,,R), (q
10
,#) = (q
11
,1,L), (q
11
,1) = (q
11
,1,L), (q
11
,) = (q
11
,,L),
(q
11
,0)= (q
9
,0,R), (q
12
,0) = (q
12
,1,L), (q
12
,=) = (q
13
,=,L), (q
13
,1) = (q
13
,1,L),
(q
13
,0)= (q
7
,0,R), (q
14
,1)= (q
14
,1,R), (q
14
,) = (q
14
,1,R), (q
14
,#) = (q
15
,#,L),
(q
15
,1) = (q
16
,,L), (q
16
,1)= (q
16
,1,L), (q
16
,=)= (q
16
,=,L), (q
16
,0)= (q
16
,1,L),
(q
16
,#) = (q
6
,#,R), (q
17
,1)= (q
17
,1,R), (q
17
,) = (q
18
,#,L), (q
18
,1)= (q
18
,1,L),
(q
18
,#) = (q
19
,#,R)
10.7. a) (q
0
,) = (q
1
,#,R), (q
1
,) = (q
0
,#,R), (q
0
,#) = (q
2
,1,S)
b) (q
0
,a) = (q
1
,#,R), (q
0
,b) = (q
0
,#,R), (q
1
,) = (q
1
,#,R), (q
1
,#) = (q
2
,1,S)
c) (q
0
,a) = (q
1
,#,R), (q
1
,a) = (q
0
,#,R), (q
0
,b) = (q
2
,#,R), (q
2
,b) = (q
0
,#,R),
(q
0
,#) = (q
3
,1,S)
d) (q
0
,a) = (q
1
,#,R), (q
1
,) = (q
1
,,R), (q
1
,#) = (q
2
,#,L), (q
2
,b) = (q
3
,#,L),
(q
3
,) = (q
3
,,L), (q
3
,#) = (q
0
,#,R), (q
0
,b) = (q
4
,#,R), (q
4
,b) = (q
4
,#,R),
(q
4
,#) = (q
6
,1,S), (q
2
,a) = (q
5
,#,L), (q
5
,a) = (q
5
,#,L), (q
5
,#) = (q
6
,1,S)
J O R G E E D U A R D O C A R R I N V .
280
e) (q
0
,a) = (q
1
,#,R), (q
1
,) = (q
1
,,R), (q
1
,#) = (q
3
,#,L), (q
3
,a) = (q
5
,#,L),
(q
0
,b) = (q
2
,#,R), (q
2
,) = (q
2
,,R), (q
2
,#) = (q
4
,#,L), (q
4
,b) = (q
5
,#,L),
(q
5
,) = (q
5
,,L), (q
5
,#) = (q
0
,#,R), (q
0
,#) = (q
6
,1,S), (q
3
,#) = (q
6
,1,S),
(q
4
,#) = (q
6
,1,S)
f) (q
0
,a) = (q
1
,#,R), (q
1
,) = (q
1
,,R), (q
1
,#) = (q
3
,#,L), (q
3
,a) = (q
5
,#,L),
(q
0
,b) = (q
2
,#,R), (q
2
,) = (q
2
,,R), (q
2
,#) = (q
4
,#,L), (q
4
,b) = (q
5
,#,L),
(q
5
,) = (q
5
,,L), (q
5
,#) = (q
0
,#,R), (q
4
,a) = (q
6
,#,L), (q
3
,b) = (q
6
,#,L),
(q
6
,) = (q
6
,#,L), (q
6
,#) = (q
7
,1,S)
g) (q
0
,a) = (q
1
,#,R), (q
1
,a) = (q
1
,a,R), (q
1
,b) = (q
1
,b,R), (q
1
,c) = (q
3
,c,R),
(q
3
,a) = (q
5
,d,L), (q
3
,d) = (q
3
,d,R), (q
0
,b) = (q
2
,#,R), (q
2
,a) = (q
2
,a,R),
(q
2
,b) = (q
2
,b,R), (q
2
,c) = (q
4
,c,R), (q
4
,b) = (q
5
,d,L), (q
5
,d) = (q
5
,d,R),
(q
5
,) = (q
5
,,L), (q
5
,#) = (q
0
,#,R), (q
0
,c) = (q
6
,#,R), (q
6
,d) = (q
6
,#,R),
(q
6
,#) = (q
7
,1,S)
h) (q
0
,b) = (q
1
,#,R), (q
0
,c) = (q
1
,#,R), (q
1
,) = (q
1
,,R), (q
1
,#) = (q
2
,#,L),
(q
2
,a) = (q
3
,#,L), (q
2
,c) = (q
3
,#,L), (q
3
,) = (q
3
,,L), (q
3
,#) = (q
0
,#,R),
(q
0
,#) = (q
4
,1,S)
i) (q
0
,a) = (q
1
,d,L), (q
0
,b) = (q
0
,b,R), (q
0
,c) = (q
0
,c,R), (q
0
,d) = (q
0
,d,R),
(q
1
,) = (q
1
,,L), (q
1
,#) = (q
2
,#,R), (q
2
,a) = (q
2
,a,R), (q
2
,b) = (q
3
,d,L),
(q
2
,c) = (q
2
,c,R), (q
2
,d) = (q
2
,d,R),(q
3
,) = (q
3
,,L), (q
3
,#) = (q
4
,#,R),
(q
4
,a) = (q
4
,a,R), (q
4
,b) = (q
4
,b,R), (q
4
,c) = (q
5
,d,L), (q
4
,d) = (q
4
,d,R),
(q
5
,) = (q
5
,,L), (q
5
,#) = (q
0
,#,R), (q
0
,#) = (q
6
,#,L), (q
6
,d) = (q
6
,#,L),
(q
6
,#) = (q
7
,1,S)
j) (q
0
,a) = (q
1
,#,R), (q
1
,) = (q
1
,,R), (q
1
,#) = (q
2
,#,L), (q
2
,b) = (q
3
,#,L),
(q
3
,b) = (q
4
,#,L), (q
4
,) = (q
4
,,L), (q
4
,#) = (q
0
,#,R), (q
0
,#) = (q
5
,1,S)
k) (q
0
,a) = (q
1
,#,R), (q
1
,a) = (q
1
,a,R), (q
1
,b) = (q
2
,b,R), (q
2
,b) = (q
2
,b,R),
(q
2
,c) = (q
2
,c,R), (q
2
,a) = (q
3
,c,L), (q
3
,) = (q
3
,,L), (q
3
,#) = (q
4
,#,R),
(q
4
,a) = (q
1
,#,R), (q
4
,b) = (q
5
,#,R), (q
5
,b) = (q
5
,b,R), (q
5
,c) = (q
6
,c,R),
(q
6
,c) = (q
6
,c,R), (q
6
,b) = (q
7
,#,L), (q
7
,) = (q
7
,,L), (q
7
,#) = (q
8
,#,R),
(q
8
,b) = (q
5
,#,R), (q
8
,c) = (q
9
,c,R), (q
9
,c) = (q
9
,c,R), (q
9
,#) = (q
10
,1,S)
l) (q
0
,a) = (q
1
,b,R), (q
1
,a) = (q
2
,a,L), (q
2
,c) = (q
2
,c,L), (q
2
,b) = (q
3
,c,R),
(q
3
,c) = (q
3
,c,R), (q
3
,a) = (q
2
,c,L), (q
2
,#) = (q
1
,#,R), (q
1
,c) = (q
1
,b,R),
(q
1
,#) = (q
4
,#,L), (q
4
,b) = (q
4
,#,L), (q
4
,#) = (q
5
,1,S)

T E O R I A D E L A C O M P U T A C I N
281
10.8. (q
0
,(0,0,#)) = (q
0
,(0,0,0),L), (q
0
,(1,0,#)) = (q
0
,(1,0,1),L),
(q
0
,(0,1,#)) = (q
1
,(0,1,1),L), (q
0
,(1,1,#)) = (q
0
,(1,1,0),L),
(q
1
,(0,0,#)) = (q
1
,(0,0,1),L), (q
1
,(1,0,#)) = (q
0
,(1,0,0),L),
(q
1
,(0,1,#)) = (q
1
,(0,1,0),L), (q
1
,(1,1,#)) = (q
1
,(1,1,1),L),
(q
0
,(#,#,#)) = (q
2
,(#,#,#),R)
10.9. (q
0
,(a,#)) = (q
1
,(a,x),R), (q
1
,(a,#)) = (q
1
,(a,#),R), (q
1
,(b,#)) = (q
1
,(b,#),R),
(q
1
,(c,#)) = (q
3
,(c,#),R), (q
3
,(,y)) = (q
3
,(,y),R), (q
3
,(a,#)) = (q
5
,(a,y),L),
(q
0
,(b,#)) = (q
2
,(b,x),R), (q
2
,(a,#)) = (q
2
,(a,#),R), (q
2
,(b,#)) = (q
2
,(b,#),R),
(q
2
,(c,#)) = (q
4
,(c,#),R), (q
4
,(,y)) = (q
4
,(,y),R), (q
4
,(b,#)) = (q
5
,(b,y),L),
(q
5
,(,y)) = (q
5
,(,y),L), (q
5
,(,#)) = (q
5
,(,#),L), (q
5
,(,x)) = (q
0
,(,x),R),
(q
0
,(c,#)) = (q
6
,(c,#),R), (q
6
,(,y)) = (q
6
,(,y),R), (q
6
,(#,#)) = (q
7
,(#,#),S)
10.10. (q
0
,(,#)) = (q
1
,(,x),R), (q
1
,(,#)) = (q
1
,(,#),R), (q
2
,(#,#)) = (q
3
,(#,#),L),
(q
3
,(,#)) = (q
4
,(,x),L), (q
4
,(,#)) = (q
4
,(,#),L), (q
4
,(,x)) = (q
0
,(,x),R),
(q
0
,(,x)) = (q
5
,(,y),L), (q
5
,(,x)) = (q
5
,(,#),L), (q
5
,(#,#)) = (q
6
,(#,#),R),
(q
6
,(a,#)) = (q
7
,(a,x),R), (q
7
,(,#)) = (q
7
,(,#),R), (q
7
,(,y)) = (q
7
,(,y),R),
(q
6
,(b,#)) = (q
8
,(b,x),R), (q
8
,(,#)) = (q
8
,(,#),R), (q
8
,(,y)) = (q
8
,(,y),R),
(q
7
,(a,x)) = (q
9
,(a,y),L), (q
8
,(b,x)) = (q
9
,(b,y),L), (q
9
,(,y)) = (q
9
,(,y),L),
(q
9
,(,#)) = (q
9
,(,#),L), (q
9
,(,x)) = (q
6
,(,x),R), (q
6
,(,y)) = (q
10
,(,y),R),
(q
10
,(,y)) = (q
10
,(,y),R), (q
10
,(#,#)) = (q
11
,(#,#),S)
10.11. (q
0
,(, #)) = (q
0
,(, ),(R, R)), (q
0
,(#, #)) = (q
1
,(#, #),(S, L)),
(q
1
,(#, )) = (q
1
,(#, ),(S, L)), (q
1
,(#, #)) = (q
2
,(#, #),(L, R)),
(q
2
,(, )) = (q
3
,(, ),(L, R)), (q
3
,(, )) = (q
2
,(, ),(L, R)),
(q
2
,(#, #)) = (q
4
,(#, #),(R, S))
10.12. (q
0
,(a, #)) = (q
0
,(a, a),(R, R)), (q
0
,(b, #)) = (q
0
,(b, #),(R, S)),
(q
0
,(#, #)) = (q
1
,(#, #),(L, L)), (q
1
,(b, a)) = (q
1
,(b, #),(L, L)),
(q
1
,(a, a)) = (q
1
,(a, a),(L, S)), (q
1
,(a, #)) = (q
1
,(a, #),(L, S)),
(q
1
,(#, #)) = (q
2
,(#, #),(R, S))
10.13. (q
0
,(, #)) = (q
0
,(, ),(R, R)), (q
0
,(#, #)) = (q
1
,(#, #),(S, L)),
(q
1
,(#, )) = (q
1
,(#, ),(S, L)), (q
1
,(#, #)) = (q
2
,(#, #),(S, R)),
(q
2
,(#, )) = (q
2
,(, ),(R, R)), (q
2
,(#, #)) = (q
3
,(#, #),(L, S)),
(q
3
,(, #)) = (q
3
,(, #),(L, S)), (q
3
,(#, #)) = (q
4
,(#, #),(R, S))

J O R G E E D U A R D O C A R R I N V .
282
10.14. a) (q
0
,) = (q
1
,,L), (q
0
,#) = (q
1
,#,L), (q
1
,) = (q
1
,,L), (q
1
,#) = (q
2
,#,R),
(q
2
,) = (q
3
,,L), (q
2
,#) = (q
3
,#,L)
b) (q
0
,) = (q
1
,,R), (q
0
,#) = (q
1
,#,R), (q
1
,) = (q
2
,,L), (q
1
,#) = (q
1
,#,R),
(q
2
,) = (q
3
,,R), (q
2
,#) = (q
3
,#,R)

10.15.

















11.1. a) S aSBC | bDC; D bDC | EC, E EC | , CB BC, aB ab,
bB bb, bC bc, cC cc.
b) S aSBCD | , DB BD, DC CD, CB BC, aB ab, bB bb,
bC bc, cC cc, cD cd, dD dd.
T E O R I A D E L A C O M P U T A C I N
283
c) S [E], E ABECD | , BA AB, DC CD, [A a, aA aa,
aB ab, bB bb, D] b, Db bb, Cb ab, Ca aa.
d) S [a], D] ], ] , [ [D, [ , Da aaaD.
e) S MN], ] Aa] | Bb], aA Aa, aB Ba, bA Ab, bB Bb, M ,
NA AaN, NB BbN, MA aM, MB bM, N , ] .
11.2. (q
0
,a) = (q
1
,a,R), (q
0
,b) = (q
0
,b,R), (q
1
,a) = (q
1
,a,R), (q
1
,b) = (q
0
,b,R),
(q
0
,#) = (q
R
,#,S), (q
1
,#) = (q
A
,#,S).
11.3. (q
0
,a) = (q
1
,a,R), (q
1
,b) = (q
2
,b,R), (q
2
,a) = (q
1
,a,R), (q
2
,#) = (q
A
,#,S),
(q
0
,b) = (q
R
,b,S), (q
1
,a) = (q
R
,a,S), (q
2
,b) = (q
R
,b,S).
11.4. (q
0
,(a,#)) = (q
0
,(a,Z),(S,S)), (q
0
,(b,#)) = (q
0
,(b,Z),(S,S)),
(q
0
,(a,Z)) = (p,(a,Z),(S,R)), (q
0
,(b,Z)) = (p,(b,Z),(S,R)),
(q
0
,(a,A)) = (p,(a,A),(S,R)), (q
0
,(b,B)) = (p,(b,B),(S,R)),
(p,(a,#)) = (q
0
,(a,A),(R,S)), (p,(a,#)) = (q
0
,(b,B),(R,S)),
(q
0
,(a,B)) = (q
0
,(a,#),(R,L)), (q
0
,(b,A)) = (q
0
,(b,#),(R,L)),
(q
0
,(#,Z)) = (q
A
,(#,#),(S,S)).
11.5. S [A, A xA | Ax | #A | A# | q
3
, xq
1
q
0
a, xq
2
q
0
b, xq
0
q
1
a | q
2
b,
q
3
x# xq
0
#, q
3
## #q
0
#, # , [q
0

S [A [xA [xxA [xxxA [xxxxA [xxxxxA [xxxxxAx
[xxxxxAx# [xxxxxq
3
x# [xxxxxxq
0
# [xxxxxq
1
a# [xxxxq
0
aa#
[xxxq
2
baa# [xxq
0
bbaa# [xq
1
abbaa# [q
0
aabbaa# aabbaa
12.3. a) Si, b) Si, c) No, d) No, e) No, f) Si. g) No, h) Si, i) No.
12.4. a) i
1
= 1, i
2
= 2, i
3
= 1, b) No, c) i
1
= 1, i
2
= 3, i
3
= 2, i
4
= 2, d) i
1
= 3, i
2
= 1, e) No,
f) No, g) i
1
= 1, i
2
= 2, i
3
= 1, i
4
= 3, h) No, i) i
1
= 1, i
2
= 4, i
3
= 2, j) No, k) No.
12.5. a) i
1
= 1, i
2
= 2, i
3
= 3, i
4
= 1, b) No, c) i
1
= 1, i
2
= 3, i
3
= 2, i
4
= 4, i
5
= 4, i
6
= 3,
d) No.
13.1. a)
2
1
(3,5) = 3; (3) = 4
b) (4) = 5;
1
1
(5) = 5
c) () = 0; (0) = 1
d)
3
0
(5,6,2) = (); () = 0; (0) = 1
13.2. f y g no estn bien definidas, h y k si lo estn.
J O R G E E D U A R D O C A R R I N V .
284
13.3. a)
3
2

3
1
(4, 2, 5) = (
3
2
(4, 2, 5),
3
1
(4, 2, 5)) = (2, 4)
b)
3
1

3
2
(4, 2, 5) = (
3
1
(4, 2, 5),
3
2
(4, 2, 5)) = (4, 2)
c) ( )
3
2
) ( )
3
0
)(4, 2, 5) = ( )
3
2
(4, 2, 5), )
3
0
(4, 2, 5)) = (3, 0)
d) (( )
2
2
)
2
1
) (4,6) = (( )
2
2
) (4,6)
2
1
(4,6) ) = ( 7, 4), luego

2
2
( )
2
0
) ( ) )
2
2
)(7,4) = (
2
2
(7,4), )
2
0
(7,4), ) )
2
2
(7,4)) =
(4, 0, 6)
13.4. a) f(2, 3, 4) =
3
2

3
3
K
3
7
(2, 3, 4) = (3, 4, 7)
b) g(2,3) =
2
2

2
2
K
3
9
(2,3) = (3, 3, 9)
c) h(2, 3, 4) = K
3
7

3
1
(2, 3, 4) = (7, 2)
13.5. a) Mas(x, 0) =
1
1
(x), Mas(x, y+1) = )
3
3
(x, y, Mas(x, y))
b) Mult(x, 0) = K
1
0
(x), Mult(x, y+1) = Mas ) (
3
1

3
3
)(x, y, Mult(x, y))
c) Exp(x, 0) = K
1
1
(x), Exp(x, y+1) = Mult ) (
3
1

3
3
)(x, y, Exp(x, y))
13.6. Caso base: A(1,0) = A(0,1) = 1 + 1 = 2, Si es cierto para z = n, entonces es
cierto para z = n+1: A(1,n+1) = A(0,A(1,n)) = A(0,n+2) = (n+2)+1 = (n+1)+2.
14.1. Para n
0
= 2 y c = 6 se verifica que f(n) cg(n), para n
0
n.
14.2. T
m
(n) = n + 2, T
p
(n) = (3n+4)/2
14.4. a) O(n
2
), b) O(n
2
ln n), c) O(n
2
), d) O(n!), e) O(n
2
).
T E O R I A D E L A C O M P U T A C I N
285



Esta obra se imprimi en los talleres de la
EDITORIAL
ACD
17 Sur No. 3105, Col. Volcanes
Puebla, Puebla, Mxico.

La edicin consta de 500 ejemplares
ms sobrantes para reposicin

14.5.

You might also like