Está en la página 1de 23

TEMA 1 ALFABETOS, PALABRAS Y LENGUAJES

1. ELEMENTOS BSICOS: ALFABETOS, PALABRAS Y LENGUAJES



- Alfabeto: Conjunto finito y no vaco cuyos elementos se denominan
smbolos. Para designarlo se utilizan letras maysculas del alfabeto griego,
especialmente y . Como ejemplos de alfabetos, contamos con {0,1} alfabeto
binario; {a,b,cx,y,z} alfabeto latino de letras minsculas
- Palabras: Secuencia finita de smbolos de un alfabeto, cuando adems
queremos dejar claro que los smbolos que se utilizan son los de un alfabeto
determinado, se habla de palabras sobre un alfabeto. Por ejemplo, segn el
alfabeto {a,b} son palabras de este alfabeto aba, aab, aaabbaaaa, a, b y
(sta ltima es una secuencia vaca de smbolos y representa la palabra
vaca, por lo cual es una palabra sobre cualquier alfabeto).
- Subpalabras, prefijos y sufijos: Las subsecuencias de smbolos
consecutivos de una palabra reciben el nombre de subpalabras de esta palabra.
Se consideran subpalabras impropias la palabra vaca y la entera y el resto se
consideran propias. Por ejemplo los prefijos de la palabra bbaab son {, b bb,
bba, bbaa, bbaab} de los cuales el primero y el ltimo son prefijos impropios y
el resto propios.
- Lenguajes, conjunto de palabras: Un lenguaje es un conjunto de palabras
sobre un alfabeto determinado, para designarlos se usa la letra L con
subndices si es necesario, y otras letras maysculas del alfabeto latino.
Algunos ejemplos de lenguajes sobre el alfabeto {a,b} son L1={a, aa, aaa}; L2=
{a, b, aa, bb, ab, abababab}; L3={}. No obstante, un lenguaje no debe ser
necesariamente finito, por ejemplo, lenguaje de todas las palabras sobre
={0,1} que comiencen por el smbolo 1.



2. OPERACIONES SOBRE PALABRAS

- Concatenacin: Concatenar dos palabras significa construir una palabra
nueva aadiendo los smbolos de la segunda tras los smbolos de la primera, el
operador de concatenacin es el smbolo . As aaabbb=aaabbbb, aba =aba.
La concatenacin no es conmutativa, porque en general w1w2<>w2w1; s
tiene en cambio la propiedad asociativa y la palabra vaca constituye el
elemento neutro de la concatenacin. La concatenacin de una palabra
consigo misma se suele representar con notacin exponencial, de manera que
w
2
=ww; y la concatenacin de una palabra y un smbolo se denota de la
misma manera que la concatenacin de dos palabras.
- Longitud: el nmero de smbolos de una palabra se desgina por |w| y es
interesante reconocer que: |w1w2|=|w1|+|w2| y |w|=0 w= .
- Nmero de ocurrencias de un smbolo: la notacin |w|a denota el nmero
de apariciones del smbolo a en la palabra w, as |aabbabaa| a = 5.
- Inversin: Consiste en escribir al revs una palabra dada, la palabra
resultante de la inversin se denomina inversa, si w es una palabra cualquiera
w
R
denota su inversa; as (ab)
R
=ba, (011101)
R
=101110,
R
= . Fijmonos que
(w1w2)
R
=(w2)
R
(w1)
R
.
- Palndromos: Cuando una palabra es igual a su inversa, se denomina
palndromo. As es un palndromo, y tambin aba y tambin todas las
palabras formadas por un solo smbolo.



Teora de autmatas
y lenguajes formales 1

Tema 1
Alfabetos, palabras y lenguajes
1. Elementos bsicos: alfabetos,
palabras y lenguajes
2. Operaciones sobre palabras
3. Operaciones sobre lenguajes
4. Definicin de lenguajes
2 Teora de autmatas y lenguajes formales 1


3. OPERACIONES SOBRE LENGUAJES

- Operaciones conjuntistas: Estas operaciones son las siguientes: la unin,
interseccin, complementacin y diferencia.
- Concatenacin: de dos lenguajes es otro lenguaje que contiene todas las
palabras que se pueden construir concatenando una palabra del primer
lenguaje con una palabra del segundo lenguaje. Como ejemplos tenemos, si
L1={a, aa} y L2={b, bb} entonces L1L2={ab, abb, aab, aabb}. Entre las
propiedades de la concatenacin de lenguajes destacan:
o La concatenacin no es conmutativa, as L1L2<>L2L1
o La concatenacin s es asociativa (L1L2)L3=L1L2L3
o El elemento neutro de la concatenacin es .
o La concatenacin es distributiva respecto de la unin.
o Pero no lo es respecto de la interseccin.
- Concatenacin de un lenguaje consigo mismo: Tambin se puede
representar con la notacin exponencial, as L
2
=LL.
- Concatenacin de una palabra y un lenguaje: El concatenar una palabra y
un lenguaje {w}L y L{w} puede abreviarse como wL y Lw y es el resultado de
aadir una palabra w delante y detrs de cada una de las palabras de L. Misma
aplicacin para los smbolos aL y La.
- Inversin: El lenguje inverso L
R
de otro L dado no es ms que el lenguaje
formado por los inversos de las palabras de L.
- Cierre de Kleene: El cierre de Kleene de un lenguaje es la unin de todas las
potencias de ese lenguaje. Si L es un lenguaje este cierre se representa por L*,
y as si L={ab}, L*={ , ab, abab. Ababab, abababab}
- Cierre positivo de Kleene: Se representa por L
+
y es igual al anterior a
excepcin de la presencia del smbolo . Por ello s L={ab}, L
+
={ab, abab.
Ababab, abababab}.
- Cierres de un alfabeto * y
+
: Dado que cualquier alfabeto puede ser
considerado un lenguaje formado por palabras de un solo smbolo (longitud 1),
las operaciones de cierre de Kleene y de cierre positivo de Kleene tambin son
aplicables a los alfabetos.


4. DEFINICIN DE LENGUAJES

A menudo disponemos de una definicin informal de un lenguaje dada en
lenguaje natural, y necesitamos ser ms especficos convirtindola en una
definicin cuanto ms formal, mejor. Generalmente para formalizar la definicin de
un lenguaje se utiliza: L = { w e * | Condicion(es) de pertenencia}. Por ejemplo:
- Palabras con el doble de smbolos de a que de smbolos b:
o L = {w | |w|a = 2|w|b }
- Palabras que empiezan con el smbolo a y acaban con el sufijo aba.
o L = {w | -x e *(w=axaba)} o L={a} *{aba}









Teora de autmatas y lenguajes formales 1 3


TEMA 2 AUTMATAS FINITOS Y LENGUAJES REGULARES


1. AUTMATAS FINITOS DETERMINISTAS Y LENGUAJES REGULARES

Los autmatas finitos representan un modelo matemtico con las siguientes
caractersticas:
- A cada momento el sistema se encuentra en un estado (q) y el conjunto total
de estados diferentes en los que se puede encontrar el sistema es finito (si
adems no es un nmero muy elevado puede ser representado grficamente).
- Pueden responder a un nmero finito de acontecimientos diferentes.
- El estado en el que se encuentra el sistema resume toda la informacin
referente a acontecimientos pasados.
- La respuesta a un acontecimiento slo se determina en funcin del
acontecimiento y del estado en que se encuentra el sistema.

Como ejemplo de estos tipos de sistemas podemos encontrar un interruptor
biestable, que puede estar encendido o apagado y que responde al acontecimiento
de pulsacin que provoca un cambio de estado que depende obviamente del
estado actual en que se encuentre.

Imaginaremos los autmatas finitos como mquinas que constan de una unidad
central con un cabezal que se encuentra en un estado inicial (q0), situado a la
izquierda de una cinta sobre la cual se ha escrito de izquierda a derecha; a cada
unidad de tiempo el cabezal se desplaza una posicin y lee el smbolo sobre el que
se sita, y esto determina un nuevo estado. Hay dos tipos de estado, el estado
aceptador que hace que la cadena de smbolos que van desde el inicio de la cinta
hasta el que se encuentra ahora forme una palabra reconocida como perteneciente
a L, o estado no aceptador que no reconoce la palabra. Como ejemplo
estudiamos el autmata finito representado a la izquierda, que es capaz de
reconocer la palabra ababa si el estado final es aceptador.

Ya hemos adelantado que es habitual que los autmatas finitos se
representen grficamente si las medidas lo permiten, para ello tendremos en
cuenta:

- Los estados se representan con crculos que, si es preciso, llevan en su interior
un nombre para identificarlo.
- El estado inicial se indicar con una pequea flecha que incida sobre ste.
- Los estados aceptadores se indicarn con una pequea cruz que salga de los
mismos.
- Las posibles transiciones, en funcin de los smbolos ledos, se indicarn con
flechas que van de un estado a otro (o a s mismo).

En el ejempo lateral podemos observar un autmata que reconoce el lenguaje
de las palabras que empiezan por a y acaban por b, es decir:

L = {w | -x e
*(w=axb)}

