Teor´ıa de Aut´omatas y Lenguajes Formales

Laura M. Castro Souto
Primer Cuatrimestre
Curso 2000/2001
2
´
Indice de cuadros
3
4
´
INDICE DE CUADROS
Cap´ıtulo 0
Introducci´on
En la asignatura de Teor´ıa de Aut´omatas y lenguajes formales vamos a tratar
los “cimientos”, los fundamentos te´oricos de todo lo que tiene que ver con la inform´atica
y los computadores. No en vano a este campo se le denomina en ocasiones Inform´atica
Te´orica.
Estudiaremos los lenguajes formales, lenguajes con una estructura formal, matem´a-
tica, con unas reglas que nos permitir´an usarlos de forma correcta. Veremos esas directrices
y posteriormente qu´e resultar´ıa correcto y qu´e no ateni´endonos a ellas.
Construiremos aut´omatas para poner en pr´actica las posibilidades de los lenguajes.
Enlazando ambos, las gram´aticas, asociadas tanto a los lenguajes como a los aut´o-
matas.
lenguajes formales aut
´
omatas gram
´
aticas
l. regulares a. finitos g. regulares
l. indep. del contexto a. de pila g. indep. del contexto
l. recursivos funciones mi-recursivas
l. recursivamente m
´
aquinas de turing λ-c
´
alculo
enumerables problemas
Las gram´aticas regulares son fundamentales para el estudio de los compiladores, puesto
que permiten hacer de forma c´omoda el an´alisis l´exico. Las gram´aticas independientes del
contexto, por su parte, nos facilitan el an´alisis sint´actico.
En la segunda parte de la asignatura veremos el concepto fundamental que constituyen
las M´aquinas de Turing, un modelo matem´atico de toda la teor´ıa de la computaci´on. En su
contexto, las funciones mi-recursivas, en las que se basan todos los lenguajes imperativos,
y su equivalente base de los lenguajes de programaci´on funcional, el λ-c´alculo.
Por ´ ultimo, nos ocuparemos de los muchos problemas que se pueden resolver y tambi´en
de los que no se pueden resolver, que son a´ un muchos m´as.
5
6 CAP
´
ITULO 0. INTRODUCCI
´
ON
Cap´ıtulo 1
Alfabetos y lenguajes
1.1. Alfabetos, palabras y lenguajes
Llamamos alfabeto, y lo representamos

, a un conjunto finito de s´ımbolos que
utilizamos para construir frases, programas, representaciones de n´ umeros. . .
Una palabra (o cadena) es una secuencia finita de s´ımbolos de un alfabeto. A las
palabras se les puede dar significado e interpretaci´on como s´ımbolos. Cada s´ımbolo puede
a su vez ser interpretado como una palabra. Son palabras: pan, pppban,. . .
Ejemplo:

= ¦a, b, 1, 2¦ Palabras: ab, ba, b12, ba2abbb
Representaremos por ε (a veces por λ) el concepto de palabra vac´ıa, que es impres-
cindible y simboliza la palabra que no tiene ning´ un s´ımbolo.
Se denomina cierre de sigma ´o sigma estrella,


, al conjunto de todas las palabras
que se pueden construir a partir de un alfabeto.
Ejemplo:

= ¦1, 2¦ ;


