Академический Документы
Профессиональный Документы
Культура Документы
Lenguajes Formales y
Gramaticas
David Castro Esteban
Copyright c _20032004 David Castro Esteban. Permission is granted to copy,
distribute and/or modify this document under the terms of the GNU Free
Documentation License, Version 1.2 or any later version published by the
Free Software Foundation; with no Invariant Sections, no Front-Cover Texts,
and no Back-Cover Texts. A copy of the license is included in the section
entitled GNU Free Documentation License.
This is as near, I take it,
as a nite mind can ever come
to perceiving everything that
is happening everywhere in the
universe.
The Doors of Perception
Aldous Huxley
Indice general
Introducci on 1
1. Aut omatas nitos 3
1.1. Aut omatas nitos deterministas . . . . . . . . . . . . . . . . . 3
1.2. Aut omatas nitos no deterministas . . . . . . . . . . . . . . . 5
1.3. Ejercicios . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12
2. Gramaticas regulares 15
2.1. Expresiones y gram aticas regulares . . . . . . . . . . . . . . . 15
2.2. Aut omatas nitos y gram aticas regulares . . . . . . . . . . . . 18
2.3. Aut omatas nitos y expresiones regulares . . . . . . . . . . . . 19
2.4. Ejercicios . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22
3. Propiedades de los lenguajes regulares 25
3.1. Lenguajes no regulares . . . . . . . . . . . . . . . . . . . . . . 25
3.2. Propiedades de clausura . . . . . . . . . . . . . . . . . . . . . 27
3.3. Propiedades de decisi on . . . . . . . . . . . . . . . . . . . . . 30
3.4. Equivalencia y minimizaci on . . . . . . . . . . . . . . . . . . . 32
3.5. Ejercicios . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38
4. Aut omatas a pila 41
4.1. Aut omatas a pila . . . . . . . . . . . . . . . . . . . . . . . . . 41
4.2. Aut omatas a pila deterministas . . . . . . . . . . . . . . . . . 44
4.3. Ejercicios . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45
5. Gramaticas independientes del contexto 47
5.1. Gram aticas independientes del contexto . . . . . . . . . . . . . 47
5.2.
Arboles de derivaci on . . . . . . . . . . . . . . . . . . . . . . . 50
5.3. Aut omatas a pila y gram aticas independientes del contexto . . 54
5.4. Ambiguedad en gram aticas y lenguajes . . . . . . . . . . . . . 57
5.5. Ejercicios . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 57
i
ii
INDICE GENERAL
6. Maquinas de Turing 59
6.1. M aquinas de Turing . . . . . . . . . . . . . . . . . . . . . . . . 59
6.2. M aquinas de Turing no deterministas y con m ultiples cintas . 67
6.3. Introducci on a la Tera de la Complejidad . . . . . . . . . . . 70
6.3.1. Tiempo y espacio . . . . . . . . . . . . . . . . . . . . . 70
6.3.2. Resultados b asicos . . . . . . . . . . . . . . . . . . . . 72
6.3.3. La conjetura de Cook . . . . . . . . . . . . . . . . . . . 75
6.4. La Tesis de ChurchTuring . . . . . . . . . . . . . . . . . . . . 75
6.5. Ejercicios . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 76
7. Gramaticas sensibles al contexto y generales 79
7.1. Gram aticas no restringidas o generales . . . . . . . . . . . . . 80
7.1.1. Deniciones b asicas . . . . . . . . . . . . . . . . . . . . 80
7.1.2. Gram aticas generales y m aquinas de Turing . . . . . . 81
7.2. Gram aticas sensibles al contexto . . . . . . . . . . . . . . . . . 85
7.2.1. Gram aticas sensibles al contexto y aut omatas lineal-
mente acotados . . . . . . . . . . . . . . . . . . . . . . 85
7.2.2. Gram aticas sensibles al contexto y lenguajes recursivos 87
7.3. La jerarqua de Chomsky . . . . . . . . . . . . . . . . . . . . . 90
7.4. Ejercicios . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 90
8. Computabilidad 93
8.1. Propiedades b asicas . . . . . . . . . . . . . . . . . . . . . . . . 94
8.2. Lenguajes no recursivamente enumerables . . . . . . . . . . . 96
8.2.1. Codicaci on de m aquinas de Turing . . . . . . . . . . . 97
8.2.2. El lenguaje diagonal . . . . . . . . . . . . . . . . . . . 98
8.3. Lenguajes no recursivos . . . . . . . . . . . . . . . . . . . . . 99
8.3.1. La m aquina de Turing universal . . . . . . . . . . . . . 99
8.3.2. No recursividad del lenguaje universal . . . . . . . . . 101
8.4. Reducciones . . . . . . . . . . . . . . . . . . . . . . . . . . . . 102
8.5. Teorema de Rice y propiedades de los lenguajes recursivamente
enumerables . . . . . . . . . . . . . . . . . . . . . . . . . . . . 103
8.6. Ejercicios . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 108
9. Funciones recursivas parciales 111
9.1. Funciones computables . . . . . . . . . . . . . . . . . . . . . . 111
9.2. M aquinas de Turing y funciones . . . . . . . . . . . . . . . . . 117
9.3. Ejercicios . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 120
A. M
1
2
uinas RAM 123
A.1. M
1
2
uinas RAM . . . . . . . . . . . . . . . . . . . . . . . . . 123
ON
Captulo 8.- Lenguaje recursivo y recursivamente enumerables, m aqui-
na de Turing universal y ejemplos de lenguajes no recursivos y no recur-
sivamente enumerables. Problemas indecidibles, Reducciones, Propie-
dades de los lenguajes recursivamente enumerables (Teorema de Rice).
Captulo 7.- Gram aticas generales y sensibles al contexto. Aut oma-
tas linealmente acotados. Equivalencia con m aquinas de Turing de las
gram aticas generales. Equivalencia con lenguajes sensibles al contex-
to de los aut omatas linealmente acotados. Teorema de la Jerarqua de
Chomsky.
Captulo 9.- Funciones recursivas primitivas, recursivas y recursivas
parciales. Equivalencia con m aquinas de Turing.
A parte de los t opicos anteriores, los presentes apuntes incluyen diversos
Apendices que complementan a los Captulos anteriores:
Apendice ?? Introducci on al -Calculus.
Apendice ?? Introducci on a las Redes Neuronales.
Apendice A M aquinas RAM.
Apendice B Problema de la correspondencia de Post.
El objetivo de dichos apendices es completar algunos aspectos tratados
en las notas y explorar otras modelizaciones del concepto de algoritmo.
Alcal a de Henares, 20 de enero de 2005.
David Castro Esteban
Captulo 1
Aut omatas nitos
En este Captulo se presenta el modelo de aut omata nito, discutiendose,
con cierta profundidad, algunos aspectos del mismo. M as concretamente:
en la Secci on 1.1 se dene el concepto de aut omata nito determinista, en
la Secci on 1.2 se introducen los aut omatas nitos no deterministas y los
aut omatas nitos con transiciones vacas.
La referencia b asica a lo largo del presente Captulo es [8]. En ella se abor-
da el tema de manera intuitiva y clara. El lector interesado en una referencia
m as tecnica puede acudir a la edici on anterior, i.e. [7], o a la monografa [10].
1.1. Aut omatas nitos deterministas
Intuitivamente, un aut omata es un dispositivo te orico capaz de proce-
sar una secuencia nita de smbolos de un alfabeto, cambiando su estado,
si procede. De entre los posibles estados que puede alcanzar el aut omata,
se distinguen los aceptadores que indican el reconocimiento, por parte del
aut omata, de la secuencia tratada.
La denici on formal es la siguiente:
Denici on 1 (Aut omata nito determinista, AFD) Un aut omata -
nito determinista es una tupla D = (K, , , q
0
, F) donde:
K es un conjunto (nito) de estados,
es una alfabeto (nito),
: K K es la funci on de transici on,
q
0
K es el estado inicial, y
3
4 CAP
ITULO 1. AUT
OMATAS FINITOS
F K es el conjunto de los estados aceptadores.
Obviamente, la denici on anterior es est atica, no determina el funciona-
miento del aut omata sino que indica los elementos que lo conforman. Para
dotar de dinamismo a la noci on extendamos, en primer lugar, la denici on
de la funci on al dominio K
.
Denici on 2 (Funci on de transici on extendida, AFD) Dado un aut o-
mata nito determinista D = (K, , , q
0
, F), se dene la extensi on de al
dominio K
(denotada por
) de manera inductiva en la longitud de las
cadenas:
dado q K, denimos
(q, ) := q,
dados q K,
y , denimos
(q, ) := (
(q, ), ).
La denici on anterior no es m as que la formalizaci on del funcionamiento
de un aut omata: dada una cadena
1
n
, el aut omata lee cada uno de los
smbolos de entrada, de izquierda a derecha, y cambia su estado, si procede,
en funci on del estado y el smbolo leido. Las cadenas en que, tras procesarlas,
el aut omata se encuentra en un estado aceptador conforman el lenguaje del
aut omata. Formalmente:
Denici on 3 (Lenguaje aceptado por un AFD) Dado un aut omata -
nito determinista D = (K, , , q
0
, F), se dene el lenguaje aceptado por el
aut omata, denotado L(D), como:
L(D) :=
:
(q
0
, ) F.
Tpicamente, para describir un aut omata basta detallar cada uno de sus
elementos. En concreto, la funci on de transici on suele representarse me-
diante una tabla, llamada de transiciones, que indica para cada par estado
smbolo el estado indicado por .
Ejemplo 4 Considerar, por ejemplo, el aut omata A = (K, , , q
0
, F), donde
K := q
0
, q
1
, q
2
, := 0, 1, F := q
1
y la funci on de transici on se
describe mediante la tabla de transiciones:
0 1
q
0
q
2
q
0
q
1
q
1
q
1
q
2
q
2
q
1
1.2. AUT
ITULO 1. AUT
OMATAS FINITOS
el estado en el que se encuentran y el car acter que estan procesando. En
la presente Secci on eliminaremos dicha restricci on deniendo los aut omatas
nitos no deterministas. Si bien es cierto que cabe esperar un aumento en
el poder computacional del dispositivo (reconocimiento de un mayor n umero
de lenguajes), se ver a que no es as.
La denici on formal de aut omata nito no determinista es como sigue:
Denici on 6 (Aut omata nito no determinista, AFN) Un aut oma-
ta nito no determinista es una tupla N = (Q, , , q
0
, F) donde:
K es un conjunto (nito) de estados,
es una alfabeto (nito),
: K T(K) es la funci on de transici on,
1
q
0
K es el estado inicial, y
F K es el conjunto de los estados aceptadores.
Al igual que en el caso de los aut omatas nitos deterministas, con el n
de detallar su funcionamiento debemos exterder el dominio de la funci on de
transici on a K
.
Denici on 7 (Funci on de transici on extendida, AFN) Dado un aut o-
mata nito no determinista N = (K, , , q
0
, F), se dene la extensi on de
al dominio K
(denotada por
) de manera inductiva en la longitud de
las cadenas:
dado q K, denimos
(q, ) := q,
dados q K,
y , denimos
(q, ) :=
(q,)
(p, ).
2
En cuanto al lenguaje aceptado por un aut omata nito no determinista,
se dene como sigue.
1
P(K) denota el conjunto de todos los subconjuntos de K, esto es, las partes de K.
2
Notamos que, dados q K y , (q, ) es un conjunto y por ende,
(q, ) para la
cadena
.
1.2. AUT
:
(q
0
, ) F ,= .
Retomendo el Ejemplo 4, veamos un aut omata nito no determinista que
reconoce el mismo lenguaje:
Ejemplo 9 Considerar el aut omata N = (K, , , q
0
, F), donde el conjunto
de estados es K := q
0
, q
1
, q
2
, el alfabeto := 0, 1, el conjunto de estados
aceptadores es F := q
1
y la funci on de transici on se describe mediante
la tabla de transiciones:
0 1
q
0
q
0
, q
2
q
0
q
1
q
1
q
1
q
2
q
1
, ,
, q
0
, F
:= K, q
0
:= q
0
, F
:= F y
: K
T(K)
(q, ) (q, ).
El recproco tambien se verica, si bien es cierto que su demostraci on resulta
m as complicada.
8 CAP
ITULO 1. AUT
OMATAS FINITOS
Teorema 10 (Equivalencia entre AFD y AFN) Todo lenguaje L
aceptado por un aut omata nito no determinista es aceptado por un aut omata
nito determinista.
Demostraci on . Sea L
, ,
, q
0
, F
) que acepte L
(simule a N).
Denimos:
el conjunto de estados de D como K
:= T(K),
el conjunto de estados aceptadores mediante:
F
:= q K
: q K ,= ,
la funci on de transici on
como
(q, ) := (q a) =
pq
(p, ), y
el estado inicial como q
0
:= q
0
.
Queda demostrar que el aut omata D = (K
, ,
, q
0
, F
) acepta el mismo
lenguaje que N. Para ello, demostraremos que se satisface para toda cadena
w
la siguiente igualdad:
(q
0
, w) =
(q
0
, w)
El caso base resulta trivial puesto que w = , q
0
= q
0
. Supongamos probado
el resultado para todas las cadenas de longitud n y veamos que se verica
para las palabras de longitud n + 1.
Dado w
(q
0
, w) :=
(q
0
, w), ) =
(q
0
, w), ).
por lo que, de acuerdo a la denici on de
, se sigue
(q
0
, w), ) =
(q
0
,w)
(q, )
Queremos insistir en el hecho de que la demostraci on anterior es cons-
tructiva, i.e. describe un algoritmo que construye, a partir de un aut omata
nito no determinista, un aut omata nito determinista cuyo lenguaje es el
mismo.
1.2. AUT
(q),
para todo p Cl
.
En general, dado un conjunto Q K, se dene la clausura de Q con respecto
a transiciones vacas de manera an aloga.
Intuitivamente, la clausura con respecto a de un estado es el conjunto
de estados a los que puede llegar el aut omata sin procesar smbolo alguno.
Teniendo en cuenta esta noci on, se dene la funci on de transici on extendida
de la siguiente manera:
10 CAP
ITULO 1. AUT
OMATAS FINITOS
Denici on 14 (Funci on de transici on extendida, AFN) Dado un
aut omata nito no determinista con transiciones vacas E = (K, , , q
0
, F),
se dene la extensi on de al dominio K
(denotada por
) de manera
inductiva en la longitud de las cadenas:
dado q K, denimos
(q, ) := Cl
(q),
dados q K,
y , sea
P :=
(q,)
(p, ).
Denimos
(q, ) :=
pP
Cl
(p).
En cuanto al lenguaje aceptado por un aut omata nito no determinista
con transiciones vacas, la denici on formal es como sigue.
Denici on 15 (Lenguaje aceptado por un AFN) Dado un aut oma-
ta nito no determinista con transiciones vacas E = (K, , , q
0
, F), se de-
ne el lenguaje aceptado por el aut omata, denotado L(E), como:
L(E) :=
:
(q
0
, ) F ,= .
Veamos un ejemplo sencillo de aut omata no determinista con transiciones
vacas.
Ejemplo 16 Sea V = (K, , , F, q
0
) es aut omata nito no determinista con
transiciones vacas descrito por el siguiente diagrama de transici on:
q
0
q
2
q
3
1
0, 1
q
1
0
q
5
q
6
0
q
4
1
1.2. AUT
(q
0
) = q
0
, q
1
mientras que
Cl
(q
1
) = q
1
.
Obviamente, un aut omata determinista puede interpretarse como un au-
t omata no determinista con transiciones vacas sin m as que interpretarlo
como un aut omata no determinista sin transiciones vacas (basta denir
(q, ) = ). El siguiente resultado demuestra el reciproco.
Teorema 17 (Equivalencia entre AFD y AFN) Todo lenguaje L
, ,
, q
0
, F) que
acepte el mismo lenguaje. Para ello denimos
K
:= P K : Cl
(P) = P, i.e. Q
es el conjunto de subconjunto de
K cerrados bajo clausura con respecto a .
q
0
:= Cl
(q
0
),
F
:= P K
: P F ,= , y
dado P K
y , sea
S :=
pP
(p, ).
Denimos
(P, ) :=
sS
Cl
(s).
Veamos que el aut omata nito determinista as construido acepta exacta-
mente las mismas cadenas que E. Para ello, demostremos por inducci on (en
la longitud de las cadenas) que
(q
0
, ) =
(q
0
, ).
En primer lugar veamos el caso base, i.e. = . Por denici on de
tenemos
(q
0
, ) = q
0
= Cl
(q
0
) =
(q
0
, ).
12 CAP
ITULO 1. AUT
OMATAS FINITOS
Suponiendo cierta la armaci on para cadenas de longitud n N, sea
una cadena de longitud n y sea un smbolo del alfabeto. Por hip otesis
tenemos
S =
(q
0
, ) =
(q
0
, ).
Ahora bien,
(q
0
, ) se dene como
(q
0
, ) :=
sS
Cl
(s)
por lo que coincide con
ITULO 1. AUT
OMATAS FINITOS
A B
C D
0, 1
0
0, 1
0, 1
1
Problema 8 Sean A
1
y A
2
dos aut omatas nitos deterministas, y sean L
1
y L
2
sus respectivos lenguajes. Demostrar las siguientes armaciones:
1. Existe un aut omata A que tiene por lenguaje L
1
L
2
.
2. Existe un aut omata A que tiene por lenguaje L
1
L
2
.
3. Existe un aut omata A que tiene por lenguaje L
c
1
.
4. Existe un aut omata A que tiene por lenguaje L
1
L
2
.
Concluir que las mismas armaciones se tienen en el caso de los aut oma-
tas nitos no deterministas y de los aut omatas nitos no deterministas con
transiciones vacas.
Problema 9 Dado A = (K, , , q
0
, F) un aut omata nito determinista, lla-
maremos conguraci on del aut omata a todo par (q, w) K
; en particu-
lar, llamaremos conguraci on inicial para la entrada w
al par (q
0
, w).
Dados p, q K, w
si y s olo si (q
0
, w) da lugar, en un
n umero nito de pasos de computaci on, a una conguraci on del tipo (f, )
(con f F).
Captulo 2
Gramaticas regulares
En este Captulo se presentan las nociones de gram aticas y expresiones
regulares. Hecho esto, se muetran sus relaciones con los aut omatas nitos:
se demuestra que esencialmente son nociones equivalentes tanto en cuanto
permiten describir los mismos objetos, a saber: los lenguajes regulares.
2.1. Expresiones y gramaticas regulares
A lo largo de est a Secci on damos las deniciones de expresi on y gram ati-
ca regular, as como diversos ejemplos. Coloquialmente hablando, tanto las
expresiones regulares como las gram aticas son distintas formas de especicar
los lenguajes regulares (como se ver a en Secciones subsiguientes).
La denici on formal de expresi on regular es como sigue:
Denici on 19 (Expresi on regular) Dado un alfabeto nito , se dene
un expresi on regular, va inducci on estructural, de la siguiente manera:
(Base) , y (con ) son expresiones regulares cuyos lenguajes
asociados son , y respectivamente.
(Inducci on) Distinguimos los siguientes casos:
Dada una expresi on regular E, (E) es un expresi on regular cuyo
lenguaje es precisamente L(E) (el lenguaje asociado a E).
Dada un expresi on regular E, E
ITULO 2. GRAM
ATICAS REGULARES
Dadas dos expresiones regulares E
1
y E
2
, E
1
E
2
es una expresi on
regular cuyo lenguaje asociado es L(E
1
)L(E
2
) (la concatenaci on
de los lenguajes de E
1
y E
2
).
Ejemplo 20 Un ejemplo sencillo de expresi on regular es, por ejemplo, el
siguiente:
(0 + 1)
01(0 + 1)
.
Dicha expresi on describe el conjunto de las cadenas de ceros y unos que
continen la subcadena 01. Para verlo, basta observar que (0 + 1)
describe
cualquier cadena de ceros y unos.
En cuanto a la denici on de gram atica regular, es como sigue.
Denici on 21 (Gramatica regular (lineal a derecha)) Una gram ati-
ca regular (lineal a derecha) es una tupla G = (V, T, P, S) donde
V es un conjunto nito de smbolos llamados variables o smbolos no
terminales,
T es un conjunto nito de smbolos, llamados terminales, satisfaciendo
T V = ,
P V (T
01(0 + 1)
0S
ATICAS REGULARES 17
S
1S
, y
S
.
M as compactamente,
S 0S[1S[01S
0S[1S[.
Cabe destacar que en la denici on de expresi on regular hemos denido,
de paso, el lenguaje asociado a la misma. Sin embargo, en la denici on de
gram atica no hemos dado un tal lenguaje. Para asociar un lenguaje a una
gram atica debemos, en primera instancia, denir el concepto de derivaci on.
Denici on 23 (Derivaci on) Dada una gram atica regular G = (V, T, P, S)
y una cadena v, con T
y v V , diremos que (T
V T
) deriva
de v, si existe una producci on v P. Si es el caso, lo indicaremos
mediante la notaci on v
G
; en general, si una cierta cadena (T
V
T
) deriva de (T
V T
G
.
Subyacente a la noci on de derivaci on se encuentra el concepto de lenguaje
asociado a una gram atica regular en los siguientes terminos:
Denici on 24 (Lenguajes de una gramatica regular) Dada una gra-
m atica regular G = (V, T, P, S), se dena el lenguaje de G como el conjunto
de las cadenas de T
: S
G
w.
Continuando con el Ejemplo 22.
Ejemplo 25 La gram atica denida en el Ejemplo 22 da el lenguaje de las
cadenas de ceros y unos que contienen la subcadena 01.
Ejemplo 26 (0 + 1)
01(0 + 1)
ITULO 2. GRAM
ATICAS REGULARES
2.2. Aut omatas nitos y gramaticas regula-
res
A lo largo de esta Secci on demostraremos que los lenguajes descritos va
gram aticas regulares coinciden con los lenguajes aceptados por aut omatas
nitos. Para ello, veamos de entrada que, dado un aut omata, existe una
gram atica regular que describe el lenguaje aceptado por este.
Teorema 27 Sea A un aut omata nito. Entonces, existe una gram atica re-
gular G tal que L(G) = L(A).
Demostraci on . Supongamos de entrada que el aut omata A = (K, , , q
0
, F)
no tiene a q
0
por estado aceptador. Construimos la gram atica G tal que
L(G) = L(A) como sigue: el conjunto de variables de G coincide con Q (el
conjunto de estados de A), el conjunto de car acteres terminales de G es y
su smbolo inicial es q
0
. Las producciones de G se denen como sigue: dada
una variable q Q, q p (con p Q F y ) es una producci on si
(q, ) = p; dada una variable q
ITULO 2. GRAM
ATICAS REGULARES
Est a claro que el primer aut omata acepta el lenguaje de la e.r. , el segundo
aut omata acepta el lenguaje de la e.r. ) y, por ultimo, el tercer aut omata
acepta el lenguaje la expresi on regular .
(Paso inductivo).- Supongamos ahora que E = E
1
E
2
o E = E
1
+E
2
, donde
E
1
y E
2
son dos exprexiones regulares con A
1
y A
2
como aut omatas nitos
asociados (i.e. se satisface que L(E
1
) = L(A
1
) y L(E
2
) = L(A
2
)). N otese
que la existencia de dichos aut omatas se sigue por hip otesis de inducci on.
Consideramos, dependiendo del caso, los siguientes aut omatas:
A
1
A
2
A
2
A
2
Queda claro que el lenguaje del primer aut omata es, precisamente, L(E
1
)
L(E
2
) (i.e. el lenguaje de la expresi on E
1
+E
2
), mientras que el lenguaje del
segundo es L(E
1
) L(E
2
) (i.e. el lenguaje de E
1
E
2
).
Gracias a la construcci on anterior, podemos construir inductivamente, dada
una expresi on cualquiera E, un aut omata nito A tal que L(A) = L(E). Con
lo que queda probado el resultado.
2.3. AUT
1
, . . . ,
l
, denimos R
0
ij
=
1
+. . . +
l
,
no existe una tal transici on; en este caso, denimos R
0
ij
= .
Supongamos construidas las expresiones regulares R
k
ij
para 1 k n. Cons-
truyamos la expresiones regulares R
n+1
ij
, con 1 i, j n +1. Dados i, j, con
1 i, j n + 1, supongamos que existe una caden que hace transicionar
al aut omata del estado i al j atravesando estados etiquetados con naturales
menores o iguales que n + 1. Distinguimos los siguientes casos:
si existe la cadena en cuesti on no hace transicionar al aut omata A por
el estado n + 1 (la cadena da un camino del nodo i al nodo j que no
22 CAP
ITULO 2. GRAM
ATICAS REGULARES
atraviesa nodos etiquetados con naturales mayores que n en el diagrama
de transiciones), dicha cadena est a comtemplada en la expresi on regular
R
n
ij
,
si no es el caso, esto es, la cadena hace transicionar al aut omata por el
estado n, partimos dicha cadena en fragmentos de la siguiente manera:
el primer fragmento hace transicionar al aut omata del estado i al
n + 1 sin pasar por n + 1 como estado intermedio,
el ultimo fragmento hace transicionar al aut omata del estado n+1
al estado j sin pasar por n + 1 como estado intermedio, y
los fragmentos intermedios son tales que hacen pasar al aut oma-
ta del estado n + 1 al estado n + 1 sin que este sea uno de los
intermedios.
Queda claro que el primer fragmento est a descrito mediante la e.r.
R
n
i(n+1)
, el ultimo est a descrito por la e.r. R
n
(n+1)j
y los fragmentos in-
termediarios est an descritos por la e.r. R
n
(n+1)(n+1
. En particular, dicha
cadena pertenece al lenguaje de la e.r. R
n
i(n+1)
(R
n
(n+1)(n+1
)
R
n
(n+1)j
.
Por lo tanto y en cualquier caso, dicha cadena queda descrita por la expresi on
regular
R
n
ij
+R
n
i(n+1)
(R
n
(n+1)(n+1
)
R
n
(n+1)j
.
De la discusi on anterior se sigue que la expresi on regular que da el lenguaje
del aut omata es la dada por la suma de las expresiones regulares de la forma
R
n
1k
donde 1 suponemos es el estado inicial y k es un estado nal.
TODO 6 Ejemplo 34 (Conversi on de ...)
2.4. Ejercicios
Ejercicio 10 Escribir expresiones regulares para los siguientes lenguajes:
El conjunto de cadenas sobre a, b, c que contengan por lo menos una
a y una b.
El conjunto de cadenas de ceros y unos cuyo decimo smbolo empezando
por la izquierda sea un uno.
El conjunto de cadenas que contengan a lo sumo un par de unos con-
secutivos.
2.4. EJERCICIOS 23
Ejercicio 11 Describir informalmente los lenguajes denidos mediante las
expresiones regulares (1 +)(00
1)
, (0
000(0 + 1)
, y (0 + 10)
.
Ejercicio 12 Escribir una expresi on regular que describa el lenguaje de las
cadenas que no contengan 101 como subcadena.
Ejercicio 13 Construir los aut omata nitos mnimos que reconoce las cade-
nas indicadas por las expresiones regulares (01)
+
y (01)
+
(10)
+
.
Ejercicio 14 Convertir las expresiones regulares 01
, (0+1)01, 00(0+1)
, y
(0 +1)
ITULO 2. GRAM
ATICAS REGULARES
Captulo 3
Propiedades de los lenguajes
regulares
Tal y como indica el ttulo, a lo largo del presente Captulo estudiaremos
diversas propiedades de los lenguajes regulares.
De entrada, veremos que no todos los lenguajes son regulares (viendo para
ello el Lema de Bombeo). Hecho esto, pasaremos a estudiar las propiedades
de clausura y de decisi on de los mismos.
3.1. Lenguajes no regulares
A lo largo de esta Secci on demostraremos la existencia de lenguajes no
regulares. Para ello, demostraremos en primer lugar el Lema de Bombeo.
Dicho Lema se demuestra gracias al conocido Principio de las cajas: si en n
cajas se encuentran distribuidos n+1 objetos, existe una caja en la que hay,
al menos, dos objetos de la colecci on.
Antes de entrar en los detalles te oricos veamos una ejemplo sencillo de
lenguaje no regular.
Ejemplo 35 Considerese el lenguaje L := 0
n
1
n
: n N denido sobre el
alfabeto 0, 1. Intuitivamente se puede llegar a la conclusi on de que dicho
lenguaje no es regular puesto que un aut omata nito que lo reconozca debe
ser capaz de contar el n umero de ceros para compararlo con el n umero de
unos. Sin embargo, dado que los aut omatas tienen una capacidad de almace-
namiento limitada por el n umero de estado, no pueden almacenar n umeros
arbitrariamente grandes. Por lo tanto, no puede existir un tal aut omata, i.e.
L no es regular
Una prueba formal de la no regularidad del lenguaje del Ejemplo anterior
requiere la utilizaci on del Lema de Bombeo.
25
26 CAP
de
longitud mayor o igual que n existen cadenas
1
,
2
,
3
tales que:
1
,= ,
[
1
2
[ n, y
para todo k N, la cadena
1
k
2
3
pertenece a L.
Demostraci on . Supongamos dado un lenguaje regular L y consideremos un
aut omata nito, digamos A = (Q, , , q
0
, F), i.e. L = L(A). Supongamos
adem as que el conjunto de estados consta de n N elementos, i.e. #Q = n.
Dada una cadena =
1
m
, con m n, denimos p
i
, para 0
i m, como el estado en el que se encuentra el aut omata tras procesar la
cadena
1
i
, i.e. p
i
=
(q
0
,
1
i
)
1
.
Obviamente, existen 0 j < k n tales que p
j
= p
k
. Deniendo
1
:=
1
j
,
2
:=
j+1
k
, y
3
:=
k+1
m
, se sigue el resultado.
Teniendo en cuenta lo anterior, estamos en disposici on de demostrar la
no regularidad del lenguaje del Ejemplo 35.
Ejemplo 37 Supongamos, razonando por reducci on al absurdo, que el len-
guaje del Ejemplo 35 es regular. Si as fuera, por el Lema de Bombeo, existira
un natural n N tal que para toda cadena de longitud como poco n, digamos
existen cadenas
1
,
2
,
3
tales que
1.
1
,= ,
2. [
1
2
[ n, y
3. para todo k N, la cadena
1
k
2
3
pertenece a L.
En particular, consideramos la cadena de L denida por = 0
n
1
n
. Por lo
anterior, existen
1
,
2
,
3
vericando 1, 2 y 3. Tomando k = 0, se sigue
que
1
3
pertenece a L, lo cual es absurdo puesto que su n umero de ceros es
forzosamente menor que el de unos (
2
tiene longitud mayor o igual a uno,
i.e. consta de como poco un cero).
En resumen, hemos llegado a una contradicci on en nuestro razonamiento.
Dicha contradicci on viene de suponer que L es un lenguaje regular.
TODO 7 Veamos otro ejemplo sencillo de lenguaje no regular.
Ejemplo 38 Consideremos el lenguaje de las palabras cuya longitud es un
n umeor primo.
1
N otese que p
0
= q
0
.
3.2. PROPIEDADES DE CLAUSURA 27
3.2. Propiedades de clausura
A lo largo de esta Secci on estudiaremos lo que se ha dado en llamar las
propiedades de clausura de los lenguajes regulares, i.e. su comportamien-
to frente a uniones, intersecciones, diferencias, transformaciones, clausuras,
concatenaciones,...
Comenzaremos tratando las propiedades de clausura de operaciones tpi-
camente conjuntistas.
Teorema 39 Las siguientes armaciones son ciertas.
1. La uni on de dos lenguajes regulares es regular.
2. El complementario de un lenguaje regular es regular.
3. La intersecci on de dos lenguajes reuglares es regular.
4. La diferencia de dos lenguajes regulares es regular.
Demostraci on . 1. Sean L, L
, as construido,
acepta cualquier cadena que A rechaze, i.e. determina el lenguaje L
c
. Por lo
tanto, el complementario de L es un lenguaje regular.
3. Dados dos lenguaje regulares L, L
= (L
c
L
c
)
c
.
Puesto que, tal y como se ha demostrado en 1. y 2., la uni on y el comple-
mentario de lenguajes regulares es regular, se sigue que la intersecci on es
regular.
4. Sean L, L
= L L
c
,
se sigue, gracias a 1. y 3., que la diferencia de lenguajes regulares es regular.
Veamos a continuaci on las propiedades de clausura de los lenguajes regu-
lares frente a diversas transformaciones comenzando por la reexi on. Dicha
transformaci on se dene, en el caso de cadenas de la siguiente manera.
28 CAP
R
:=
n
1
.
En cuanto al caso de lenguajes, la denici on precisa es como sigue.
Denici on 41 (Reexi on de un lenguaje) Dado un lenguaje L
, se
dene la reesi on del lenguaje L, denotada por L
R
, como
L
R
:=
R
: L.
Teniendo en cuenta las deniciones anteriores se tiene el siguiente resul-
tado.
Teorema 42 Sea L un lenguaje regular. Entonces, L
R
es un lenguaje
regular.
Demostraci on . Para demostrar el enunciado haremos uso de la relaci on
existente entre lenguajes regulares y expresiones regulares.
Supongamos en primer lugar que el lenguaje regular L es descrito por una
expresi on regular E. Procediendo por inducci on estructural, distinguimos los
siguientes casos:
(Caso Base) Si E = , E = o E = , para alg un , deniendo
E
R
como E se tiene
L(E
R
) = L(E)
R
= L.
(Paso inductivo) Consideremos las restantes alternativas:
Supongamos que E = E
1
+E
2
, para ciertas expresiones regulares
E
1
y E
2
. Deniendo E
R
= E
R
1
+E
R
2
tenemos que
L(E
R
) = L(E
R
1
+E
R
2
) = L(E
R
1
) L(E
R
2
)
= L(E
1
)
R
L(E
2
)
R
= L(E
1
+E
2
)
R
= L(E).
Con respecto al caso E = E
1
E
2
, deniendo E
R
= E
R
2
E
R
1
tenemos
L(E
R
) = L(E
2
2
E
R
1
) = L(E
R
2
)L(E
R
1
) = L(E
2
)
R
L(E
1
)
R
= (L(E
1
)L(E
2
))
R
= L(E
1
E
2
)
R
= L(E)
R
.
Finalmente, el caso E = E
1
se sigue del anterior.
3.2. PROPIEDADES DE CLAUSURA 29
La demostraci on del Teorema anterior es constructiva: da un algoritmo
recursivo para la construcci on de la expresi on regular asociada a la reesi on
de un lenguaje tomando como entrada una expresi on regular para el mismo.
Veamos un ejemplo sencillo que ilustre tal extremo.
Ejemplo 43 Consideremos la expresi on regular E = (0 + 1)
01 que deter-
mina el lenguaje de las cadenas de ceros y unos terminadas en 01. Dicha
expresi on es el resultado de la concatenaci on de tres expresiones regulares:
(0 + 1)
.
Otra transformaci on usual, dentro del presente contexto, es la del cambio
en la codicaci on de las cadenas. Para formalizar dicho cambio introducimos
el concepto de homomorsmo.
Denici on 44 (Homomorsmo) Dados dos alfabetos nitos y , lla-
maremos homomorsmo a toda aplicaci on h :
denida
mediante
h(
1
n
) := h(
1
) h(
n
).
Dado un lenguaje cualquiera L , llamaremos homomorsmo de L (con
respecto a h) al lenguaje h(L) denido por
h(L) = :
Lt.q. h(
) = .
Una vez formalizado el concepto, veamos c omo se comporta el concepto
de regularidad frente al mismo.
Teorema 45 Sea L
1
, denimos E
h
:= (E
h
)
: h() L.
Al igual que en casos anteriores, la regularidad se conserva. M as concre-
tamente,
Teorema 47 Sean y dos alfabetos nitos, h : un homomorsmo
y L
=
(K, ,
, q
0
, F) (comparte con A el conjunto de estados, el estado inicial y
los estados aceptadores) deniendo la funci on de transici on de A
mediante
(q, ) :=
(q, h()),
donde
denota, como es usual, la funci on de transici on extendida de A.
As denido A
ON 31
Tpicamente, un lenguaje regular est a constituido por un n umero innito
de cadenas por lo que, dado nuestro interes en tratar cuestiones de manera
algortmica, debemos representarlo de manera m as suscinta que la enumera-
ci on de todas y cada una de sus cadenas. Para ello, podemos suponer que el
lenguaje est a descrito mediante un aut omata nito o una expresi on regular.
Esta independencia de la representaci on se sigue del siguiente teorema:
Teorema 48 Existen algoritmos que llevan a cabo las siguientes tareas:
1. Dada una expresi on regular E, construir un aut omata nito A (deter-
minista, no determinista o no determinista con transiciones vacas) tal
que L(A) = L(E).
2. Dado un aut omata nito A (determinista, no determinista o no deter-
minista con transiciones vacas), construir una expresi on regular E tal
que L(E) = L(A).
Demostraci on . La demostraci on del apartado 1. puede encontrarse en la
del Teorema 31, mientras que la prueba de 2. puede verse en la demostraci on
del Teorema 33.
Una vez claricado lo tocante a la representaci on de lenguajes regulares,
el primer problema que uno se plantea es el siguiente:
Cuesti on 49 Dado un lenguaje regular (bien mediante un aut omata nito,
una expresi on regular o una gram atica regular), es L no vaco?
Si el lenguaje viene dado mediante un aut omata nito, dicha pregunta se
puede interpretar en terminos de accesibilidad de grafos de la siguiente mane-
ra: existe un camino del estado inicial a un estado aceptador? As enunciada,
la pregunta tiene f acil respuesta algortmica:
el estado inicial es accesible desde el estado inicial, y
si el estado p es accesible desde el estado inicial y existe un arco de p
a q, entonces el estado q es accesible desde el estado inicial.
Lo anterior resume la construcci on inductiva del conjunto de estados ac-
cesibles desde el estado inicial, en el momento en que dicho conjunto contenga
un estado aceptador, concluimos que el lenguaje no es vaco. Si dicho conjun-
to no se puede ampliar y no contiene ning un estado aceptador, concluimos
que el lenguaje L es vaco.
En el caso de lenguajes dados mediante expresiones regulares podemos
proceder, por inducci on estructural, de la manera siguiente:
32 CAP
, el lenguaje no
es vaco.
Si el lenguaje viene dado por una gram atica regular, basta transformarla
en un aut omata, gracias al algoritmo visto en el Captulo anterior, y deter-
minar si este decide el lenguaje vaco o no.
En cualquier caso, tenemos el siguiente teorema:
Teorema 50 Existe un algoritmo que dado un lenguaje regular L, descrito
mediante un aut omata nito o una expresi on regular, decide si es o no vaco.
Otra cuesti on importante es la siguiente:
Cuesti on 51 Dado un lenguaje regular (descrito mediante un aut omata -
nito, una expresi on regular o una gram atica regular) y una cadena sobre el
mismo alfabeto, pertenece la cadena al lenguaje?
Puesto que las tres representaciones son equivalentes (existen algoritmos
que pasan de unas a otras), supongamos simplemente que el lenguaje viene
dado por un aut omata nito determinista. Para concluir si la cadena perte-
nece o no al lenguaje, bastar a con simular el aut omata. En resumen, tenemos
el teorema:
Teorema 52 Existe un algoritmo que dado un lenguaje regular L y una
cadena sobre el mismo alfabeto decide si la cadena pertenece o no al lenguaje.
3.4. Equivalencia y minimizaci on
Comenzamos esta Secci on estudiando suscintamente la noci on de relaci on
de equivalencia, de utilidad en lo que sigue.
3.4. EQUIVALENCIA Y MINIMIZACI
ON 33
Denici on 53 (Relaci on de equivalencia) Sea X un conjunto. Una re-
laci on X X se dice de equivalencia, si satisface las siguientes propie-
dades:
[Reexiva] para todo x X, x x,
[Simetrica] para todos x, y X, x y implica y x, y
[Transitiva] para todos x, y, z X, x y y y z implica x z.
Dada una relaci on X X y un elemento x X, se dene la clase
de x, denotada mediante [x]
se verica que
(p, w) es de aceptaci on si y s olo si
(q, w) es de
aceptaci on. En caso contrario, diremos que los estados son distinguibles.
Teorema 55 La relaci on estados equivalentes es una relaci on de equivalen-
cia.
Demostraci on . Las tres propiedades se siguen directamente de la denici on,
omitiremos su prueba.
Adem as de ser una relaci on de equivalencia en el conjunto de estados del
aut omata, se pueden determinar las clases de equivalencia.
34 CAP
ON 35
C D
E
1
1
0
0
1
0
En este caso, el algoritmo comienza marcando lo pares formados por es-
tados aceptadores y no aceptadores, i.e.:
(C, E), (D, E).
Por concisi on eliminamos las repeticiones del tipo (E, D) o (E, C). Tras esta
primera fase, el algoritmo pasa a la fase inductiva. Sin embargo, en esta fase
no marca nuevos pares puesto que el par (D, C) es indistinguible.
Una primera aplicaci on del algoritmo detallado en el Teorema 58 resulta
ser la existencia de un algoritmo que decide la igualdad de dos lenguajes
dados mediante aut omatas nitos.
Teorema 58 Existe un algoritmo que decide si dos aut omatas nitos acep-
tan el mismo lenguaje.
Demostraci on . Supongamos dados dos aut omatas nitos
A = (Q
A
,
A
,
A
, q
A
0
, F
A
) y B = (Q
B
,
B
,
B
, q
B
0
, F
B
)
tales que sus conjuntos de estados sean disjuntos. Consideramos un nuevo
aut omata cuyo conjunto de estados viene dado por la uni on de los conjuntos
Q
A
y Q
B
. El resto de los elementos del nuevo aut omata se denen de manera
acorde a esta elecci on.
Cabe notar que el aut omata as denido, tiene dos estados iniciales; sin em-
bargo esto no afecta a lo que sigue.
El algoritmo emplea el algoritmo de marcado del Teorema 58 para detectar si
los estados iniciales son equivalentes o no. Si as es, ambos aut omatas denen
el mismo lenguaje, en caso contrario no.
36 CAP
, ,
, q
0
, F
) de la siguiente
manera:
Q
0
es la clase de equivalencia de q
0
, i.e. q
0
:= [q
0
]
,
3.4. EQUIVALENCIA Y MINIMIZACI
ON 37
F
, se dene
(q, ) = [(q, )]
y [(q, )]
,= [(p, )]
ATATA
Ejercicio 25 Decidir si son equivalentes los siguientes aut omatas:
q
0
q
1
q
2
q
3
0 1
1
0
1
0
0, 1
q
4
q
5
q
6
0
0
1
1
40 CAP
ITULO 4. AUT
OMATAS A PILA
4. q
0
K es el estado inicial, Z es el smbolo inicial de la pila, y
5. F es el conjunto de estados aceptadores.
El lector puede observar las similitudes existentes entre la denici on de
aut omata a pila y la de aut omata nito.
A la hora de denir el funcionamiento de un aut omata a pila, la aproxi-
maci on m as sencilla es la siguiente: primero se dene el concepto de con-
guraci on (estado en el que se encuentra el aut omata a pila en un momento
concreto) y luego se dene como el aut omata pasa de una conguraci on a
otra (paso de computaci on).
La denici on formal de conguraci on es la siguiente:
Denici on 64 (Conguraci on de un aut omata a pila) Dado un aut o-
mata a pila P = (K, , , , q
0
, Z, F), llamaremos conguraci on del aut omata
P a toda tupla (q, w, ) K
a la tupla (q
0
, w, Z).
Mientras que la de paso de computaci on es como sigue:
Denici on 65 (Paso de computaci on en un aut omata a pila) Supon-
gamos dados un aut omata a pila P = (K, , , , q
0
, Z, F), un smbolo del
alfabeto de entrada y un smbolo del alfabeto de pila tales que
(q, , ) = (Q, ) para ciertos Q T(K) y
. Para todo p Q,
w
P
para in-
dicar que una conguraci on se sigue de otra en un n umero nito de pasos
(quiz as nulo).
Teniendo presentes las deniciones anteriores podemos denir el lenguaje
aceptado por un aut omata a pila de diversas maneras: por estado nal o
por pila vaca. La primera de ellas guarda estrecha relaci on con la manera
en que se denen los lenguajes regulares, se consider an las cadenas que, tras
procesarse, dejan al aut omata en un estado aceptador.
Denici on 66 (Lenguaje aceptado por estado nal) Dado un aut oma-
ta a pila P = (K, , , , q
0
, Z, F), se dene el lenguaje aceptado por P por
estado nal como el conjunto de las cadenas w
: (q
0
, w, Z)
P
(f, , ) F
.
4.1. AUT
OMATAS A PILA 43
En la otra alternativa, aceptaci on por pila vaca, se exige que el aut oma-
ta vace su pila (adem as de haber procesado su entrada) para aceptar una
cadena.
Denici on 67 (Lenguaje aceptado por pila vaca) Dado un aut omata
a pila P = (K, , , , q
0
, Z, F), se dene el lenguaje aceptado por P por
pila vaca como el conjunto de las cadenas w
: (q
0
, w, Z)
P
(f, , ) K .
TODO 8 Dar un ejemplo de aut omata a pila que acepte un lenguaje por
pila vaca y otro que acepte el mismo lenguaje por estado nal.
Aunque distintas, ambas deniciones nos llevan al mismo tipo de len-
guajes, como muestra el siguiente Teorema; su interes reside la existencia de
lenguajes para los cuales es m as sencillo dise nar un aut omata que acepte de
una manera concreta.
Teorema 68 Dado un lenguaje aceptado por un aut omata P por estado -
nal, existe un aut omata P
que
acepta L por estado nal.
Demostraci on . Supongamos dado un lenguaje L
aceptado por un
aut omnata a pila P = (K, , , , q
0
, Z, F) por estado nal. La construcci on
de un aut omata P
coincide
con P con las siguientes salvedades:
el smbolo inicial de pila viene dado por un nuevo smbolo X,
el conjunto de estado coincide con el de P salvo por la inclusi on de dos
nuevos estados: un nuevo estado inicial p
0
y un nuevo estado denotado
p
F
encargado de vaciar la pila.
la funci on de transici on es igual que en el aut omata a pila salvo por
la inclusi on de diversas transiciones: la primera est a denida mediante
(p
0
, , X) = (q
0
, ZX) y se encarag de apilar el smbolo inicial de pila
del aut omata P, mientras que las restantes son de la forma (f, , ) =
(p
F
, ), donde f F y .
44 CAP
ITULO 4. AUT
OMATAS A PILA
Gr acamente, representamos a continuaci on dicho aut omata:
p
0 q
0
p
F
, /
, X/ZX
, /
Recprocamente, supongamos que el lenguaje L es aceptado por un aut omata
a pila por pila vaca. La construcci on del aut omata P
tiene la pinta:
p
0 q
0
p
F
, X/X
, X/ZX
TODO 9 Dar un ejemplo de la conversi on.
4.2. Aut omatas a pila deterministas
Aparte de los aut omatas a pila denidos en la Secci on anterior, resultan
interesantes los aut omatas a pila deterministas. Hacemos hincapie en que
aqu determinismo hace alusi on a la inexistencia de diversas opciones para
una misma situaci on. La denici on formal es la siguiente:
4.3. EJERCICIOS 45
Denici on 69 (Aut omata a pila determinista) Dado un aut omata a pi-
la P = (K, , , q
0
, Z, F), diremos que es determinista si verica:
1. (q, , ) = (Q,
).
Puesto que los aut omatas a pila deterministas son, en particular, aut oma-
tas a pila, las deniciones de conguraci on y de paso de computaci on se
aplican sin m as. Por lo tanto, podemos denir el lenguaje aceptado por un
aut omata a pila por estado nal o por pila vaca.
La relaci on de los aut omatas a pila con los aut omatas nitos viene expre-
sada en el siguiente Teorema.
Teorema 70 Dado un lenguaje regular L
con un
unico estado que acepta el mismo lenguaje.
Ejercicio 27 Dado un aut omata P que no acepta , construir un aut omata
equivalente que acepte .
Ejercicio 28 Construir aut omatas a pila que acepten los siguientes lengua-
jes
1. L = ww
R
2. a
i
b
j
c
k
[i = j o j = k
Ejercicio 29 Se dice que un aut omata a pila es restringido si la altura de
la pila aumenta a lo m as en uno. Demostrar que todo auomata a pila tiene
uno restringido equivalente.
46 CAP
ITULO 4. AUT
OMATAS A PILA
Captulo 5
Gramaticas independientes del
contexto
Al igual que los aut omatas nitos tienen asociadas las gram aticas regula-
res, los aut omatas a pila tienen asociadas las que se conocen como gram aticas
independientes del contexto.
A lo largo del presente Captulo introduciremos dichas gram aticas y de-
tallaremos su relaci on con los aut omatas a pila.
5.1. Gramaticas independientes del contexto
Comencemos con un ejemplo.
Ejemplo 71 (Palndromos) Dado un alfabeto , con # 2, un paln-
dromo sobre es una cadena w tal que w = w
R
. El lenguaje de los
palndromos, denido como el conjunto de los mismos, i.e.
L
pal
:= w
: w = w
R
,
no es un leguaje regular. Para demostrar esta armaci on procederemos por
reducci on al absurdo. Asumamos que L
pal
es regular. Por el Lema de Bombeo
se tiene que existe un natural n N tal que para toda cadena w L
pal
,
con [w[ n, se tiene que existen cadenas x, y, z
satisfaciendo las
condiciones 1., 2. y 3. del enunciado del Lema de Bombeo. En particular,
dada la cadena
n
n
L
pal
, donde , son dos smbolos distintos,
existen cadenas x, y, z
n
L
pal
, con
m N satisfaciendo m < n
1
. Lo c ual es absurdo puesto que
m
n
no es un
palndromo.
1
Observese que y = , por lo que |y| 1, y que |xy| n.
47
48 CAP
ITULO 5. GRAM
y A V , si
existe una producci on A P, diremos que deriva, en un paso, de
A; si as es, se denota mediante la expresi on A
G
(o equivalen-
temente A si esta claro la gram atica empleada). En general, si
una cadena w (V T)
, lo de-
notaremos mediante la expresi on
G
w (
: S
G
w.
Para decidir si una cadena pertenece puede derivarse o no a partir de otra
dada, basta determinar si existe una sucesi on de derivaciones que comenzando
con la ultima lleven a la primera. Este proceso se conoce con el nombre de
inferencia recursiva.
Ejemplo 71 (Palndromos, continuaci on) Retomando el ejemplo de los
palndromos, y considerando la gram atica G = (V, T, P, S), donde V := Q,
T := 0, 1, S := Q y P es el conjunto de las producciones all descritas,
tenemos por ejemplo la siguiente secuencia de derivaciones:
P
G
1P1
G
10P01
G
10101.
Puesto que 10101 est a compuesta exclusivamente por car acteres terminales,
pertenece al lenguaje de los palndromos.
50 CAP
ITULO 5. GRAM
ON 51
N otese que la cadena obtenida concatenando, de izquierda a derecha, las
hojas del arbol es, precisamente, 10101.
Obviamente, los arboles que centrar an nuestra atenci on son aquellos cuya
raz est a etiquetada con la variable inicial y cuyas hojas est an etiquetadas
con car acteres terminales, i.e. representan cadenas del lenguaje.
Veamos a continuaci on que los arboles de derivaci on y las secuencias de
derivaciones son, esencialemnte los mismos objetos, i.e. son equivalentes.
Teorema 76 Dada una gram atica independiente del contexto, digamos G =
(V, T, P, S), una variable A V y una cadena w T
tal que A
w.
Entonces, existe un arbol de derivaci on cuya raz est a etiquetada con A y
cuyo resultado es w.
Demostraci on . La demostraci on se lleva a cabo por inducci on en el n umero
de derivaciones.
Supongamos que w se puede inferir en un unico paso de derivaci on a partir de
A, i.e. que A w es una producci on. Si w = w
1
w
m
, donde w
1
, . . . , w
m
(V T), construimos el siguiente arbol de derivaci on
A
w
1
w
2
w
m1
w
m
En el caso de que w = , el arbol que se construye es el siguiente:
A
.
Para cada i N, con 1 i m, distinguimos los siguientes casos:
52 CAP
ITULO 5. GRAM
Si X
i
= w, con w T, construimos el arbol de derivaci on
w
Finalmente, si X
i
V , considerando las derivaciones que afectan a X
i
,
obtenemos una cadena subcadena de w, digamos w
i
(V T)
, y una
secuencia de a lo m as n derivaciones X
i
w
i
. Por hip otesis inductiva,
existe un arbol de derivaci on, digamos T
i
, cuya raz est a etiquetada con
X
i
y cuyo resultado es, precisamente, w
i
.
En resumen, para cada X
i
, con i N y 1 i m, tenemos un arb ol de
derivaci on asociado T
i
. Denimos entonces el arbol
X
i
T
1
T
2
T
m1
T
m
La demostraci on concluye observando que el resultado de dicho arbol es la
concatenaci on de los smbolos w
1
, . . . , w
m
(sean del alfabeto terminal o va-
riables), i.e. w = w
1
w
m
.
5.2.
ARBOLES DE DERIVACI
ON 53
Teorema 77 Dado un arbol de derivaci on de una gram atica G = (V, T, P, S)
cuya raz est a etiquetada mediante A V y cuyo resultado es w (V T)
,
existe una secuencia de derivaciones tales que A
w.
Demostraci on . La demostraci on se llevar a a cabo por inducci on en la pro-
fundidad
2
del arbol.
Supongamos que el arbol tiene profundidad nula. Por lo tanto, el arbol es de
la forma:
A
X
1
X
2
X
m1
X
m
donde X
1
, . . . , X
m
(V T)
w
i
. En cualquier caso, el resultado del arbol con raz A es
exactamente w = w
1
w
k
, por lo que A X
1
X
k
w
1
w
k
.
Nota 78 Una atenta lectura de la demostraci on anterior revela que el tipo de
derivaciones que aparecen son precisamente las derivaciones m as a la izquier-
da. Esto es, dado un arbol de derivaci on podemos construir una derivaci on
m as a la izquierda con igual resultado.
2
Usualmente se dene la profundidad de un arbol, o m as generalmente de un grafo
dirigido acclico, como el m aximo n umero de nodos intermedios que atraviesa un camino
de la raz a las hojas.
54 CAP
ITULO 5. GRAM
(q, , ),
5.3. AUT
OMATAS APILAYGRAM
w
i
,
puesto que en ese caso tendramos
(q, w
i
, Y
i
)
(q, , ).
En cualquier caso tenemos que A Y
1
Y
k
w
1
w
k
.
Recprocamente, veamos que L(G) L(N). Probemos para ello que, dada
una cadena T
(q, , ).
Por inducci on en el n umero de derivaciones a la izquierda necesarias para
obtener a partir del smbolo inicial S.
(Caso Base) Supongamos que una cadena se deriva en una
sola derivaci on a partir de cierta variable A, i.e. A . Puesto que
pertenece a
(q, , ),
i.e. L(N).
Supongamos que se deriva a partir de una variable Aen n derivaciones
m as a la izquierda, digamos
A
1
. . .
n
= .
56 CAP
ITULO 5. GRAM
ATICAS Y LENGUAJES 57
5.4. Ambiguedad en gramaticas y lenguajes
En la Secci on anterior se ha visto que todo arbol de derivaci on tiene
asociado una derivaci on (m as a la izquierda). Sin embargo, en general no
podemos concluir si dicha asociaci on es unica, i.e. existen gram aticas para
las que cadenas del lenguaje que generan pueden tener diversos arboles de
derivaci on. Formalmente.
Denici on 81 Dada una gram atica independiente del contexto, diremos que
G es ambigua si existe una cadena en L(G), el lenguaje generado por la
gram atica, tal que admite dos arboles de derivaci on. En caso contrario dire-
mos que no es ambigua.
Ejemplo 82 El lenguaje de las expresiones aritmeticas es ambiguo
Un lenguaje generado por una gram atica ambigua puede ser generado por
otra gram atica de manera tal que esta ultima no sea ambigua. Sin embargo,
si toda gram atica que genere un cierto lenguaje es ambiguo se dice que este
es inherentemente ambiguo.
Adem as, la ambiguedad de las gram aticas es indecidible.
Los lenguajes empleados en la programaci on de computadores son no
ambiguos.
5.5. Ejercicios
Ejercicio 30 Dise nar gram aticas libres de contexto para los lenguajes si-
guientes:
0
n
: n N,
0
n
1
n
: n N,
0
n
1
2n
: n N, y
0
i
1
j
: i, j N.
Ejercicio 31 Dada la gram atica
S A1B,
A 0A[,
B 0B[1B[,
dobtener las derivaciones m as a la derecha y m as a la izquierda de 00101,
1001 y 00011.
58 CAP
ITULO 5. GRAM
ITULO 6. M
AQUINAS DE TURING
de lectura/escritura se desplaza a lo largo de la cinta alterando, si procede,
el contenido de las celdas. Mientras que la unidad de control puede cambiar
su estado en funci on de lo ledo por la de lectura/escritura. La m aquina
termina su computaci on si llega a un estado de parada. Su denici on formal
es la siguiente.
Denici on 83 (Maquina de Turing) Una m aquina de Turing es una cua-
drupla M = (K, , , s) tal que:
1. K es un conjunto nito de estados, suponemos que el estado inicial s
pertenece a K,
2. es un conjunto nito de smbolos llamado alfabeto tal que K =
y contiene los smbolos especiales . y , llamados blanco y comienzo
de cinta respectivamente,
3. es una funci on, llamada de transici on, denida del conjunto K
en (K h, si, no) , , tal que para todo p, q K
satisfaciendo (q, ) = (p, , D), se tiene = y D =.
Obviamente, la noci on de m aquina de Turing es est atica (no detalla como
se llevan a cabo las computaciones). Para dotarla de dinamismo debemos
introducir, de entrada, el concepto de conguraci on.
Denici on 84 (Conguraci on) Sea M = (K, , , s) una m aquina de Tu-
ring. Llamaremos conguraci on a toda tupla (q, v, w), donde q K y v, w
, v
, w
) K
tales
(q, v, w) = (q, v
1
. . . , v
r
, w
1
. . . w
s
), y
(q
, v
, w
) = (q
, v
1
. . . v
r
, w
1
. . . w
s
).
Diremos que (q, v, w) da lugar a (q
, v
, w
, v
, w
= p y
si D =, r
= r + 1, s
= s 1, v
i
= v
i
para 1 i < r
, v
r
= ,
w
k
= w
k+1
para 1 k s
,
6.1. M
AQUINAS DE TURING 61
si D = , r
= r, s
= s, v
i
= v
i
para 1 i < r
, v
r
= , w
k
= w
k
para 1 k s
, y
si D =, r
= r 1, s
= s + 1, v
i
= v
i
para 1 i r
, w
1
= ,
w
k
= w
k1
para 1 < k s
.
M as generalmente, diremos que (q, v, w) da lugar a (q
, v
, w
), y lo denota-
remos por (q, v, w)
M
(q
, v
, w
, v
, w
).
En particular, dada una m aquina M y una entrada w
, llamaremos
conguraci on inicial a la tupla (s, , x).
Una vez formalizada la parte din amica de las m aquinas de Turing, debe-
mos interpretar los resultados que producen. Tres interpretaciones resultan
de interes: el reconocimiento de cadenas, el c alculo de funciones y la enume-
raci on de conjuntos.
Denici on 86 (Aceptaci on/rechazo de cadenas) Sea M = (K, , , s)
una m aquina de Turing y x
M
(q, v, w), donde q si, no, h y v, w
. Si el
estado nal es si, diremos que la m aquina de Turing acepta x. Si el estado
nal es no, diremos que la m aquina de Turing rechaza la cadena x.
Obviamente, tiene sentido hablar de los conjuntos reconocidos por la
m aquina de Turing. Bien es cierto que cabe hacer una distinci on impor-
tante: una m aquina de Turing puede aceptar un conjunto de cadenas y, bien
rechazar las restante o bien permanecer computando indenidamente. Esta
distinci on hace necesario introducir dos conceptos fundamentales: los lengua-
jes recursivos y los lenguajes recursivamente enumerables.
Denici on 87 (Lenguajes recursivos) Dados un lenguaje L
y una
m aquina de Turing M = (K, , , s), diremos que la m aquina de Turing M
decide L si
1. para todo x L, entonces M(x) = si, y
2. para todo x / L, entonces M(x) = no.
En este caso, diremos que L es un lenguaje recursivo.
62 CAP
ITULO 6. M
AQUINAS DE TURING
En el caso anterior, la m aquina de Turing siempre llega a una estado de
parada, aceptando o rechazando las cadenas sobre un cierto alfabeto . En
general, esta situaci on no ocurre.
Denici on 88 (Lenguajes recursivamente enumerables) Dado un len-
guaje L
0
, q
1
, q es el conjunto de estados, siendo s es el estado
inicial, y
la funci on de transici on est a denida mediante la tabla
p K (p, ) p K (p, )
s 0 (q
0
, , ) q
0
0 (q, ., )
s 1 (q
1
, , ) q
0
1 (no, 1, )
s (s, , ) q
0
(si, , )
s . (si, ., ) q
1
0 (no, 0, )
q
0
0 (q
0
, 0, ) q
1
1 (q, ., )
q
0
1 (q
0
, 1, ) q
1
(si, , )
q
0
. (q
0
, ., ) q 0 (q, 0, )
q
1
0 (q
1
, 0, ) q 1 (q, 1, )
q
1
1 (q
1
, 1, ) q (s, , )
q
1
. (q
1
, ., )
2
La relaci on entre ambos tipos de dispositivos abstractos de computaci on se diluci-
dar a en los ejercicios del presente captulo
6.1. M
AQUINAS DE TURING 63
Resulta sencillo observar que la m aquina de Turing anterior acepta los
palndromos sobre el alfabeto 0, 1 y rechaza las restantes cadenas. En par-
ticular, el lenguaje de los palndromos es recursivo.
Adem as, es f acil ver que, para una entrada de longitud n, el n umero de
movimientos que realiza la m aquina est a acotado por (n+1)n en el caso peor.
En cuanto al c alculo de funciones mediante m aquinas de Turing, su for-
malizaci on se lleva a cabo en los terminos siguientes:
Denici on 90 (Calculo de funciones) Sea M = (K, , , s) una m aqui-
na de Turing y x, y
M
(h, , y).
Dada una funci on f : D
M
(h, , y) para alg un y
, y
2. f(x) = y si y s olo si (s, , x)
M
(h, , y).
Un ejemplo sencillo de esta situaci on es el c alculo del sucesor de un n ume-
ro expresado en binario.
Ejemplo 91 (Sucesor) Consideramos M = (K, , , s) denida como si-
gue:
:= 0, 1, , . es el alfabeto,
K := s, si, no, h.q es el conjunto de estados, siendo s es el estado
inicial, y
la funci on de transici on est a denida mediante la tabla
p K (p, )
s 0 (q, 1, )
s 1 (s, 1, )
s . (h, 1, )
s (s, , )
q 0 (q, 0, )
q 1 (q, 1, )
q . (h, ., )
64 CAP
ITULO 6. M
AQUINAS DE TURING
Resulta sencillo observar que la m aquina de Turing anterior calcula el
sucesor de un n umero escrito en binario (suponemos los dgitos escritos en
orden inverso).
El n umero de pasos que realiza la m aquina, para una entrada de longitud
n, est a acotado por n + 1.
Por ultimo, notar que la funci on de transici on puede darse mediante gra-
fos, al igual que en el caso de los aut omatas. La unica salvedad al respecto,
viene dada por la necesidad de indicar la direcci on en la que se desplaza
la unidad de lectura. A continuaci on mostramos el grafo de la m aquina de
Turing anterior.
s
q
h
/
1/0
0/0
1/1
0/1
./1, ./.
Otro ejemplo sencillo es el c alculo del predecesor de un n umero.
Ejemplo 92 (Predecesor) Consideramos M = (K, , , s) denida como
sigue:
:= 0, 1, , . es el alfabeto,
K := s, si, no, h, q es el conjunto de estados, siendo s es el estado
inicial, y
la funci on de transici on est a denida mediante la tabla
p K (p, )
s 0 (s, 1, )
s 1 (q, 0, )
s . (no, 1, )
s (s, , )
q 0 (q, 0, )
q 1 (q, 1, )
q . (h, ., )
6.1. M
AQUINAS DE TURING 65
Resulta sencillo observar que la m aquina de Turing anterior calcula el
predecesor de un n umero escrito en binario siempre que este no sea nulo. Si
el n umero en cuesti on es cero, la m aquina para en el estado no
.
El n umero de pasos que realiza la m aquina, para una entrada de longitud
n, est a acotado por n + 1.
Finalmente, podemos interpretar la computaci on llevada a cabo por una
m aquina de Turing como la enumeraci on de cierto lenguaje, esto es, un sub-
conjunto de
.
Denici on 93 (Lenguaje Enumerable) Sea M = (K, , , s) una m a-
quina de Turing y L
: , . es el conjunto de estados,
siendo s el estado inicial, y
la funci on de transici on est a denida mediante la tabla
p K (p, )
s ( , .) (q
, , )
s (s, , )
s . (no, ., )
q
( , .) ( , .) (q
, , )
q
( , .) (si, , )
q
( , .) . (no, ., )
66 CAP
ITULO 6. M
AQUINAS DE TURING
Resulta sencillo ver que la anterior m aquina de Turing acepta las cadenas
en las que el primer car acter de la entrada aparece al menos dos veces. Para
ello almacena en el estado el primer car acter sin m as que saltar a un estado
del tipo q
con , ..
Otro problema frecuente es la gesti on de la cinta. A continuaci on mostra-
mos como se puede generar espacios en blanco o eliminar caracteres.
Ejemplo 95 (Inserci on) Sea M = (K, , , s) la m aquina de Turing de-
nida como sigue:
:=
1
, . . . ,
n
, , . es el alfabeto,
K := s, si, no, hq
: , . es el conjunto de estados,
siendo s es el estado inicial, y
la funci on de transici on est a denida mediante la tabla
p K (p, )
s ( , .) (q
, ., )
s . (h, ., )
q
( , .) ( , .) (q
, , )
q
( , .) . (h, , )
Resulta claro que M lleva a cabo la tarea anunciada.
Ejemplo 96 (Eliminaci on) Sea M = (K, , , s) la m aquina de Turing
denida como sigue:
:=
1
, . . . ,
n
, , . es el alfabeto,
K := s, si, no, hq
: , . es el conjunto de estados,
siendo s es el estado inicial, y
la funci on de transici on est a denida mediante la tabla
p K (p, )
s ( .) (s, , )
s . (q
, ., )
q
( ) ( , .) (q
, , )
q
( ) (h, , )
Resulta claro que M lleva a cabo la tarea anunciada.
6.2. M
ULTIPLES CINTAS67
6.2. Maquinas de Turing no deterministas y
con m ultiples cintas
En esta Secci on discutiremos dos generalizaciones de las m aquinas de
Turing: las m aquinas con varias multiples cintas y las no deterministas. Si
bien su denici on es m as general, veremos que el poder computacional de las
mismas no aumenta.
Comencemos por las m aquinas de Turing con multiples cintas.
Denici on 97 (Maquina de Turing con k cintas) Una m aquina de Tu-
ring con k cintas es una tupla M = (K, , , s) satisfaciendo:
1. K es un conjunto nito de estados, suponemos que el estado inicial s
pertenece a K,
2. es un conjunto nito de smbolos llamado alfabeto tal que K =
y contiene los smbolos especiales . y , llamados blanco y comienzo
de cinta respectivamente,
3. es una funci on, llamada de transici on, denida del conjunto K
k
en (K h, si, no) ( , , )
k
tal que para todo p, q
K,
1
, . . . ,
k
,
1
, . . . ,
k
y D
1
, . . . , D
k
, , tales que
(q,
1
, . . . ,
k
) = (p, (
1
, D
1
), . . . , (
k
, D
k
)), entonces para todo i N,
con 1 i k, tal que
i
= se verica que
i
= y D
i
=.
La denici on de conguraci on y paso de computaci on se denen de forma
an aloga al caso de las m aquinas de Turing cl asicas.
En ocasiones, de entre las cintas de una m aquina de Turing se distinguen
dos: la cinta de entrada y la de salida. La cinta de entrada se considera s olo
de lectura mientras que, la cinta de salida se considera s olo de escritura.
Finalmente, notar que la denici on de aceptaci on o rechazo en el caso de
m aquinas de Turing con m ultiples cintas es similar al de las m aquinas de
Turing cl asicas.
El siguiente ejemplo muestra como se simplica el reconocimiento del
lenguaje de los palndromos mediante una m aquina de Turing con dos cintas.
Ejemplo 98 (Palndromos (y II)) Consideramos M = (K, , , s) la m a-
quina de Turing, denida como sigue:
:= 0, 1, , . es el alfabeto,
K := s, q, q
ITULO 6. M
AQUINAS DE TURING
la funci on de transici on est a denida mediante la tabla
p K
1
2
(p,
1
,
2
)
s 0 . (s, 0, , 0, )
s 1 . (s, 1, , 1, )
s (s, , , , )
s . . (q, ., , ., )
q 0 . (q, 0, , ., )
q 1 . (q, 1, , ., )
q . (q
, , , ., )
q
0 0 (q
, 0, , 0, )
q
1 1 (q
, 1, , 1, )
q
0 1 (no, 0, , 1, )
q
1 0 (no, 1, , 0, )
q
. (si, ., , , )
El n umero de movimientos que lleva a cabo la m aquina en una entrada de
tama no n est a acotado por 3n.
Vista la noci on de m aquinas de Turing con varias cintas, podemos dar,
de manera sencialla, un ejemplo de m aquina que enumera un lenguaje.
Ejemplo 99 (Enumeraci on de los n umeros naturales) Consideramos
la m aquina de Turing M = (K, , , s) denida como sigue:
:= 0, 1, , . es el alfabeto,
K := s, s
, r, c, c
, 0, , 0, )
s
(r, #, , , )
r (r, , , , )
r (c, , , , )
c 0 (c
, 1, , 1, )
c 1 (c, 0, , 0, )
c . (s
, 1, , 1, )
c
0 (c
, 0, , 0, )
c
1 (c
, 1, , 1, )
c
. (s
, , , ., )
6.2. M
ULTIPLES CINTAS69
La funci on de los estados es la siguiente: s se encarga de inicializar un
contador a cero (primer natural) y de escribirlo en la cinta de salida. s
se
encarga de escribir la marca de separaci on entre naturales. c y c
se encargan
de incrementar el contador copiando el nuevo natural en la cinta de salida.
Finalmente, r se encarga de llevar el cursor al comienzo de la segunda cinta
para incrementar posteriormente, empleando c y c
, el contador.
Proposici on 100 Todo lenguaje aceptado (respec. decidido) por una m aqui-
na de Turing con k cintas es aceptado (respec. decidido) por una m aquina de
Turing.
Posponemos la demostraci on de esta Proposici on a la Secci on 6.3, donde
se considerar an, adem as, aspectos relativos a la Teora de la Complejidad.
Veamos, por ultimo, las m aquinas de Turing no deterministas.
Denici on 101 (Maquina de Turing no determinista) Una m aqui-
na de Turing no determinista es una cuadrupla M = (K, , , s) tal que:
1. K es un conjunto nito de estados tal que s K,
2. es un conjunto nito de smbolos llamado alfabeto tal que K =
y contiene los smbolos especiales . y , llamados blanco y comienzo
de cinta respectivamente,
3. (K ) ((K h, si, no) , , ) es una rela-
ci on tal que para todo para todo q K, si
((q, ), (p, , D)) ,
se tiene que =, = y D =.
Tanto la noci on de conguraci on como la de computaci on de una m aquina
de Turing no determinista coinciden con las de una m aquina determinista. En
cuanto a la aceptaci on o el rechazo de entradas, estas son aceptadas si alguna
de las secuencias de pasos de computaci on llevan a un estado aceptador
(si), y son rechazada en caso contrario, esto es, ninguna de las secuencias
de computaci on llevan a un estado aceptador (no).
Ejemplo 102 (Palndromos (y III)) Sea M = (K, , , s) la m aquina de
Turing denida como sigue:
:= 0, 1, , . es el alfabeto,
K := s, q, q
ITULO 6. M
AQUINAS DE TURING
la funci on de transici on est a denida mediante la tabla
p K
1
2
(p,
1
,
2
)
s 0 . (s, 0, , 0, )
s 1 . (s, 1, , 1, )
s 0 . (s
, 0, , ., )
s 1 . (s
, 1, , ., )
s 0 . (q, 0, , ., )
s 1 . (q, 1, , ., )
s (s, , , , )
s . . (si, ., , ., )
q
0 0 (q
, 0, , 0, )
q
1 1 (q
, 1, , 1, )
q
0 1 (no, 0, , 1, )
q
1 0 (no, 1, , 0, )
q
. (si, ., , , )
Observese que, tanto el n umero de movimientos como el espacio consumido
son menores que en el caso determinista.
Al igual que en casos anteriores, tenemos la equivalencia (en terminos de
aceptaci on o decisi on de lenguajes) con las m aquinas de Turing.
Proposici on 103 Todo lenguaje aceptado por una m aquina de Turing no
determinista es aceptado por una m aquina de Turing (determinista).
Postponemos la demostraci on de la Proposici on anterior a la Seccion 6.3.
6.3. Introducci on a la Tera de la Compleji-
dad
A lo largo de esta Secci on damos una breve introducci on a la Teora de
la Complejidad. Es precisamente en este modelo, de entre los que veremos a
lo largo del curso, donde m as di afano resulta este concepto.
6.3.1. Tiempo y espacio
Existen diversas medidas de complejidad aunque, en lo que sigue, s olo
consideraremos la complejidad en espacio y en tiempo.
Con respecto a la complejidad en tiempo, la denici on es la que sigue:
6.3. INTRODUCCI
ON A LA TER
IA DE LA COMPLEJIDAD 71
Denici on 104 (Complejidad en tiempo) Sea T : N N una funci on
y M = (K, , , s) una m aquina de Turing con k cintas. Diremos que la
m aquina de Turing opera en tiempo T(n) si, para cada entrada de talla n, la
m aquina de Turing realiza, en el peor caso, T(n) movimientos.
Dada una funci on T : N N denida sobre los naturales, denotaremos
por TIME(T(n)) el conjunto de los lenguajes decididos por m aquinas de
Turing deterministas en tiempo acotado por T(n), esto es
TIME(T(n)) := L
kN
TIME(n
k
), y
NP :=
kN
NTIME(n
k
).
Estas dos clases de complejidad han dado lugar a una de las conjeturas
m as famosas de la inform atica te orica: la conjetura de Cook (vease [4]). Dicha
conjetura se enuncia como sigue:
Conjetura 105 (Cook) P ,= NP
Tras este enunciado sencillo, se esconde una cuesti on tremendamente com-
plicada. Tal es as, que el mecenas estadounidense Landon T. Clay, a traves
de su Clay Mathematics Institute, lo ha incluido en su celebrada lista de siete
problemas. Su resoluci on est a premiada con un mill on de dolares.
4
Las implicaciones pr acticas de dicha conjetura son tremendas. Por ejem-
plo, si fuera falsa (P = NP), sera sencillo construir una m aquina de Turing
que rompiera el sistema de cifrado RSA empleado en transacciones bancarias
o militares.
En lo tocante al espacio, la denici on es como sigue:
3
Postponemos la justicaci on de las mismas a la siguiente Secci on.
4
Los interesados pueden visitar la p agina web http://www.claymath.org/.
72 CAP
ITULO 6. M
AQUINAS DE TURING
Denici on 106 (Complejidad en espacio) Sea S : N N una funci on
y M = (K, , , s) una m aquina de Turing con k cintas (k > 2). Diremos
que la m aquina de Turing M opera en espacio acotado por S(n) si para
cada entrada de talla n la m aquina de Turing emplea, en el peor caso, S(n)
celdas. Asumimos t acitamente que de entre las cintas de M, una de ellas
est a destinada a la entrada (s olo lectura) y otra a la salida (s olo escritura),
por lo que no se contabilizan las celdas de la entrada en el c omputo de S(n).
Al igual que en el caso del tiempo, denotaremos por SPACE(T(n)) el
conjunto de los lenguajes decididos por una m aquina de Turing operando en
espacio S(n), en el peor caso, y por NSPACE(S(n)) su contrapartida no
determinista.
6.3.2. Resultados basicos
En esta Subsecci on demostramos cuatro resultados b asicos: el Lema de
aceleraci on lineal, el de compresi on de cinta, el de reducci on del n umero de
cintas y el de eliminaci on de indeterminismo.
Teorema 107 (Aceleraci on lineal) Sea L un lenguaje aceptado por una
m aquina de Turing en tiempo acotado por f(n), i.e. L TIME(f(n)). En-
tonces, para toda R tal que > 0, L es aceptado por una m aquina de
Turing en tiempo acotado por f(n) +n+2, i.e. L TIME(f(n) +n +2).
Demostraci on . Sea M = (K, , , s) una m aquina de Turing, con una unica
cinta, que acepte el lenguaje L en tiempo acotado por T(n). En lo que sigue,
construiremos una m aquina de Turing M
:=
k
, donde k N es un n umero a determinar que depende
de .
La m aquina M
, i.e. compri-
miendola. Hecho esto, simula los movimientos de M hasta que esta pare.
La simulaci on de los movimientos se lleva a cabo en bloques de k pasos
de la siguiente manera: supongamos que la unidad de control de M
lee un
cierto car acter = (
1
, . . . ,
k
). La m aquina M
ON A LA TER
IA DE LA COMPLEJIDAD 73
celdas situadas a izquierda y derecha de (3 pasos de M
). Puesto que
en k pasos de M no abandonamos la regi on conformada por dichas celdas,
podemos comprimir los k movimientos que M en a los m as tres pasos de
M
, en el peor caso, es de
6f(n)
k
.
Por lo tanto, tomando
k :=
6f(n)
se sigue el resultado.
La contrapartida, en lo referente al espacio, del anterior Lema es la si-
guiente:
Teorema 108 (Compresi on de cinta) Sea L un lenguaje aceptado por
una m aquina de Turing en espacio acotado por f(n), i.e. L SPACE(f(n)),
y sea R, con > 0. Entonces, L es aceptado por una m aquina de Turing
en espacio acotado por f(n), i.e. L SPACE(f(n)).
Demostraci on . La demostraci on de este Lema se sigue de la del anterior.
Ambos Lemas consideran unicamente el caso de m aquinas de Turing de-
terministas. Sin embargo, sigue siendo v alidos en el caso de m aquinas no
deterministas.
Otro resultado interesante es el siguiente Lema que demuestra que todo
lenguaje aceptado por una m aquina con varias cintas es aceptado por una
m aquina con una unica cinta.
Lema 109 (Reducci on de cintas) Sea L un lenguaje aceptado por una
m aquina de Turing con k cintas en tiempo acotado por T(n). Entonces, L
es un lenguaje aceptado por una m aquina de Turing con una unica cinta en
tiempo acotado por O(T(n)
2
)
5
.
5
Observese en la demostraci on que el espacio empleado no se ve alterado
74 CAP
ITULO 6. M
AQUINAS DE TURING
Demostraci on . Sea M = (K, , , s) una m aquina de Turing con k cintas
que acepta L en tiempo acotado por T(n). En lo que sigue, describiremos
una m aquina de Turing M
sin m as que escribir su contenido uno a continuaci on del otro. Para ello, de-
nimos el alfabeto de M
como
:= :
, vartriangleright
.
Los smbolos subrayados se emplear an para indicar la posici on de las unida-
des de lectura/escritura, mientras que
de manera
adecuada. Para simular un movimiento de M, la m aquina M
es actualizar
el car acter subrayado conveniente, mientras que si se desplaza dicha unidad,
lo unico que debe hacer M
ITULO 6. M
AQUINAS DE TURING
La formulaci on matem atica de la Tesis de ChurchTuring postula que
la noci on de funci on computable (algoritmo) puede identicarse con la de
funci on recursiva (m aquina de Turing). Obviamente, tal extremo no puede
demostrarse aunque, tal y como hemos dicho, se sustenta en que as ha sido
hasta la fecha.
A lo largo del curso veremos distintos modelos: las funciones recursivas
introducidas por S.C. Kleene (vease [9]), el calculus de A. Church ([3])
o los trabajos de E. Post (vease [13]). Para cada uno de ellos veremos su
equivalencia con la noci on de m aquina de Turing sustentando de esta manera
la tesis de Church.
6.5. Ejercicios
Ejercicio 35 Demostrar que todo lenguaje L
)
k
es enumerable.
Ejercicio 39 Demostrar que el lenguaje de los subconjuntos nitos de cade-
nas sobre un alfabeto nito es enumerable.
Ejercicio 40 Demostrar que para todo lenguaje enumerable innito existe
una m aquina de Turing M tal que calcula una biyecci on : N L, i.e.
tomando como entrada un n umero natural produce como salida una cadena
de L de manera biyectiva.
Ejercicio 41 Sea L
L
es computable, donde
L
es la funci on caracterstica de L.
Ejercicio 42 Analizar, tanto en tiempo como en espacio la complejidad de
las m aquinas desarrolladas en los ejercicios anteriores.
Ejercicio 43 Describir m aquinas RAM que lleven a cabo las tareas propues-
tas en el Ejercicio 37.
78 CAP
ITULO 6. M
AQUINAS DE TURING
Captulo 7
Gramaticas sensibles al
contexto y generales
A lo largo de esta Captulo trataremos las gram aticas generales y las
sensibles al contexto. Las primeras describen los lenguajes aceptables va
m aquinas de Turing mientras que las segundas describen los lenguajes re-
conocidos por los aut omatas linealmente acotados (m aquinas de Turing no
deterministas con espacio linealmente acotado por la longitud de la entrada),
llamados sensibles al contexto.
M as precisamente, tras una breve introducci on de las deniciones b asi-
cas (Secci on 7.1), mostramos que todo lenguaje recursivamente enumerable
est a descrito por una gram atica general y recprocamente, que toda gram ati-
ca general describe un lenguaje recursivamente enumerable. Por lo tanto,
las propiedades de las gram aticas generales se siguen de las de los lenguajes
recursivamente enumerable. Hecho esto, centramos nuestra atenci on en las
gram aticas sensibles al contexto (Secci on 7.2), demostrando los siguientes
hechos: toda gram atica sensible al contexto describe un lenguaje reconoci-
ble mediante un aut omata linealmente acotado (y por ende, recursivo), todo
aut omata linealmente acotado acepta un lenguaje describible mediante una
gram atica al contexto y, nalmente, que existen lenguajes recursivos que no
son sensible al contexto.
Finalizamos el Captulo con el Teorema de Jerarqua de N. Chomsky que
detalla la jerarqua de los lenguajes (o de las gram aticas si se preere).
La principal referencia a lo largo del presente Captulo ser a [10], obra en la
que hace hincapie tanto en las gram aticas como en los lenguajes, contrastando
con la aproximaci on por nosotros seguida, hasta el momento, que incide en
las m aquinas.
79
80 GR
AMATICAS
7.1. Gramaticas no restringidas o generales
7.1.1. Deniciones basicas
Comencemos, sin m as pre ambulos, dando la denici on de gram atica ge-
neral (comparar con las deniciones de las gram aticas regulares o indepen-
dientes del contexto).
Denici on 111 (Gramatica general o no restringida) Un gram atica es
una tupla G = (N, T, P, S) donde
N es un conjunto nito llamado alfabeto de caracteres no terminales,
T es un conjunto nito, llamado de caracteres terminales, cuya inter-
secci on con el de no terminales es vaca, i.e. N T = ,
P (N T)
+
(N T)
,
+
hacen alusi on la apli-
caci on de n derivaciones directas, un n umero indeterminado de ellas (quiz as
nulo) y un n umero indeterminado de ellas (al menos una) respectivamente.
Teniedo en cuenta el concepto de derivaci on, podemos denir el lenguaje
generado por una gram atica general de la siguiente manera.
Denici on 114 (Lenguaje generado por una gramatica) Sea G = (N, T, P, S)
una gram atica general. Se dene el lenguaje generado por G como el conjunto
de todas las cadenas w T
: S
w.
Obviamente, cualquier gram atica vista hasta la fecha es, en particular,
una gram atica general.
7.1. GRAM
w esto es, si podemos obtenerla por derivaci on del car acter inicial
S. Por lo tanto, para construir una m aquina que acepte el lenguaje L(G)
basta generar de manera ordenada las distintas cadenas del lenguaje L(G) y
compararlas con w. Los detalles se dan a continuaci on.
Denamos de entrada el alfabeto sobre el que trabaja la m aquina de Turing
M como la uni on conjuntista tanto de los caracteres terminales y los no
terminales como un conjunto de caracteres especiales propios a la operativa
de la m aquina de Turing , ., ; , , i.e.
= N T , ., ; .
Adem as y para simplicar la exposici on supondremos que la m aquina de
Turing tiene 4 cintas. La utilidad de las mismas es como sigue:
En la primera cinta se almacena la entrada de la m aquina de Turing,
i.e. la cadena w.
En la segunda cinta se almacenan las producciones de la gram atica, i.e.
se almacena una codicaci on de las mismas mediante los caracteres de
(emplearemos el car acter especial para representar las producciones
de forma natural y el car acter # para separar las descripciones de las
mismas).
La tercera cinta almacenar a todas las cadenas que se derivan del ca-
r acter inicial S tras un cierto n umero de pasos. Dichas cadenas estar an
separadas mediante el car acter de separaci on ;. Adem as, las cadenas
obtenidas en n (n N) derivaciones se separaran de las obtenidas en
n + 1 derivaciones mediante la marca ##.
82 GR
AMATICAS
La cuarta cinta est a destinada a obtener las cadenas obtenidas en n
derivaciones a partir de las cadenas obtenidas en n 1 derivaciones
almacenadas en la tercera cinta y de las producciones almacenadas en
la segunda.
En una primera instancia, la m aquina escribe en la segunda cinta la codi-
caci on de las producciones de la gram atica. De ello se encargan un conjunto
nito de estados en los que se encuentra almacenada dicha informaci on. He-
cho esto, escribe en la tercera cinta el car acter de inicio S (interpretado como
la cadena que se obtiene tras ninguna derivaci on) seguido de los correspon-
dientes ##. Tras esta iniciaci on, la m aquina genera de manera ordenada
todas las derivaciones y comprueba si entre ellas se encuentra la cadena w.
La generaci on de las derivaciones se lleva a cabo de manera iterativa. Con el
n de describir el proceso, supongamos que la m aquina ha construido todas
las cadena que se generan en n derivaciones a partir del car acter inicial S,
que estas est an almacenadas en la tercera cinta y que los ultimos caracteres
de dicha cinta son ##. La m aquina itera como sigue:
Sit ua la unidad de control de la tercera cinta tras el anterior ##, de
esta forma la unidad de control queda al comienzo de las cadenas obte-
nidas en n derivaciones. Borra el contenido de la cuarta cinta sin m as
que sobrescribir caracteres . (blancos) y sit ua la unidad de control de
la segunda cinta (en la que se almacenan las producciones) al comienzo
de la misma.
Recorre la segunda cinta considerando una a una las distintas produc-
ciones. Para cada producci on u v P, recorre las cadenas obtenidas
en n iteraciones buscando la subcadena u. Cada vez que encuentra di-
cha subcadena, escribe en la cuarta cinta el resultado de aplicar dicha
producci on a la cadena en cuesti on.
Comprueba si alguna de las cadenas coincide con w. Si es el caso ter-
mina su ejecuci on aceptando w. En caso contrario, copia el contenido
de la cuarta cinta al nal de la tercera y vuelve a iterar.
Obviamente, la m aquina de Turing para si y s olo si w L(G), por lo que
acepta dicho lenguaje.
Finalmente, para concluir la Secci on, demostramos el siguiente Teorema
que muestra que todo lenguaje aceptado por una m aquina de Turing puede
describirse mediane una gram atica general; demostrando con ello lo anuncia-
do al comienzo de la Secci on.
7.1. GRAM
) : ,
K S, A,
donde S y A son nuevos smbolos.
En cuanto al conjunto de las producciones P, lo deniremos de manera que
cada subconjunto de producciones se encargue de simular una parte de la
m aquina de Turing.
(Inicializaci on) Con el n de simular la m aquina de Turing M me-
diante la gram atica general G, consideramos de entrada las siguientes
producciones:
P := P S S..), S A..), A s,
Para cada consideramos las siguientes producciones:
P := P A A).
Tras aplicar una n umero nito de veces las producciones hasta aqu con-
sideradas, obtenemos cadenas de la forma:
1
) . . .
m
m
)..)
(n)
,
donde
1
, . . . ,
m
y ..)
(n)
denota la cadena formada por n ..).
Por lo tanto, dichas producciones se encargan de generar la entrada
de la m aquina de Turing M as como los blancos necesarios para el
funcionamiento de la misma.
84 GR
AMATICAS
(Simulaci on de movimiento de tipo ) Supongamos que (, q) =
(
, q
, ) con q
)
donde (puede ser un car acter blanco .).
(Simulaci on de movimiento de tipo ) Supongamos que (, q) =
(
, q
, ) con q
)q
, q
, ) con q
)
donde , , .
(Finalizaci on) Para cada estado de la forma f si, no, h y
cada par ) consideramos
P := P )f ff, f) ff, f .
Obviamente, as denido, el conjunto de producciones de la gram atica G es
nito. Veamos que L(G) coincide con L(M). Para ello supongamos dado una
entrada de la m aquina M, digamos
1
, . . . ,
m
1
) . . .
m
m
)..)
(n)
se deriva directamente de S. Aplicando las producciones correspondientes a
las computaciones llegamos, tras un n umero nito de pasos y m as de m+n
caracteres, a un estado aceptador. Por lo tanto, aplicando las producciones
de nalizaci on queda que la cadena
1
. . .
m
se deriva directamente de S.
En caso contrario, si la cadena
1
. . .
m
no puede aceptarse en espacio a lo
m as m +n, obtendramos una cadena con caracteres no terminales.
Resumiendo, la gram atica anterior genera el mismo lenguaje que la m aquina
de Turing M.
7.2. GRAM
AMATICAS
3. (K)((Kh, si, no), , ) es una relaci on,
llamada de transici on, tal que
para todo p, q K tales que (q, , p, , D) , entonces = y
D =, y
para todo p, q K y tales que (q, , p, , D) , entonces
= y D , .
Teniendo en cuenta las nociones de conguraci on de una m aquina de
Turing y paso de computaci on, podemos denir la din amica de los aut omatas
linealmente acotados (basta observar que son un tipo particular de m aquinas
de Turing). Teniendo en cuenta estas, podemos denir el lenguaje aceptado
por una aut omata linealmente acotado en los siguientes terminos.
Denici on 120 (Lenguaje aceptado por un aut omata l. a.) Un len-
guaje L
(suponemos que
la longitud de w es mayor que p),
la segunda cinta contiene una codicaci on de las producciones de P,
para basta ampliar el alfabeto , y por ultimo
7.2. GRAM
AMATICAS
del contexto. Resulta obvio que todo lenguaje independiente del contexto es
sensible al contexto (basta observar las deniciones de las correspondientes
gram aticas). Por lo tanto, a lo largo de esta Subsecci on nos centraremos en
demostrar el contenido estricto de los sensibles al contexto en los recursivos.
Como primer paso, veamos que todo lenguaje sensible al contexto es re-
cursivo.
Proposici on 123 Todo lenguaje sensible al contexto es recursivo.
Demostraci on . Para demostrar la armaci on tenemos que demostrar que
dado un lenguaje sensible al contexto, existe una m aquina de Turing que lo
decide.
Sea pues L un lenguaje sensible al contexto, i.e. generado por una gram atica
sensible al contexto G = (N, T, P, S). Construyamos una m aquina de Turing
no determinista con tres cintas que lo decida.
La utilidad de las cintas de la m aquina de Turing es la siguiente:
La primera cinta almacena la entrada w T
y la subcadena u comienza en la
posici on i, escribe en la tercera cinta, suponiendo que el contenido de
la tercera cinta es de la forma wuw
., wvw
.
7.2. GRAM
y [wvw
procede
de la siguiente manera
Genera de manera ordenada los elementos de la sucesi on x
1
, x
2
, . . . hasta
encontrar el i N tal que w = x
i
.
A partir de dicho i, genera el c odigo de la m aquina de Turing asociada
a la gram atica sensible al contexto G
i
, digamos M
i
.
Simula a la m aquina M
i
en la entrada w, aceptando si esta rechaza y
viceversa.
90 GR
AMATICAS
Obviamente, la m aquina de Turing anterior acepta el lenguaje L
c
G
, por lo que
este es recursivo. Gracias al argumento diagonal de Cantor podemos concluir
que L
c
G
no es sensible al contexto lo que concluye la demostraci on.
De los enunciados anteriores se sigue el siguiente resultado.
Teorema 125 La familia de los lenguajes recursivos contiene estrictamente
a la familia de los lenguajes sensibles al contexto.
Demostraci on . Obvia a partir de los resultados anteriores.
7.3. La jerarqua de Chomsky
Para concluir el Captulo, damos el que se conoce como Teorema de la
Jerarqua de Chomsky. Dicho Teorema establece las relaciones de contenido
entre los diversos tipos de lenguajes que se han introducido a lo largo de
los presentes apuntes. La demostraci on del mismo se sigue de los distintos
contenidos que hemos ido viendo.
Teorema 126 (La jerarqua de Chomsky) Se tienen las siguientes ar-
maciones:
1. La familia de los lenguajes regulares est a estrictamente contenida en la
familia de los lenguajes independientes del contexto.
2. La familia de los lenguajes independientes del contexto (que no contie-
nen la palabra vaca) esta estrictamente contenida en la familia de los
lenguajes sensibles al contexto.
3. La familia de los lenguajes sensibles al contexto esta estrictamente con-
tenida en la familia de los lenguajes recursivamente enumerables.
7.4. Ejercicios
Ejercicio 44 Para cada uno de los siguientes lenguajes dar una gram atica
general que los genere:
a
(i)b
(i)
: i 0,
a
(i)b
(2i)
: i 0,
a
(i)b
(i)
c
(i)
: i 0,
7.4. EJERCICIOS 91
a
(i)b
(i
2
)
: i 0, y
a
(i)b
(2
i
)
: i 0.
Ejercicio 45 Sean G
1
= (N, T, P
1
, S) y G
2
= (N, T, P
2
, S) gram aticas ge-
nerales. Demostrar las siguientes armaciones:
Concatenaci on: Existe una gram atica general G tal que
L(G) = L(G
1
)L(G
2
), i.e. tal que el lenguaje que genera se obtiene
mediante concatenaci on de cadenas de L(G
1
) con cadenas de L(G
2
).
Intersecci on: Existe una gram atica general G tal que el lenguaje que
genera es L(G
1
) L(G
2
).
Uni on: Existe una gram atica general G tal que el lenguaje que genera
es L(G
1
) L(G
2
).
Ejercicio 46 (Formal normal de Kuroda) Una gram atica general
G = (N, T, P, S) se dice en forma normal de Kuroda si toda producci on
p P es de alguno de los siguientes tipos
AB DC, donde A, B, C, D N,
A BC, donde A, B, C N,
A a, donde A N y a T, y por ultimo
A , donde A N y denota la palabra vaca.
Demostrar que para toda gram atica general G existe una gram atica G
en
forma normal de Kuroda tal que L(G) = L(G
).
Ejercicio 47 (Formal normal de Pentonnen) Una gram atica general
G = (N, T, P, S) se dice en forma normal de Pentonnen si toda producci on
p P es de alguno de los siguientes tipos
AB AC, donde A, B, C N,
A BC, donde A, B, C N,
A a, donde A N y a T, y por ultimo
A , donde A N y denota la palabra vaca.
Demostrar que para toda gram atica general G existe una gram atica G
en
forma normal de Pentonnen tal que L(G) = L(G
).
Ejercicio 48 Sea G = (N, T, P, S) una gram atica general dada por su for-
ma normal de Pentonnen y sea w L(G). Cu al es el n umero mnimo de
derivaciones directas necesarias para derivar w de S.?
92 GR
AMATICAS
Captulo 8
Computabilidad
El objetivo fundamental del presente Captulo es mostrar los limites de
los actuales computadores. Teniendo en cuenta la equivalencia entre m aqui-
nas RAM (computadores) y m aquinas de Turing, dicha cuesti on se reduce a
estudiar los limites computacionales de las m aquinas de Turing, i.e. a estudiar
las propiedades de los lenguajes recursivos y los recursivamente enumerables.
El esquema general que seguiremos es el siguiente:
En la Secci on 8.1 estudiaremos algunas propiedades de los lenguajes, tanto
recursivos como recursivamente enumerables, frente a operaciones conjuntis-
tas (uni on, intersecci on, complementario,...).
1
.
En la Secci on 8.2 se construye un lenguaje que no es recursivamente
enumerable: el lenguaje diagonal. La no recursividad enumerables de dicho
lenguaje implica la existencia de lenguajes que no son aceptados por m aquina
de Turing alguna. En terminos coloquiales: existen problemas que no admiten
soluci on algortmica. Esencialmente el problema reside en la existencia de m as
lenguajes (problemas) que m aquinas de Turing (algoritmos).
En la Secci on 8.3 se construye un lenguaje recursivamente enumerable no
recursivo: el lenguaje universal. Para ello, se detalla la construcci on de una
m aquina de Turing capaz de simular a cualquier otra: la m aquina de Turing
universal. Dicha m aquina, acepta un lenguaje recursivamente enumerable pe-
ro no recursivo: el lenguaje universal. El problema de fondo es que la m aquina
de Turing universal no puede determinar si la simulaci on que esta llevando
a cabo concluir a o no. Como conclusi on de la no recursividad del lenguaje
universal se sigue que dentro de los lenguajes aceptados por m aquinas de
Turing podemos discernir dos categoras: los recursivos y los recursivamen-
te enumerables (pero no recursivos). En terminos coloquiales: dentro de los
1
Dichas operaciones se ver a complementadas, en los ejercicios, con algunas m as propias
de lenguajes como la concatenaci on.
93
94 CAP
ITULO 8. COMPUTABILIDAD
problemas resolubles algortmicamente, podemos distinguir aquellos que ad-
miten exclusivamente una respuesta parcial (recursivamente enumerables) y
aquellos que admiten una respuesta total (recursivos).
Continuando con el estudio de la recursividad y la recursividad enume-
rable, en la Secci on 8 estudiaremos el Teorema de Rice. El objetivo de dicho
teorema es mostrar que, las propiedades no triviales de los lenguajes no pue-
den determinarse algortmicamente.
En la Secci on B.1 presentamos el problema de la correspondencia de Post
como un nuevo ejemplo de lenguaje no recursivo. El interes de dicho pro-
blema, a parte del hist orico, est a en que permite demostrar f acilmente la
intratabilidad de problemas relacionados con gram aticas, como por ejemplo:
la ambiguedad gram aticas independientes del contexto.
El enfoque seguido es el de las obras [7] o [8]. Se invita a la lectura de
dichos textos para informaci on complementaria, ejemplos y ejercicios.
8.1. Propiedades basicas
Comencemos esta Secci on estudiando el comportamiento de los lengua-
jes recursivos con respecto a operaciones conjuntistas b asicas como la uni on,
intersecci on y complemento.
Teorema 127 El complementario, la uni on nita y la intersecci on nita de
lenguajes recursivos es lenguajes recursiva.
Demostraci on . Veamos de entrada que el complementario de un lenguaje
recursivo, digamos L
, es un lenguaje recursivo.
Sea M una m aquina determinista, con una cinta
2
, que decida L. Construya-
mos una m aquina N que decida L
c
. Para ello, simplemente modicaremos la
funci on de transici on de M de manera que N acepte cuando esta rechaza y
viceversa. Est a claro que N, as construida, acepta w
s y s olo si w / L,
i.e. si w L
c
.
La demostraci on relativa a la intersecci on se demuestra por inducci on en el
n umero de lenguajes a intersecar. Supongamos dados dos lenguajes recursivos
L
1
, L
2
y sean M
1
y M
2
dos m aquinas que los decidan. Construyamos
una m aquina M, con dos cintas, que decida L
1
L
2
. De entrada, M copia su
entrada en la segunda cinta. Hecho esto, simula de manera simult anea a M
1
en la primera cinta y a M
2
en la segunda. Si las dos simulaciones terminan
2
En vista del Lema de eliminaci on de indeterminismo y del Lema de reducci on de
cintas, podemos hacer tal suposici on sin restricci on de generalidad.
8.1. PROPIEDADES B
ASICAS 95
aceptando, M acepta; en caso contrario, M rechaza. Obviamente M
decide
L
1
L
2
.
Supongamos probada la armaci on para familias de k lenguajes recursivos,
veamos que es cierta para familias de k +1 elementos. Sean L
1
, . . . , L
k+1
una
familia de tales lenguajes. La armaci on se sigue de la asociatividad de la
intersecci on de conjuntos, i.e. observando
L
1
. . . L
k+1
= L
1
(L
2
. . . L
k+1
),
y de que (L
2
. . . L
k+1
) es un lenguaje recursivo al ser intersecci on de k
lenguajes (hip otesis inductiva).
En cuanto a la uni on, basta observar que, aplicando las leyes de Morgan, se
tiene
L
1
. . . L
k+1
= (L
c
1
L
c
2
. . . L
c
k+1
)
c
.
En lo tocante a la uni on e intersecci on nita de lenguajes recursivamente
enumerables, la situaci on es completamente an aloga a la del caso recursivo y
se recoge en el siguiente Teorema.
Teorema 128 La uni on e intersecci on nita de lenguajes recursivamente
enumerables es recursivamente enumerable.
Demostraci on . Veamos en primer lugar que la intersecci on de una familia -
nita de lenguajes recursivamente enumerables es recursivamente enumerables.
Para ello, al igual que en el caso de los lenguajes recursivos, procederemos
por inducci on. Supongamos dados dos lenguajes recursivamente enumera-
ble L
1
, L
2
y sean M
1
y M
2
las respectivas m aquinas que los aceptan.
Construimos M igual que en el caso de los lenguajes recursivos. Obviamante,
w
y sean M
1
y
M
2
las respectivas m aquinas que los acepten. Construimos una m aquina M,
con dos cintas, de la siguiente manera: de entrada, M copia su entrada de
la primera cinta a la segunda; hecho esto, comienza a simula en paralelo a
M
1
sobre la primera cinta y M
2
sobre la segunda. M acepta en el momento
en que alguna de las dos simulaciones acepte
3
. Queda claro por tanto que M
3
N otese que en caso contrario, M permanece computando indenidamente.
96 CAP
ITULO 8. COMPUTABILIDAD
acepta L
1
L
2
. El caso general se sigue igual que los anteriores: observando
la asociatividad de la uni on y aplicando la hip otesis inductiva.
Desafortunadamente el complementario de un lenguaje recursivamente
enumerable no es necesariamente recursivamente enumerable. De hecho, se
tiene el siguiente resultado.
Teorema 129 Un lenguaje tal que el y su complementario son recursiva-
mente enumerables es recursivo.
Demostraci on . Sea L
un n umero natural
5
. El objetivo de esta Subsecci on es demostrar un
resultado similar para el caso de m aquinas de Turing, i.e. podemos asignar a
cada natural una m aquina de Turing (de manera unica).
Para representar de tal manera una m aquina de Turing debemos, en pri-
mera instancia, codicar sobre alfabeto la descripci on de los elementos b asi-
cos de la misma: funci on de transici on, estado inicial,... En lo que sigue,
supondremos que las m aquinas est an denidas sobre un cierto alfabeto nito
.
Codicaremos las m aquinas de Turing sobre el alfabeto mediante ca-
denas en sobre el alfabeto
:= , ), q, [, , , .
T acitamente asumimos que , ), , [, , , / puesto que, si no es el caso,
podemos emplear smbolos alternativos.
Supongamos dada una m aquina de Turing M = (K, , , q
1
) tal que
K = q
1
, . . . , q
n
y
=
1
, . . . ,
m
.
Codicaremos cada q
i
, con 1 i n, mediante la cadena q
i
(tantas repe-
ticiones del smbolo q como indique el subndice). Observese que el estado
inicial se corresponde con la cadena q (basta renombrar los estados para que
as sea).
En lo relativo a la funci on de transici on, debemos codicar informaciones
del tipo:
(q
i
,
j
) = (q
k
,
l
, d),
donde q
i
, q
k
K,
j
,
l
y d , , . Dicha informaci on se codi-
car a, simplemente, mediante la cadena:
q
i
[
j
[q
k
[
l
[d)
.
Por lo tanto, para codicar , basta concatenar las codicaciones asociadas
a cada uno de los posibles pares (q
i
,
j
), donde 1 i n y 1 j m, i.e
se codica mediante la cadena
11
[ . . . [
n1
[ . . . [
1m
[ . . . [
nm
),
5
A un es m as, se sigue que existe una m aquina de Turing que lleva a cabo dicha asig-
naci on
98 CAP
ITULO 8. COMPUTABILIDAD
donde cada
ij
, con 1 i n y 1 j m, codica la informaci on relativa
a (q
i
,
j
).
Obviamente, asuminedo esta codicaci on, se sigue el siguiente resultado:
Teorema 130 Existe una m aquina de Turing que decide si una cadena sobre
dene una m aquina de Turing o no, i.e. el lenguaje
M) : M es una m aquina de Turing
es recursivamente enumerable (de hecho recursivo).
Por lo tanto, aplicando el Ejercicio 40, se sigue que existe una m aquina de
Turing que numera el conjunto de las descripciones de m aquinas de Turing,
i.e. que tomando como entrada un n umero natural, produce como salida la
descripci on de una m aquina de Turing (de manera biyectiva).
En resumen, jado un alfabeto , podemos hablar de la iesima cadena
sobre el alfabeto o de la iesima m aquina de Turing y por ende, identicar
(o codicarlas si se preere) cada una de ellas con un natural.
8.2.2. El lenguaje diagonal
En esta Subsecci on presentamos el lenguaje diagonal, primer ejemplo de
lenguaje no recursivamente enumerable que veremos. La interpretaci on de
la no recursividad enumerable de L
d
es clara: no existe un algoritmo capaz
de reconocer L
d
(siquiera de manera parcial), i.e. existen problemas que no
admiten soluci on algortmica.
La denici on precisade tal lenguaje es la siguiente:
Denici on 131 (El lenguaje diagonal) Sea un alfabeto nito, asumien-
do la enumeraci on de cadenas y m aquinas de Turing de la Subsecci on ante-
rior, denimos el lenguaje diagonal como
L
d
:= w
i
: w
i
/ L(M
i
).
La demostraci on formal de la no recursividad enumerable de L
d
puede
verse en el siguiente Teorema.
Teorema 132 El lenguaje diagonal L
d
no es recursivamente enumerable.
Demostraci on . Por reducci on al absurdo, supongamos que el lenguaje L
d
es recursivamente enumerable. Por lo tanto, existe una m aquina de Turing
M tal que acepta el lenguaje L
d
. Puesto que M es una m aquina sobre el
alfabeto , de acuerdo a la Subsecci on anterior, existe un n umero natural
i N tal que M es la iesima m aquina de Turing. Considerando la iesima
cadena sobre el alfabeto , w
i
ITULO 8. COMPUTABILIDAD
6
, tal que tomando como entrada la descripci on de una m aquina de Turing M
y una cadena w
.
6
es el alfabeto introducido en la Secci on anterior.
8.3. LENGUAJES NO RECURSIVOS 101
En la siguiente Subsecci on omstraremos la no recursividad de este len-
guaje.
En resumen, existe una m aquina de Turing capaz de simular a cualquier
otra m aquina de Turing. En particular, dada una cadena sobre un alfabeto,
la m aquina de Turing Universal puede determinar si la m aquina parar a en
una tal cadena.
8.3.2. No recursividad del lenguaje universal
El objetivo fundemantel de esta Subsecci on es, tal y como se anunci o,
mostrar la no recursividad del lenguaje universal, i.e. demostrar que no existe
un algoritmo que decida dicho lenguaje.
Teorema 135 El lenguaje universal L
u
no es recursivo.
Demostraci on . Sea w
ITULO 8. COMPUTABILIDAD
8.4. Reducciones
En la demostraci on del Teorema 135, se demostr o la no recursividad de L
u
a partir de una reducci on de L
d
a L
c
u
. La tecnica all empleada no es particular
y est a Secci on est a destinada a generalizarla. Comencemos deniendo lo que
se entiende por reducci on.
Denici on 136 (Reducci on) Sean L
1
, L
2
los lenguajes
L
u
:= M, w) : M acepta w
L
ne
:= M) : L(M) ,= .
Veamos com reducir el lenguaje L
u
al lenguaje L
ne
. Para ello, dado una
cadena M, w), codicando una m aquina de Turing M y una cierta cadena
w
de la siguiente manera:
Dada una cadena x
, la m aquina M
acepta x.
Obviamente se tiene que
L(M
) =
si M no acepta w
si M acepta w
Luego la transformaci on que a cada M, w) asocia la m aquina M
as cons-
truida es un reducci on de L
u
a L
ne
.
Teniendo en cuenta lo anterior, estamos en condiciones de generalizar la
tecnica empleada en la demostraci on del Teorema 135.
Teorema 138 Sean L
1
, L
2
: M t.q. M acepta L.
Interesandonos en los subconjuntos de L, introducimos el concepto de
propiedad de los lenguajes recursivamente enumerable.
Denici on 140 (Propiedad) Llamaremos propiedad de los lenguajes re-
cursivamente enumerables a todo subconjunto P L. Adem as, diremos que
una propiedad P es trivial si es el subconjunto vaco o el total, i.e. si P =
o P = L.
Ejemplos de propiedades del lenguajes recursivamente enumerables son:
ser recursivo, ser independiente del contexto,...
Puesto que a cada lenguaje recursivamente enumerable podemos asociarle
la descripci on de una m aquina de Turing que lo acepte, podemos las propie-
dades como lenguajes. M as concretamente.
104 CAP
ITULO 8. COMPUTABILIDAD
Denici on 141 (Lenguaje asociado a una propiedad) Dada un propie-
dad P, denimos el lenguaje asociado a la propiedad P, denotado por L
P
,
como el conjunto de las descripciones de m aquinas de Turing que aceptan
lenguajes de P, i.e.
L
P
:= M : L(M) P
Desafortunadamente, dichos lenguajes (salvo para propiedades triviales)
no son recursivos, tal y como demuestra el siguiente Teorema.
Teorema 142 (Teorema de Rice) Toda propiedad no trivial de los len-
guajes recursivamente enumerables es indecidible (equivalentemente, toda pro-
piedad de los lenguajes recursivamente enumerables decidible es trivial).
Demostraci on . Supongamos que / P (si no es as, basta tomar su com-
plementario P
c
). Puesto que P es no trivial, existe un lenguaje L P. Sea
M
L
la m aquina de Turing que acepta L.
Supongamos que L
P
es decidible. Entonces existe una m aquina M
P
que de-
cide L
P
. En lo que sigue construiremos una reducci on del lenguaje universal
L
u
a L
P
empleando M
L
.
Dada M, w), la codicaci on de una m aquina de Turing M y de una cadena
w
, construimos la m aquina M
simula M
L
en la entrada x, aceptando si esta lo hace.
Obviamente se tiene lo siguiente:
L(M
) =
L si M acepta w
si M no acepta w
Por lo tanto, si M, w) L
u
se sigue que M
L
P
. En caso contrario, si
M, w) / L
u
, se verica que M
/ L
P
(basta observar que / P).
Aplicando el Apartado 2 del Teorema 138 se sigue que L
P
no es recursivo,
i.e. decidible.
La situaci on, en el caso de las propiedades recursivamente enumerables,
resulta m as compleja y ser a estudiada a continuaci on. M as concretamente
veremos que una propiedad P es recursivamente enumerable (i.e. L
P
es re-
cursivamente enumerable) si y s olo satisface las siguientes condiciones:
R1 Si L P y L
,
entonces L
P.
R2 Si L es un lenguaje innito de P, existe un subconjunto nito de L en
P, y
8.5. TEOREMA DE RICE 105
R3 El conjunto de los lenguajes nitos de P es enumerable, i.e. existe una
m aquina de Turing que enumera el conjunto de los lenguajes nitos de
P.
Para ello, demostraremos previamente una serie de lemas tecnicos.
Lema 143 Si P no satisface R1, entonces L
P
no es recursivamente enu-
merable.
Demostraci on . Para demostrar el Lema reduciremos el lenguajes L
c
u
al
lenguaje L
P
(n otese que el lenguaje L
c
u
no es recursivamente enumerable y
el resultado se seguira del Teorema 138).
Por hip otesis, existen lenguajes recursivamente enumerables L
1
L
2
tales que L
2
P y L
1
/ P (emplearemos L
1
y L
2
en la construcci on de la
reducci on).
La reducci on toma como entrada un par M, w), describiendo una m aquina
de Turing y una entrada, y produce como salida la descripci on de una cierta
m aquina de Turing M
. La m aquina M
) =
L
2
si M acepta w,
L
1
si M no acepta w,
Por lo tanto, L(M
) pertenece a L
P
si y s olo si M no acepta w. Aplicando el
Teorema 138 se concluye el resultado.
Lema 144 Si existe un lenguaje innito L P tal que todo subconjunto
innito no pertenece a P, i.e. no satisface R2, entonces L
P
no es recursiva-
mente enumerable.
Demostraci on . Al igual que en la demostraci on del Lema anterior, reduci-
remos el lenguajes L
c
u
al lenguaje L
P
.
Por hip otesis, existe un lenguaje innito L
1
P tal que cualquier subcon-
junto innito no pertenece a P (emplearemos L
1
en la construcci on de la
reducci on). En lo que sigue, sea
M una m aquina de Turing que acepte L.
106 CAP
ITULO 8. COMPUTABILIDAD
La reducci on toma como entrada un par M, w), describiendo una m aquina
de Turing y una entrada, y produce como salida la descripci on de una cierta
m aquina de Turing M
. La m aquina M
, comienza
simulando a la m aquina
M en x. Si el resultado de la simulaci on es positivo,
i.e.
M acepta x, simula a M en la entrada w durante [x[ movimientos. Si M
no acepta a w tras [x[ movimientos, M
acepta la entrada x.
Si M acepta w tras exactamente j movimientos, tenemos que
L(M
) = x L : [x[ < j,
por lo que L(M
, entonces L
P.
2. Si L es un lenguaje innito de P, existe un subconjunto nito de L en
P, y
3. El conjunto de los lenguajes nitos de P es enumerable, i.e. existe una
m aquina de Turing que enumera el conjunto de los lenguajes nitos de
P.
Demostraci on . Tras los Lemas anteriores resta probar que, si se verican
las condiciones anteriores, entonces L
P
es recursivamente enumerable. Para
ello, construiremos explcitamente la m aquina que lo acepta. Dicha m aquina
lleva a cabo las siguientes etapas:
1. Genera un par (i, j) N N.
2. Simula durante i pasos a la m aquina enumeradora de los lenguajes
nitos de P, la existencia de dicha m aquina se ha visto en el Lema 145.
3. Si tras i, se ha generado un subconjunto nito completo, se simula la
m aquina M durante j pasos en cada una de las cadenas del subconjunto
nito. Si no se ha generado un subconjunto nito completo se vuelve
al primer paso.
4. Si la m aquina M acepta en j pasos todas las cadenas del subconjunto
nito, se acepta M. En caso contrario se vuelve al primer paso.
Veamos que el lenguaje aceptado por la anterior m aquina de Turing es preci-
samente L
P
. Supongamos que L P y que M es una m aquina de Turing que
acepta L. Entonces, gracias a la condici on 2, exista un lenguaje nito L
P
tal que L
, y j es el n umero de
pasos que le lleva a la m aquina M aceptar las cadenas de L
, concluimos que
la m aquina anterior aceptar a M tras generar el par (i, j).
Recprocamente, supongamos que la anterior acepta una cierta m aquina M
a partir de un par (i, j). Por lo tanto, existe un lenguaje nito L
de L(M),
108 CAP
ITULO 8. COMPUTABILIDAD
generado tras a lo m as i pasos de la m aquina enumeradora de lenguajes
nitos, cuyas cadenas son aceptadas por M en, a lo m as, j pasos. Por lo
tanto, L
P y L
, se dene w
R
como
w
R
= w
n
. . . w
1
.
Dado un lenguaje L
, se dene L
R
como
L
R
:= w
: v
tal que v
R
= w.
Demostrar que dado un lenguaje recursivamente enumerable L
, L
R
es
recursivamente enumerable.
Ejercicio 50 Sean y dos alfabetos nitos, y sea h :
un homo-
morsmo. Dada una cadena cualquiera w = w
1
. . . w
n
, se dene h(w)
mediante la expresi on:
h(w) := h(w
1
) . . . h(w
n
).
Obviamente, dado un lenguaje L
: v
, demostrar que h
1
(L
) es recursivamente enumerable.
8.6. EJERCICIOS 109
Ejercicio 51 Sean L
1
, . . .
n
una familia nita de lenguajes recursivamente
enumerables satisfaciendo:
dados i ,= j, con 1 i, j n, se tiene L
i
L
j
= , y
n
i=1
L
i
=
.
Demostrar que todo L
i
, para 1 i n, es recursivo.
Ejercicio 52 Demostrar que la uni on enumerable de lenguajes recursiva-
mente enumerables es recursivamente enumerable. Demostrar que esto no
ocurre si la uni on no es enumerable.
Ejercicio 53 Construir un ejemplo que muestre que la intersecci on innita
de lenguajes recursivamente enumerables no tiene por que ser recursivamente
enumerable.
Ejercicio 54 Demostrar que las siguientes propiedades de lenguajes recur-
sivamente enumerables son recursivamente enumerables:
L ,= .
Fijada una cadena w
, w L.
Fijado un natural k N, L contiene al menos k cadenas.
L L
u
,= .
Ejercicio 55 Demostrar que las siguientes propiedades de lenguajes recur-
sivamente enumerables no son recursivamente enumerables:
L = .
Existe un w
tal que L = w.
Fijado un natural k N, L contiene exactamente k cadenas.
L L
u
,= .
Ejercicio 56 Sea L el lenguaje formado por cadenas de la forma (M, M
, k),
donde M y M
ITULO 8. COMPUTABILIDAD
El conjunto de las descripciones de m aquinas de Turing que, tomando
como entrada la cadena vaca, escriben un smbolo no blanco en alg un
momento.
El conjunto de c odigos de una m aquina de Turing que nunca desplazan
su unidad de control a la izquierda.
El conjunto de pares (M, w) tales que la m aquina de Turing, al tomar
como entrada w, nunca lee una casilla de la cinta m as de una vez.
Ejercicio 58 Demostrar que no son recursivamente enumerables los siguien-
tes conjuntos:
(M, w) tales que M(w) =,
(M
1
, M
2
) tales que L
1
L
2
= , y
(M
1
, M
2
, M
3
) tales que L
1
= L
2
L
3
.
Ejercicio 59 Indicar si son recursivos, recursivamente enumerables o no
recursivamente enumerables los siguientes conjuntos:
M : M para en cualquier entrada, y
M : M no para en ninguna entrada.
Captulo 9
Funciones recursivas parciales
El objetivo fundamental del presente Captulo es determinar las funciones
computables mediante m aquinas de Turing.
Para ello, veremos de entrada algunos tipos sencillos de funciones que
pueden computarse empleando m aquinas de Turing (funciones iniciales) y
con posterioridad, veremos como pueden combinarse para obtener funciones
m as complejas. De esta manera, determinamos ciertas clases de funciones
computables mediante m aquinas de Turing (funciones recursivas primitivas,
funciones recursivas y funciones recursivas parciales). Hecho esto, mostrare-
mos que cualquier funci on computable mediante una m aquina de Turing cae
en alguna de estas clases.
El lector interesado en el tema puede consultar [1, Captulo 4], [11] o [2]
para un tratamiento m as detallado del asunto.
9.1. Funciones computables
A lo largo de esta Secci on veremos algunas funciones computables b asi-
cas y como estas pueden combinarse (efectivamente) para obtener nuevas
funciones.
En lo que sigue, nos centraremos exclusivamente en funciones denidas
sobre los naturales. Los motivos para ello son por un lado hist oricos: se
remontan a los trabajos de S.C. Kleene (vease [9] por ejemplo), en los que
deni o la noci on de algoritmo va funciones recursivas parciales denidas
sobre los naturales, y pr acticos: al suponer las funciones denidas sobre los
naturales logramos independencia del alfabeto de trabajo (cualquier cadena
sobre un alfabeto nito puede codicarse mediante n umeros naturales y por
ende, cualquier funci on).
Con el n de incidir en el hecho de que las m aquinas de Turing computan
111
112 CAP
m
k
: N
m
N
(n
1
, . . . , n
m
) n
k
.
Demostraci on . Obviamente, la funci on constante cero es computada por
una m aquina de Turing que ignora su entrada y escribe 0 en la cinta de
salida.
La funci on sucesor es computada por una m aquina de Turing que incrementa
en uno su entrada. Los detalles pueden consultarse en el Captulo 6.
En lo tocante a las funciones proyecci on, basta considerar la m aquina de
Turing que recorre su entrada hasta dar con la iesima componente de la
misma y copia esta en la cinta de salida. Para ello, s olo debe llevar la cuenta
las componentes ledas en una cinta auxiliar.
9.1. FUNCIONES COMPUTABLES 113
En lo que sigue, las funciones citadas en el anterior Lema son las que
emplearemos como piezas b asicas en la construcci on de funciones m as com-
plejas. Para ello, combinaremos efectivamente dichas funciones bien por com-
posici on, por recursi on o por recursi on.
Veamos por ello, en primer lugar, que la composici on de funciones com-
putables es computable.
Lema 148 (Computabilidad de la composici on de funciones) Sean g
1
, . . . , g
m
, h
funciones computables. Entonces, la composici on, denida como
f(x) = h(g
1
(x), . . . , g
m
(x)),
es computable.
Demostraci on . Supongamos dado un conjunto nito de funciones recursi-
vas g
1
, . . . , g
m
, h computables mediante ciertas m aquinas de Turing, digamos
M
g
1
. . . , M
gm
, M
h
. En lo que sigue, construiremos una m aquina de Turing M
f
que computa la funci on recursiva
f(x) = h(g
1
(x), . . . , g
m
(x)).
Para ello, consideramos una m aquina de Turing con m + 3 cintas, donde la
utilidad de las mismas es la siguiente:
la primera cinta es la de entrada y la ultima es la de salida,
las cintas intermedias (de trabajo) son las cintas asociadas a M
g
1
, . . . , M
gm
, M
h
.
El funcionamiento de M
f
es como sigue: primeramente copia la entrada x a
las m primeras cintas de trabajo y simula sobre las mismas a M
g
1
, . . . , M
gm
.
Si las m simulaciones terminan, podemos suponer que en las cintas de trabajo
aparecen exclusivamente las casdenas g
1
(x), . . . , g
m
(x). Entonces, M
f
escribe
en la m + 1esima cinta de trabajo la cadena (g
1
(x), . . . , g
m
(x)) y simula en
la misma a la m aquina M
h
. Si dicha simulaci on termina, suponiendo que el
contenido de la m + 1esima cinta es h(g
1
(x), . . . , g
m
(x)), M
f
copia dicho
contenido en la cinta de salida y para.
A parte de la composici on, podemos recurrir, tal y como se dijo, a la
recursi on para construir nuevas funciones, como muestra el siguiente Lema.
Lema 149 (Computabilidad de la recursi on primitiva de funciones)
Sean g, h funciones computables. Entonces, la recursi on primitiva, denida
mediante
f(x, 0) = g(x)
f(x, y + 1) = h(x, y, f(x, y)),
es computable.
114 CAP
: M(x) =.
Debemos demostrar la recursividad parcial de la funci on f.
De entrada codicamos los estados K = q
1
, . . . , q
r
mediante los enteros
1, . . . , r y los smbolos de =
0
, . . . ,
s1
mediante 0, 1, . . . , s 1 (supo-
nemos que
0
= .). Teniendo en cuenta estas codicaciones, denimos las
siguientes funciones:
mov(q, ) :=
2 si (q, ) = (q
, ) para alg un q
K y
,
1 si (q, ) = (q
, ) para alg un q
K y
,
0 en cualquier otro caso.
simb(q, ) :=
si (q, ) = (q
, d) con q
K y d , , ,
en caso contrario.
estado(q, ) :=
q si (q, ) = (q
, ) para alg un q
K y
,
1 si (q, ) = (q
, ) para alg un q
K y
,
0 en cualquier otro caso.
Las funciones anteriores toman un conjunto nito de valores. Adem as, los
conjuntos en los que toma un cierto valor (constante) son conjuntos recursi-
vos que vienen dados por igualdades. Por lo tanto, las funciones anteriores
son funciones recursivas primitivas. Dichas funciones codican la funci on de
transici on de la m aquina de Turing M:
mov(q, ) indica el desplazamiento que lleva a cabo la unidad de control
de M en funci on del estado q en el que se encuentra y el car acter que
est a leyendo.
simb(q, ) da el smbolo que escribe la m aquina de Turing M cuando
se encuentra en el estado q y est a leyendo el car acter .
estado(q, ) indica el estado al que pasa la m aquina M cuando se en-
cuentra en el estado q y est a leyendo el car acter .
Con el n de codicar en terminos similares un paso de computaci on, de-
bemos codicar las conguraciones instant aneas de la m aquina de Turing
(q, u, v) K
i=0
i
s
ti
,
donde s es el n umero de elementos de y
i
0, . . . , s 1, para
0 i t, denota la codicaci on del smbolo
i
.
n := [u[ es la posici on de la unidad de control en la cinta.
Codicando de esta manera la conguraci on instant anea de la m aquina de
Turing M, podemos denir las siguientes funciones
simbact(w, q, n) := coc(w, b
n1
) mult(b, coc(w, b
n
)),
cabezasig(w, q, n) := n eq((mov(p, simbact(w, q, n), 1))
+ eq(mov(p, simbact(w, q, n)), 2)),
estadosig(w, q, n) = estado(p, simbact(w, q, n)+mult(k, ,cabezasig(w, q, n)),
cintasig(w, q, n) := (w mult(b
n
, siymact(w, q, n)
+ mult(b
n
, simb(p, simbact(w, q, n))), y
paso(w, q, n) = (cintasig(w, q, n), estadosig(w, q, n), cabezasig(w, q, n)).
Las funciones llevan a cabo las siguientes tareas:
simbact(w, q, n) toma la codicaci on mediante naturales de una con-
guraci on y devuelve el car acter que esta leyendo la unidad de control.
cabezasig(w, q, n) toma la codicaci on de la conguraci on actual y de-
vuelve la codicaci on del movimiento a realizar por la m aquina de
Turing, i.e. 2 si se debe desplazar a la derecha, 1 si es a la izquierda.
estadosig(w, q, n) devuelve la codicaci on del estado al que pasa la
m aquina de Turing una vez llevado a cabo el paso de computaci on.
cintasig(w, q, n) devuelve un entero que codica la cinta de la m aquina
de Turing una vez escrito el car acter pertinente.
paso(w, q, n) simula un paso de computaci on calculando una nueva con-
guraci on a partir de una dada.
120 CAP
yz
f(x, y),
2.
y<z
f(x, y),
3.
yz
f(x, y), y
4.
y<z
f(x, y),
9.3. EJERCICIOS 121
Deducir que si f es recursiva parcial entonces, las funciones anteriores
son recursivas parciales.
Ejercicio 61 Sean P
1
, . . . , p
n
predicados recursivos. Demostrar que los si-
guientes predicados son recursivos:
P
1
. . . P
n
,
P
1
. . . P
n
,, y
P
i
para 1 i n.
Ejercicio 62 Dada P un predicado recursivo, demostrar que son recursivos:
(y z)P(x, z)), y
yz
P(x, y) =
y
P(
X, y) si (y z)P(x, y)
0 en caso contrario
.
Ejercicio 63 (Funci on de Ackermman) Demostrar que la funci on A :
N
2
N denida por las ecuaciones
A(0, y) = y + 1,
A(x + 1, 0) = A(x, 1), y
A(x + 1, y + 1) = A(x, A(x + 1, y)),
es computable (recursiva) y total pero no recursiva primitiva.
Ejercicio 64 (S
m
n
Teorema) Sea g : D N
n+m
N una funci on par-
cial recursiva. Demostrar que existe una funci on total S
m
n
(x
1
, . . . , x
n
) tal que
f
S
m
n
(x
1
,...,xn)
(y
1
, . . . , y
m
) = g(x
1
, . . . , x
n
, y
1
, . . . , y
m
).
Ejercicio 65 (Teorema del punto jo) Sea : N N una funci on total
recursiva y sea f : N N una funci on que a cada entero le hace correspon-
der una codicaci on mediante un entero de la iesima m aquina de Turing.
Demostrar que existe un i
0
tal que f(i
0
)(x) = f
(i
0
)
(x).
122 CAP
ENDICE A. M
I
1
2
UINAS RAM
1. Inmediato (denotado por = j). En este caso no se produce acceso ni
a los registros de trabajo ni a los de entrada, simplemente se carga
el valor j prejado por el programa en el acumulador (n
1
2
ese que la
nica instrucci
1
2
que admite direccionamiento inmediato, dentro de la
categor
1
2
, es LOAD).
2. Directo (denotado por j)
1
. Las instrucciones que utilizan este tipo de
direccionamiento acceden a los registros por medio de un
1
2
dice j. Si
la instrucci
1
2
es del tipo READ se carga en el acumulador el contenido
del registro de entrada j
1
2
imo, si es del tipo LOAD, se carga en el
acumulador el contenido del registro de trabajo j
1
2
imo y si es del
STORE, se almacena en el registro de trabajo j
1
2
imo el contenido del
acumulador.
3. Indirecto (denotado por j)
2
. En este caso se accede a los registros
utilizando como
1
2
dice el contenido del registro r
j
. Obviamente, un
direccionamiento del estilo jproducir
1
2
un error en la ejecuci
1
2
de la m
1
2
uina RAM, que puede asimilarse a la ejecuci
1
2
de una ins-
trucci
1
2
HALT (descrita m
1
2
adelante). Las instrucciones que hacen
empleo de este direccionamiento son de los tres tipos (READ, STORE y
LOAD). En el primer caso se carga el registro de entrada r
j
1
2
imo en
el acumulador, en
1
2
segundo se almacena el contenido del acumula-
dor en el registro de trabajo r
j
1
2
imo y en
1
2
tercero, se carga el
contenido del registro de trabajo r
j
1
2
imo en el acumulador.
Las instrucciones de car
1
2
ter aritm
1
2
ico, recogidas en la Tabla 2, pueden
ser de tres tipos:
1. ADD (suma): se encarga de sumar al acumulador cierto operando (di-
cho operando responde a alguno de los m
1
2
odos de direccionamiento
anteriormente explicados).
2. SUB (resta): substrae al acumulador un cierto operando (de acuerdo a
los mismos m
1
2
odos de direccionamiento anteriores), y por ltimo
1
Tomando prestada la sintaxis del lenguaje de programaci
1
2
C, este tipo de direccio-
namiento ser
1
2
el empleado en el acceso a vectores (arrays). Considerar como ejemplo
la expresi
1
2
a := b[j], donde a es una variable, b[] es un vector (array) y j es un
1
2
dice
2
En el lenguaje C, este tipo de direccionamiento vendr
1
2
dado por los punteros, pu-
di
1
2
dose asimilar el operador al el operador de desreferenciaci
1
2
* del lenguaje C.
Considerar como ejemplo la expresi
1
2
a := *b[j], donde a es una variable, b[] es un
vector (array) de punteros y j es un
1
2
dice que indica el puntero desreferenciar
A.1. M
I
1
2
UINAS RAM 125
Instrucci
1
2
Operando Sem
1
2
tica
READ j r
0
:= i
j
READ j r
0
:= i
r
j
STORE j r
j
:= r
0
STORE j r
r
j
:= r
0
LOAD = j r
0
:= j
LOAD j r
0
:= r
j
LOAD j r
0
:= r
r
j
Tabla 1 Instrucciones de acceso a los registros
3. HALF: cuyo objetivo es almacenar en el acumulador el cociente de divi-
dir a este por dos. La importancia de esta instrucci
1
2
reside en que nos
permite hacer un desplazamiento a la derecha del acumulador (calcular
el cociente de dividir por dos se puede interpretar como un desplaza-
miento a la derecha en la representaci
1
2
binaria en el que se desprecia
el ltimo bit, correspondiente al guarismo de las unidades), de manera
econ
1
2
ica.
Instrucci
1
2
Operando Sem
1
2
tica
ADD = j r
0
= r
0
+j
ADD j r
0
= r
0
+r
j
ADD j r
0
= r
0
+r
r
j
SUB = j r
0
= r
0
j
SUB j r
0
= r
0
r
j
SUB j r
0
= r
0
r
r
j
HALF r
0
:=
r
0
2
|
Tabla 2 Instrucciones aritm
1
2
icas
Las instrucciones encargadas del control del ujo del programa se recogen
en la Tabla 3. Podemos distinguir, grosso modo, dos tipos: saltos incondicio-
nales (JUMP) o condicionales (JPOS, JZERO o JNEG). Estos ltimos atienden a la
condici
1
2
de positividad, negatividad o nulidad del acumulador para llevarse
a cabo.
Cabe destacar que el potencial de las m
1
2
uinas RAM queda inaltera-
do si, por ejemplo, se suprimen las instrucciones SUB, HALF, JUMP, JPOS,
JNEG, puesto que sus tareas se pueden llevar a cabo mediante combinaciones
de las restantes. Su inclusi
1
2
atiende tanto a motivos de claridad como de
126 AP
ENDICE A. M
I
1
2
UINAS RAM
Instrucci
1
2
Operando Sem
1
2
tica
JUMP j := j
JPOS j si r
0
> 0 entonces := j
JZERO j si r
0
= 0 entonces := j
JNEG j si r
0
< 0 entonces := j
HALT := 0
Tabla 3 Instrucciones de control de ujo
acercamiento a la sintaxis de los lenguajes de ensamblador de los modernos
microprocesadores.
Para completar la descripci
1
2
de una m
1
2
uina RAM, resta describir
c
1
2
o evoluciona, o se ejecuta, un programa. Para ello recurriremos, al igual
que en el caso de las m
1
2
uinas de Turing, al concepto de conguraci
1
2
.
Denici on 160 Dado un programa RAM := (
1
, . . . ,
m
) (cada
i
, con
1 i m, es una instrucci
1
2
de uno de los tipos descritos en las Tablas
1, 2 y 3) y una sucesi
1
2
nita de registros de entrada I := (i
1
, . . . , i
n
),
llamaremos conguraci
1
2
de la m
1
2
uina RAM a todo par ordenado (, R),
donde es un entero que indica la instrucci
1
2
a ejecutar y R es una sucesi
1
2
nita que indica el contenido de los registros de trabajo que en algn momento
han sido utilizados.
Obviamente, a la luz de las instrucciones que admite un m
1
2
uina RAM,
los registros de entrada no se modican a lo largo de la ejecuci
1
2
del pro-
grama RAM, por lo que resultar
1
2
superuo que
1
2
tos se reejaran en la
conguraci
1
2
de la m
1
2
uina.
Como conguraci
1
2
inicial tomamos la dada por el par (1, ) puesto que,
ad initium, la instrucci
1
2
a ejecutar es la primera y los registros de trabajo no
han sido inicializados con valor alguno. La transici
1
2
de una conguraci
1
2
a otra se lleva a cabo de acuerdo con la sem
1
2
tica presentada en las Tablas
1, 2 y 3. Obviamente, si la instrucci
1
2
ejecutada es del tipo READ, STORE,
LOAD, ADD, SUB o HALF, el contador de programa se incrementa en 1 si no,
este se actualiza de acuerdo a lo indicado por la instrucci
1
2
.
Un ejemplo sencillo de m
1
2
uina RAM se da a continuaci
1
2
.
Ejemplo 161 (Multiplicaci
1
2
) El programa RAM descrito en la Tabla 4
lleva a cabo la multiplicaci
1
2
de dos nmero enteros, almacenados en i
1
e i
2
,
empleando el algoritmo de multiplicaci
1
2
binario. El resultado lo almacena
en el acumulador, i.e. en el registro r
0
.
A.1. M
I
1
2
UINAS RAM 127
Etiqueta Instrucci
1
2
Comentario
1 READ 1 [k indicar >
1
2
la iteraci >
1
2
]
2 STORE 1 [r
1
contiene i
1
]
3 STORE 5 [r
5
contiene i
1
2
k
, actualmente i
1
]
4 READ 2
5 STORE 2 [r
2
contiene i
2
]
6 HALF
7 STORE 3 [r
3
contiene i
2
/2
k
]
8 ADD 3
9 SUB 2
10 JZERO 14
11 LOAD 4 [suma r
5
a r
4
s >
1
2
o si
12 ADD 5 el k-- >
1
2
imo bit de i
2
es cero]
13 STORE 4 [r
4
contiene i
1
(i
2
mod 2
k
)]
14 LOAD 5
15 ADD 5
16 STORE 5
17 LOAD 3
18 JZERO 20 [si i
2
/2
k
| = 0 hemos terminado]
19 JUMP 5 [si no se repite]
20 LOAD 4 [el resultado se carga en el acumulador]
21 HALT
Tabla 4 Programa RAM para la multiplicaci
1
2
(algoritmo binario).
Dada la mayor complejidad, resulta presumible que su capacidad sea al
menos equiparable a la de las m
1
2
uinas de Turing. El siguiente Teorema
formaliza este punto.
Teorema 162 Sea L
ENDICE A. M
I
1
2
UINAS RAM
utilizados en las tareas de inicializaci
1
2
del proceso mientras que el resto de
los registros estar
1
2
destinados a simular la cinta de la m
1
2
uina de Turing.
El programa RAM comienza copiando la entrada a los registros r
4
, . . . , r
n+3
.
Para ello, recorre los registros de entrada hasta que encuentra un 0, i.e. un
car
1
2
ter blanco .. La posici
1
2
en la que se encuentra se almacena en el
registro r
2
. El fragmento de programa RAM encargado de llevar a cabo esta
tarea ser
1
2
el siguiente:
Etiqueta Instrucci
1
2
Comentario
1 LOAD =4 [r
3
:= 4]
2 STORE 2
3 LOAD =1 [r
2
= 1]
4 STORE 3
5 READ 2 [r
0
:= i
r
2
]
6 JZERO 15 [si r
0
= 0, i.e. ., terminamos]
7 STORE 3 [r
r
3
:= i
r
2
]
8 LOAD 2 [incrementamos r
2
]
9 ADD =1
10 STORE 2
11 LOAD 3 [incrementamos r
3
]
12 ADD =1
13 STORE 3
14 JUMP 5 [repetimos]
15 . . . [hemos terminado de copiar]
Una vez copiada la entrada a los registro pertinentes, el programa RAM
simula los movimientos de la m
1
2
uina de Turing uno a uno. Para ello, a
cada
j
y q K, con (q,
j
) = (q,
l
, D), les asociamos el siguiente
fragmento de c
1
2
igo:
Etiqueta Instrucci
1
2
Comentario
N
q,
LOAD 1 [leemos el car >
1
2
ter de la cinta]
N
q,
+ 1 SUB j [si es el car >
1
2
ter (suponemos que
N
q,
+ 2 JZERO N
q,
+ 4 la codificaci >
1
2
de es j)]
N
q,
+ 3 JUMP N
q,+1
N
q,
+ 4 LOAD = l [escribimos
l
en la cinta]
N
q,
+ 5 STORE 1
N
q,
+ 6 LOAD 1 [nos desplazamos en la cinta]
N
q,
+ 7 ADD = D
N
q,
+ 8 STORE 1
N
q,
+ 9 JUMP N
p,
1
[comenzamos simulaci >
1
2
del estado p]
A.1. M
I
1
2
UINAS RAM 129
Por ltimo, la aceptaci
1
2
o el rechazo de la entrada pueden simularse me-
diante una secuencia de instrucciones que carguen 1
1
2
0 en el acumulador
(el registro r
0
) seguidas de una instrucci
1
2
HALT.
Puesto que por cada movimiento de la m
1
2
uina de Turing se llevan a cabo
un nmero de instrucciones acotado por una constante (dependiente del nmero
de estados y del nmero de s
1
2
bolos de la m
1
2
uina), se necesitan a lo m
1
2
O(f(n)) pasos de la m
1
2
uina RAM para simularla.
El rec
1
2
roco del anterior resultado es cierto en los siguientes t
1
2
minos:
Teorema 163 Sea g : D N N una funci
1
2
computada por un progra-
ma RAM en tiempo acotado por f(n). Entonces, existe una m
1
2
uina de
Turing con siete cintas que computa g(N) en tiempo acotado por O(f(n)
3
).
Demostraci on . Con el n de demostrar el Teorema, basta describir la
m
1
2
uina de Turing encargada de simular el programa .
La utilidad de cada una de las cintas es la siguiente:
La primera cinta contiene la entrada y nunca se sobrescribe,
La segunda cinta almacena una representaci
1
2
de los registros de tra-
bajo de la m
1
2
uina RAM, i.e. de los rs. Dicha representaci
1
2
consiste
en una serie de cadenas de la forma i : r(i) (representados en binario) y
separadas por ;. Entre ellas admitimos la posibilidad de que existan
caracteres blanco, por lo que para indicar el nal de la cinta, suponemos
que el alfabeto contiene un car
1
2
ter especial . Cada vez que se ac-
tualiza el registro r
i
, la anterior cadena i : r(i) se borra, escribi
1
2
dose
la nueva al nal de la cinta (justo antes del ) insertando caracteres
blancos si es necesario.
La ltima cinta est
1
2
destinada a la salida. Si se alcanza una instrucci
1
2
HALT, se copia el contenido del registro r
0
, i.e. de la segunda componente
del par 0 : r(0), a la ltima cinta y se para.
El resto de las cintas son de trabajo.
Para simular el funcionamiento del programa RAM, la m
1
2
uina de Turing
utiliza un conjunto de estados para cada instrucci
1
2
del programa RAM.
130 AP
ENDICE A. M
I
1
2
UINAS RAM
Apendice B
Problema de la
correspondencia de Post
:=
#, $ un nuevo alfabeto. Sea a
i
la cadena obtenida a partir a
i
insertando
smbolos # tras cada car acter de a
i
. Sea b
i
la cadena obtenida a partir de b
i
insertando el smbolo $ antes de cada car acter de b
i
. Denimos adem as las
siguientes cadenas de caracteres:
a
0
= #a
1
b
0
= b
1
a
k+1
= $ b
k+1
= #$.
Finalmente, denimos las siguientes listas:
A
= (a
0
, a
1
, . . . , a
k+1
) y
B.1. EL PROBLEMA DE LA CORRESPONDENCIA DE POST 133
B
= (b
0
, b
1
, . . . , b
k+1
).
Obviamente, las listas A
y B
y
B
0
y b
0
son las unicas cadenas que comienzan por el smbolo
# y a
r+1
y b
r+1
son las unicas cadenas que nalizan por $, tenemos que
i
1
= 0 y i
r
= k + 1. Finalmente, puesto que a
0
coincide con a
1
(salvo el
primer car acter), y este esta construido a partir de a
1
y que b
0
coincide con
b
1
(salvo el primer car acter), y este esta construido a partir de b
1
, se sigue
que 1, i
2
, . . . , i
r
es una soluci on para el problema de la correspondencia de
Post modicado.
B.1.2. Indecibilidad
En esta Subsecci on demostramos la indecibilidad del Problema de la Co-
rrespondencia de Post. Gracias al Lema 165, basta demostrar que el Problema
de la Correspondencia de Post Modicado es indecidibles, tal y como arma
el siguiente Teorema.
Teorema 166 El Problema de la Correspondencia de Post Modicado es
indecidible, i.e. no recursivo.
Demostraci on .
1
Construyamos una reducci on de L
u
al problema de corres-
pondencia de Post. Para ello, a partir de un par M, w) debemos construir
un instancia del problema de la correspondencia de Post, i.e. dos lista A, B
sobre un cierto alfabeto.
Suponiendo que M = (K, , , s), denimos
:= #, donde # es
un nuevo smbolo. La idea es construir un par de listas A, B de manera
que si existe soluci on al problema de correspondencia esta sea de la forma
#sw#u
1
q
1
v
1
. . . #u
k
q
k
v
k
, donde
(u
i
, q
i
, v
i
), para 1 i k, es una conguraci on de la m aquina de
Turing v alida (sw representa la conguraci on inicial (q
0
, u
0
, v
0
), donde
q
0
= s, u
0
= y v
0
= w),
(u
0
, q
0
, v
0
), . . . , k(u
i
, q
i
, v
k
) es la secuencia de conguraciones de M en
la entrada w, i.e.
(u
0
, q
0
, v
0
)
M
. . .
M
k(u
i
, q
i
, v
k
), , y
1
Observense las similitudes existentes entre esta demostraci on y la del Teorema 116.
134AP
siguientes:
Grupo 0.- Los primeros elementos de A y B son los siguientes:
Lista A Lista B
# #sw
Simplemente se encargar de inicializar el proceso de simulaci on de la
m aquina de Turing mediante concatenaci on de cadenas.
Grupo 1.- Las siguientes cadenas se encargan de copiar los fragmentos
de las codicaciones de las conguraciones que no se ven afectados por
la computaci on.
Lista A Lista B
para cada
# #
Grupo 2.- Las siguientes cadenas se encargan de simular el movimiento
de la m aquina de Turing, considerando para cada p K, , , ,
q K si, no, h y las cadenas
Lista A Lista B
q p si (q, ) = (p, , )
q p si (p, , ) = (p, , )
q# si (q, .) = (p, , )
q# p# si (q, .) = (p, , )
Grupo 3.- Con el nalizar el proceso de simulaci on (si procede) consi-
deramos, para cada q si, no, h y , , las cadenas
Lista A Lista B
q q
q q
q q
B.1. EL PROBLEMA DE LA CORRESPONDENCIA DE POST 135
y para cada q si, no, h
Lista A Lista B
q## #
En lo que sigue, llamaremos soluci on parcial del problema de la Correspon-
dencia de Post Modicado con listas A y B, a todo par (x, y)
tal
que
x e y son concatenaci on de cadenas correspondientes de las listas A y
B, y
existe una cadena z
S
A
a
i
S
A
c
i
: 1 i m
S
A
a
i
c
i
: 1 i m
S
B
b
i
S
B
c
i
: 1 i m
S
B
b
i
c
i
: 1 i m.
Obviamente, L(G) = L
A
L
B
.
Una instancia del problema de correspondencia de Post (A, B) tiene soluci on,
digamos i
1
, . . . , i
r
, si y s olo si se tiene
a
i
1
a
ir
c
ir
c
i
1
= b
i
1
b
ir
c
ir
c
i
1
.
Esto es, si y s olo si G es ambigua.
Apendice C
GNU Free Documentation
License
Version 1.2, November 2002
Copyright c 2000,2001,2002 Free Software Foundation, Inc.
59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
Everyone is permitted to copy and distribute verbatim copies of this license document, but changing it is not allowed.
Preamble
The purpose of this License is to make a manual, textbook, or other functional and useful document freein the
sense of freedom: to assure everyone the eective freedom to copy and redistribute it, with or without modifying it, either
commercially or noncommercially. Secondarily, this License preserves for the author and publisher a way to get credit for
their work, while not being considered responsible for modications made by others.
This License is a kind of copyleft, which means that derivative works of the document must themselves be free in
the same sense. It complements the GNU General Public License, which is a copyleft license designed for free software.
We have designed this License in order to use it for manuals for free software, because free software needs free
documentation: a free program should come with manuals providing the same freedoms that the software does. But this
License is not limited to software manuals; it can be used for any textual work, regardless of subject matter or whether it
is published as a printed book. We recommend this License principally for works whose purpose is instruction or reference.
1. APPLICABILITY AND DEFINITIONS
This License applies to any manual or other work, in any medium, that contains a notice placed by the copyright
holder saying it can be distributed under the terms of this License. Such a notice grants a world-wide, royalty-free license,
unlimited in duration, to use that work under the conditions stated herein. The Document, below, refers to any such
manual or work. Any member of the public is a licensee, and is addressed as
2
ou. You accept the license if you copy,
modify or distribute the work in a way requiring permission under copyright law.
A Modied Version of the Document means any work containing the Document or a portion of it, either copied
verbatim, or with modications and/or translated into another language.
A Secondary Section is a named appendix or a front-matter section of the Document that deals exclusively with
the relationship of the publishers or authors of the Document to the Documents overall subject (or to related matters)
and contains nothing that could fall directly within that overall subject. (Thus, if the Document is in part a textbook of
mathematics, a Secondary Section may not explain any mathematics.) The relationship could be a matter of historical
connection with the subject or with related matters, or of legal, commercial, philosophical, ethical or political position
regarding them.
The Invariant Sections are certain Secondary Sections whose titles are designated, as being those of Invariant
Sections, in the notice that says that the Document is released under this License. If a section does not t the above
denition of Secondary then it is not allowed to be designated as Invariant. The Document may contain zero Invariant
Sections. If the Document does not identify any Invariant Sections then there are none.
The Cover Texts are certain short passages of text that are listed, as Front-Cover Texts or Back-Cover Texts, in
the notice that says that the Document is released under this License. A Front-Cover Text may be at most 5 words, and
a Back-Cover Text may be at most 25 words.
A Transparent copy of the Document means a machine-readable copy, represented in a format whose specication
is available to the general public, that is suitable for revising the document straightforwardly with generic text editors
or (for images composed of pixels) generic paint programs or (for drawings) some widely available drawing editor, and
that is suitable for input to text formatters or for automatic translation to a variety of formats suitable for input to text
137
138 AP
IA
[14] E. Post. A variant of recursively unsolvable problem. Bull. AMS, 52:264
268, 1946.
[15] A. Turing. On computable numbers, with an application to entschei-
dungsproblem. Proc. London Math. Society, 42(2):230265, 1936.
Indice alfabetico
arbol de derivaci on, 50
aceptaci on
por una m aquina de Turing, 61
Aut omata
nito
con transiciones , 9
no determinista, 6
aut omata
a pila determinista, 45
linealmente acotado, 85
a pila, 41
nito
determinista, 3
c alculo de funciones
por una m aquina de Turing, 63
clausura, respec. , 9
complejidad
en espacio, 72
en tiempo, 71
conguraci on
de un aut omata a pila, 42
de una m aquina de Turing, 60
conguraci
1
2
de una m
1
2
uina RAM, 126
derivaci on
en una gram atica regular, 17
derivaci on directa
(gram aticas generales), 80
derivaci on
gram atica independiente del con-
texto, 49
equivalencia entre
aut omatas nitos y
expresiones regulares, 19
estados
equivalentes, 33
expresi on regular, 15
forma sentencial, 49
funci on de transici on
AFD, 3
extendida (AFD), 4
extendida (AFN), 6
extendida (AFN), 10
Funciones
recursi on, 115
recursi on restringida, 116
recursivas (totales), 116
recursivas parciales, 117
recursivas primitivas, 115
composici on, 113
iniciales, 112
recursi on primitiva, 113
gram atica
general (o no restringida), 80
sensible al contexto, 85
gram atica
lineal a derecha, 16
regular, 16
independiente de contexto, 48
homomorsmo, 29
inverso, 30
145
146
INDICE ALFAB
ETICO
Lema
de aceleraci on lineal, 72
de compresi on de cinta, 73
de computabilidad de
funciones iniciales, 112
la recursion, 115
la recursi on primitiva, 113
la composici on, 113
de reducci on de cintas, 73
eliminaci on de indeterminismo,
74
lenguaje
asociado a una propiedad, 104
aceptado por AFD, 4
aceptado por AFN, 7
aceptado por AFN, 10
aceptado por un aut omata lineal-
mente acotado, 86
de una gram atica
regular, 17
diagonal, 98
enumerable, 65
generado por una gram atica, 80
independiente del contexto, 49,
85
recursivamente enumerable, 62
recursivo, 61
universal, 100
lenguaje aceptado
por un aut omata a pila
por estado nal, 42
por pila vaca, 43
m aquina de Turing
con k cintas, 67
determinista, 60
no determinista, 69
m
1
2
uina RAM, 123
paso de computaci on, 60
en un aut omata a pila, 42
propiedad
de los lenguajes recursivamente
enumerables, 103
rechazo
por una m aquina de Turing, 61
reducci on, 102
relaci on
de equivalencia, 33
Teorema
Equivalencia entre AFD y AFN,
8
equivalencia entre AFD y AFN
, 11
existencia de la m aquina univer-
sal, 99