Cualquier autmata finito puede interpretarse como un algoritmo que
especifica un clculo, y la cantidad de memoria que debe consumirse para realizar
el procesamiento de la palabra es siempre la misma e independientemente de la
longitud de la misma. Aquellos lenguajes que para poder dictaminar si una palabra
pertenece a los mismos o no, requieren algoritmos que utilizan una cantidad de
memoria que depende de la longitud de la palabra medida, no pueden ser
reconocidos por autmatas finitos, y se denominan lenguajes no regulares. Por
ejemplo el lenguaje de las palabras de la forma L={a
n
b
n
|n>=0}={a}
n
{b}
n
, no es
un lenguaje regular, dado que solo se reconocen las palabras cuyo nmero de
Tema 2
Autmatas finitos y lenguajes
Regulares
1. Autmatas finitos
deterministas y lenguajes
regulares
2. Autmatas finitos
indeterministas
3. Operaciones con autmatas
finitos
4. Minimizacin de autmatas
finitos
5. Expresiones regulares
6. Determinacin de la no
regularidad de un lenguajes: el
lema del bombeo
Autmata finito

Autmata finito

4 Teora de autmatas y lenguajes formales 1


smbolos a sea igual al nmero de smbolos b; as pues es indispensable recordar el
nmero de smbolos de cada tipo que se llevan ledos en cada momento. La
memoria que se requiere para llevar a cabo esta operacin depende por tanto de la
longitud de la palabra. Habra que asignar un estado distinto a cada nmero de
smbolos posible, sin embargo esto es imposible, porque el nmero de estados
debe ser finito.

La definicin formal de un autmata finito determinista o DFA es que se
trata de autmatas con un nmero finito de estados, que tienen un nico estado
inicial y para cada estado una, y solo una, transicin para cada smbolo. Por tanto,
para poder definir completamente un DFA es necesario conocer los siguientes
elementos de los que se compone:
- Conjunto de estados (Q).
- Cual es el estado inicial (q0).
- Cuales son los estados aceptadores (F).
- Cual es el alfabeto de la palabra que se escribe en la cinta ().
- La manera de determinar el nuevo estado en funcin del smbolo ledo y del
estado actual (). Este smbolo es la llamada funcin de transicin, que dado
un estado y un smbolo el resultado es otro estado.

Con todo ello, un DFA se define como un quntuplo de la forma (Q, , q0, F, ).
Como ejemplo proponemos el DFA lateral, representado de manera formal (que
incluya una representacin tabular para la funcin de transicin) y grfica.

Un ltimo aspecto nos queda por aclarar y es definir formalmente lo que es un
lenguaje reconocido por un DFA. Para ello debemos saber que:

- (qi, a) = qj ; es decir dato un estdo inicial, y en presencia de un smbolo,
obtenemos otro estado final (funcin de transicin).
- (q,w) = q si w = o d ((q0, x), a) si w=xa. A esto se le denomina
funcin de transicin extendida y su propsito es extender a las palabras la
funcin de transicin. Haciendo uso de esta funcin definimos un lenguaje
reconocido por un DFA -L(A)- como el conjunto de palabras que, a partir del
estado inicial, provocan que el autmata evolucione hasta alguno de los
estados aceptadores, es decir: L(A) = {we * | (q0, w) e F}.

Lenguaje regular y lenguaje reconocido por un DFA son expresiones
sinnimas ya que un lenguaje es regular si, y solo si, existe un DFA que lo reconoce
(y adems requieren una cantidad de memoria independiente de la longitud de las
palabras). Para demostrar que un lenguaje es regular, es suficiente con exhibir un
autmata que lo reconozca, porque, por definicin, un lenguaje es regular si es
reconocido por algn DFA.


2. AUTMATAS FINITOS DETERMINISTAS Y LENGUAJES REGULARES

Los autmatas finitos indeterministas son una forma especial de
autmatas finitos que forman parte del conjunto de herramientas que pueden
utilizarse para facilitar la tarea de construccin de autmatas finitos deterministas.
Construir un NFA (Non-deterministic Finite Automaton) es ms simple que un DFA,
y tiene lugar cuando se da una o ms de las siguientes 3 condiciones:
- Tiene ms de un estado inicial
- Tiene transiciones definidas de forma mltiple
- Tiene transiciones no definidas

Para que una palabra sea aceptada por un NFA el reconocimiento es similar
al que tena lugar en el apartado anterior, pero tendremos en cuenta adems las
siguientes consideraciones:
- Si el autmata tiene ms de un estado inicial, entonces el reconocimiento
comienza en cualquiera de stos.
Formalizacin de un DFA
Representacin formal
- Q = {A,B,C,D,E}
- = {a,b}
- q0 = A
- F = {A,B,E}
- =
a b
+ A B D
+ B B C
C C C
D E D
+ E E D

Representacin grfica



Teora de autmatas y lenguajes formales 1 5


- Si en un estado y para un smbolo determinado hay ms de una transicin
definida, se aplica cualquiera de stas.
- Si en un estado y para un determinado smbolo no hay transicin definida,
entonces el proceso de reconocimiento se detiene y la palabra no se acepta.

Podemos entender que un NFA es un autmata que, en algunas
circunstancias, tiene capacidad de eleccin, y habr palabras que en
algunas ocasiones sea aceptada y en otras rechazada por el mismo NFA.
As entenderemos que una palabra es aceptada por un NFA cuando hay
alguna secuencia de transiciones que la hacen evolucionar hasta un estado
aceptador. En el autmata de la tabla lateral la secuencia abaabb en algunas
ocasiones puede ser reconocida y en otras no. A pesar de ello existen 4 tipos de
lenguaje para los cuales es muy fcil construir los autmatas indeterministas que
los reconocen:

- Los lenguajes que se definen como palabras que empiezan
por un determinado prefijo. En la tabla lateral de ejemplos el
primer autmata reconoce claramente todas las palabras que
empiecen por aba.
- Los lenguajes que se definen como palabras que acaban
con un determinado sufijo. En el segundo autmata del
ejemplo, se reconocen todas las palabras que acaben por bba,
independientemente de lo que haya delante.
- Lenguajes que se definen como palabras que contienen una
determinada subpalabra. Es una especie de mezcla de los
anteriores, y observamos en el ejemplo que se reconoce
cualquier palabra de la forma babb
- Lenguajes que se definen en trminos de la unin de otros
lenguajes. Dados dos autmatas, la suma de ambas da un nico NFA, pues
puede tener varios estados de inicio.

La definicin formal de un autmata finito indeterminado o NFA es que
se define por un quntuplo de la forma (Q, , I, F, ).
- Conjunto de estados (Q).
- Cual es el conjunto de estados inicial (I cQ).
- Cuales son los estados aceptadores (FcQ).
- Cual es el alfabeto de la palabra que se escribe en la cinta ().
- La manera de determinar el nuevo estado en funcin del smbolo ledo y
del estado actual (). Este smbolo es la llamada funcin de transicin, que
dado un estado y un smbolo el resultado es otro estado.

Recordemos que ahora no contamos con un nico estado inicial y que para
cada pareja estado-smbolo puede no definirse un nico estado, sino un
conjunto de ellos. As podemos observar la representacin grfica y en tabla de
transicin de un DFA:

Igualmente la definicin formal de lenguaje reconocido por un NFA
es el conjunto de palabras que desde los estados iniciales (I) pueden llevar al
autmata hasta alguno de sus estados finales. Pero que esto no nos lleve a
confusin, los lenguajes que puede reconocer un NFA son los mismos que un DFA,
es decir, los lenguajes regulares. As pues, el indeterminismo de los NFA no aporta
la capacidad de reconocer ms lenguajes, sino la simplicidad de construirlos.

Existe un proceso para la determinizacin de autmatas indeterministas,
ya que realmente un DFA puede considerarse un caso particular de un NFA, es
decir el caso particular en el que solo se cuenta con un estado inicial y con una
funcin de transicin definida para todos los estados y smbolos posibles. Como es
ms fcil crear un autmata indeterminista, se crea este primero, luego se
determiniza y se suele utilizar la versin determinizada, ya que la indeterminacin
es una cualidad poco deseable en la mayora de las ocasiones.
Autmata finito indeterminado

Autmatas finitos indeterminados
Autmata finito indeterminado
6 Teora de autmatas y lenguajes formales 1


En el proceso de determinizacin, las claves para
hacerlo correctamente son las siguientes:
- El estado inicial del autmata determinista el el
conjunto de los estados iniciales del indeterminista
(I).
- Los estados aceptadores del determinista son
aquellos que contienen algn aceptador del
indeterminista.
- La funcin de transicin del determinista tiene en
consideracin todas las transiciones definidas para
cada uno de los estados del autmata indeterminista,
que componen un estado del autmata determinista.

Vemos a continuacin dos ejemplos de ello, el
primero en construccin grfica, y el segundo en funcin
de transicin a partir de la tabla de funciones de
transicin del NFA.

Es necesario saber que cada estado del autmata
determinista es un conjunto de estados del autmata
indeterminista, en otras palabras cada estado del
determinista es un subconjunto del conjunto de estados
del indeterminista; si ste tiene N estados, el autmata
determinista puede llegar a tener 2
N
estados. El
crecimiento del nmero de estados puede llegar a ser
exponencial, pero ste es el precio que se deber pagar
por eliminar el indeterminismo.