= ¦ε, 1, 2, 11, 12, 21, 22, 111, . . . ¦
La longitud [ω[
1
de una palabra es el n´ umero de s´ımbolos del alfabeto que contiene.
Por ejemplo, [21221[ = 5.
Concatenar dos palabras es poner una a continuaci´on de la otra:



−→


(w, z) wz
ε (neutro)
Se definen las potencias de una palabra:
ω
n
=
_
ε si n = 0
ωω
n−1
si n > 0
Usaremos tambi´en otros conceptos simples y sencillos ampliamente conocidos, como
prefijo, sufijo, subcadena,. . .
1
Por convenio, utilizaremos las letras a, b, c,. . . y los n´ umeros 1, 2, 3,. . . para representar s´ımbolos y
las letras u, v, w,. . . para representar palabras.
7
8 CAP
´
ITULO 1. ALFABETOS Y LENGUAJES
La inversa ´o traspuesta de una palabra es:
ω
I
=
_
_
_
ω si ω = ε
y
I
a si ω = ay, con
a ∈

y ∈


Lenguajes
Dado un alfabeto cualquiera

, hemos definido


. A partir de esto, decimos que un
lenguaje / es un subconjunto de


, / ⊆


.
Tenemos ℵ
1
lenguajes. Sobre un mismo alfabeto se pueden tener diferentes lenguajes.
Un lenguaje importante es el lenguaje vac´ıo, ∅. Tambi´en es un lenguaje, y diferente, el
lenguaje ¦ε¦.
Concatenaci´on de lenguajes:
/ B =
_
ωx /
ω ∈ /
x ∈ B
_
Potencia de un lenguaje:
/
n
=
_
¦ε¦ n = 0 (potencia cero)
//
n−1
n > 0
Otras propiedades:
/ ¦ε¦ = /.
/ ∅ = ∅.
/∪ B, /∩ B.
¯
/ =


−/.
/ (B ∪ () = /B ∪ /(.
(B ∪ () / = B/∪ (/.
Dos lenguajes son iguales cuando / ⊂ B y B ⊂ /.
Se llama cierre de Kleene ´o cierre estrella de /, /

, a la uni´on de todos los posi-
bles subconjuntos de palabras que se pueden formar con las palabras que est´an presentes
en dicho lenguaje.
/
0
, /
1
, /
2
, . . . /
n
, . . .
_
n=0
/
n
= /

Si establecemos el l´ımite inferior en n = 1, se obtiene el cierre positivo de /:
_
n=1
/
n
= /
+
Puesto que /
0
= ¦ε¦ , /

y /
+
son iguales si / contiene la palabra vac´ıa; de lo
contrario, ambos se diferencian en ¦ε¦.
1.1. ALFABETOS, PALABRAS Y LENGUAJES 9
Ejemplo:
/ = ¦a¦
/
+
= ¦a, aa, aaa, . . . ¦
/

= ¦ε, a, aa, aaa, . . . ¦
Otras propiedades:
/ /

= /

/ = /
+
.
/
I
=
_
ω
I
/ω ∈ /
_
.
(/
I
)
I
= /.
(/ B)
I
= B
I
/
I
.
10 CAP
´
ITULO 1. ALFABETOS Y LENGUAJES
Cap´ıtulo 2
Lenguajes Regulares
2.1. Lenguajes sobre alfabetos
Sea

= ¦a
1
, a
2
, . . . a
n
¦ un alfabeto con n s´ımbolos. Para ver que


es enumera-
ble simplemente podemos ver que es posible “contar” todas las palabras que se pueden
construir con ´el:
ε 0
a
1
1
a
2
2
.
.
.
.
.
.
a
n
n
a
1
a
1
n + 1
a
1
a
2
n + 2
.
.
.
.
.
.
a
1
a
n
2n
a
2
a
1
2n + 1
a
2
a
2
2n + 2
.
.
.
.
.
.
a
n
a
n
n
2
a
1
a
1
a
1
n
2
+ 1
.
.
.
.
.
.
Sin embargo, los lenguajes construidos sobre

podemos asociarlos con 2


, de modo
que no es un conjunto enumerable.
Lenguajes regulares
Se definen:
(a) ∅ es un lenguaje regular.
(b) ¦ε¦ es un lenguaje regular.
(c) ∀a ∈

, ¦a¦ es un lenguaje regular.
(d) Si /, B son lenguajes regulares ⇒ /∪ B, / B, /

, B

son lenguajes regulares.
11
12 CAP
´
ITULO 2. LENGUAJES REGULARES
Y s´olo son lenguajes regulares los que podemos obtener a partir de los b´asicos
aplicando un n´ umero finito de veces los operadores indicados.
As´ı,
¦a
i
i 0¦ es un lenguaje regular porque es el cierre estrella de ¦a¦
¦a
i
b
j
i 0 y j 0¦ es un lenguaje regular porque es la concatenaci´on de
los cierres estrella de ¦a¦ y ¦b¦
¦a
i
b
i
i 0¦ no podemos afirmar que sea un lenguaje regular ateni´endonos
a esta definici´on
2.2. Lenguajes y expresiones regulares
Se considera que:
(a) ∅ y ε son expresiones regulares.
(b) ∀a ∈

, a, entendiendo que a denota ¦a¦, es una expresi´on regular.
(c) Si r, s son expresiones regulares ⇒ r ∪ s, r s y r

, s

son expresiones regulares.
Dos expresiones regulares se dicen equivalentes si el lenguaje que definen es el
mismo. Representaremos por r a la expresi´on y por L(r) al lenguaje que define.
2.3. Aut´omatas finitos deterministas
Un Aut´omata Finito Determinista (A.F.D.)
1
es una colecci´on de 5 elementos:
/ = (

, Q, s, T, δ)
donde:

es un alfabeto (denominado alfabeto de entrada)
Q es un conjunto finito de estados
2
s ∈ Q es un elemento especial que llamamos estado inicial
T ⊆ Q, conjunto que llamamos estados finales ´o de aceptaci´on
δ una funci´on de transici´on δ : Q

→ Q
(q
i
, σ) ;δ(q
i
, s)
La funci´on de transici´on debe estar definida para todos los estados posibles, de no ser
as´ı el aut´omata no se considera finito determinista.
2.3.1. Representaciones
Los A.F.D. se pueden representar tanto usando un grafo, donde cada nodo es un
estado, que si es final se representa con un doble c´ırculo y si es inicial tiene una flecha
apunt´andole, y cada transici´on est´a indicada por una arista.
Tambi´en puede hacerse uso de una tabla de transiciones, donde se colocan estados
frente a s´ımbolos del alfabeto y se rellenan las casillas seg´ un corresponde.
1
As´ı es como lo abreviaremos.
2
A los elementos de Q los llamamos estados.
2.4. AUT
´
OMATAS FINITOS DETERMINISTAS Y LENGUAJES 13
2.4. Aut´omatas finitos deterministas y lenguajes
Extendemos el concepto de la funci´on δ de modo que:
δ(q
1
, abab) = δ(δ(δ(δ(q
1
, a), b), a), b) = . . .
Una cadena se dice que es aceptada por un aut´omata si ´este, empezando en el estado
inicial y analizando toda la cadena, termina en un estado final ´o de aceptaci´on. Es decir:
Sea ω ∈


, es aceptada por el aut´omata si δ(q
0
, ω) ∈ T
Dado un aut´omata finito cualquiera /, denotaremos por L(/) el lenguaje que
acepta el aut´omata, y lo definimos como las cadenas/palabras construidas en nuestro
alfabeto tales que son aceptadas por el aut´omata:
L(/) = ¦ω ∈


δ(q
0
, ω) ∈ T¦
Dado cualquier lenguaje regular, existe un aut´omata finito que lo acepta, y viceversa.
Dos aut´omatas son equivalentes si el lenguaje que aceptan es el mismo:
L(/
1
) = L(/

)
Para que un A.F. acepte la cadena vac´ıa s´olo hay que hacer que el estado inicial sea
tambi´en un estado final.
2.5. Aut´omatas finitos no deterministas
Nos encontramos con un A.F. no determinista cuando la funci´on de transici´on no
es tal, cuando hay estados en los que, ante la llegada de un s´ımbolo, se puede ir a un
estado o a otro, por ejemplo. Se tiene, pues, que δ ya no es una funci´on; hablaremos de
relaciones o de funciones en otro dominio.
Un Aut´omata Finito No Determinista es una colecci´on de 5 elementos:
/ = (

, Q, T, s, ∆)
donde:

es el alfabeto de entrada
Q es un conjunto finito de estados
T ⊆ Q es tambi´en un conjunto finito de estados finales ´o de acepta-
ci´on
s ∈ Q es el estado inicial
∆ es una relaci´on de transici´on, un subconjunto de: ∆ ⊆ (Q

)Q
Equivalentemente, podemos decir que la funci´on de transici´on ∆ es una funci´on cuyo
codominio es partes de Q:
∆ : Q

→ 2
Q
14 CAP
´
ITULO 2. LENGUAJES REGULARES
(q, σ) ;∆(q, σ) ⊆ Q
La representaci´on es id´entica al caso de los A.F.D., bien mediante grafos, bien me-
diante tablas de transiciones, donde en este caso en cada casilla puede ir un conjunto de
estados.
Tambi´en es posible extender la interpretaci´ on de la aplicaci´on de ∆ a un s´olo s´ımbolo
a la aplicaci´on de ∆ a una cadena, salvo que, esta vez, como cada s´ımbolo puede llevarnos
a m´as de un estado, lo definimos de la siguiente manera:
∆(q
1
, q
2
, . . . q
k
, σ) =
k
_
i=1
∆(q
i
, σ)
∆(q
0
, ω), ω ∈


es un conjunto de estados si el aut´omata es AFN. Una cadena
ser´a aceptada cuando en dicho conjunto de estados haya alg´ un estado final: ∆(q
0
, ω)∩T , =
∅.
Dado un AFN, el lenguaje que acepta es, evidentemente, el formado por las cadenas
que acepta:
L(/) = ¦ω ∈


∆(q
0
, ω) ∩ T ,= ∅¦
Otro tipo de indeterminaci´on es la falta de especificaci´on.
2.6. Equivalencia entre AFD y AFN
¿Se pueden simular unos aut´omatas con otros? Es decir, dado un AFD, ¿podemos
construir un AFN que acepte el mismo lenguaje? La respuesta es afirmativa, ya que todo
AFD se puede pensar como AFN, donde la ∆ lleva siempre a un y s´olo un estado. Aunque
se vea con menos facilidad, al rev´es tambi´en es posible hacerlo.
El procedimiento es siempre finito, porque de un AFN con conjunto de estados Q se
obtendr´a como mucho un AFD con conjunto de estados P(Q), de cardinal 2
|Q|
.
Los estados finales del AFD equivalente a un AFN dado ser´an todos aquellos donde
haya alguno que era estado final en el AFN de partida.
¿Cu´ales son, pues, los motivos para que estudiemos ambos tipos de aut´omatas si son
completamente equivalentes? En ocasiones un problema es m´as f´acil de formular en detalle
con AFN.
Lo que acabamos de ver se expresa matem´aticamente:
Teorema.-
Sea / = (Q,

, s, T, ∆) un AFN. Existe un AFD / = (Q

,

, s

, T

, δ) tal que el
lenguaje que aceptan es el mismo
3
:
L(/) = L(/

)
2.7. ε-transiciones
Las definimos para permitir al aut´omata “hacer cosas” analizando una cadena sin
consumir nada de ella.
3
Ver la demostraci´on por inducci´on en el libro.
2.8. AUT
´
OMATAS FINITOS Y EXPRESIONES REGULARES 15
Dado un aut´omata / = (

, Q, T, s, ∆):
sin ε-transiciones ten´ıamos que ∆ : Q

−→ 2
Q
ahora: ∆ : Q(

∪¦ε¦) −→ 2
Q
.
A la hora de representar, tanto en diagramas como en tablas, ε se trata como un
s´ımbolo m´as. Las ventajas que aportan se traducen en una mayor potencia a la hora del
dise˜ no del aut´omata.
2.7.1. Eliminaci´on de ε-transiciones
Cuando pasamos de un AFN a un AFD, tambi´en hemos de censurar las ε-transiciones.
Para ver c´omo se hace esto, definiremos primero:
Dado un estado q ∈ Q de un aut´omata, llamamos ε-clausura o ε-cerradura, y se
denota ε −c(q) = ¦ conjunto de estados TT es accesible desde Q sin consumir nada de
la cadena (con ε-transiciones
4
) ¦.
La ε-clausura de un conjunto de estados es:
ε −c¦p
1
, p
2
, . . . p
k
¦ =
k
_
i=1
ε −c(p
i
)
Tambi´en se define d(q, σ) = ¦p tenemos una conexi´on de q a p etiquetada con σ¦ es
decir, consiste en quedarnos s´olo con los s´ımbolos.
d(¦p
1
, p
2
, . . . p
k
¦, σ) =
k
_
i=1
d(p
i
, σ)
Lo que se hace entonces para eliminar las ε-transiciones es, pues, dado un estado q,
calculamos ε −c(q), despu´es a d´onde vamos con un s´ımbolo y de nuevo con ε:
ε −c[d(ε −c(q), σ)]
Con lo que hemos visto en los apartados anteriores y las ε-transiciones, podemos
construir un aut´omata que acepte cualquier cadena.
2.8. Aut´omatas finitos y expresiones regulares
Comenzaremos por lo m´as b´asico, que no es sino analizar c´omo han de ser los aut´oma-
tas que s´olo aceptan el vac´ıo, o la palabra vac´ıa, o un ´ unico s´ımbolo:
Un aut´omata que acepte la uni´on de dos lenguajes, es decir, dados:
L(/
1
) asociado a /
1
= (

1
, /
1
, Q
1
, s
1
, T
1
, δ
1
)
L(/
2
) asociado a /
2
= (

2
, /
2
, Q
2
, s
2
, T
2
, δ
2
)
4
Por ello siempre contiene el propio elemento.
16 CAP
´
ITULO 2. LENGUAJES REGULARES
Se representar´ıa:
Y tendr´ıa como caracter´ısticas:
L(/
1
) ∪ L(/
2
)

=

1

2
Q = Q
1
∪ Q
2
∪ s
s (nuevo estado inicial)
T = T
1
∪ T
2
δ(q, a)
_
δ
1
(q, a) si q ∈ Q
1
, a ∈

1
δ
2
(q, a) si q ∈ Q
2
, a ∈

2
De manera m´as general incluso, podr´ıa escribirse:
L(/
1
) asociado a /
1
= (

1
, /
1
, Q
1
, s
1
, T
1
, ∆
1
)
L(/
2
) asociado a /
2
= (

2
, /
2
, Q
2
, s
2
, T
2
, ∆
2
)
Con las mismas caracter´ısticas y funci´on de transici´on:
∆(q, a)
_

1
(q, a) si q ∈ Q
1
, a ∈

1

2
(q, a) si q ∈ Q
2
, a ∈

2
A˜ nadiendo: ∆(s, ε) = ¦s
1
, s
2
¦
Un aut´omata que aceptase la concatenaci´on de dos lenguajes L(/
1
)L(/
2
) tendr´ıa
que los estados finales de /
1
dejar´ıan de serlo porque se ir´ıan al inicial de /
2
:
Con caracter´ısticas:

=

1

2
Q = Q
1
∪ Q
2
∪ s
s = s
1
T = T
2
∆(q, a)
_
δ
1
(q, a) si q ∈ Q
1
, a ∈

1
δ
2
(q, a) si q ∈ Q
2
, a ∈

2
A˜ nadiendo ∆(p, ε) = ¦s
2
¦ ∀p ∈ T
1
En cuanto al cierre estrella (un lenguaje concatenado consigo mismo de 0 a todas
las veces que queramos):
2.8. AUT
´
OMATAS FINITOS Y EXPRESIONES REGULARES 17
Aqu´ı tambi´en Q = Q ∪ s, estado que se a˜ nade para que acepte la palabra vac´ıa,
porque no sabemos si el aut´omata original lo hace; no se podr´ıa modificar el estado inicial
s
1
y ponerlo como final porque corremos el riesgo de modificar el lenguaje que acepta el
aut´omata.
¿Pueden los AF aceptar algo que no sean LR?
La respuesta es negativa. Dado un AF, siempre acepta un lenguaje, y ese lenguaje es
siempre un LR. Veremos c´omo calcularlo.
Sea / = (Q,

, s, T, ∆)
con s = q
0
y A
i
= ¦ω ∈


∆(q
i
, ω) ∩ T ,= 0¦ (cadenas que de q
i
nos llevan a un estado final)
A
0
es el lenguaje que acepta el aut´omata; a partir de los A
i
intentaremos calcular A
0
como una expresi´on regular.
Lema de Arden.- “Una ecuaci´on de la forma X = AX ∪ B donde ε / ∈ A, tiene una
soluci´on ´ unica X = A

B”.
Demostraci´on.- A

B = (A
+
∪ ε)B = A
+
B ∪ B = (AA

)B ∪ B = A(A

B) ∪ B
X = A

B ∪ C
C ∩ A

B = ∅
_
soluci´on mayor
Sustituimos en X = AX ∪ B:
A

B∪C = A(A

B∪C)∪B = A
+
B∪AC∪B = A
+
B∪B∪AC = (A
+
∪ε)B∪AC = A

B∪AC
(A

B ∪ C) ∩ C = (A

B ∪ AC) ∩ C
C = AC ∩ C ⇒ C ⊆ AC
donde A no contiene a ε, de modo que AC deber´ıa ser mayor que C, lo que se contradice
con lo que acabamos de obtener a no ser que C = ∅, caso en el que A

B es soluci´on ´ unica.
Hemos visto que, siempre que no lleve a enga˜ no, podemos identificar L = L(/),
puesto que el lenguaje regular que acepta un aut´omata finito (ya sea determinista, no de-
terminista o no determinista con ε-transiciones) se representa con una expresi´on regular.
Definamos ahora el lenguaje complementario de un lenguaje dado L(/) aceptado
por un aut´omata / construido sobre un alfabeto


:


−L(/) = L(/)
¿Es el lenguaje complementario un lenguaje regular? Dado un aut´omata finito de-
terminista
5
, se tiene que δ(s, ω) = p y p ∈ T o bien p / ∈ T. Seg´ un la definici´on,
5
El uso de esta suposici´on, la del determinismo, es muy significativa; si no se usase, no se podr´ıa hacer
el razonamiento.
18 CAP
´
ITULO 2. LENGUAJES REGULARES
/ = (

, Q, s, Q − T, δ) de modo que ahora una cadena que antes llegaba a un es-
tado de T no es aceptada, o, lo que es lo mismo, se aceptan todas las que no se aceptaban
en /, de modo que s´ı, es un lenguaje regular.
Dados dos lenguajes regulares L
1
, L
2
, tambi´en la intersecci´ on L
1
∩L
2
es un lenguaje
regular. Se puede demostrar:
L
1
, L
2
L.R. ⇒ L
1
, L
2
L.R.
por definici´on L
1
∪ L
2
L.R.
de modo que (L
1
∪ L
2
) ⇒ L
1
∩ L
2
L.R.
2.9. Propiedades de los lenguajes regulares
Veremos a continuaci´ on un lema que nos servir´a para probar que un lenguaje NO es
regular, no obstante, debemos tener cuidado porque no vale para verificar que s´ı lo es.
Lema
Sea L un lenguaje regular infinito
6
. Existe una constante n de forma que si ω ∈ L,
[ω[ n se tiene que ω = uvx con
[v[ 1
[uv[ n
uv
i
x ∈ L ∀i 0
Es decir, cualquier cadena de longitud suficiente se puede dividir en subcadenas de
modo que la primera parte se puede repetir tantas veces como queramos obteniendo siem-
pre cadenas del propio lenguaje.
Gracias al lema anterior, denominado lema del bombeo, podemos deducir algunas
otras propiedades de los lenguajes regulares:
Teorema
Sea / un AF con k estados:
1. L(/) ,= ∅ ⇔ / acepta alguna cadena de longitud menor que k.
2. L(/) infinito ⇔ / acepta alguna cadena de longitud k n < 2k.
demostraci
´
on
1. “⇐” es trivial.
“⇒”: sea ω ∈ L(/); si [ω[ < k, queda demostrado, y si [ω[ k usamos
6
Un lenguaje finito siempre es regular, porque siempre se puede representar por un aut´omata finito.
La propiedad que enuncia este lema la verifican todos los lenguajes regulares, aunque no sean infinitos.
Comprobaremos que un lenguaje no es regular demostrando que no la tiene.
2.9. PROPIEDADES DE LOS LENGUAJES REGULARES 19
el lema del bombeo que nos dice que
ω = uvx
[uv[ k
[v[ 1
_
_
→ uv
i
x ∈ L ∀i 0.
Si hacemos i = 0, ux ∈ L y [ux[ < [ω[; en este punto, hacemos de nuevo
el mismo razonamiento anterior, que se detendr´a en alg´ un punto, puesto
que la longitud de una cadena es siempre finita.
2. “⇐”: sea ω ∈ L, [ω[ = n k n < 2k → condiciones del lema del
bombeo →
_
_
ω = uvx
[uv[ k
[v[ 1
_
_
→ uv
i
x ∈ L ∀i 0. Si tenemos una cadena
por cada i, indudablemente tenemos infinitas, de modo que el lenguaje
es infinito.
“⇒”: si L(/) es infinito, entonces ∃ n = [ω[ k. Si k n <
2k, queda demostrado; sino, si 2k n, aplicamos el lema del bombeo
ω = uvx
[uv[ k
[v[ 1
_
_
uv
0
x ∈ L. Como [v[ k, [ux[ k, y aplicamos el mismo
razonamiento otra vez hasta encontrar una cadena de longitud entre k y
2k −1.
Propiedad
Si L y / son dos lenguajes regulares, entonces tambi´en lo es L ∩ /.
Esta propiedad es muy usada para determinar la regularidad de los lenguajes.
20 CAP
´
ITULO 2. LENGUAJES REGULARES
Cap´ıtulo 3
Lenguajes Independientes del
contexto
3.1. Gram´aticas regulares
Definici´on
Una gram´atica es un conjunto de 4 elementos:
( = (

, ^, o, T)
donde:

es el alfabeto de s´ımbolos o los s´ımbolos terminales
^ es un conjunto de s´ımbolos no terminales o variables
o es el s´ımbolo inicial
T son reglas de producci´on, sustituci´on o reescritura
Las reglas de producci´on, a veces se llamadas simplemente producciones, tienen la forma
A → ω o bien (A, ω) donde A es un s´ımbolo no terminal y ω es una cadena de s´ımbolos
del alfabeto o terminales, y no terminales. Hay una serie de reglas para ω:
a) ω puede contener como m´aximo un s´ımbolo no terminal.
b) si ω tiene un s´ımbolo no terminal, entonces ´este es el s´ımbolo que est´a en el extremo
derecho.
Un ejemplo:

= ¦a, b¦
^ = ¦o, A¦
T : o −→ bA
A −→ aaA [ b [ ε
Se intenta obtener a partir del s´ımbolo inicial de la gram´atica, usando T
las veces que haga falta con el objetivo de llegar a una cadena de s´ımbolos
terminales.
21
22 CAP
´
ITULO 3. LENGUAJES INDEPENDIENTES DEL CONTEXTO
o ⇒ bA ⇒
baaA ⇒ baaaaA ⇒ . . . ⇒
baaaa . . . aab
baaaa . . . aa
bb
b
Para simbolizar la aplicaci´on de una regla varias veces se utiliza el s´ımbolo

=⇒ :
o =⇒ bA

=⇒ b(aa)

A =⇒ b(aa)

b
o

=⇒ b(aa)

b
o

=⇒ b(aa)

y para la aplicaci´on cero o m´as veces
+
=⇒ .
No son v´alidas las producciones:
A =⇒ aBC porque contiene dos s´ımbolos no terminales
A =⇒ Ba porque el s´ımbolo no terminal no est´a a la derecha
3.2. Gram´aticas y lenguajes regulares
Las gram´aticas sirven para generar lenguajes. Denotaremos por L(() el lenguaje gene-
rado por una gram´atica (. Decimos que una gram´atica nos genera un lenguaje de cadenas
tales que desde el s´ımbolo inicial podemos llegar a ellas aplicando las reglas de producci´on:
L(() = ¦ω ∈


o

=⇒ ω¦
Sea L un lenguaje regular cualquiera. Veamos que existe una gram´atica ( que lo
genera:
Dado un lenguaje L, sabemos que existe un A.F. que lo acepta. Llamemos /
(el lenguaje ser´a entonces L(/)) a dicho aut´omata:
/ = (Q,

, s, T, δ)
Construyamos L(() y veamos que tambi´en es aceptado por /.
Sea la gram´atica:
( = (^,

, o, T)
3.2. GRAM
´
ATICAS Y LENGUAJES REGULARES 23
con

=

(mismo alfabeto de s´ımbolos)
^ = Q
o = s
T = ¦(q, ap)δ(q, a) = p¦ ∪ ¦(q, ε)q ∈ T¦
(asociamos producciones y transiciones)
Al rev´es, si tenemos una gram´atica ( y queremos construir el AF que acepte su
lenguaje:
Sea ( una gram´atica regular,
( = (^,

, o, T)
construyamos esta vez un AFN
1
definido de la siguiente manera:
/ = (Q,

, s, T, ∆)
de suerte que
Q = ^ ∪ ¦f¦ y otros, donde f es un estado nuevo
s = o
T = ¦f¦
∆ = 2 posibilidades
Las dos posibilidades para ∆ son:
(a) A =⇒ σ
1
, σ
2
, . . . σ
n
B a˜ nadimos n −1 nuevos estados q
1
, q
2
, . . . q
n−1
:
∆(A, σ
1
σ
2
. . . σ
n
) = ∆(q
1
, σ
2
. . . σ
n
) = ∆(q
2
, σ
3
. . . σ
n
) = ∆(q
n−1
, σ
n
) = B
(b) A =⇒ σ
1
, σ
2
, . . . σ
n
a˜ nadimos igual que antes n −1 nuevos estados q
1
, q
2
, . . . q
n−1
:
∆(A, σ
1
σ
2
. . . σ
n
) = ∆(q
1
, σ
2
. . . σ
n
) = ∆(q
2
, σ
3
. . . σ
n
) = ∆(q
n−1
, σ
n
) = f
con f el nuevo estado final
Puede distinguirse entre producciones lineales por la derecha (A → ωB) y producciones
lineales por la izquierda (A → Bω); ambas son gram´aticas regulares y generan el mismo
lenguaje, siempre que no se permita la coexistencia de las dos a un tiempo. No obstante,
pueden darse casos de equivalencias en que no se cumpla ´esto pero la gram´atica sea
regular, como por ejemplo:
S → aA [ ε
A → Sb
1
Es m´as simple y sabemos que son equivalentes.
24 CAP
´
ITULO 3. LENGUAJES INDEPENDIENTES DEL CONTEXTO
3.3. Gram´aticas independientes del contexto
Definici´on
Una gram´atica independiente del contexto es una 4-tupla tal que
( = (^,

, o, T)
donde:
^ = conjunto de s´ımbolos no terminales

= alfabeto ´o conjunto de s´ımbolos terminales
o = s´ımbolo inicial (s´ımbolo no terminal)
T = conjunto de producciones
En este caso, al conjunto de producciones simplemente le pedimos que sea:
T ⊆ ^ (^ ∪

)

es decir, no le imponemos las condiciones que dict´abamos para las G.R.
El lenguaje que genera una G.I.C. se denomina lenguaje independiente del con-
texto, y, por lo que acabamos de rese˜ nar, toda G.R. es una G.I.C. (el rec´ıproco no es
cierto), y por tanto todo L.R. es un L.I.C. De hecho, los L.R. son un subconjunto estricto
de los L.I.C.
Se dicen independientes del contexto porque un s´ımbolo no terminal puede sustituirse
independientemente de lo que lo acompa˜ ne; en otro caso, se llaman dependientes y las
veremos m´as adelante.
3.4.
´
Arboles de derivaci´on
En ocasiones puede resultar ´ util representar gr´aficamente la secuencia de derivaciones
por producciones que se sigue para llegar a una cadena de s´ımbolos terminales a partir del
s´ımbolo inicial. Dicho gr´afico tiene forma de ´arbol y se conoce como ´arbol de derivaci´ on.
El ´arbol de derivaci´on se construye creando un nodo ra´ız con el s´ımbolo inicial como
etiqueta. Los hijos de este nodo ra´ız ser´an cada uno de los s´ımbolos que aparezcan a la
derecha de la producci´on usada para reemplazar el s´ımbolo inicial. Todo nodo cuya eti-
queta sea un s´ımbolo no terminal, tendr´a como hijos los s´ımbolos del lado derecho de su
producci´on asociada. Los nodos que no tengan hijos ser´an siempre de s´ımbolos terminales,
y leyendo todos los nodos hoja de izquierda a derecha se obtiene la cadena que deriva el
´arbol.
Desgraciadamente, todas las derivaciones posibles para una cadena no tienen por
qu´e dar lugar al mismo ´arbol de derivaci´on. A ra´ız de este handicap surge el concep-
to de gram´atica ambigua:
Una gram´atica ( es ambigua si hay dos o m´as ´arboles de derivaci´ on distintos
para una misma cadena.
3.5. SIMPLIFICACI
´
ON DE GRAM
´
ATICAS INDEPENDIENTES DEL CONTEXTO25
A veces puede encontrarse una gram´atica alternativa y equivalente a una gram´atica
ambigua, es decir, que genere el mismo lenguaje. Sin embargo, si todas las G.I.C. para un
lenguaje son ambiguas (no hay ninguna gram´atica no ambigua que lo genere), entonces
el lenguaje no s´olo es ambiguo sino que se dice que es un lenguaje inherentemente
ambiguo.
Usando el concepto de derivaci´on por la izquierda
2
, una gram´atica ser´a ambigua si
existen dos derivaciones por la izquierda distintas para una misma cadena (lo que implica
que existen dos ´arboles de derivaci´on distintos). La definici´on de derivaci´ on por la
izquierda es:
Derivaci´ on en la cual el s´ımbolo no terminal al que le aplicamos una producci´on
o regla de reescritura es siempre el situado m´as a la izquierda o en el extremo
izquierdo de la cadena.
3.5. Simplificaci´on de gram´aticas independientes del
contexto
Dada una G.I.C. ¿c´omo podemos saber si todos sus s´ımbolos y reglas de producci´on
no son redudantes, si son todos necesarios,. . . ?
A continuaci´ on presentamos una serie de algoritmos, denominados algoritmos de lim-
pieza que, aplicados sobre G.I.C., nos proporcionan su “simplificaci´on”. Es decir, dada una
gram´atica ( = (^,

, o, T), la transformaremos en otra gram´atica (

= (^

,

, o, T

)
equivalente (es decir, L(() = L((

)) de forma que
∀A ∈ ^

A

⇒ ω con ω ∈


El primer objetivo es, pues, quedarnos con los s´ımbolos no terminales que nos llevan a
alg´ un sitio, sobre los cuales, aplicando reglas de producci´on, podemos llegar a una cadena
de s´ımbolos no terminales.
Algoritmo 1
1. Se toman los s´ımbolos no terminales que dan directamente cadenas de
s´ımbolos terminales aplicando alguna regla de reescritura.
2. Se toman los s´ımbolos no terminales que dan s´ımbolos terminales de los
que ya hemos escogido en el paso anterior.
3. Se repite hasta que no se incorpore ning´ un s´ımbolo nuevo.
Una vez hecho esto, nos interesa eliminar los s´ımbolos a los que no se puede llegar
desde el estado inicial o; construimos (

= (^

,

, o, T

) mediante:
Algoritmo 2
1. Empezamos con ^

= o y con T

y

a ∅.
2
An´ alogamente se definir´ıa por la derecha.
26 CAP
´
ITULO 3. LENGUAJES INDEPENDIENTES DEL CONTEXTO
2. Se escoge A ∈ ^

A −→ ω ∈ T, se mete en T

y todo s´ımbolo no
terminal B de ω se introduce en N

y todo s´ımbolo terminal σ de ω se
mete en

.
3. Se repite hasta que no se puedan a˜ nadir nuevas producciones.
Es importante el orden en que se aplican estos dos algoritmos a una gram´atica; debe
hacerse en el orden en que los hemos definido.
Producciones ε
Son producciones de la forma A −→ ε. A se dice anulable si desde A se puede llegar
a ε tras haber aplicado una serie de reglas o producciones:
A

=⇒ ε
Si ε no est´a en L((), todas las producciones ε pueden ser eliminadas; pero si no, no
puede hacerse tan a la ligera. Es esencial identificar los s´ımbolos no terminales anulables.
Para ello contamos con:
Algoritmo 3
1. Identificamos los s´ımbolos anulables directamente mediante una produc-
ci´on, A −→ ε, y se introducen en ^.
2. Si se tiene una producci´on B −→ ω tal que todos los s´ımbolos de ω est´en
en ^, metemos B en ^.
3. Repetir hasta que no se meta nada m´as en ^.
Una vez identificados los s´ımbolos anulables, se procede de la siguiente manera:
Si el lenguaje L(() generado por la gram´atica (, ( = (^,

, o, T), no contiene ε,
existe la posibilidad de, como ya comentamos, eliminar todas las ε-producciones (si
contiene ε al menos tendr´a que quedar una, como veremos). Identificamos ^ con
el m´etodo anterior y modificamos nuestro conjunto de producciones de la siguiente
manera:
Se sustituyen producciones de la forma B −→ X
1
, X
2
, . . . X
n
por producciones B −→
Y
1
, Y
2
, . . . Y
n
de forma que:
• Y
i
= X
i
si X
i
no es anulable.
• Y
i
= X
i
o ε si X
i
es anulable.
• Y
i
,= ε ∀i (ya que si no tenemos B −→ ε, que es lo que queremos evitar).
Si el lenguaje contiene ε, simplemente se consiente que sea a˜ nadida la producci´on
o −→ ε.
3.6. FORMA NORMAL DE CHOMSKY 27
Una producci´on de la forma A −→ B se denomina producci´on unitaria o no gene-
rativa y suelen complicar las gram´aticas de modo innecesario. El siguiente es un algoritmo
para eliminarlas en la medida de lo posible (s´olo afecta a T), y para ponerlo en pr´actica
se define:
Unitario(A) = ¦B ∈ ^ A

=⇒ B usando s´olo producciones unitarias¦
N´otese que A ∈ Unitario(A) porque A → A sin usar producci´on alguna.
Algoritmo 4
1. Inicializamos T

para que contenga todo T (esta vez, en lugar de a˜ nadir,
quitaremos).
2. ∀A ∈ ^ obtenemos Unitario(A).
3. ∀A Unitario(A) ,= A ⇒ ∀B ∈ Unitario(A) de modo que se tenga
B −→ ω ∈ T, a˜ nadimos la producci´on A −→ ω a T

.
4. Eliminamos las producciones unitarias de T

.
3.6. Forma normal de Chomsky
Definici´on
Dada un G.I.C., existe una gram´atica equivalente que tiene una forma especial:
no contiene producciones ε y todas las producciones son de la forma A −→ a
o A −→ BC.
El ´arbol de producci´on de una gram´atica en forma normal de Chomsky es un ´arbol
binario.
Dada una gram´atica ( = (^,

, o, T), supuesto que ε / ∈ L(() (su lenguaje no contie-
ne la palabra vac´ıa), puede transformarse en una gram´atica en forma normal de Chomsky
de la siguiente forma:
Se eliminan todas las producciones ε, los s´ımbolos in´ utiles y las produc-
ciones unitarias.
Una vez realizado el paso anterior, puede asegurarse que A −→ ω ⇒
[ω[ 1. Si [ω[ = 1, entonces ω es un s´ımbolo terminal (ω ∈

); y si
[ω[ > 1 entonces se puede escribir ω = X
1
, X
2
, . . . X
n
.
Si X
i
es un s´ımbolo terminal σ, lo sustituimos por un nuevo no terminal
C
σ
y a˜ nadimos la producci´on C
σ
−→ σ. Tras este paso, todas las pro-
ducciones son de la forma A −→ ω con ω un s´ımbolo terminal o cadena
de no terminales.
Por ´ ultimo, se eliminan las cadenas con m´as de dos s´ımbolos no terminales
en el lado derecho, reemplazando cada producci´on A = B
1
, B
2
, . . . B
n
con
28 CAP
´
ITULO 3. LENGUAJES INDEPENDIENTES DEL CONTEXTO
n 2, por n −1 producciones, de la siguiente manera:
A −→ B
1
D
1
D
1
−→ B
2
D
2
. . .
D
n−2
−→ B
n−1
B
n
donde los D
i
son nuevos no terminales.
Todo L.I.C. que no contenga ε puede ser generado por medio de una G.I.C. en forma
normal de Chomsky. En caso de que la contenga, simplemente permitimos a mayores s´olo
que tenga la producci´on o −→ ε.
Si tenemos un ´arbol correspondiente a una G.I.C. en forma normal de Chomsky de
profundidad m+1, significa que hay al menos un camino de esa longitud, que tendr´a por
tanto m+2 nodos. De ellos, m+1 ser´an no terminales, y el ´ ultimo (hoja), terminal (todo
camino tendr´a como m´aximo un s´ımbolo terminal). Adem´as, la longitud de la cadena m´as
larga que se podr´a derivar con ese ´arbol ser´a 2
m
(ya que en el nivel i el n´ umero m´aximo
de nodos es 2
i3
), o, lo que es lo mismo, para derivar una cadena de longitud mayor o igual
que 2
m
la profundidad del ´arbol ha de ser por lo menos m + 1.
Lema de bombeo para L.I.C.
Sea L un L.I.C. que no contiene ε, ε / ∈ L. Podemos afirmar que existe un
entero k para el cual si z es una cadena de L, z ∈ L, y la longitud de z es
mayor que k, [z[ > k, entonces z se puede escribir o descomponer como:
z = uvwxy
con las condiciones
[uvwx[ k
[v[ +[x[ > 0 (no pueden ser vac´ıos al mismo tiempo)
y verificando que las cadenas generadas mediante el siguiente bombeo est´an en
el lenguaje L
4
:
uv
i
wx
i
y ∈ L ∀i 0
La utilidad fundamental de este lema es encontrar una cadena de la longitud que nos
indica de forma que no se pueda descomponer de esa manera −→ lenguaje no I.C.
Resultado
Dada una gram´atica ( = (^,

, o, T) con [^[ = n, ¿es el lenguaje que gene-
ra, L(() finito o infinito?
L(() es infinito ←→ existe una cadena z ∈ L(() tal que su longitud verifica
2
n−1
< [z[ 2
n−1
+ 2
n
.
3
El nivel del nodo ra´ız es el nivel 0.
4
Ver demostraci´on en el libro.
3.7. PROPIEDADES DE LOS LENGUAJES INDEPENDIENTES DEL CONTEXTO29
Un lenguaje se dice decidible si, dada cualquier cadena z, se puede examinar si
pertenece o no a dicho lenguaje (es decir, si se puede derivar de su s´ımbolo inicial aplicando
reglas de su gram´atica). Para ver si un lenguaje es decidible o no tenemos el siguiente
lema:
Sea ( = (^,

, o, T) una G.I.C. sin ε-producciones y en forma normal de
Chomsky. Sea x una subcadena de


. Se puede determinar, para cada A ∈ ^
y para cada subcadena w de x si A

−−→w
5
.
Uno de los algoritmos que nos permite seguir las producciones correctas para llegar
del s´ımbolo inicial a aceptar la cadena (ahora que sabemos que se puede hacer) es el
algoritmo CYK, que fue construido por Cooke, Younger y Kasami.
3.7. Propiedades de los lenguajes independientes del
contexto
Como ya pod´ıamos anticipar, la uni´on, concatenaci´on y el cierre estrella de lenguajes
independientes del contexto dan como resultado lenguajes independientes del contexto. Sin
embargo, la intersecci´on no tiene por qu´e serlo. Lo que s´ı ocurrir´a ser´a que la intersecci´on
entre un L.I.C. y un L.R. (que, como sabemos, es a su vez un L.I.C. pero m´as restrictivo)
s´ı da como resultado un L.I.C.
6
Tampoco el complementario de un L.I.C. es independiente del contexto.
3.8. Aut´omatas de pila
Construiremos ahora un nuevo tipo de aut´omatas, resultantes de proveer a nuestros
AF de una pila, con las caracter´ısticas habituales de esta estructura.
Definici´on
Un aut´omata de pila no determinista (ADPND) es una 7-tupla:
/ = (Q,

, Γ, ∆, s, T, z)
donde
Q = conjunto finito de estados

= alfabeto de entrada
Γ = alfabeto de pila
7
∆ = regla de transici´on
8
s ∈ Q = estado inicial (de partida)
z ∈ Γ = s´ımbolo inicial de la pila
9
T ⊆ Q = conjunto de estados finales (de aceptaci´on)
5
Ver demostraci´on en el libro.
6
Esto se usa tambi´en para probar que algunos no son L.I.C. V´ease la demostraci´on en el libro.
7
Puede ser distinto de

, son los s´ımbolos que se manejan en la pila.
8
No funci´on, ya que es no determinista.
9
A veces se representa por #, significa el fondo de la pila y suponemos siempre que ya est´a marcado
al empezar; sino, se colocar´ıa en el primer estado.
30 CAP
´
ITULO 3. LENGUAJES INDEPENDIENTES DEL CONTEXTO
La regla de transici´on ∆ se define por medio de ternas del tipo (q, σ, γ) con q ∈ Q,
σ ∈

∪¦ε¦ y γ ∈ Γ, y tras aplicarla se obtiene (p, w) donde p es el estado siguiente y w
una cadena de Γ

que es la que se introduce en la pila.
consideraciones
- Si se da ∆(p, σ, γ) = ∅ entonces la m´aquina se para.
- Pedimos que en la pila necesariamente haya un s´ımbolo (la marca de inicio o fin de
pila):
∆ ⊆ Q(

∪¦ε¦) Γ
.¸¸.
no Γ∪{ε}


Se llama descripci´on instant´anea de un ADPND a la terna (q, w, u), donde q es el
estado actual, w la cadena de entrada que queda por procesar y u el contenido de la pila,
con el s´ımbolo de la cima en el extremo de la izquierda.
3.9. Aut´omatas de pila y lenguajes independientes
del contexto
Los aut´omatas de pila no deterministas aceptan los L.I.C:
Sea ( = (^,

, o, T) una G.I.C. y L = L(() el lenguaje que genera. Buscamos el
ADPND que la representa; dicho aut´omata cumple:
Q = ¦q
1
, q
2
, q
3
¦
Γ = ^ ∪

∪¦z¦
T = ¦q
3
¦
s = q
1
y su regla ∆ est´a compuesta por cuatro tipos de transiciones:
1. Introducci´on del s´ımbolo inicial en la pila: ∆(q
1
, ε, z) = ¦(q
2
, Sz)¦.
2. Cambio de no terminales: ∆(q
2
, ε, A) = ¦(q
2
, w)¦ de modo que A → w es una
producci´on de T y A es un s´ımbolo terminal de ^.
3. Lectura de terminales: ∆(q
2
, a, a) = ¦(q
2
, ε)¦ con a ∈

no terminal.
4. Lectura del s´ımbolo de fin de pila: ∆(q
2
, ε, z) = ¦(q
3
, z)¦
Podemos afirmar, pues, que si L es un L.I.C., entonces existir´a un ADPND / que lo
acepta, L = L(/).
Es m´as, si L es aceptado por un ADPND, entonces L es un L.I.C.
3.10. AUT
´
OMATAS DE PILA DETERMINISTAS 31
3.10. Aut´omatas de pila deterministas
Igual que pasaba cuando compar´abamos AFD y AFND, si tenemos un ADPND en el
cual en cada movimiento (transici´on) se hace una sola cosa, podemos construir un ADPD
que acepte exactamente el mismo lenguaje.
No obstante, si necesitamos hacer m´as de un movimiento, por ejemplo en unas oca-
siones (seg´ un lo que nos llegue y el estado en que estemos) almacenar un s´ımbolo y en
otras compararlo con la cima de la pila y borrar el primer elemento de ´esta, no podr´ıamos
hacerlo.
Por tanto, y al rev´es que ocurr´ıa con los lenguajes regulares, con los lenguajes inde-
pendientes del contexto los ADPD y los ADPND no generan los mismos lenguajes. Es
m´as, hay mucha mayor cantidad de lenguajes para ADPND:
3.11. Forma normal de Greibach
Ya para terminar este tema, veremos otra forma normal que se usa para las gram´aticas
independientes del contexto que es de gran utilidad (sobre todo en algoritmos) por el
modo en que restringe la posici´on en que pueden aparecer los s´ımbolos terminales y los
no terminales.
Antes, veremos una serie de resultados y definiciones, para cuya demostraci´on y ejem-
plos remitimos al libro de texto:
Resultado
Si A → αBγ es una producci´on de una GIC y B → β
1

2
[ . . . [β
m
son todas
las producciones que tienen a B en su lado izquierdo, entonces A → αBγ se
puede reemplazar por A → αβ
1
γ[αβ
2
γ[ . . . [αβ
m
γ.
Definici´on
Una producci´on de la forma A → αA, donde α es una cadena de terminales
y no terminales, se dice que es recursiva por la derecha. An´alogamente se
define la recursividad por la izquierda
10
cuando A → Aα.
Definici´on
Una producci´on de la forma A → αA, donde α es una cadena de terminales
y no terminales, se dice que es recursiva por la derecha. An´alogamente se
define la recursividad por la izquierda cuando A → Aα.
Intentaremos evitar la recursividad por la izquierda, y para ello:
10
Este tipo de recursividad no es deseable.
32 CAP
´
ITULO 3. LENGUAJES INDEPENDIENTES DEL CONTEXTO
Resultado
Si tenemos una GIC ( y A un no terminal cuyas producciones son:
A → Aα
1
[Aα
2
[ . . . [Aα
n
A → β
1

2
[ . . . [β
m
puede construirse una gram´atica equivalente a˜ nadiendo un nuevo no terminal
Z y reemplazando todas las producciones anteriores por:
A → β
1

2
[ . . . [β
m

1
Z[β
2
Z[ . . . [β
m
Z
Z → α
1

2
[ . . . [α
n

1
Z[α
2
Z[ . . . [α
n
Z
Ahora s´ı, llegamos a la definici´on que da nombre a este apartado:
Definici´on
Una GIC est´a en forma normal de Greibach (FNG) si todas las produccio-
nes son de la forma A → aα, donde a es un s´ımbolo terminal y α una cadena
de terminales y no terminales
11
.
Todo lenguaje independiente del contexto puede generarse mediante una gram´atica
independiente del contexto que est´e en forma normal de Greibach.
11
Una definici´on equivalente afirma que α puede ser una cadena de no terminales.
Cap´ıtulo 4
M´aquinas de Turing
En este tema estudiaremos un dispositivo matem´atico en el que se basan las m´aquinas
(computadoras) actuales
1
, fruto de la inventiva del matem´atico A. Turing (1936), y que
en honor a ´el recibe el nombre de M´aquina de Turing.
Entre otras cosas, con una M´aquina de Turing podremos, adem´as de aceptar lenguajes
m´as generales que los regulares y los independientes del contexto, decidir si un problema
es resoluble o no, e incluso analizar si algo es un algoritmo.
4.1. Definici´on de M´aquina de Turing
Una M´aquina de Turing es algo muy sencillo: es una colecci´on de celdillas que se
extienden infinitamente. Cada celdilla almacena un s´ımbolo y se tiene una cabeza lecto-
ra/escritora que puede moverse sobre ellas y leer o escribir en ellas. Formalmente:
Definici´on
Una M´aquina de Turing es una colecci´on de 7 elementos:
/ = (Q,

, Γ, s, , T, δ)
donde
Q es un conjunto finito de estados

es un alfabeto de entrada
Γ es otro alfabeto, alfabeto de la cinta
s ∈ Q es el estado inicial
∈ Γ es el s´ımbolo blanco
T ⊆ Q es el conjunto de estados finales o de aceptaci´on
δ : QΓ → QΓ ¦L, R¦ es la funci´on de transici´on
La funci´on de transici´on δ transforma pares (q, σ) de estado actual y s´ımbolo de la
cinta a ternas (p, t, X) de nuevo estado (estado siguiente), s´ımbolo escrito en la cinta y
movimiento hacia la izquierda o la derecha de la cabeza lectora/escritora. Como se puede
1
La Tesis de Church-Turing afirma que cualquier cosa que haga una m´aquina puede hacerlo una
M´aquina de Turing. Esta aseveraci´on no ha sido ni probada ni refutada, pero rige como admitida.
33
34 CAP
´
ITULO 4. M
´
AQUINAS DE TURING
observar, dentro de su indeterminismo (habr´a pares para los que no est´e definida), cuando
est´a definida, δ es determinista.
notaci
´
on
Representaremos las descripciones instant´aneas de una M´aquina de Turing de dos
maneras:
(q
i
, w
1
σw
2
), con q
i
el estado actual, w
1
la parte de la cinta que nos queda a la
izquierda (suponemos que leemos de izquierda a derecha normalmente), σ el s´ımbolo
sobre el que est´a la cabeza lectora/escritora y w
2
el trozo de cadena que queda a la
derecha.
a
1
a
2
. . . a
k
1
q
i
a
k
. . . a
n
, donde la cabeza lectora/escritora est´a sobre a
k
, el estado ac-
tual es q
i
, etc
2
.
Entre las particularidades que har´an especiales a estos dispositivos tenemos que en
las M´aquinas de Turing no hay transiciones en estados finales y no se necesita consumir
enteramente las cadenas para aceptarlas o rechazarlas.
4.2. M´aquinas de Turing como aceptadoras de len-
guajes
Una M´aquina de Turing se puede comportar como un aceptador de lenguajes. Se
dir´a que una cadena w es aceptada si despu´es de una secuencia de movimientos la M´aqui-
na de Turing lleva a un estado final y para. Formalmente:
Definici´on
Sea / = (Q,

, Γ, s = q
1
, , T, δ) una M´aquina de Turing. El lenguaje
aceptado por / es:
L(/) = ¦ω ∈


[ q
1
ω ¬

ω
1

2
para p ∈ T y ω
i
∈ Γ

¦
Rechazar una cadena supone que la m´aquina se queda parada en un estado que no es
final o bien entra en un bucle infinito.
Un lenguaje que es aceptado por una M´aquina de Turing se conoce como lenguaje re-
cursivamente enumerable, t´ermino que incluye los L.I.C. y representa aqu´ellos cuyas
cadenas pueden ser enumeradas. El subconjunto de los lenguajes recursivamente enume-
rables que se paran en un estado no final cuando la cadena es aceptada se denominan
lenguajes recursivos.
Definici´on
Se dice que una funci´on de cadena f es Turing computable si existe una
M´aquina de Turing / = (Q,

, Γ, q
1
, , T, δ) para la cual q
1
ω ¬

q
f
u para
alg´ un estado final q
f
∈ T, cuando f(ω) = u.
2
Remitimos a las anotaciones para estudiar su representaci´on gr´afica.
4.3. CONSTRUCCI
´
ON DE M
´
AQUINAS DE TURING 35
4.3. Construcci´on de M´aquinas de Turing
Construiremos una serie de M´aquinas de Turing sencillas de modo que al combinarlas
podamos crear otras m´as complejas. Para ello definiremos en primer lugar la combina-
ci´on o composici´on de m´aquinas de Turing.
Sean /
1
= (Q
1
,

, Γ, s
1
, , T
1
, δ
1
) y /
2
= (Q
2
,

, Γ, s
2
, , T
2
, δ
2
) dos M´aqui-
nas de Turing sobre los mismos alfabetos de entrada

y de cinta Γ. Se supone
que Q
1
∩ Q
2
= ∅.
La composici´on de /
1
y /
2
es la M´aquina de Turing / = (Q,

, Γ, s, , T, δ)
denotada por /
1
/
2
, donde
Q = Q
1
∪ Q
2
s = s
1
T = T
2
δ(q, σ) =
_
_
_
δ
1
(q, σ) si q ∈ Q
1
y δ
1
(q, σ) ,= (p, τ, A) ∀p ∈ T
1
δ
2
(q, σ) si q ∈ Q
2
(s
2
, τ, A) si q ∈ Q
1
y δ
1
(p, σ) = (p, τ, A) para alg´ un p ∈ T
1
La composici´on de /
1
y /
2
se comporta como /
1
hasta que ´esta llega a un estado
final, momento en que cambia al estado inicial de /
2
y se comporta como tal hasta que
termina.
4.3.1. Algunas M´aquinas de Turing especiales
Denotaremos por:
R

a la M´aquina de Turing que busca el primer blanco que haya a la derecha de la
posici´on actual
3
.

aqu´ella que busca hacia la izquierda el primer s´ımbolo de la cinta que no sea blanco.
a la M´aquina de Turing que escribe como salida un ´ unico s´ımbolo, a, y permanece
sobre la misma celda.
R la M´aquina de Turing que se mueve una celda a la derecha.
Todas estas M´aquinas de Turing tienen sim´etricas que se denotan de modo an´alogo.
4.4. Modificaciones de las M´aquinas de Turing
Cualquier modificaci´on que se pueda hacer de la M´aquina de Turing que hemos definido
puede a˜ nadirle mayor flexibilidad, pero en cualquier caso ser´a siempre simulable con ´esta,
ya que todas tendr´an la misma potencia computacional (de c´alculo).
Veremos, no obstante, algunas peque˜ nas variaciones:
3
Remitimos al libro para ver su descripci´on y funci´on delta.
36 CAP
´
ITULO 4. M
´
AQUINAS DE TURING
Nuestra M´aquina de Turing requiere siempre que la cabeza lectora-escritora se
mueva en cada transici´on, ya que la funci´on de transici´on es δ : Q Γ →
QΓ ¦R, L¦. Si la modificamos de forma que quede:
δ : QΓ → QΓ ¦R, L, S¦
donde S significa no mover la cabeza lectora-escritora, habilitaremos la posibilidad
de transiciones en las que leamos y escribamos y permanezcamos sobre la misma
celda. Siempre podr´ıa simularse leyendo, escribiendo, movi´endose y regresando con
un movimiento inverso.
Otra modificaci´on sencilla es aqu´ella en la que cada celda de la cinta de nuestra
m´aquina se divide en subceldas. Se dice que la cinta tiene m´ ultiples pistas. Se puede
interpretar como una nueva funci´on de transici´on:
δ : QΓ
n
→ QΓ
n
¦R, L¦
Se puede simular, si se tienen k pistas, con una M´aquina de Turing cuyo alfabeto
de cinta est´a formado por todas las k-tuplas sobre Γ.
Tambi´en podr´ıamos pensar en una M´aquina de Turing cuya cinta se extendiese infi-
nitamente pero en una sola direcci´on (normalmente hacia la derecha). Se simular´ıa
simplemente con marcar con un s´ımbolo una celda a partir de la cual no se pod´ıa
ir hacia la izquierda. Al rev´es, la M´aquina de Turing con una cinta infinita en un
s´olo sentido puede simular una M´aquina de Turing con una cinta infinita en ambos
sentidos si cuenta con dos pistas, cada una de las cuales representa una rama de la
cinta doblemente infinita a partir de un punto de referencia o control.
Llamaremos M´aquina de Turing multicinta a la variaci´ on para la cual se tienen
varias cintas, cada una de ellas con su propia cabeza de lectura-escritura controlada
independientemente. Sin duda, es la m´as potente, pero tambi´en puede ser simulada
con una cinta con 2k + 1 pistas (y ya hemos visto c´omo se simula este tipo de
modificaci´on).
La eliminaci´on del requerimiento de que la regla de transici´on δ sea una funci´on
producir´a la construcci´on de M´aquinas de Turing no deterministas. Simplemente, la
funci´on se define sobre Partes de el conjunto destino de la funci´on original. Su simu-
laci´on se har´a con una M´aquina de Turing de 3 cintas, donde la primera tendr´a la
entrada, la segunda generar´a una “copia” sobre la que se ensayar´ an sucesivamen-
te las posibilidades que se almacenan en la tercera hasta que se d´e (o no) con la
aceptaci´on de la cadena.
4.5. M´aquina de Turing Universal
La M´aquina de Turing Universal es una M´aquina de Turing que a partir de una
m´aquina de Turing / y una cadena de entrada w simula el comportamiento de / sobre
la cadena w.
Si codificamos una M´aquina de Turing / = (Q,

, Γ, s, , T, δ) que tenga un ´ uni-
co estado final o de aceptaci´on
4
q
2
perteneciente a Q = (q
1
, q
2
, . . . , q
n
), y donde Γ =
4
Para forzarlo basta con definirlo y a˜ nadir las transiciones que lleven de los otros a ´el.
4.5. M
´
AQUINA DE TURING UNIVERSAL 37

1
, σ
2
, . . . , σ
m
) de forma que q
i
, σ
i
se representen por cadenas de i unos y las directivas L
y R mediante 1 y 11 respectivamente, usando los ceros como separadores, una M´aquina de
Turing Universal /
u
se puede implementar como una M´aquina de Turing de tres cintas
para la que

= ¦0, 1¦. La primera cinta contiene la codificaci´on de ceros y unos de /.
La segunda, la codificaci´on del contenido de la cinta de / y la tercera guarda el estado
actual de /. /
u
analiza y compara el contenido de las cintas segunda y tercera con el
de la primera hasta que encuentra una transici´on para la configuraci´on codificada o hasta
que agota las posibilidades. Se cumple, adem´as, que la cadena final que quede en la cinta
de /
u
ser´a la codificaci´on de la cadena que hubiera quedado en /.
38 CAP
´
ITULO 4. M
´
AQUINAS DE TURING
Cap´ıtulo 5
M´aquinas de Turing y Lenguajes
5.1. Lenguajes aceptados por M´aquinas de Turing
Ya vimos en el tema anterior las definiciones de lenguajes recursivamente enumerables
y lenguajes recursivos. De su definici´on (ver secci´on 4.2, p´agina 34) se deduce que todo
lenguaje recursivo es recursivamente enumerable, pero el rec´ıproco no siempre es cierto
porque el contenido es estricto
1
.
5.2. Lenguajes Recursivos y Recursivamente Enume-
rables
Dado un lenguaje regular o, lo que es lo mismo, dado un aut´omata finito determinista,
puede construirse una M´aquina de Turing que lo simule haciendo:
Q

= Q∪ ¦q

¦

=

Γ =

∪¦¦
T

= ¦q

¦
δ

(q, σ) = (δ(q, σ), σ, R) para q ∈ Q, σ ∈

δ

(q, ) = (q

, , S) ∀q ∈ T donde S significa no moverse
Es decir, que si L es regular entonces tambi´en es recursivo
2
.
Del mismo modo, un aut´omata de pila (lenguajes independientes del contexto) no
determinista se puede emular con una M´aquina de Turing de dos cintas, una que haga las
transiciones y otra que controle el apilamiento y desapilamiento. De modo que tambi´en po-
demos afirmar que si L es independiente del contexto, entonces es tambi´en recursivo.
Teorema
Si L
1
y L
2
son lenguajes recursivos, entonces L
1
∪ L
2
tambi´en lo es.
Lema
1
Es m´as, hay una cantidad bastante mayor de lenguajes recursivamente enumerables que de recursivos.
2
Para todo AFND se puede construir un AFD equivalente, y viceversa.
39
40 CAP
´
ITULO 5. M
´
AQUINAS DE TURING Y LENGUAJES
Sea L un lenguaje recursivo; entonces existe una M´aquina de Turing / =
(Q,

, Γ, s, , T, δ) que lo acepta, parando para cualquier entrada.
Sea /

= (Q,

, Γ, s, , Q−T, δ). Esta M´aquina de Turing para en un estado
de T cuando se ejecuta sobre una cadena de L. Cuando la cadena no pertenezca
al lenguaje, parar´a sobre alg´ un estado que no sea de T, es decir, parar´ıa en
alg´ un estado de Q−T.
En conclusi´on, si L es un lenguaje recursivo, entonces


−L tambi´en.
Esta es una propiedad que en general no se cumple para los lenguajes recursivamente
enumerables.
Existen lenguajes recursivamente enumerables para los cuales sus inversos no son re-
cursivamente enumerables:
Para una cadena arbitraria de un lenguaje recursivo, la M´aquina de Turing que la
acepta para siempre. Un algoritmo se puede considerar, pues, una M´aquina de Turing
que para siempre, esto es, se asocia con un lenguaje recursivo.
Siguiendo el mismo razonamiento, los lenguajes recursivamente enumerables represen-
tan problemas irresolubles, para los que existen ejemplos a los que no se puede decir ni si
ni no.
Por ´ ultimo, los lenguajes que ni siquiera son recursivamente enumerables, encarnan
problemas no abordables. Puesto que nuestra capacidad de computaci´on no los alcanza,
concluimos con la certeza de que este nuestro mundo de la computaci´on es limitado.
Teorema
Si L
1
y L
2
son lenguajes recursivamente enumerables, entonces L
1
∪L
2
tambi´en
lo es
3
.
Teorema
Si L es un lenguaje recursivamente enumerable para el cual


−L tambi´en
es recursivamente enumerable, entonces L es un lenguaje recursivo.
Se demuestra partiendo del supuesto que tanto L como su opuesto son recursivamente
enumerables. Entonces, analizando cualquier cadena de


tendremos que o bien perte-
nece a uno o bien al otro, esto es, forzosamente uno de los dos la aceptar´a. Si tenemos
una m´aquina que nos simule su uni´on, forzosamente parar´a siempre. Para conseguir una
modificaci´on de la misma que acepte L s´olo hay que sustituir los estados de aceptaci´on de
¯
L por estados de rechazo, de modo que seguir´a deteni´endose siempre y aceptar´a L, esto
es, L habr´a de ser un lenguaje recursivo.
Teorema
Un lenguaje L es recursivamente enumerable si y s´olo si L es enumerado por
alguna m´aquina de Turing.
3
Ver demostraci´on en libro.
5.3. GRAM
´
ATICAS NO RESTRINGIDAS Y LENGUAJES RE 41
5.3. Gram´aticas no restringidas y Lenguajes RE
Definiremos en esta secci´on un ´ ultimo tipo de gram´aticas, el m´as general y menos
restrictivo de todos los que hemos visto, resultante de “liberalizar” el lado izquierdo de
las producciones de una gram´atica independiente del contexto.
Definici´on
Una gram´atica no restringida o gram´atica estructurada por frases es
una 4-tupla
( = (^,

, s, P)
donde:
^ es un alfabeto de s´ımbolos no terminales

es un alfabeto de s´ımbolos terminales tal que ^ ∩

= ∅
s ∈ ^ es el s´ımbolo inicial (no terminal)
P es un conjunto de producciones de la forma α → β con
_
α ∈ (^ ∪

)
+
β ∈ (^ ∪

)

Teorema
Si ( es una gram´atica no restringida, entonces L es un lenguaje recursivamente
enumerable.
demostraci
´
on
Para una gram´atica no restringida ( se pueden listar todas sus cadenas del
tipo S ⇒ w ya que como el n´ umero de producciones es finito, tambi´en lo
ser´an ellas. De igual modo se puede proceder para las cadenas derivadas en
dos, tres,. . . pasos. Puesto que todo el L(() podr´a ser listado de esta manera,
podr´a ser enumerado por una M´aquina de Turing, es decir, es recursivamente
enumerable.
A la inversa, a partir de los movimientos de una M´aquina de Turing (transiciones), se
puede generar un gram´atica no restringida. Esta afirmaci´on nos demuestra que lenguajes
recursivamente enumerables se asocian con gram´aticas no restringidas:
Teorema
Un lenguaje L es recursivamente enumerable si y s´olo si L = L(() para alguna
gram´atica no restringida (.
42 CAP
´
ITULO 5. M
´
AQUINAS DE TURING Y LENGUAJES
5.4. Lenguajes sensibles al contexto y jerarqu´ıa de
Chomsky
Teorema
Una gram´atica ( = (^,

, s, P) es una gram´atica sensible al contexto
4
si todas las producciones son de la forma α → β con α, β ∈ (^ ∪

)
+
y
[α[ [β[.
Seg´ un esta definici´on, en cada paso que aplicamos una derivaci´on la cadena o bien per-
manece igual (de la misma longitud) o bien aumenta, nunca decrece (esto no lo ten´ıamos
en las gram´aticas sin restricciones). Debido a esto reciben el nombre de gram´aticas no
contr´actiles. Podemos ver que adem´as supone un problema para la representaci´ on de ε,
la cadena vac´ıa; permitimos que la regla s → ε pertenezca a P, como ´ unica excepci´on.
Las gram´aticas sensibles al contexto producen una clase de lenguajes, los lenguajes
sensibles al contexto, que est´a estrictamente situada entre los lenguajes independientes
del contexto y los lenguajes recursivos, aunque en principio pudi´esemos pensar que son
m´as generales las I.C. porque permiten sustituir los s´ımbolos sin restricciones. No permi-
ten, por el contrario, cambios de este tipo (con terminales y no terminales a la izquierda).
Adem´as, ya que cualquier G.I.C. se puede poner en Forma Normal de Chomsky, las pro-
ducciones ser´an de la forma A → a o A → BC, que cumplen las especificaciones para
ser G.S.C. As´ı, tenemos que los lenguajes sensibles al contexto son algunos m´as que los
lenguajes independientes del contexto.
Lema
Sea ( = (^,

, s, P) una gram´atica sensible al contexto. Entonces existe
una gram´atica sensible al contexto (
1
= (^
1
,

, s
1
, P
1
) que genera el mismo
lenguaje y en la que s
1
nunca aparece al lado derecho de una producci´on de
P
1
.
Lema
Sea ( = (^,

, s, P) una gram´atica sensible al contexto. Entonces existe una
M´aquina de Turing que para sobre toda entrada y acepta L(()
5
.
Lema
Si L es un lenguaje sensible al contexto, entonces es recursivo.
demostraci
´
on
La demostraci´on consiste en probar que se puede generar una representaci´on
del lenguaje utilizando s´olo ceros y unos
6
.
Lema
Hay lenguajes recursivos que no son lenguajes sensibles al contexto.
L. Sensibles al Contexto L. Rec. L. Rec. Enumerables
4
O gram´atica dependiente del contexto.
5
Remitimos al libro para su demostraci´on.
6
Remitimos a la descripci´on detallada del proceso en el libro.
5.4. LENGUAJES SENSIBLES AL CONTEXTO Y JERARQU
´
IA DE CHOMSKY 43
En 1959, Noam Chomsky clasific´o las gram´aticas en cuatro familias: gram´aticas no
restringidas, sensibles al contexto, independientes del contexto y regulares, conocidas co-
mo gram´aticas de tipo 0, 1, 2 y 3 respectivamente. Los lenguajes que resultan de dichas
gram´aticas tambi´en se identifican como lenguajes de tipo 0, 1, 2 y 3.
El siguiente diagrama de lenguajes se conoce como la jerarqu´ıa de Chomsky:
L. Regulares
L.I.C. deterministas
L.I.C. no deterministas
L. Sensibles al Contexto
L. Recursivos
L. Recursivamente Enumerables
44 CAP
´
ITULO 5. M
´
AQUINAS DE TURING Y LENGUAJES
Cap´ıtulo 6
Resolubilidad
Como ya dijimos en su momento (secci´on 4.2, p´agina 34) una funci´on Turing compu-
table es aqu´ella para la que existe una M´aquina de Turing que computa f(ω) para toda
ω del dominio de f.
Por ejemplo, se tiene como funci´on computable la funci´on caracter´ıstica de un lenguaje
recursivo A
L
:
A
L
(ω) =
_
1 si ω ∈ L
0 si ω / ∈ L
Sin embargo, la funci´on caracter´ıstica de un lenguaje recursivamente enumerable no
es computable ya que hay cadenas para las que la M´aquina de Turing que lo acepta no
para.
En este tema nos ocuparemos de los llamados problemas de decisi´on, como son
por ejemplo decir si, dada una gram´atica independiente del contexto (, L(() es vac´ıo
(ver secci´on 2.9, p´agina 18), o, dada una gram´atica sensible al contexto, si una cadena ω
pertenece al lenguaje que genera,. . .
Definici´on
Se dice que los problemas de decisi´on son resolubles si existe un algoritmo
que es capaz de responder s´ı o no a cada uno de sus casos. Si el algoritmo no
existe, el problema se dice irresoluble.
6.1. El problema de la parada
El problema irresoluble m´as conocido es el problema de la parada para M´aquinas
de Turing, que se enuncia como sigue:
Sea / una M´aquina de Turing arbitraria con un alfabeto de entrada

, y
sea ω ∈


. ¿Parar´a / con la cadena ω como cadena de entrada?
El problema de la parada para las M´aquinas de Turing es irresoluble.
La irresolubilidad del problema de la parada se usa para demostrar que otros proble-
mas tambi´en son irresolubles. La estrategia consiste en demostrar que si un determinado
problema se puede resolver ello implicar´ıa que el problema de la parada tambi´en es reso-
luble.
45
46 CAP
´
ITULO 6. RESOLUBILIDAD
6.1.1. El problema de la cinta en blanco
Este problema consiste en decidir si una M´aquina de Turing parar´a cuando comience
su ejecuci´on con una cinta en blanco. Este problema tambi´en es irresoluble.
demostraci
´
on
Sea una M´aquina de Turing / y una cadena cualquiera ω ∈

. Sea /

la M´aquina de Turing que comienza con una cinta en blanco, escribe en ella
ω y posteriormente se reposiciona en la primera celda de ω en el estado q
1
(primer estado de /) y la emula a partir de ah´ı. Si tuvi´esemos un algoritmo
que determinase si una M´aquina de Turing arbitraria que comienza con una
cinta en blanco para, podr´ıamos determinar si /

para. Claro que /

para si
y s´olo si la M´aquina de Turing / original para con la cadena ω como entrada,
de modo que tendr´ıamos una soluci´on para el problema de la parada, algo que
sabemos que no es cierto y que nos lleva a afirmar, consecuentemente, que el
problema de la cinta en blanco es irresoluble.
Esta t´ecnica de demostraci´on (reducir un problema al problema de la parada) se
denomina reducci´on.
6.2. El problema de correspondencia de Post
Un caso del PCP
1
se llama sistema de correspondencia de Post y est´a compuesto por
tres elementos:
Un alfabeto

.
Dos conjuntos A y B con el mismo n´ umero de elementos, que ser´an cadenas no
vac´ıas de

: A = ¦u
1
, u
2
, . . . , u
k
¦ y B = ¦v
1
, v
2
, . . . , v
k
¦.
Una soluci´on para un caso del problema de correspondencia de Post es una secuencia
de ´ındices i
1
, i
2
, . . . i
n
para los que se cumple:
u
i
1
u
i
2
. . . u
i
n
= v
i
1
v
i
2
. . . v
i
n
El problema de determinar si un sistema de correspondencia de Post arbitrario tiene
soluci´on es el problema de correspondencia de Post, y no hay ning´ un algoritmo que lo lleve
a cabo, de modo que, como veremos, es irresoluble.
Definiremos el PCP modificado (PCPM) como el PCP para el que buscamos una
soluci´on en la que la secuencia de ´ındices debe comenzar por i
1
= 1, es decir, u
i
1
= u
1
y
v
i
1
= v
1
.
Lema
Si el PCP es resoluble, entonces el PCPM tambi´en es resoluble.
1
Abreviaremos as´ı el Problema de correspondencia de Post.
6.2. EL PROBLEMA DE CORRESPONDENCIA DE POST 47
demostraci
´
on
Sean A = ¦u
1
, u
2
, . . . , u
k
¦ y B = ¦v
1
, v
2
, . . . , v
k
¦ una muestra del PCPM y
supongamos que cada u
i
= a
i
1
a
i
2
. . . a
i
m
i
y cada v
i
= b
i
1
b
i
2
. . . b
i
n
i
.
Definimos para cada i:
y
i
= a
i
1
$a
i
2
$ . . . $a
i
m
i
$ y z
i
= $b
i
1
$b
i
2
. . . $b
i
n
i
donde $ es un nuevo s´ımbolo que no est´a en

. Sea % otro s´ımbolo que no
pertenece a

; construimos tambi´en:
y
0
= $y
1
z
0
= z
1
y
k+1
= % z
k+1
= $ %
Tenemos, pues el nuevo “juego de fichas”,
que es un PCP, problema que hemos supuesto que tiene soluci´on. Claro que
este PCP tiene soluci´on si y s´olo si el original PCPM tiene soluci´on, ya que
cualquier soluci´on debe comenzar por y
0
, ya que es el ´ unico y
i
que empieza
por $, que es el primer car´acter de todos los z
i
, as´ı que i
1
= 0. Adem´as, el
´ ultimo i debe ser k + 1, pues s´olo z
k+1
e y
k+1
coinciden en su ´ ultimo s´ımbolo.
Por tanto, las fichas se ordenar´an,
es decir,
$a
1
1
$a
1
2
. . . $a
1
m
1
$
. ¸¸ .
ficha 0
. . . $ %
.¸¸.
ficha k+1
= $b
1
1
$b
1
2
$ . . . $b
1
n
1
. ¸¸ .
ficha 0
$ . . . $ %
.¸¸.
ficha k+1
Eliminando los $ se tiene
u
1
u
i
2
. . . u
i
r
= v
1
v
i
2
. . . v
i
r
de donde se deduce que si el PCP es resoluble, lo es el PCPM.
Gracias a este lema podremos demostrar que el PCP es irresoluble si demostramos que
el PCPM, que es m´as estructurado y por tanto simplificar´a el proceso, es irresoluble. Para
ello, demostraremos que si el PCPM tuviese soluci´on, el problema de la parada tambi´en
la tendr´ıa.
48 CAP
´
ITULO 6. RESOLUBILIDAD
Demostraci´on de la irresolubilidad del PCPM
Supongamos que el PCPM es resoluble, que existe un algoritmo que determina si tiene
soluci´on un PCPM cualquiera. Pretendemos demostrar que hay un algoritmo que puede
determinar si una M´aquina de Turing arbitraria / parar´a con una entrada ω.
Cualquier M´aquina de Turing puede convertirse en una m´aquina que s´olo para en un
estado de aceptaci´on, haciendo que si para en alg´ un estado de no aceptaci´on se introduzca
en un bucle o algo as´ı. Esta modificaci´on no afecta al lenguaje que acepta la m´aquina.
Sea / = (Q,

, Γ, s, , T, δ) y una cadena ω sobre

. Construiremos una muestra
del PCPM para el que la determinaci´on de si tiene soluci´on (que suponemos que podemos
hacer) sea equivalente a determinar si / para sobre la entrada ω.
(Ver el resto de la demostraci´on en el libro, p´agina 248 en adelante.)
El razonamiento realizado, pues, tiene el siguiente esquema:
1. Demostramos que el problema de la parada es irresoluble.
2. Argumentamos que si el PCP es resoluble ⇒ el PCPM es resoluble.
3. Asimismo, si el PCPM es resoluble ⇒ el problema de la parada tambi´en
lo ser´a.
4. Pero el problema de la parada es irresoluble, de modo que el PCPM se
deduce irresoluble.
5. Y puesto que el PCPM es irresoluble ⇒ el PCP es irresoluble.
6.3. Irresolubilidad en lenguajes independientes del
contexto
Como ya vimos en los temas 2 y 3 muchas de las preguntas que se pueden responder
para lenguajes regulares se convierten en preguntas irresolubles para gram´aticas indepen-
dientes del contexto. La irresolubilidad del PCP proporciona una herramienta ´ util para
demostrar la irresolubilidad de algunos problemas.
El planteamiento ser´a el de costumbre: sobre una pregunta acerca de gram´aticas o
lenguajes independientes del contexto, si es decidible, el PCP lo ser´ıa tambi´en.
Antes de nada veremos, pues, c´omo se construye una gram´atica independiente del
contexto a partir de un sistema de correspondencia de Post arbitrario:
Sean

, A = ¦u
1
, u
2
, . . . , u
k
¦ y B = ¦v
1
, v
2
, . . . , v
k
¦, as´ı como I = ¦1, 2, . . . , k¦. Sean
entonces (
A
= (¦S
A
¦,

∪¦1, 2, . . . , k¦, S
A
, P
A
) y (
B
= (¦S
B
¦,

∪¦1, 2, . . . , k¦, S
B
, P
B
)
donde S
A
y S
B
son s´ımbolos nuevos, P
A
contiene producciones de la forma S
A
→ u
i
S
A
a
i
[u
i
a
i
y P
B
de la forma S
B
→ v
i
S
B
i[u
i
i.
Por la forma de estas dos gram´aticas se tienen dos resultados:
Si este PCP tiene soluci´on, ser´a de la forma:
u
i
1
u
i
2
. . . u
i
n
= v
i
1
v
i
2
. . . v
i
n
6.3. IRRESOLUBILIDAD EN LENGUAJES INDEPENDIENTES DEL CONTEXTO49
que se generan por las gram´aticas definidas en el siguiente formato:
u
i
1
u
i
2
. . . u
i
n
i
n
i
n−1
. . . i
2
i
1
= v
i
i
1
v
i
2
. . . v
i
n
i
n
i
n−1
. . . i
2
i
1
y por tanto ambos lenguajes tienen alg´ un elemento en com´ un,
L((
A
) ∩ L((
B
) ,= ∅
Por otro lado, si tenemos alguna cadena
ω ∈ L((
A
) ∩ L((
B
)
quiere decir que
ω = u
i
1
u
i
2
. . . u
i
n
i
n
i
n−1
. . . i
2
i
1
= v
i
i
1
v
i
2
. . . v
i
n
i
n
i
n−1
. . . i
2
i
1
es decir, el PCP tiene una soluci´on:
u
i
1
u
i
2
. . . u
i
n
= v
i
1
v
i
2
. . . v
i
n
Por tanto, podemos deducir el lema que se expone a continuaci´on.
Lema
El problema de la intersecci´on vac´ıa para dos gram´aticas independientes del
contexto arbitrarias es irresoluble.
Tambi´en se tienen los siguientes resultados:
Teorema
Para una gram´atica independiente del contexto arbitraria, la pregunta L(() =


es irresoluble.
No tenemos un algoritmo que resuelva esta cuesti´on. Lo demostraremos:
demostraci
´
on
Poder decir si L(() =


es equivalente a poder responder si
¯
L(() = ∅. Sea un
PCP cualquiera y construyamos (
A
y (
B
. Llamemos L =
¯
L((
A
) ∪
¯
L((
B
)(
2
). Entonces,
¯
L = L((
A
) ∩ L((
B
) y como esto ´ ultimo no lo podemos saber, se deduce que no podemos
saber si L(() =


.
Teorema
El problema de la ambig¨ uedad para gram´aticas independientes del contexto es
irresoluble.
2
En general, no tiene por qu´e cumplirse que el complementario de un lenguaje independiente del
contexto sea independiente del contexto (as´ı como tampoco se cumple para la intersecci´on de dos). Se
cumple sin embargo en los regulares y tambi´en para L((
A
) y L((
B
).
50 CAP
´
ITULO 6. RESOLUBILIDAD
demostraci
´
on
Sea un PCP y (
A
y (
B
las gram´aticas que generamos a partir de ´el, que no son
ambiguas. Construyamos otra gram´atica ( para la que:
^ = ¦S, S
A
, S
B
¦
T = P
A
∪ P
B
∪ ¦S → S
A
[S
B
¦
S
T el mismo
Si pudi´esemos decir si es o no ambigua, podr´ıan pasar dos cosas:
1. Si es ambigua es que hay una cadena que se puede generar de estas dos formas:
S ⇒ S
A
⇒ . . .
S ⇒ S
B
⇒ . . .
Claro que una cadena as´ı estar´ıa en la intersecci´ on de los lenguajes generados por
las dos gram´aticas relativas al PCP, es decir, dar´ıa una soluci´on al PCP, lo cual
sabemos que no es posible.
2. Rec´ıprocamente, si no es ambigua, no hay ninguna cadena en la intersecci´ on, pero
esto hace que sepamos con certeza que el PCP no tiene soluci´on, y sabemos que
para dicho problema no sabemos decir si la tiene o no.
De modo que se sigue que el problema de la ambig¨ uedad no puede ser resoluble.
Cap´ıtulo 7
Funciones µ-recursivas
En este tema analizaremos qu´e funciones necesitamos y c´omo las construiremos para
sacar toda la potencia de una M´aquina de Turing, esto es, aqu´ellas necesarias para la cons-
trucci´on de lenguajes de programaci´on imperativos (qu´e es lo m´ınimo que ha de tenerse)
1
.
As´ı pues, ¿qu´e clase de funciones estudiaremos? Pues aqu´ellas de la forma:
f : N
n
−→ N
m
Distinguiremos entre funciones totales (definidas para cualquier entrada, para cual-
quier valor del dominio = N
n
) y funciones parciales (definidas en X, su dominio es
dom(f) ⊆ X). Estas definiciones suponen que las funciones totales se pueden tratar como
un subconjunto de las parciales.
Ejemplo:
div(x, y) =
_
parte entera x/y
si y ,= 0
N
2
→ N
7.1. Tipos de funciones
7.1.1. Funci´ onn z
Establece una correspondencia entre la cadena vac´ıa y 0:
z() = 0 o bien
z : N −→ N
x ; z(x) = 0
Se puede ampliar el concepto para que asigne a cualquier cadena el 0.
7.1.2. Funci´ on siguiente
Establece el sucesor de un elemento:
x : N −→ N
x ; s(x) = x + 1
1
Para los lenguajes funcionales, esto lo analiza el λ−c´alculo.
51
52 CAP
´
ITULO 7. FUNCIONES µ-RECURSIVAS
7.1.3. Funci´ on proyecci´ on
Devuelve una posici´on concreta de un vector de elementos:
P
(n)
i
: N N. . . N −→ N
(x
1
, x
2
, . . . x
i
, . . . x
n
) ; x
i
Ejemplos:
P
3
2
(7, 5, 2) = 5
P
4
1
(1, 2, 4, 2) = 1
7.1.4. Composici´on y Recursi´on primitiva
Con las funciones b´asicas que acabamos de ver construiremos muchas otras usando la
composici´on y la recursi´on primitiva.
Composici´on
Podemos definir:
combinaci
´
on
f : N
k
−→ N
m
g : N
k
−→ N
n
f g : N
k
−→ N
m+n
f g(¯ x) ; (f(¯ x), g(¯ x))
donde ¯ x es un vector de k componentes.
Tambi´en hacemos:
composici
´
on
f : N
k
−→ N
m
g : N
k
−→ N
n
f ◦ g : N
k
−→ N
m
¯ x ; g[f(¯ x)]
Recursi´on primitiva
Ve´amoslo primero con un ejemplo y luego generalizaremos.
Supongamos que queremos una funci´on que nos de el n´ umero de nodos en un ´arbol
completo y equilibrado si cada nodo que no es hoja tiene x hijos y la profundidad del
´arbol es y:
f : N
2
−→ N
f(x, y) ; num. nodos
7.1. TIPOS DE FUNCIONES 53
Podr´ıa enunciarse:
f(x, 0) = x
0
f(x, y + 1) = x
y
x
. ¸¸ .
este nivel
+ f(x, y)
. ¸¸ .
niveles anteriores
Usando. . .
g : N −→ N
x ; g(x) = 1
h : N
3
−→ N
h(x, y, z) ; z + x
y
x
podemos definir f a partir de g y h por recursi´on primitiva de la siguiente manera:
f(x, 0) = g(x)
f(x, y + 1) = h(x, y, f(x, y))
Definici´on general
g : N
k
−→ N
m
h : N
k+m+1
−→ N
m
f(¯ x, 0) = g(¯ x)
f(¯ x, y + 1) = h(¯ x, y, f(¯ x, y))
f : N
k+1
−→ N
m
7.1.5. Funciones recursivas primitivas
¿Nos llega ya con lo que tenemos? Pues podemos ver que a´ un no si nos damos cuenta
de que hemos estado trabajando todo el rato s´olo con funciones totales.
A partir de las funciones b´asicas (cero, siguiente y proyecci´on) y aplicando un n´ umero
finito de veces los operadores (composici´on y recursi´on primitiva) obtendremos un nuevo
grupo de funciones que denominaremos funciones recursivas primitivas.
Funci´ on suma
mas(x, 0) = x = P
1
1
(x)
mas(x, y + 1) = (x + y) + 1 = h(x, y, mas(x, y)) = s(P
3
3
(x, y, mas(x, y)))
Funciones constantes
K
3
m
: N −→ N
¯ x ; 3 = s(s(s(z(P
m
1
(x
1
, . . . x
m
)))))
54 CAP
´
ITULO 7. FUNCIONES µ-RECURSIVAS
Funci´ on producto
mult(x, 0) = 0 = z(x)
mult(x, y + 1) = x + mult(x, y) = h(x, y, mult(x, y)) = mas(P
3
1
, P
3
3
)[x, y, mult(x, y)]
= mas(x, mult(x, y))
Funci´ on exponenciaci´on
exp(x, 0) = 1 (funci´on constante 1)
exp(x, y + 1) = h(x, y, exp(x, y)) = mult(x, exp(x, y))
Funci´ on predecesor
pred(0) = z() = 0
pred(y + 1) = h(y, pred(y)) = P
2
1
(y, pred(y))
Funci´ on monus (-)
Es la sustracci´on propia, que devuelve la diferencia x−y si x > y y 0 en caso contrario:
monus(x, 0) = P
1
1
(x)
monus(x, y + 1) = h(x, y, monus(x, y)) = pred(monus(x, y))
7.1.6. Predicados
Podemos considerarlos como otro tipo de funciones, que devuelven siempre 0 ´o 1. Por
ejemplo,
eq(x, y) =
_
1 si x = y
0 si x ,= y
¿C´omo lo ponemos en forma recursiva primitiva? Sencillo:
eq(x, y) = 1 −((y −x) + (x −y))
eq(x, y) = monus(1, mas(monus(y, x), monus(x, y)))
Otro ejemplo:
neq(x, y) =
_
1 si x ,= y
0 si x = y
En forma recursiva primitiva:
neq(x, y) = monus(1, eq(x, y))
Si tenemos una funci´on que coincide con una recursiva primitiva salvo en un n´ umero
finito de puntos, tambi´en es recursiva primitiva:
7.1. TIPOS DE FUNCIONES 55
f(x) =
_
¸
¸
_
¸
¸
_
7 x = 0
1 x = 1
3 x = 5
g(x) recursiva primitiva en otro caso
Se puede escribir:
eq(x, 0) 7 + eq(x, 1) 1 + eq(x, 5) 3 + neq(x, 0) neq(x, 1) neq(x, 5) g(x)
Funci´ on cociente
coc(x, y) =
_
parte entera de x ÷y si y ,= 0
0 si y = 0
Equivalentemente:
coc(x, 0) = 0
coc(x, y) =
Sin embargo, hay funciones computables que no podemos construir de esta manera
(expres´andolas como recursivas primitivas). Un ejemplo es la funci´on de Ackerman, que
se define:
A(0, y) = y + 1
A(x + 1, 0) = A(x, 1)
A(x + 1, y + 1) = A(x, A(x + 1, y))
Esta funci´on permite enumerar todas las funciones recursivas primitivas que hemos
visto hasta ahora.
A(1, 1) = A(0, A(1, 0)) = A(0, A(0, 1)) = A(0, 2) = 3
A(2, 1) = A(1, A(2, 0)) = A(1, A(1, 1)) = A(1, A(0, A(1, 0)))
= A(1, A(0, A(0, 1))) = A(1, A(0, 2)) = A(1, 3) = A(0, A(1, 2))
= A(0, A(0, A(1, 1))) = A(0, A(0, A(0, A(1, 0)))) = A(0, A(0, A(0, A(0, 1)))) =
= A(0, A(0, A(0, 2))) = A(0, A(0, 3)) = A(0, 4) = 5
En general,
A(1, y) = y + 2
A(2, y) = 2y + 3
A(3, y) = 2
y+3
−3
A(4, y) = 2
2
y veces
2
16
−3
i ∈ N f(i) < A(i, i)
56 CAP
´
ITULO 7. FUNCIONES µ-RECURSIVAS
7.1.7. Funciones µ-recursivas ´o recursivas parciales
Hemos trabajado constantemente con funciones totales, ¿acaso no pueden definirse
funciones parciales sobre otras funciones parciales? Por supuesto que es posible, y se
hace:
f : N
n
−→ N
g : N
n+1
−→ N
¿C´omo definir f(¯ x) a partir de g? Pues lo haremos asign´andole g(¯ x, y) = 0 con la
menor y posible y con la condici´on de que g(¯ x, z) est´e definida para todo valor de z
anterior a y. Se representa:
f(¯ x) = µy[g(¯ x, y) = 0]
Un ejemplo:
g(0, 0) = 2 g(1, 0) = 3 g(2, 0) = 8
g(0, 1) = 3 g(1, 1) = 4 g(2, 1) = 3
g(0, 2) = 1 g(1, 2) = 0 g(2, 2) = no definida
g(0, 3) = 5 g(2, 3) = 6
g(0, 4) = 0 g(2, 4) = 0
En este caso:
f(0) = 4
f(1) = 2
f(2) no est´a definida porque g no lo est´a para todos los anteriores
De modo que as´ı podemos definir unas funciones parciales a partir de otras, por ejem-
plo:
div(x, y) = µt[(x + 1) −(mult(t, y) + y) = 0]
Con lo que hemos visto, s´ı tenemos ahora cubiertas todas las funciones computables
posibles. De hecho, la tesis de Church-Turing afirma que para definir un lenguaje s´olo
se necesita hacer:
7.1. TIPOS DE FUNCIONES 57
enteros no negativos, no definici´on tipos;
incr nombre;
decr nombre;
while nombre <> 0 do
.
.
.
end;
58 CAP
´
ITULO 7. FUNCIONES µ-RECURSIVAS
Cap´ıtulo 8
Estudio de la Complejidad
Computacional
En uno de los temas anteriores (cap´ıtulo 6, p´agina 45) vimos que hay problemas que
carecen manifiestamente de soluci´on alcanzable. Otra situaci´on que se da en ocasiones
es la de tener un problema cuya soluci´on sabemos c´omo calcular pero que no puede ser
alcanzada en un tiempo asequible. En torno a esta idea se definen los conceptos de pro-
blemas tratables y problemas intratables.
Se definen:
Time D
M
(x) =
_
n´ umero de pasos dados si M (M.T.) termina con entrada x
no definida en otro caso
Space D
M
(x) =
_
n´ umero de celdas usadas si M (M.T.) termina con entrada x
no definida en otro caso
Dada una funci´on t(n), se dice que DTM
1
est´a en un tiempo t(n) si el tiempo que
tarda en acabar est´a acotado por dicha funci´on (an´alogamente para el espacio).
Si una NDTM
2
est´a en t(n), entonces su DTM asociada est´a en c [t(n)].
La complejidad de la verificaci´ on de un problema suele equivaler a la complejidad no
determinista en t´erminos de MT.
8.1. Clasificaci´on de problemas
Se definen diferentes clases de problemas:
Problemas P Reciben este nombre los problemas tratables (que podemos
resolver) con una MTD en un tiempo polin´omico, es decir, cuando t(n)
es un polinomio (complejidad n
i
).
Problemas NP Se llama as´ı a los problemas no tratables, aqu´ellos que re-
querir´ıan un tiempo polin´omico en una MTND.
1
M´aquina de Turing Determinista.
2
M´aquina de Turing No Determinista.
59
60 CAP
´
ITULO 8. ESTUDIO DE LA COMPLEJIDAD COMPUTACIONAL
Problemas PSPACE y NPSPACE Son problemas P y NP pero con res-
pecto al espacio que requieren. Resultan ser equivalentes (no as´ı los P y
los NP, alqo que todav´ıa no est´a probado).
Problemas Exponenciales Son los que consumen un tiempo exponencial
en una MTD.
Normalmente, siempre se necesita un poco m´as de espacio que de tiempo, pero siempre
´este es el par´ametro m´as importante.
Dentro de los problemas NP se tiene un tipo especial, los problemas NP-completos,
NP-duros o NP-dif´ıciles, que, como su propio nombre indica, son de los m´as compli-
cados (un ejemplo es el problema del grafo hamiltoniano en el problema del viajante).
Cualquier problema NP se puede reducir a uno de estos problemas NP-completos en
tiempo polin´omico. Asimismo, dentro de los problemas NP-completos se puede “pasar”
de uno a otro.
´
Indice general
0. Introducci´on 5
1. Alfabetos y lenguajes 7
1.1. Alfabetos, palabras y lenguajes . . . . . . . . . . . . . . . . . . . . . . . . 7
2. Lenguajes Regulares 11
2.1. Lenguajes sobre alfabetos . . . . . . . . . . . . . . . . . . . . . . . . . . . 11
2.2. Lenguajes y expresiones regulares . . . . . . . . . . . . . . . . . . . . . . . 12
2.3. Aut´omatas finitos deterministas . . . . . . . . . . . . . . . . . . . . . . . . 12
2.3.1. Representaciones . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12
2.4. Aut´omatas finitos deterministas y lenguajes . . . . . . . . . . . . . . . . . 13
2.5. Aut´omatas finitos no deterministas . . . . . . . . . . . . . . . . . . . . . . 13
2.6. Equivalencia entre AFD y AFN . . . . . . . . . . . . . . . . . . . . . . . . 14
2.7. ε-transiciones . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14
2.7.1. Eliminaci´on de ε-transiciones . . . . . . . . . . . . . . . . . . . . . 15
2.8. Aut´omatas finitos y expresiones regulares . . . . . . . . . . . . . . . . . . . 15
2.9. Propiedades de los lenguajes regulares . . . . . . . . . . . . . . . . . . . . 18
3. Lenguajes Independientes del contexto 21
3.1. Gram´aticas regulares . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21
3.2. Gram´aticas y lenguajes regulares . . . . . . . . . . . . . . . . . . . . . . . 22
3.3. Gram´aticas independientes del contexto . . . . . . . . . . . . . . . . . . . . 24
3.4.
´
Arboles de derivaci´ on . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24
3.5. Simplificaci´on de gram´aticas independientes del contexto . . . . . . . . . . 25
3.6. Forma normal de Chomsky . . . . . . . . . . . . . . . . . . . . . . . . . . . 27
3.7. Propiedades de los lenguajes independientes del contexto . . . . . . . . . . 29
3.8. Aut´omatas de pila . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29
3.9. Aut´omatas de pila y lenguajes independientes del contexto . . . . . . . . . 30
3.10. Aut´omatas de pila deterministas . . . . . . . . . . . . . . . . . . . . . . . . 31
3.11. Forma normal de Greibach . . . . . . . . . . . . . . . . . . . . . . . . . . . 31
4. M´aquinas de Turing 33
4.1. Definici´on de M´aquina de Turing . . . . . . . . . . . . . . . . . . . . . . . 33
4.2. M´aquinas de Turing como aceptadoras de lenguajes . . . . . . . . . . . . . 34
4.3. Construcci´on de M´aquinas de Turing . . . . . . . . . . . . . . . . . . . . . 35
4.3.1. Algunas M´aquinas de Turing especiales . . . . . . . . . . . . . . . . 35
4.4. Modificaciones de las M´aquinas de Turing . . . . . . . . . . . . . . . . . . 35
4.5. M´aquina de Turing Universal . . . . . . . . . . . . . . . . . . . . . . . . . 36
61
62
´
INDICE GENERAL
5. M´aquinas de Turing y Lenguajes 39
5.1. Lenguajes aceptados por M´aquinas de Turing . . . . . . . . . . . . . . . . 39
5.2. Lenguajes Recursivos y Recursivamente Enumerables . . . . . . . . . . . . 39
5.3. Gram´aticas no restringidas y Lenguajes RE . . . . . . . . . . . . . . . . . 41
5.4. Lenguajes sensibles al contexto y jerarqu´ıa de Chomsky . . . . . . . . . . . 42
6. Resolubilidad 45
6.1. El problema de la parada . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45
6.1.1. El problema de la cinta en blanco . . . . . . . . . . . . . . . . . . . 46
6.2. El problema de correspondencia de Post . . . . . . . . . . . . . . . . . . . 46
6.3. Irresolubilidad en lenguajes independientes del contexto . . . . . . . . . . . 48
7. Funciones µ-recursivas 51
7.1. Tipos de funciones . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51
7.1.1. Funci´onn z . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51
7.1.2. Funci´on siguiente . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51
7.1.3. Funci´on proyecci´ on . . . . . . . . . . . . . . . . . . . . . . . . . . . 52
7.1.4. Composici´on y Recursi´on primitiva . . . . . . . . . . . . . . . . . . 52
7.1.5. Funciones recursivas primitivas . . . . . . . . . . . . . . . . . . . . 53
7.1.6. Predicados . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 54
7.1.7. Funciones µ-recursivas ´o recursivas parciales . . . . . . . . . . . . . 56
8. Estudio de la Complejidad Computacional 59
8.1. Clasificaci´on de problemas . . . . . . . . . . . . . . . . . . . . . . . . . . . 59

Sign up to vote on this title
UsefulNot useful