3. OPERACIONES CON AUTMATAS FINITOS

La unin de dos lenguajes es tambin un
lenguaje regular? Pues efectivamente as es. Si un
lenguaje L es regular su complementario (L
C
), su inverso
(L
R
), su cierre de Kleene (L*) y su cierre positivo de
Kleene (L
+
) tambin son lenguajes regulares. E
igualmente la interseccin, unin y producto cartesiano de dos lenguajes regulares
da lugar a un tercer lenguaje regular.
Con estas propiedades no solo mostramos el inters por las propiedades de
los lenguajes regulares, sino que adems se proporcionan herramientas muy tiles
para la construccin de autmatas, porque permiten construir autmatas de gran
complejidad a partir de autmatas ms simples.

3.1. Autmata finito para el lenguaje complementario

Si en un DFA se intercambian los estados aceptadores por los no
aceptadores y viceversa, se obtiene otro DFA que reconoce el complementario del
lenguaje aceptado por el primero (ver ejemplo en la figura lateral). Eso s, esta
tcnica solo es aplicable a autmatas deterministas, pues en indeterministas
pueden dar resultados incorrectos.


3.2. Autmata finito para el lenguaje interseccin: producto cartesiano

Si L1 y L2 son dos lenguajes regulares, su interseccin tambin lo es. Es
decir, sin u lenguaje reconoce (como vemos en el ejemplo de la pgina siguiente)
las palabras que acaban e a y otro lenguaje las palabras que empiezan por b, su
interseccin ser el lenguaje que reconoce las palabras que empiezan por b y
acaban en a. Para encontrar estos autmatas es necesario llevar a cabo el producto
cartesiano y tratar la tabla de funcin de transicin del autmata. As por ejemplo
Procesos de determinizacin
Autmata finito para el
lenguaje complementario
Teora de autmatas y lenguajes formales 1 7


como vemos en las tablas laterales, partimos del estado A1
(estados de inicio en ambas tablas) y construimos dos nuevos
estados para ellos el B1 y A2. As continuamos tratando la tabla
de transicin hasta que no quedan estados nuevos y solo sern
estados aceptadores cuando lo sean en ambos elementos del
producto cartesiano. As si en el primer autmata el estado
aceptador es B y en el segundo lo es 2, solo puede existir un
estado aceptador, que es el <B,2>.

La construccin del producto cartesiano tambin se
puede aplicar, sin ninguna modificacin, si alguno o todos los
autmatas fuesen indeterministas. No obstante, es
recomendable minimizarlos antes para evitar la proliferacin de
estados.


3.3. Autmata finito para el lenguaje unin

Existen dos formas de llevar a cabo este lenguaje. Debemos saber que la
unin en el ejemplo anterior sera aquel lenguaje capaz de reconocer todas las
palabras que empiecen por b o terminen por a. Pues bien este autmata finito se
construye de manera anloga al anterior, partiendo del producto cartesiano y de la
tabla de transiciones anterior, a excepcin de que:
- En el caso de la interseccin, son estados aceptadores los pares en los que
cada componente es un estado aceptador.
- En el caso actual de la unin, son estados aceptadores los pares en los que
cualquiera de los dos componentes sea un estado aceptador.

As los estados aceptadores aumentaran de uno en el caso anterior de la
interseccin a 4 en la tabla de transiciones actual, como puede verse en el ejemplo
de la figura lateral.

No obstante, existe un segundo mtodo para llevar a cabo la unin que es
la adjuncin y que es conveniente llevar a cabo cuando al menos uno de los dos
autmatas a unir es indeterminista. Este segundo mtodo consiste en considerar
que en lugar de dos autmatas se tiene uno. Tanto si los autmatas de partida son
deterministas como si no lo son, el resultado es siempre un autmata
indeterminista. Dado que la adjuncin (independientemente del tipo de autmatas
de partida) introduce indeterminismo, es preferible llevar a cabo este mtodo
cuando existe algn autmata de partida indeterminista, como ya apuntbamos
anteriormente.


3.4. Autmata finito para la concatenacin


Dados dos lenguajes regulares L1 y L2, la concatenacin consistira en
palabras que tiene una primera parte de L1 y una segunda parte de L2, por ello lo
que debemos hacer ser aprovechar el primer autmata para reconocer esta
primera parte y cuando se produzca el reconocimiento, saltar al autmata que
reconoce L2 e intentar aceptar entonces la palabra. Para concatenar los dos
Interseccin: Producto cartesiano
Unin: Producto cartesiano

Unin por adjuncin

Autmata finito para la concatenacin
8 Teora de autmatas y lenguajes formales 1


autmatas, aadiremos transiciones a todos los estados del primer autmata que
desemboquen en estados aceptadores. Las nuevas transiciones con los mismos
smbolos que los originales irn a parar a los estados iniciales del autmata que
reconoce el segundo lenguaje. As los pasos por los que debemos concatenar son:
- Conectaremos los estados que preceden a los estados aceptadores de A1 con
los iniciales de A2 con el mismo smbolo que hacan llegar al estado aceptador
en A1.
- Si e L1 (algn estado inicial de L1 es aceptador) dejamos entonces como
estados iniciales tanto los de A1 como los de A2. En caso contrario solo los
estados iniciales de A1 quedarn como estados iniciales del nuevo autmata.
- Consideramos como estados aceptadores solo los estados aceptadores del
autmata A2.

En el ejemplo de la tabla lateral observamos que conectamos los estados
que preceden a los aceptadores del autmata 1 con los iniciales del autmata 2, y
para ello realizamos 4 conexiones: dos que parten de A y dos que parten de C. Una
vez hecho esto dado que el estado A inicial de A1 es aceptador, tanto los
estados de A1 como los de A2 son estados iniciales; y por ltimo, los
estados aceptadores son nicamente los del autmata 2.


3.5. Autmata finito para el cierre positivo

El caso del cierre positivo es igual que el de la concatenacin, con la
nica salvedad que el autmata 1 y el 2 son el mismo, es decir, es la
concatenacin de un lenguaje consigo mismo. Por lo tanto, el mecanismo a
seguir es:

- Detectar los estados que preceden a los aceptadores y con qu
smbolos.
- Se aaden transiciones desde estos estados preaceptadotes hasta los
iniciales del autmata con los mismos smbolos.
- No es necesario hacer nada ms, pues los estados iniciales y
aceptadores son los mismos.


3.6. Autmata finito para el cierre de Kleene

Debemos recordar que el cierre de Kleene es el conjunto de todas
las potencias de un lenguaje incluyendo . Por lo tanto primero debemos
hallar el cierre positivo como hacamos en el caso anterior y despus
adjuntarle el autmata que reconoce . Ciertamente esto aade
indeterminismo, pero es que el autmata resultante del paso anterior ya era
indeterminado. Como ejemplo llevamos a cabo el autmata que reconoce el
lenguaje L={a,a}, ver en la figura lateral.


3.7. Autmata finito para el lenguaje inverso

Si L es un lenguaje regular su lenguaje inverso L
R
tambin lo es. En
este caso probablemente la idea intuitiva consistira en construir un nuevo
autmata, intercambiando los papeles de los estados aceptadores y los
estados iniciales e invirtiendo el sentido de las transiciones. Pues
efectivamente, la idea intuitiva es correcta, y podemos comprobarlo en el
ejemplo de la figura lateral, donde a partir de un autmata que reconoce las
palabras que acaban con el sufijo bb, se pasa a un autmata que reconoce
las palabras que empiezan por el sufijo bb. Este mtodo puede provocar la
introduccin de indeterminismo.


Autmata finito para el
cierre positivo
Autmata finito para el
cierre de Kleene
Autmata finito para el
lenguaje inverso
Teora de autmatas y lenguajes formales 1 9


A continuacin se presenta una breve tabla resumen de las operaciones
que podemos realizar con los lenguajes:

Lenguaje Abrev. Mtodo Ejemplo
Lenguaje
complementario
L
C

Intercambiar estados aceptadores por no aceptadores y
viceversa
De reconocer palabras que acaban
en aa pasaramos a no reconocer
las palabras que acaben en aa
Lenguaje
interseccin
L1 L2
- Producto cartesiano
- Se parte de un estado de inicio de ambos autmatas
- Se crean nuevos estados en la tabla de transicin
hasta que ya no quedan estados por tratar
- El o los estados aceptadores son aquellos en que los
dos componentes del estado son aceptadores en sus
respectivos autmatas de origen
Un lenguaje reconoce las palabras
que empiezan por a y el otro las
que acaben por b, la interseccin es
un tercer lenguaje que reconoce las
palabras que empiezan por a y
adems acaban por b.
Lenguaje unin L1 L2
- Producto cartesiano y seguimos el mismo mtodo del
lenguaje interseccin
- La diferencia es que el o los estados aceptadores en
este caso con aquellos en los que cualquier
componente del estado sea aceptador en su autmata
de origen.
- Tambin se puede hacer la unin por adjuncin
(indeterminismo).
Un lenguaje reconoce las palabras
que empiezan por a y otro las que
acaban por b, la unin es un tercer
lenguaje que reconoce las palabras
que empiezan por a o acaben por b
Concatenacin L1L2
- Se conectan los estados que preceden a los
aceptadores de A1 con los iniciales de A2 con el mismo
smbolo que hacan llegar al estado aceptador en A1
- Si L1 (algn estado inicial de L1 es aceptador)
dejamos entonces como estados iniciales tanto los de
A1 como los de A2. En caso contrario solo los estados
iniciales de A1 quedarn como estados iniciales del
nuevo autmata.
- Consideramos como estados aceptadores solo los
estados aceptadores del autmata A2.
El nuevo lenguaje reconoce
palabras que tienen una primera
parte de un lenguaje y una segunda
parte de un segundo lenguaje.
Cierre positivo L
+

- Detectar los estados que preceden a los aceptadores y
con qu smbolos.
- Se aaden transiciones desde estos estados
preaceptadotes hasta los iniciales del autmata con los
mismos smbolos.
- No es necesario hacer nada ms, pues los estados
iniciales y aceptadores son los mismos.
La misma idea de la concatenacin
anterior pero en este caso solo se
involucra un nico autmata
Cierre de Kleene L*
Primero debemos hallar el cierre positivo como hacamos en
el caso anterior y despus adjuntarle el autmata que
reconoce .
L* = L
+
{ }
Lenguaje inverso L
R

Los estados iniciales pasan a ser estados aceptadores y los
aceptadores estados iniciales; adems debemos invertir el
sentido de todas las transiciones
Pasamos de un autmata que
reconoce las palabras acabadas en
bb a un autmata inverso que
reconoce las palabras que
comienzan por bb.


4. MINIMIZACIN DE AUTMATAS FINITOS

La versin mnima de un DFA es otro DFA que reconoce exactamente el
mismo lenguaje que el primero, pero que lo hace con el menor nmero posible de
estados. Minimizar un DFA es muchas veces una necesidad incuestionable dado
que la determinizacin puede provocar que se pase de N a 2
N
estados y que la
introduccin del indeterminismo es insalvable cuando se utilizan algunos de los
mtodos que hemos visto en el apartado anterior.

La idea subyacente para poder minimizar es que pueden existir un grupo
de estados cuyos comportamiento pueda reducirse a un nico estado, como vemos
10 Teora de autmatas y lenguajes formales 1


por ejemplo en la figura lateral, donde hemos reducido dos estados a uno
solo y con el mismo comportamiento.

Es evidente que dado un lenguaje regular, el autmata mnimo que
lo reconoce es mnimo, con lo cual y esto da lugar a la unicidad del
autmata mnimo:
- Para saber si dos autmatas reconocen el mismo lenguaje, los
minimizamos los dos y comparamos los autmatas mnimos resultantes.
Si son iguales, podemos afirmar que los dos autmatas originales
reconocen el mismo lenguaje.
- Para saber si dos lenguajes regulares son el mismo lenguaje,
construimos los autmatas que los reconocen, los minimizamos y los
comparamos. Si son iguales podemos afirmar que los dos lenguajes originales
son el mismo lenguaje.

La construccin del autmata mnimo o cociente es un poco
complicada, complicacin que aumentar con el nmero de estados que hayamos
de minimizar. Lo que vamos a hacer es separar las clases primero en estados
aceptadores y no aceptadores. En cada clase estudiaremos la respuesta de cada
uno de los estados que lo componen. Si son el mismo la clase no se dividir, si son
distintos la clase se dividir. Una vez halladas las divisiones volvemos a repetir el
mismo proceso, hasta que las clases no se dividan ms, y en ese momento
construiremos el autmata finito mnimo.

Se estudia de manera ms sencilla con un ejemplo.
Tomamos el autmata finito que tenemos en la figura lateral.
Buscamos primeramente las clases inducidas por 0, estas
clases es el resultado de separar los estados aceptadores de los
no aceptadores, y as obtenemos:
A={A,H,I} y B={B,C,D,E,F,G}. Ahora estudiamos el
comportamiento de los elementos de estas dos clases y
llegamos a la siguiente conclusin, buscando las clases
inducidas por 1 y al lado y una vez halladas stas, las
inducidas por 2


Minimizacin de un DFA
DFA a minimizar
Teora de autmatas y lenguajes formales 1 11





No vamos a buscar las clases inducidas por 3, aunque habra que hacerlo,
ya que sern iguales a las 2; por ello el autmata se construye segn la siguiente
tabla de transiciones y da el siguiente autmata:




5. EXPRESIONES REGULARES

Las expresiones regulares nos proporcionan una manera simple y precisa
de describir lenguajes regulares. Si es un alfabeto, una expresin regular sobre
se define, recursivamente de la siguiente manera:
- y son expresiones regulares.
- Cada smbolo de es una expresin regular.
- Si e1 y e2 son expresiones regulares, entonces e1+e2 es una expresin
regular, como tambin lo es e1e2.
- Si e es una expresin regular, entonces e* tambin lo es.
DFA ya minimizado
12 Teora de autmatas y lenguajes formales 1


Utilizaremos algunas convenciones que nos ahorrarn smbolos a la hora de
reducir estas expresiones, as la prioridad de * es la mayor y la de + es la menor.
El punto se puede omitir.

Las expresiones regulares y los lenguajes regulares estn muy vinculados, tal
como pone de manifiesto el teorema de Kleene: un lenguaje es regular si y solo si,
es descrito por una expresin regular; y como tambin sabemos que un lenguaje es
regular si y solo si es reconocido por algn autmata finito, nos queda claro que si
L es un lenguaje, entonces existe un autmata que lo reconoce si, y solo si, existe
una expresin regular que describe L.

Es fundamental para minimizar las expresiones regulares el lema de Arden
que afirma que la ecuacin X= AX+B, donde A y B son lenguajes cualesquiera, da
como resultado el lenguaje A*B.

Para pasar un autmata finito a una expresin regular no solo hay que poner
en marcha los mecanismos anteriores, debemos comenzar con ver el lenguaje
asociado a cada estado y que debemos expresar en forma de ecuacin. Para ello
nos vamos a servir del ejemplo que se observa en la figura lateral. En primer lugar
encontramos el sistema de ecuaciones que describen el autmata:

La = bLa + aLb
Lb = aLb + bLa +

La segunda ecuacin, aplicando el lema de Arden queda Lb = a(bLa + ), y
sustituyendo este resultado en la primera ecuacin nos queda:
La = bLa + a a(bLa + ), reorganizamos para volver a aplicar Arden:
La = (b+aa*b)La + aa*; y nos queda entonces:
La = (b+aa*b)aa* ;
Este ya puede ser un resultado final, pero aun as podemos reducirlo mucho
ms, quedndose en (a*b)*aa*.


6. DETERMINACIN DE LA NO REGULARIDAD DE UN LENGUAJE

Enunciado informalmente el lema del bombeo afirma que si L es un
lenguaje regular y w pertenece a este lenguaje siendo una palabra lo bastante
larga, entonces es inevitable que pase lo siguiente: la palabra w se puede
descomponer en tres subpalabras xyz (w=xyz) de manera que xy
2
z pertenece a L,
xy
3
z pertenece a L y en general xy
n
z pertenece a L. En otras palabras, si w es
suficientemente larga, entonces todas las palabras resultantes de repetir tantas
veces como se quiera una determinada parte central continan perteneciendo a L.

Evidentemente si nos encontramos con un autmata finito con n estados y
resulta que w tiene ms smbolos que los n estados de los que se compone el
autmata, es evidente que debe pasar por algn estado ms de una vez. Ese
estado o estados centrales son los que reconocemos por y, y que se pueden repetir
tantas veces como se quiera perteneciendo siempre la palabra resultante al
lenguaje L.

Esta condicin es necesaria para la regularidad pero nos podemos
encontrar con el caso contrario, la condicin suficiente para la no regularidad:

- Si se detecta que en un lenguaje todas las palabras a partir de una
determinada longitud son abombables, esto no significa que el lenguaje sea
necesariamente regular.
- Pero por otro lado, si se detecta que en un determinado lenguaje es posible
encontrar palabras de todas las longitudes posibles que no son abombables,
entonces ya se puede afirmar con toda seguridad que el lenguaje no es
regular.
Operaciones
X = AX + B A*B
aa* = a
+

a* = a
+
+
Ejemplo
El lema del bombeo
recibe este nombre porque
afirma que la parte central (y) de la
palabra w=xyz se puede hacer
crecer tanto como se quiera sin
que esto afecte a la pertenencia de
la palabra resultante al lenguaje L.
Este hacer crecer la parte central
se denomina bombeo de la
palabra.
Teora de autmatas y lenguajes formales 1 13


Este ltimo planteamiento nos permite afirmar con seguridad la no regularidad
de un lenguaje es el contrarrecproco del lema del bombeo y para que ello se de
es necesario que:

- Para cada posible longitud, podamos encontrar una palabra de aquella longitud
o superior.
- Para cada una de las palabras, consideraremos todas las posibles
factorizaciones en tres subpalabras x, y y z.
- Para cada una de las factorizaciones de cada una de las palabras debemos
encontrar una constante que no cumpla que xy
n
z pertenezca a L.

Si se consigue todo lo anterior, ya se puede afirmar que L no es regular.






El contrarrecproco
Recordemos ue cuanto
estudibamos lgica AB es lo
mismo que BA: Si A es
suficiente para B, entonces B es
necesario para A. Esto se conoce
como ley del contrarrecproco
14 Teora de autmatas y lenguajes formales 1


TEMA 3 GRAMTICAS INCONTEXTUALES Y AUTMATAS CON PILA


1. CONCEPTOS INTRODUCTORIOS

Una gramtica generativa es un conjunto finito de reglas de produccin
cuya aplicacin repetida nos proporciona el conjunto de palabras de un
determinado lenguaje. Est formada por los cuatro componentes siguientes:

- Un alfabeto V de smbolos no terminales o variables.
- Un alfabeto (disyunto del anterior) de smbolos terminales, sern estos
smbolos terminales los que ya conocemos a, b, 1, etc.
- Un conjunto de pares ordenados de reglas de produccin A B, donde el
primer elemento del par A, contiene como mnimo un smbolo de V, y el
segundo un smbolo de , o la palabra vaca . Para aplicar una regla de
produccin, hay que reconocer en la palabra en curso la subpalabra que
coincide con la parte izquierda de la regla de produccin (A) y sustituirla por la
parte derecha de la regla de produccin (B). Este proceso de denomina
derivacin en un solo paso.
- Un smbolo inicial o axioma S que pertenece a V.

Veamos ahora algunos ejemplos:

- S y SaS
Habitualmente representamos las variables con letras maysculas (reservando
la S para el smbolo inicial) y los smbolos terminales con letras minsculas.
Para abreviar la escritura de las reglas de produccin se suelen agrupar en una
misma lnea todas las que comparten la misma variable en la parte izquierda
separadas por la barra vertical |. As que las dos reglas anteriores seran:
S |aS
Podemos obtener aplicando de un solo paso la primera regla; a, aplicando
una vez la segunda regla y despus la primera; aa aplicando dos veces la
segunda y una vez la primera,; y en general a
n
aplicando n veces la segunda
regla y una vez la primera; por tanto L = {a
n
| n>=0}
- S | aSb
Obtenemos: S, aSb, aaSbb, aaaSbbb, hasta que nos decidamos a aplicar la
primera regla, y asi obtenemos aaabbb, por tanto L = {a
n
b
n
| n>=0}

Segn la jerarqua de lenguajes de Chomsky existen 4 tipos de
gramticas generativas:

- Tipo 0: Gramticas generales son aquellas que no tienen ningn tipo de
restriccin.

- Tipo 1: Gramticas contextuales o sensibles al contexto. Cada regla de
produccin tiene la forma xAy x~y, donde x, ~ e y pertenecen a (V)* y
entonces S no puede aparecer en la parte derecha de las reglas. Fijmonos en
que se llaman sensibles al contexto porque para poder aplicar la regla sobre el
smbolo no terminal A, debe tener un contexto determinado, es decir, un
conjunto de elementos delante y detrs (en este caso x e y).

- Tipo 2: Gramticas incontextuales o de contexto libre. Cada regla de
produccin tiene la forma A~, por lo tanto la sustitucin de la variable A
puede hacerse en cualquier contexto.

- Tipo 3: Gramticas regulares: Cada regla de produccin tiene la forma
A~B o bien A~, perteneciendo ~ a * y A y B a V. Esta gramtica genera
lenguales como los ya estudiados en el tema anterior.

Tema 3
Gramticas incontextuales y
autmatas con pila
1. Conceptos introductorios
2. rbol de derivacin y
ambigedad
3. Verificacin de gramticas
4. Formas normales
5. Formas normales
6. Propiedades de los lenguajes
incontextuales
Teora de autmatas y lenguajes formales 1 15


La propiedad ms interesante es la jerarqua de lenguajes
respecto al tipo de gramtica que la genera, en que cada uno est
incluido estrictamente en la clase anterior. El objetivo de este tema es
el estudio de los lenguajes incontextuales, es decir los generados por
las gramticas de tipo 2, y dentro de este grupo aquellos que no son
regulares (pues stos ya se han visto en el tema anterior).


Los lenguajes incontextuales son los generados por una gramtica
incontextual y se podra formular as:
L(G) = {w e * | S
*
w}

Lo cual indica que las palabras w se formarn a travs de * derivaciones
partiendo del smbolo inicial S. Forman parte de este lenguaje las cadenas de
parntesis balanceados, las expresiones aritmticas bien definidas, los lenguajes
tipo a
n
b
n
, las frmulas bien formadas de la lgica proposicional, el lenguaje de los
palndromos, el lenguaje de todas las palabras que contienen tantas a como b


2. RBOL DE DERIVACIN Y AMBIGEDAD

Para mostrar que una palabra est generada por una gramtica (y que por
tanto pertenece al lenguaje generado por la gramtica), damos su derivacin paso
a paso. Por ejemplo, en la figura lateral aparecen las reglas de produccin de un
lenguaje incontextual y su rbol de derivacin correspondiente para la palabra
bbaaab, segn el siguiente tratamiento:

S bAS bAaBS bbAAaB bbaAaB bbaaaB bbaaab

Hemos de darnos cuenta que en la figura lateral si leemos las hojas del
rbol de derivacin de izquierda a derecha, obtenemos la palabra anterior bbaaab.

Un rbol es un rbol de derivacin con respecto a una gramtica G, con
componentes (, V, P ,S) si se cumplen las siguientes condiciones:

- Cada nodo tiene una etiqueta, que es un smbolo de V.
- La etiqueta de la raz del rbol es la variable S.
- Si un nodo es interno y tiene la etiqueta A, A debe estar en V.
- Si un nodo interno tiene la etiqueta A y sus hijos de izquierda a derecha X1,
X2Xn, respectivamente, entonces A X1X2Xn debe ser una regla de
produccin de P.
- Si un nodo interno tiene la etiqueta , entonces noe s una hoja y es el nico
hijo de su padre.

Intuitivamente ya observamos que una palabra es una derivacin de una cierta
gramtica (y por tanto pertenece al lenguaje generado por sta) si hay un rbol de
derivacin respecto a la gramtica tal que las hojas del rbol ledas de izquierda a
derecha forman la palabra. Realmente, lo bueno de aplicas el rbol de derivacin es
que queda ms clara la regla de produccin que se aplica sobre cada variable,
independientemente del orden en que se haga. Por ello diferentes derivaciones de
una misma palabra, pueden quedar representadas en un mismo rbol de
derivacin. En el ejemplo anterior de esta misma pgina, tambin podamos aplicar:

S bAS bAaBS bbAAaB bbaAaB bbaaaB bbaaab
S bAS bbAAS bbaAS bbaaS bbaaaBS bbaaab

A pesar de aplicar diferentes reglas de derivacin en distinto orden, el rbol
de derivacin sera el mismo para las dos. Todas las derivaciones que corresponden
a un mismo rbol de derivacin son equivalentes. De aqu podemos definir la
Jerarqua de lenguajes

rbol de derivacin
S aBs | bAs |
A bAA | a
B aBB | b

16 Teora de autmatas y lenguajes formales 1


gramtica ambigua como aquella en la que es posible construir dos rboles de
derivacin diferentes que corresponden a la misma palabra, y no son dos
derivaciones diferentes de la misma palabra. Mientras haya una sola palabra con
dos derivaciones diferentes, la gramtica ya se puede considerar ambigua; y por
tanto, para demostrar que una gramtica es inambigua, se debe demostrar que no
puede haber ninguna palabra en la gramtica que tenga dos rboles de derivacin.

Por ejemplo, la gramtica de la tabla lateral, que general el lenguaje que
tiene tantas a como b, es una gramtica ambigua, ya que como se ve en la imagen
lateral encontramos dos rboles de derivacin distintos para la palabra baba, y
aunque existan ms rboles distintos para otras palabras, ya es una gramtica
ambigua.

Para demostrar que una gramtica es inambigua, lo podemos hacer
intuitivamente por reduccin al absurdo. Si intentamos encontrar una palabra con
dos rboles de derivacin diferentes, llegamos a la conclusin, tras probar con
distintas reglas de produccin, que es imposible. Tambin puede ser til intentar
construir los dos rboles de derivacin distintos para una misma palabra en paralelo
y tratar de aplicar sucesivamente distintas reglas alternativas para una misma
variable, descartando los casos en los que quede claro que ya no podemos llegar a
la palabra buscada (reduccin al absurdo constructiva).

Hay lenguajes que tienen gramticas ambiguas que lo generan y a la vez
tambin gramticas inambiguas. Como regla general nos interesar tener
gramticas inambiguas; pero no existe un procedimiento general para encontrar
estas gramticas; de hecho existen los llamados lenguajes inherentemente
ambiguos, aquellos que solo estn generados por gramticas ambiguas, como
pueden ser el lenguaje:
L = {aibjck | i=j j=k}


3. VERIFICACIN DE GRAMTICAS

La verificacin de una gramtica es la demostracin de que esta
gramtica genera un lenguaje determinado. Es decir, si nos piden un lenguaje que
genere una determinada gramtica incontextual, el hecho de encontrarlo no es
nada trivial. Para saber si lo hemos hecho bien debemos verificar este lenguaje; no
hay un mtodo general para ello, aunque habitualmente se utiliza el
razonamiento por induccin, que es el que vamos a aplicar.

Como ejemplo debemos saber si:

S | (S) | SS

es capaz de generar el lenguaje de los parntesis balanceados. Una cierta cadena
de parntesis est balanceada si el nmero de parntesis de abrir es igual al de
parntesis de cerrar; y si en todos los prefijos de la palabra, el nmero de
parntesis abrir es mayor o igual al nmero de parntesis de cerrar.

En este ejemplo debemos demostrar:

1. Toda palabra generada por la gramtica pertenece al lenguaje (satisface las
dos condiciones anteriores).
2. Toda palabra que pertenece al lenguaje se puede generar con la gramtica.

Para demostrar que toda palabra pertenece al lenguaje lo demostramos:

1. Lo demostraremos por induccin sobre la longitud de la derivacin:
Gramtica ambigua
S aSbS | bSaS |
Una demostracin
por induccin consta de dos
pasos:
1. Demostrar que la afirmacin es
cierta para un caso base.
2. Suponiendo que la afirmacin
sea cierta para un caso general n,
demostrar que tambin es cierta
para el caso n+1.
Teora de autmatas y lenguajes formales 1 17


- Para un caso base, que es la derivacin de cero pasos: S
0
= S; por
tanto de forma obvia S verifica las dos condiciones anteriores
- Ahora debemos descomponer la derivacin en la dervicacin (n+1)-sima:
S
n

1

Para la hiptesis de induccin satisface las dos condiciones, y
comprobaremos . EL nmero de parntesis de abrir es igual al de cerrar
queda demostrado porque si lo cumple, tambin lo cumplir ; con la
primera y ltima reglas de produccin est claro, dado que no aparecen
parntesis, y con la segunda tambin dado que hay igual nmero de
parntesis de abrir que de cerrar.
Ahora bien, en relacin con saber que el nmero de parntesis de abrir es
mayor o igual al de cerrar, debemos ahora distinguir por separado los 3
subcasos en las reglas de produccin. Tenemos una palabra que cumple
la segunda condicin y que contiene como mnimo una variable S y
queremos saber si, al aplicar la regla S (S) sobre cualquiera de las
variables S de , se continua afirmando que cumple la segunda condicin.
La palabra la podemos dividir para ello en B = B1S 2 y =B1(S) 2.
Observamos que los prefijos de B1 coinciden en las dos palabras, con lo que
cumple la segunda condicin. Los prefijos de B1(S tambin cumplen la
segunda condicin y finalmente B1(S)B2 tambin la cumplen.
Con todo esto queda demostrado que toda palabra generada por la
gramtica es balanceado y por lo tanto pertenece al lenguaje.

2. Ahora toca demostrar que toda palabra que pertenece al lenguaje se puede
generar con esta gramtica.
- El caso base es la palabra de longitud 0. Y la palabra vaca se puede
derivar en un solo paso con la regla S .
- Suponemos ahora que toda palabra de longitud menor o igual que n se
puede generar con la gramtica y debemos demostrar que una palabra de
longitud n+1 tambin se puede generar.

Los problemas de una demostracin surgen cuando la gramtica juega con
muchas variables y muchas reglas de produccin; entonces hay una explosin de
casos; por ello es conveniente la simplificacin o depuracin de gramticas como
paso previo a su verificacin. Cuestin que resolvemos en el apartado siguiente.


4. SIMPLIFICACIN DE UNA GRAMTICA

En este apartado lo que pretendemos es eliminar reglas o elementos
intiles de una gramtica con la intencin de simplificarla o depurarla. Eso s, la
simplificacin no significa necesariamente reducir o hacer menor la gramtica, al
contrario, en la mayora de las ocasiones crecer exteriormente.

Nos vamos a enfrentar a los siguientes procesos:

- Gramtica limpia:
o Eliminacin de las reglas de produccin vacas
o Eliminacin de las reglas unitarias
Variables equivalentes en un primer paso
Variables no equivalentes posteriormente.
- Gramtica pelada:
o Variables que derivan en smbolos terminales.
o Seleccin de las variables que aparecen en alguna derivacin a
partir de S.

La Gramtica limpia consiste en eliminar las reglas del tipo A (reglas
de produccin vacas) y las del tipo A B (unitarias); est claro que si la gramtica
18 Teora de autmatas y lenguajes formales 1


generaba la palabra vaca, al limpiarla dejar de generarla, pero el resto del
lenguaje permanecer igual. El proceso de limpieza tiene dos partes:

- Eliminacin de las reglas de produccin vacas: Aadiremos directamente
en las reglas lo que se deja de generar al eliminar las reglas vacas. Lo
estudiaremos con el ejemplo lateral:
o En primer lugar, determinamos las variables anulables; en el
ejemplo lateral las variables anulables son B (ya que genera
directamente ) e indirectamente BB.
o Ampliamos las reglas en las que aparecen variables anulables en la
parte derecha aadiendo una regla idntica pero sin la variable
anulable. Si as aadimos reglas que ya se encuentran en la parte
derecha, evidentemente no la aadimos. Por ejemplo, en el
ejemplo lateral tenemos que S genera aBCb, pues como la regla de
B ser eliminada, generamos tambin aCb; como tenemos BB,
generamos B; en A tenemos aAbB, pues generamos aAb; y quiz
en C la ms complicada, al tener bSBa, generaremos bBa, bSa y
ba.
o Finalmente eliminamos las reglas vacas.

- Eliminacin de las reglas unitarias: Las reglas unitarias son del tipo AB,
donde A y B son dos variables cualesquiera. Diferenciamos aqu dos pasos: en
primer lugar las variables equivalentes y despus las que no lo son:
o Variables equivalentes: Son aquellas en las que AB y BA. Lo
que hacemos es eliminar una de ellas, por ejemplo la A y colocar
aadir en B todas las reglas de la A. Por supuesto en el resto de
reglas de transicin sustituiremos todas las As que aparezcan por
Bs. En nuestro ejemplo lateral, rpidamente identificamos la S y la
B como variables equivalentes. Por ejemplo de la A se desprende la
C, pero como de la C no la A pues no podemos tocarla. Lo que
vamos a hacer con S y B es eliminar esta ltima, para eso sus
reglas las aadimos a las de la S y sustituimos todas las B por S.
o Variables no equivalentes: Procedemos a ordenar el resto de
las variables, de tal manera que A < B si A se puede derivar de B.
En nuestro ejemplo tanto a partir de A como de S podemos llegar a
derivar C y por tanto esta es la palabra ms pequea, pero como ni
S ni A se pueden generar, pues nos da igual el orden C<S<A o
C<A<S. Si elegimos este ltimo rden, lo que debemos hacer es
sustituir las reglas en A que involucren la regla unitaria C
aadiendo en A las reglas de C y sustituyendo si aparecen Cs por
A; una vez acabado esto sustituiremos en S las regla unitaria C
pero sustituyendo las posibles C por S. As si en C aparecen dos
reglas de transicin como son bSSa y AA las colocamos en A, y
posteriormente esas dos mismas reglas las colocaremos en S y
quedarn eliminadas las reglas unitarias.

La Gramtica pelada consiste en eliminar los elementos intiles o sea
variables o reglas que no aportan nada a la gramtica, que quitndolas sin ms, no
hacen cambiar el conjunto de palabras o lenguaje generado por esa gramtica.
Para cada gramtica incontextual que genera un lenguaje no vaco, hay una
gramtica pelada que genera ese mismo lenguaje. Para pelar una gramtica hay
que seguir dos pasos:

- Identificar las variables a partir de las cuales se puede derivar una palabra
de smbolos terminales. En un primer paso identificaremos las variables que
generan palabras con smbolos terminales por s mismas. En una segunda
vuelta incorporaremos todas las variables que contengan estas variables
anteriores y que con ello generen palabras; y as hasta que no podamos aadir
ms. Por ejemplo en la tabla lateral y con la gramtica incontextual dada,
observamos que C forma una palabra por s misma aunque sea vaca, tambin
Eliminacin de las reglas
de produccin vacas
Gramtica incontextual:
S aBCb | BB | aC
A aAbB | Ca
B | aCS | B
C bSBa | AA

Ampliamos las reglas:
S aBCb | BB | aC | aCb | B |
A aabB | Ca | aAb
B | aCS | B | aC
C bSBa | AA | bBa | bSa| ba

Eliminacin reglas vacas:
S aBCb | BB | aC | aCb | B
A aabB | Ca | aAb
B aCS | B | aC
C bSBa | AA | bBa | bSa| ba
Eliminacin de las reglas
unitarias
Gramtica incontextual:
S aBCb | B | aC
A aAbB | C
B S | aCS | B | C
C bSBa | AA

Variables equivalentes
S aSCb | aC | aCS | C
A aAbS | C
C bSSa | AA

Sustitucin C<A:
S aSCb | aC | aCS | C
A aAbS | bSSa | AA
C bSSa | AA

Sustitucin C<A<S:
S aSCb | aC | aCS | bSSa | AA
A aAbS | bSSa | AA
C bSSa | AA
Gramtica pelada 1
Gramtica incontextual:
S aAb | bDA | AEb
A aaA | CabA | DCba
B bAB | aaD
C | Aa
D baba | AD
E EbbCB
F | bbB | aaA

Identificar variables
{C, D, F}
{C, D, F, A, B,}
{C, D, F, A, B, S}

Resultado:
S aAb | bDA
A aaA | CabA | DCba
B bAB | aaD
C | Aa
D baba | AD
F | bbB | aaA
Teora de autmatas y lenguajes formales 1 19


F hace lo propio y adems D puede generar la palabra baba. En esta primera
vuelta hemos encontrado estas 3 variables. En una segunda vuelta observamos
que a forma DCba, y como D y C estn en el grupo inicial lo aadimos. As
continuamos hasta comprobar que la E no se puede aadir; ello implica que la
variable E es intil y se puede borrar sin ms; quedando la gramtica con
menos variables y reglas de produccin, quitamos todas aquellas reglas en las
que apareciese la E, como la tercera regla en S.
- Seleccionar las variables que aparecen el alguna derivacin a partir de
S: De manera incremental al igual que en el paso anterior ahora partimos de S
y anotamos todas las variables que aparecen en las reglas de produccin en S.
Con el grupo que encontramos ahora aadimos las que aparecen en esas
nuevas palabras y as vamos incrementando el grupo. Por ejemplo, de la tabla
lateral en S, extraemos las variables A y D. Ahora buscamos en estas variables
y encontramos C. Ya no podemos aadir ms porque en C solo encontramos la
A. Con lo cual partiendo de S no podemos llegar nunca a B ni a F; por ello las
podemos eliminar tranquilamente y las dems variables no requerirn ningn
retoque en sus reglas de transicin puestas dos variables evidentemente no
aparecan.



5. FORMAS NORMALES

Una gramtica esta en forma normal si sus variables y reglas estn
sujetas a restricciones especiales, sin que esto afecte al lenguaje que ha generado.
Las dos formas normales ms utilizadas son la de Chomsky y la de Greibach, que
procedemos a estudiar a continuacin:


5.1. Forma normal de Chomsky

Una gramtica est en la forma normal de Chomsky si todas sus reglas de
produccin estn en una de las dos formas siguientes:

- A BC
- A a

Donde A, B y C son variables y a es un smbolo terminal; adems la forma
normal de Chomsky no acepta que haya ms de dos variables por regla de
produccin. Los pasos para conseguir la forma normal de Chomsky los relatamos a
continuacin con un ejemplo:

- En primer lugar, limpiamos la gramtica (eliminamos las reglas de produccin
vacas y unitarias) como ya sabamos hacer en el apartado anterior).
- A continuacin introducimos una nueva variable no terminal (B, C, etc) para
sustituir todos los smbolos terminales, excepto claro est si la regla solo
incluye smbolos terminales. Tras este paso todas las reglas de produccin o
contienen smbolos terminales o solo variables. En el ejemplo lateral
sustituimos solo las a y b que no estn solas, por tanto en la primera lnea, en
la segunda lnea solo la primera B y en la tercera lnea solo la primera a.
- En tercer lugar, por cada regla de produccin que tiene ms de dos variables
(como CSA en el ejemplo), introducimos una nueva variable que viene a
sustituir las dos variables de la derecha por solo una. (Por ejemplo ESA); y
as obtenemos la forma normal de Chomsky.


5.2. Forma normal de Greibach

Una gramtica incontextual, est en la forma normal de Greibach si todas
sus reglas de produccin son de la forma A a, donde A es una variable, a es
Gramtica pelada 2
Gramtica incontextual :
S aAb | bDA
A aaA | CabA | DCba
B bAB | aaD
C | Aa
D baba | AD
F | bbB | aaA

Seleccionar variables:
{S}
{S, A, D}
{S, A, D, C}

Resultado final:
S aAb | bDA
A aaA | CabA | DCba
C | Aa
D baba | AD
Forma normal de Chomsky
Gramtica incontextual:
S aSA | SB
A bAA | a
B aB | b

Sustitucin inicial:
S CSA | SB
A DAA | a
B CB | b
C a
D b

Reglas > 2 variables:
S CE | SB
A DF | a
B CB | b
C a
D b
E SA
F AA
20 Teora de autmatas y lenguajes formales 1


un smbolo terminal y es una concatenacin de variables. Los pasos para su
obtencin son los siguientes:

- En primer lugar, limpiamos la gramtica y la pasamos a la forma normal de
Chomsky. Una vez hecho esto cambiamos el nombre de las variables
numerndolas con subndices; A1, A2, A3
- A continuacin hacemos los cambios necesarios para que las reglas cumplan
que en AiAj siempre j>1, por ello nos podemos encontrar con varios casos:
o Si i=j debemos introducir una nueva variable Bi para cada caso., y
aadiremos las reglas Bi y Bi Bi con la nueva variable como
parte izquierda y las reglas Ai Bi, donde es la parte derecha
de todas las reglas en que Ai es su parte izquierda. En el ejemplo,
tenemos una regla en la primera lnea que dice A1A1A1. Para
poder sustituirla debemos introducir una nueva variable B1 y las
siguientes cuatro reglas:
B1A1 Porque es la parte derecha del A1 inicial.
B1A1B1 Igual a la anterior pero con B1 en su parte dcha.
A1 A2A3B1 y A1 A2A4B1 Porque A2A3 y A2A4 son dos
normas en las que A1 es su parte izquierda, en la primera
lnea.
o Si i>j se deben aadir nuevas reglas Ai XY, donde X son las
partes derechas de todas las reglas con Aj en la parte izquierda. Y
quiz debamos repetir este proceso varias veces. En el ejemplo
encontramos que A4A1A3, por lo que debemos proceder a
sustituir A1, por los valores que tenemos en la primera lnea de
reglas de produccin, que son las 4 reglas que hemos creado
anteriormente, as la primera regla de produccin de A1 es A2A3,
pues sustituimos A4A1A3 por A4(A2A3)A3 y este mismo cambio lo
tenemos que hacer con las 3 reglas restantes. Como aun as i sigue
siendo mayor que j, procedemos a cambiar A2 que es el nuevo
valor j por el valor ( de su regla de produccin.
- En tercer lugar, pasamos a sustituir en las variables A desde abajo hasta arriba
aquellas que no comiencen por un smbolo terminal. En nuestro ejemplo, solo
en la primera lnea no comienzan por un smbolo terminal, pero nosotros los
sustituimos por el de A2 que es (.
- Por ltimo ahora en B pasamos a sustituir la variable inicial A1 en estos dos
casos por todas las 4 reglas de transicin de A1. Como son 4 reglas x2 deberan
salirnos 8, pero omitimos dos que nos saldran repetidas; as finalizamos la
forma normal de Greibach.


6. AUTMATAS CON PILA

Un autmata con pila es un autmata infinito con control sobre una cinta
de entrada, que dispone de una memoria (potencialmente infinita) con estructura
de pila (LIFO) en la que almacena smbolos de trabajo.
Hay que tener claro que en su versin indeterminista, los autmatas con
pila son equivalentes a los lenguajes y gramticas incontextuales; sin embargo los
autmatas con pila deterministas solo caracterizan un subconjunto estricto de los
lenguajes incontextuales. Tambin es preciso recordar que todo autmata finito no
determinista (NFA) tena un equivalente determinista; pero no sucede lo mismo en
los autmatas con pila, ya que se pueden realizar ms acciones con el no
determinista.

Por tanto, la estructura de un autmata con pila est formada por los
siguientes componentes:
- Un conjunto finito de estados Q.
- Un alfabeto de entrada .
- Un alfabeto de pila Z.
- Un estado inicial q0 eQ.
Gramtica pelada 1
Gramtica incontextual:
A1 A2A3 | A2A4 | A1A1
A2 (,
A3 ),
A4 A1A3

i=j
A1 A2A3 | A2A4 | A2A3B1| A2A4B1
A2 (,
A3 ),
A4 A1A3
B1 A1 | A1B1

Primer cambio i>j
A1 A2A3 | A2A4 | A2A3B1| A2A4B1
A2 (,
A3 ),
A4 A2A3 A3 | A2A4 A3 | A2A3B1 A3
A2A4B1 A3
B1 A1 | A1B1

Segundo cambio i>j
A1 A2A3 | A2A4 | A2A3B1| A2A4B1
A2 (,
A3 ),
A4 (A3 A3 | (A4 A3 | (A3B1 A3
(A4B1 A3
B1 A1 | A1B1

Smbolo terminal en A
A1 (A3 | (A4 | (A3B1| (A4B1
A2 (,
A3 ),
A4 (A3 A3 | (A4 A3 | (A3B1 A3
(A4B1 A3
B1 A1 | A1B1

Smbolo terminal en B
A1 (A3 | (A4 | (A3B1| (A4B1
A2 (,
A3 ),
A4 (A3 A3 | (A4 A3 | (A3B1 A3
(A4B1 A3
B1 (A3 B1 | (A4 B1 | (A3B1 B1 |
(A4B1 B1 | (A3B1 B1| (A4B1 B1

Teora de autmatas y lenguajes formales 1 21


- Un smbolo de fondo de pila zo e Z.
- Un conjunto de estados finales F.
- Un conjunto de transiciones.
La notacin quedar (q, a, z) |- (q, ) que significa intuitivamente que
cuando el autmata est en el estado q, leyendo el smbolo a en la cinta de entrada
y z es la cima de la pila, se puede desafilar z, despus apilar y mover el cabezal
de la cinta una posicin a la derecha y pasar al estado q.

El lenguaje aceptado por un autmata con pila utiliza dos definiciones
alternativas:
- Aceptacin por pila vaca: Esta definicin acepta las palabras que dejan la pila
vaca despus de ser consumidas. El lenguaje aceptado por pila vaca denota el
conjunto de las palabras que permiten pasar de la descripcin instantnea
inicial a una descripcin instantnea en la que la pila est vaca despus de
haber consumido todos los smbolos de la cinta de entrada.
- Aceptacin por estado final: Acepta las palabras que llegan a un estado final
despus de ser consumidas. El lenguaje aceptado por estado final es el
conjunto de las palabras que permiten pasar de la descripcin instantnea
inicial a una descripcin instantnea con estado final despus de haber
consumido todos los smbolos de la cinta de entrada.

Ambas definiciones son equivalentes y no importa la que se utilice.

Para fijar mejor estos conceptos, vamos a llevar a cabo un ejemplo:
Dado el lenguaje de la tabla lateral, el autmata con pila que lo reconoce
tiene las 12 transiciones que podemos observar tambin en la tabla:
- Esta transicin 1 sirve para reconocer como palabra del lenguaje.
- 2 y 3: Son las transiciones que sirven para reconocer el primer smbolo de la
palabra (sea a o b) y apilarlo.
- 4, 5, 6 y 7: Son las transiciones que sirven para reconocer los restantes
smbolos de la primera mitad de la palabra. Es decir si hay una a en la cinta y
tenemos una a en la pila, aadimos esa a (transicin 4).
- 8 y 9 son transiciones que sirven para reconocer el primer smbolo de la
segunda mitad de la palabra y desapilarlo; el autmata ahora transita al estado
q1, porque en este punto cambia el comportamiento del autmata.
- 10 y 11 son las transiciones que sirven para reconocer los restantes smbolos
de la segunda mitad de la palabra. Solo hay dos transiciones porque solo hay
dos posibilidades para que la palabra sea palndromo, que en la cinta salga una
a y en la pila haya una a; o en la cinta salga una b y en la pila haya una b.
- La transicin 12 pasa al estado final y vaca la pila cuando no hay ms smbolos
de entrada, se acepta la palabra.

Es obvio que los lenguajes aceptados por un autmata con pila (no
determinista) son exactamente los lenguajes incontextuales (generados por una
gramtica incontextual). O dicho de otra forma, un lenguaje es incontextual s y
solo s, es aceptado por algn autmata con pila: todo lenguaje incontextual tiene
un autmata con pila que lo reconoce, y todo lenguaje aceptado por algn
autmata con pila es un lenguaje incontextual.

Del prrafo anterior se desprende que siempre se puede construir un
autmata con pila a partir de una gramtica incontextual, tal como apreciamos en
la tabla lateral.



Autmata con pila
L={ww
R
/ w e (a+b)*}

1. (q0, , z0) |- (qf, )
2. (q0, a, z0) |- (q0, az0)
3. (q0, b, z0) |- (q0, bz0)
4. (q0, a, a) |- (q0, aa)
5. (q0, a, b) |- (q0, ab)
6. (q0, b, a) |- (q0, ba)
7. (q0, b, b) |- (q0, bb)
8. (q0, a, a) |- (q1, )
9. (q0, b, b) |- (q1, )
10. (q1, a, a) |- (q1, )
11. (q1, b, b) |- (q1, )
12. (q1, , z0) |- (qf, )
Construccin de un
autmata con pila
S [B | [SB | [BS | [SBS
B }

1. (q, [, S) |- (q, B)
2. (q, [, S) |- (q, SB)
1. (q, [, S) |- (q, BS)
1. (q, [, S) |- (q, SBS)
1. (q, ], B) |- (q, )
22 Teora de autmatas y lenguajes formales 1


7. PROPIEDADES DE LOS LENGUAJES INCONTEXTUALES

7.1. Lema de bombeo

Existe un lema de bombeo para los lenguajes incontextuales muy similar al
que tenemos para lenguajes regulares. En su forma contrapositiva nos permite
demostrar que un cierto lenguaje no es incontextual. Dice que para todo lenguaje L
hay una constante N>=0, tal que si m pertenece al lenguaje L y |m|>=N entonces
podemos dividirlo en 5 subpalabras m=uvwxy, tal que:
- |vx| =
- |vwx| <= N
- Para todo i>= 0, uv
i
wx
i
y pertenecen al lenguaje L.

Informalmente podemos decir que para todo lenguaje incontextual L, toda
palabra suficientemente larga se puede dividir en cinco factores tales que los tres
factores centrales no son demasiado largos, el segundo y el cuarto no son nulos y
que es igual las veces que dupliquemos simultneamente el segundo y el cuarto
factor, porque la palabra continuar perteneciendo al lenguaje. Como ya
apuntbamos anteriormente solemos utilizar esta propiedad en su forma
contrarrecproca, y decimos que para todo N>=0 hay una palabra m que pertenece
al lenguaje L tal que para todas las posibles maneras de dividir m en 5 subpalabras
m=uvwxy con |vx| = , |vwx| <= N, existe un i>= 0, tal que uv
i
wx
i
y no pertenece
al lenguaje L.

No obstante, hay ciertos lenguajes incontextuales en los que el lema del
bombeo no permite demostrar que no lo son, para estos casos hay una versin
todava ms restringida del lema de bombeo, conocido como lema de Orden que
reza que para todo lenguaje incontextual L, hay una constante n>=0, tal que si
marcamos cualquier N o ms posiciones de m como distinguidas, entonces
podemos dividir la palabra en cinco subpalabras m= uvwxy, tal que:
- Las subpalabras v y x tienen como mnimo una posicin distinguida.
- Las subpalabrasvwx tienen como mximo N posiciones distinguidas
- Para todo i>0 uv
i
wx
i
y pertenece a L.

Tambin podemos apreciar la incontextualidad de un lenguaje de forma
intuitiva y rpida, y para ello lo que hacemos es razonar sobre el autmata con pila.
Por ejemplo en el lenguaje en el que existe el mismo nmero de a , b y c, sabemos
que no es un lenguaje incontextual. As, si pensamos en la pila, cuando apilamos a,
y luego vienen b y las desapilamos, cuando llegan las c no tenemos ya nada en la
pila y por eso el lenguaje no es incontextual.


7.2. Propiedades de cierre

Procedemos a ver como se comportan los lenguajes incontextuales frente a
las operaciones bsicas de concatenacin, unin, etc, el inters es elevado ya que
puede ayudarnos a construir gramticas para lenguajes incontextuales a travs de
lenguajes ms simples, nos puede ayudar adems a demostrar que un determinado
lenguaje no es incontextual o que s lo es.

- Unin: Los lenguajes incontextuales son cerrados respecto a la unin, es decir
la unin de dos lenguajes incontextuales es un tercer lenguaje incontextual. As
en el ejemplo lateral llegamos al lenguaje final a travs de la unin del lenguaje
A y del lenguaje B con la regla S A | B que nos permite escoger entre un
lenguaje u otro.

- Concatenacin: La concatenacin de dos lenguajes incontextuales es tambin
un lenguaje incontextual. EN el ejemplo lateral en el que existentes tantas a
como b y tantas c como d, un posible lenguaje para cada uno de ellos es el
Gramtica pelada 1
Unin:
L={a
i
b
j
| i!=j} =
L={a
i
b
j
| i<j} {a
i
b
j
| i>j}

A a | aA | aAb
B b | bB 1 bBa

Resultado:
S A | B
A a | aA | aAb
B b | bB 1 bBa

Concatenacin:
L={a
i
b
i
c
j
d
j
| i,j >=1}

A ab | aAb
B cd | cBd

Resultado:
S AB
A ab | aAb
B cd | cBd

Teora de autmatas y lenguajes formales 1 23


mostrado en las reglas de transicin A y B, que unidas a la regla S AB, nos
permite concaternar estos dos lenguajes.

- La estrella de kleene (*) y el cierre positivo (+): Tambin son lenguajes
incontextuales.

- El lenguaje inverso tambin es incontextual.

- La interseccin de dos lenguajes incontextuales no siempre es u lenguaje
incontextual. Ahora bien, la interseccin de un lenguaje incontextual y un
lenguaje regular, es un lenguaje incontextual.

- La complementacin de dos lenguajes incontextuales no siempre es un
lenguaje incontextual.



Texto elaborado a partir de:
Teora de autmatas y lenguajes formales I
Joan Vancells i Flotats, Enric Sesa i Nogueras,
Junio 2003