Sie sind auf Seite 1von 143

MODULO

AUTMATAS Y LENGUAJES FORMALES












Edgar Alberto Quiroga Rojas








UNIVERSIDAD NACIONAL ABIERTA Y A
DISTANCIA UNAD
FACULTAD DE CIENCIAS BSICAS E INGENIERA
PROGRAMA INGENIERIA DE SISTEMAS
BOGOT D.C., 2008






























MODULO
AUTMATAS Y LENGUAJES FORMALES


@Copyright
Universidad Nacional Abierta y a Distancia


ISBN

Autor: Edgar Alberto Quiroga Rojas
Diseo Portada Juan Olegario Monroy V.

2008
Centro Nacional de Medios para el Aprendizaje

TABLA DE CONTENIDO.
Primera Unidad Captulos Lecciones
1. Introduccin e Historia.
2. Diferentes Modelos de Computacin.
3. Autmatas y Lenguajes.
4. Lenguajes Regulares

1. Conceptos Bsicos

5. Autmata
6. Definicin Formal de Autmatas Finitos
7. Autmatas Finitos Determinsticos (AFD)
8. Autmatas Finitos no Determinsticos (AFND)
9. Autmatas Finitos con Transacciones

2. Autmatas Finitos
10. Lenguaje Aceptado por Autmata Finito
11.Expresiones Regulares
12. Significado de las Expresiones Regulares
13. Autmatas Finitos y Expresiones Regulares
14.Propiedades de los Lenguajes Regulares



I. LENGUAJES
REGULARES

3. Expresiones Regulares
15.Equivalencia de Autmatas Finitos
Determinsticos y Autmatas Finitos no
Determinsticos
Segunda Unidad

Captulos
Lecciones
16. Gramticas Regulares
17. Gramticas Regulares y Lenguajes Regulares
18. Gramticas Independientes del Contexto
19. Formas Cannicas para las Gramticas
Independientes del Contexto


4. Conceptos Generales
20. Formas Norlmales
21. Definicin de Autmata con Pila
22. Diseo de Autmatas con Pila
23. Combinacin Modular de Autmatas con Pila.
24. Autmatas con Pila y Lenguajes Libres de
Contexto

5. Autmatas a Pila
25. Relacin entre los Autmatas de Pila y
Lenguajes Libres de Contexto
26. Lema de Bombeo.
27. Propiedades de Clausura de los Lenguajes Libres
de Contexto
28. Algoritmos de Decisin para los Lenguajes
Libres de Contexto
29. Algoritmos de Pertenencia
II. LENGUAJES
INDEPENDIENTES DEL
CONTEXTO


6. Propiedades de Lenguajes
Independientes de Contexto
30.Problemas Indecibles para Lenguajes Libres de
Contexto
Tercera Unidad

Captulos

31. Definicin.
32. Funcionamiento de la Mquina de Turing.
33. Diferencias entre un Computador y una
Mquina de Turing
III. LENGUAJES
ESTRUCTURADOS POR
FRASES

7. Mquinas de Turing.
34. La Mquina Universal de Turing
35. Codificacin de Mquinas de Turing









INTRODUCCIN

Autmatas y lenguajes formales es un curso de carcter terico, que se inscribe
en el campo de formacin profesional bsico del Programa de Ingeniera de
Sistemas con un valor acadmico de tres crditos.

El estudiante en el desarrollo de este curso demuestra la asimilacin de los
conceptos y mecanismos fundamentales para la definicin de lenguajes
(expresiones regulares, gramticas independientes del contexto y gramticas
generales), los tres tipos de mquinas correspondientes para su reconocimiento
(autmatas finitos, autmatas a pila y maquinas de Turing) y las propiedades
fundamentales de las familias de lenguajes por ellos definidas, tambin realiza el
estudio de las condiciones necesarias para que un lenguaje sea de un tipo
determinado.

El curso es principalmente terico, jugando un papel secundario la implementacin
de algoritmos. Al final del curso el estudiante debe demostrar la asimilacin de los
conceptos fundamentales mediante la resolucin de problemas acerca de los
mismos, as como la realizacin de algunas prcticas en el computador.

Este curso toma como base el avance de los lenguajes de programacin de alto y
bajo nivel para propiciar la distincin entre lenguajes formales con reglas
sintcticas y semnticas rgidas, concretas y bien definidas, de los lenguajes
naturales como el ingls o el espaol, donde la sintaxis y la semntica no se
pueden controlar fcilmente. Los intentos de formalizar los lenguajes naturales,
lleva a la construccin de gramticas, como una forma de describir estos
lenguajes, utilizando para ello reglas de produccin para construir las frases del
lenguaje. Se puede entonces caracterizar un lenguaje mediante las reglas de una
gramtica adecuada.

Los temas sobre autmatas, computabilidad, e incluso la complejidad algortmica
fueron incorporndose al currculo de ciencias de la computacin de diferentes
universidades desde la dcada de los 60, esta incorporacin puso de manifiesto
que las ciencias de la computacin haban usado gran cantidad de ideas de muy
diferentes campos para su desarrollo, y que la investigacin sobre aspectos
bsicos poda cooperar y aumentar los avances de la computacin.

Como elemento determinante en el curso es importante que se tengan en cuenta
los conceptos matemticos bsicos de teora de conjuntos, funciones, relaciones y
principios fundamentales de la lgica, ya que stos temas no son tratados como
temticas en el mdulo, pero que tienen gran importancia en el curso.



INTENCIONALIDADES FORMATIVAS

PROPSITOS

Facilitar la apropiacin de conocimientos para que el estudiante pueda adquirir
los conceptos bsicos de la teora de los lenguajes formales y la relacin que
existe con la teora de autmatas.

Lograr que el estudiante entienda el alto nivel de abstraccin de las mquinas
secuenciales y los autmatas y que conozca los elementos y las tcnicas
necesarias para la construccin de las fases iniciales de un compilador.

OBJETIVOS

Estudiar los conceptos fundamentales de la teora de autmatas y lenguajes
formales, para la descripcin de ellos.

Conocer la correspondencia entre mquinas, gramticas y lenguajes, los
problemas en los que las teoras tienen aplicacin o que han motivado su
construccin.

COMPETENCIAS

El estudiante conoce la jerarqua de modelos de mquinas computacionales y
su funcionamiento, as como la jerarqua de las gramticas formales y de los
lenguajes correspondientes.

El estudiante conoce la correspondencia entre mquinas, gramticas y
lenguajes para poder construir compiladores.

El estudiante desarrolla la capacidad de abstraccin y anlisis terico en
relacin con la teora de lenguajes para adquirir herramientas para algunas
asignaturas de la carrera.

METAS

Al terminar el curso el estudiante:

Debe demostrar la asimilacin de los conceptos fundamentales mediante la
resolucin de problemas acerca de los mismos, y de la realizacin de algunas
practicas con el apoyo del computador.

Desarrollar la capacidad de entender los problemas computacionales, y
lograr una comprensin total de algunos tpicos de la ciencia de la
computacin; especficamente en modelos bsicos de conmutabilidad y
complejidad de problemas.



INTRODUCCIN

Los lenguajes pueden describirse como elementos que se generan, como cadenas
a partir de cadenas sencillas, con el uso de operaciones de cadenas o el
desarrollo del lenguaje mismo, que se puede generar con otros lenguajes ms
sencillos mediante operaciones de conjuntos.

Los Lenguajes ms sencillos son los considerados lenguajes regulares, es decir,
los que se pueden generar a partir de lenguajes de un elemento con la aplicacin
de ciertas operaciones estandar realizadas un nmero finito de veces.

Estos son pues los lenguajes que pueden reconocer los dispositivos llamados
Autmatas finitos (AF) que son mquinas de cmputo con memoria muy
restringida. En esta unidad se considera como segundo aspecto la idea de que un
lenguaje no sea regular, ademas de proporcionar un modelo sencillo de
computacin que se puede generalizar en las unidades siguientes.

Con las caracterizaciones anteriores y otras de los lenguajes regulares se
obtienen y estudian algoritmos para traducir una descripcin de un lenguaje a otra
descripcin de un tipo distinto; se acumula experiencia en el uso de mtodos
formales para describir lenguajes y se intenta responder a preguntas acerca de
ellos, son preguntas y ejercicios sencillos con sus respuestas y que permiten
determinar la utilidad de los lenguajes regulares en aplicaciones del mundo real.

OBJETIVO GENERAL

Reconocer los lenguajes regulares, autmatas finitos y su aplicacin.

OBJETIVOS ESPECIFICOS

Estudiar la aplicacin de los lenguajes regulares y los autmatas finitos.

Adquirir las habilidades necesarias para desarrollar autmatas y mquinas que
reconozcan lenguajes o computen funciones.

Distinguir los diferentes tipos de lenguajes formales existentes.




LECCION 1. - INTRODUCCION E HISTORIA
1


oy en da parece que no existe ningn lmite a lo que un computador puede
llegar a hacer, y da la impresin de que cada vez se pueden resolver nuevos y
ms difciles problemas.

El hombre ha tratado de buscar procedimientos y mquinas que le faciliten la
realizacin de clculos (aritmticos primero, y otros ms complejos
posteriormente).

El avance tecnolgico para representar datos y/o informacin por un lado, y el
diseo de nuevas formas de manejarlos, propician el desarrollo de dispositivos y
mquinas de calcular.

Un aspecto importante en el desarrollo de los computadores, es sin duda, su
aplicacin para resolver problemas cientficos y empresariales. Esta aplicacin
hubiese resultado muy difcil sin la utilizacin de procedimientos que permiten
resolver estos problemas mediante una sucesin de pasos claros, concretos y
sencillos, es decir algoritmos. El avance de las matemticas permite la utilizacin
de nuevas metodologas para la representacin y manejo de la informacin.

Por otro lado, aparece el intento de los matemticos y cientficos para obtener un
procedimiento general para resolver cualquier problema (matemtico) claramente
formulado. Es lo que podramos llamar El problema de la computacin terica.
El avance de la tecnologa y de las matemticas, y ms en concreto de la teora de
conjuntos y de la lgica, permiten plantearse aspectos de la computacin en 3
caminos.

a) Computacin terica. Autmatas, Funciones Recursivas, ...
b) Computadores digitales. Nuevas tecnologas, nuevos lenguajes, ....
c) Intentos de modelizar el cerebro biolgico
1. Redes Neuronales (intentan modelizar el "procesador")
2. Conjuntos y Lgica Difusa (representar y manejar la informacin)

Uno de los principales factores determinantes de la profunda revolucin
experimentada en el mbito de la ciencia, la tcnica y la cultura de nuestros das
es el desarrollo de la informtica. La palabra informtica (Informacin
automtica), es un nombre colectivo que designa un vasto conjunto de teoras y

1
MORAL CALLEJN Serafn Teora de autmatas y lenguajes formales, En:
http://decsai.ugr.es/~smc/docencia/mci/automata.pdf
NAVARRETE SNCHEZ, Isabel y otros Teora de autmatas y lenguajes formales En:
http://perseo.dif.um.es/%7Eroque/talf/Material/apuntes.pdf
H
tcnicas cientficas desde la matemtica abstracta hasta la ingeniera y la gestin
administrativa cuyo objeto es el diseo y el uso de los computadores. Pero el
ncleo terico ms slido y fundamental de todo ese conjunto de doctrinas y
prcticas es la llamada Teora de la Computabilidad, formalmente elaborada en
los aos 30 y 40 gracias a los descubrimientos de lgicos matemticos como
Gdel, Turing, Post, Church, y Kleene, aunque sus orgenes ms remotos datan
de antiguo, con el planteamiento de la cuestin de saber si, al cabo de cierto
esfuerzo, el hombre podra llegar a un extremo en la investigacin en que, even-
tualmente, toda clase de problemas pudiera ser atacado por un procedimiento
general de forma que no requiriera el ms leve esfuerzo de imaginacin creadora
para llevarlo a cabo. Si todo queda determinado as en detalle, entonces sera
obviamente posible abandonar la ejecucin del mtodo a una mquina, mxime si
la mquina en cuestin es totalmente automtica. Esta idea, ambiciosa sin duda,
ha influido poderosamente en diferentes pocas el desarrollo de la ciencia.

El propsito inicial es hacer precisa la nocin intuitiva de funcin calculable; esto
es, una funcin cuyos valores pueden ser calculados de forma automtica o
efectiva mediante un algoritmo, y construir modelos tericos para ello (de
computacin). As podemos obtener una comprensin ms clara de esta idea
intuitiva; y solo de esta forma podemos explorar matemticamente el concepto de
computabilidad y los conceptos relacionados con ella, tales como decibilidad, etc...

La teora de la computabilidad puede caracterizarse, desde el punto de vista de las
Ciencias de la Computacin, como la bsqueda de respuestas para las siguientes
preguntas:

1)Qu pueden hacer los computadores (sin restricciones de ningn tipo )?
2) Cuales son las limitaciones inherentes a los mtodos automticos de clculo?.

El primer paso en la bsqueda de las respuestas a estas preguntas est en el
estudio de los modelos de computacin. Los comienzos de la Teora. La Tesis
de Church-Turing

Los modelos abstractos de computacin tienen su origen en los aos 30, bastante
antes de que existieran los computadores modernos, en el trabajo de los lgicos
Church, Gdel, Kleene, Post, y Turing. Estos primeros trabajos han tenido una
profunda inuencia no solo en el desarrollo terico de las Ciencias de la
Computacin, sino que muchos aspectos de la prctica de la computacin que son
ahora lugar comn de los informticos, fueron presagiados por ellos; incluyendo la
existencia de computadores de propsito general, la posibilidad de interpretar
programas, la dualidad entre software y hardware, y la representacin de
lenguajes por estructuras formales basados en reglas de produccin.

El punto de partida de estos primeros trabajos fueron las cuestiones
fundamentales que D. Hilbert formul en 1928, durante el transcurso de un
congreso internacional:

1.-Son completas las matemticas, en el sentido de que pueda probarse o no
cada aseveracin matemtica?
2.-Son las matemticas consistentes, en el sentido de que no pueda probarse
simultaneamente una aseveracin y su negacin?
3.-Son las matemticas decidibles, en el sentido de que exista un mtodo
denido que se pueda aplicar a cualquier aseveracin matemtica, y que
determine si dicha aseveracin es cierta?.

La meta de Hilbert era crear un sistema matemtico formal completo,
consistente", en el que todas las aseveraciones pudieran plantearse con precisin.
Su idea era encontrar un algoritmo que determinara la verdad o falsedad de
cualquier proposicin en el sistema formal. A este problema le llam el
Entscheidungs problem.

Por desgracia para Hilbert, en la dcada de 1930 se produjeron una serie de
investigaciones que mostraron que esto no era posible. Las primeras noticias en
contra surgen en 1931 con K. Gdel y su Teorema de Incompletitud: "Todo
sistema de primer orden consistente que contenga los teoremas de la aritmtica y
cuyo conjunto de (nmeros de Gdel de) axiomas sea recursivo no es completo."

Como consecuencia no ser posible encontrar el sistema formal deseado por
Hilbert en el marco de la lgica de primer orden, a no ser que se tome un conjunto
no recursivo de axiomas, hecho que escapaba a la mente de los matemticos.
Una versin posterior y ms general del teorema de Gdel elimina la posibilidad
de considerar sistemas deductivos ms potentes que los sistemas de primer
orden, demostrando que no pueden ser consistentes y completos a la vez.

Un aspecto a destacar dentro del teorema de incompletitud de Gdel, fu la idea
de codicacin. Se indica un mtodo (numeracin de Gdel) mediante el cual se
asigna un nmero de cdigo (entero positivo) a cada frmula bien formada del
sistema (fbf) y a cada sucesin nita de frmulas bien formadas, de tal modo que
la fbf o sucesin nita de fbf se recupera fcilmente a partir de su nmero de
cdigo. A travs de este cdigo, los enunciados referentes a enteros positivos,
pueden considerarse como enunciados referentes a nmeros de cdigo de
expresiones, o incluso referentes a las propias expresiones. Esta misma idea fu
posteriormente utilizada para codicar algoritmos como enteros positivos, y as
poder considerar un algoritmo, cuyas entradas fuesen enteros positivos, como un
algoritmo cuyas entradas fuesen algoritmos.

El siguiente paso importante lo constituye la aparicin casi simultnea en 1936 de
varias caracterizaciones independientes de la nocin de calculabilidad efectiva, en
los trabajos de Church, Kleene, Turing y Post. Los tres primeros mostraban
problemas que eran efectivamente indecidibles; Church y Turing probaron adems
que el Entscheidungsproblem era un problema indecidible.

Church propuso la nocin de funcin -denible como funcin efectivamente
calculable. La demostracin de teoremas se convierte en una transformacin de
una cadena de smbolos en otra, en clculo lambda, segn un conjunto de reglas
formales. Este sistema result ser inconsistente, pero la capacidad para expresar-
calcular funciones numricas como trminos del sistema llam pronto la atencin
de l y sus colaboradores.

Gdel habia recogido la idea de Herbrand de que una funcin f podra denirse por
un conjunto de ecuaciones entre trminos que incluian a la funcin f y a smbolos
para funciones previamente denidas, y precis esta idea requiriendo que cada
valor de f se obtenga de las ecuaciones por sustitucin de las variables por
nmeros y los trminos libres de variables por los valores que ya se habian
probado que designaban. Esto dene la clase de las funciones recursivas de
Herbrand-Gdel.

En 1936, Church hace un esquema de la demostracin de la equivalencia entre
las funciones -denibles y las funciones recursivas de Herbrand-Gdel (esta
equivalencia tambin haba sido probada por Kleene ); y aventura que estas iban a
ser las nicas funciones calculables por medio de un algoritmo a travs de la tesis
que lleva su nombre, y utilizando la nocin de funcin -denible, di ejemplos de
problemas de decisin irresolubles, y demostr que el Entscheidungsproblem era
uno de esos problemas.

Por otra parte Kleene, pocos meses despues, demuestra formalmente la
equivalencia entre funciones -denible y funciones recursivas de Herbrand-Gdel,
y d ejemplos de problemas irresolubles utilizando la nocin de funcin recursiva.

La tercera nocin de funcin calculable proviene del matemtico ingls A. Turing,
quin argument que la tercera cuestin de Hilbert (el Entscheidungsproblem)
poda atacarse con la ayuda de una mquina, al menos con el concepto abstracto
de mquina.

Turing seal que haba tenido xito en caracterizar de un modo
matemticamente preciso, por medio de sus mquinas, la clase de las funciones
calculables mediante un algoritmo, lo que se conoce hoy como Tesis de Turing.

Aunque no se puede dar ninguna prueba formal de que una mquina pueda tener
esa propiedad, Turing di un elevado nmero de argumentos a su favor, en base a
lo cual present la tesis como un teorema demostrado. Adems, utiliz su
concepto de mquina para demostrar que existen funciones que no son
calculables por un mtodo denido y en particular, que el Entscheidungsproblem
era uno de esos problemas.

Cuando Turing conoci los trabajos de Church-Kleene, demostr que los
conceptos de funcin -denible y funcin calculable por medio de una mquina
de Turing coinciden. Naturalmente a la luz de esto la Tesis de Turing resulta ser
equivalente a la de Church.

Finalmente, cabe resear el trabajo de E. Post. Este estaba interesado en marcar
la frontera entre lo que se puede hacer en matemticas simplemente por
procedimientos formales y lo que depende de la comprensin y el entendimiento.
De esta forma, Post formula un modelo de procedimiento efectivo a travs de los
llamados sistemas deductivos normales. Estos son sistemas puramente formales
en los que puede deducirse sucesiones nitas de smbolos como consecuencia
de otras sucesiones nitas de smbolos por medio de un tipo normalizado de
reglas y a partir de un conjunto de axiomas. As pues, dada una sucesin nita de
smbolos como entrada, las reglas permiten convertirla en una sucesin nita de
salida. En su artculo, Post demostr resultados de incompletitud e indecibilidad en
estos sistemas.

Los resultados hasta ahora citados, se reeren a funciones totales. La existencia
de algoritmos que con determinadas entradas nunca terminan, condujo de forma
natural a considerar funciones parciales. Kleene fu el primero en hacer tal
consideracin en 1938. El estudio de estas funciones ha mostrado la posibilidad
de generalizar todos los resultados anteriores a funciones parciales. Por otro lado,
el estudio de las funciones parciales calculables ha resultado esencial para el
posterior desarrollo de la materia.

Posteriormente, se demostr la equivalencia entre lo que se poda calcular
mediante una mquina de Turing y lo que se poda calcular mediante un sistema
formal en general.

A la vista de estos resultados, la Tesis de Church-Turing es aceptada como un
axioma en la teora de la computacin, y ha servido como punto de partida en la
investigacin de los problemas que se pueden resolver mediante un algoritmo.

1.1.1. Problemas no computables

Usando la codicacin de Gdel, se demostr que era posible construir una
mquina de propsito general, es decir, capaz de resolver cualquier problema que
se pudiese resolver mediante un algoritmo. Dicha mquina tendra como entrada
el entero que codicara el algoritmo solucin del problema y la propia entrada del
problema, de tal forma, que la mquina aplicara el algoritmo codicado a la
entrada del problema. Esta hipottica mquina puede considerarse como el padre
de los actuales computadores de proposito general.

Una de las cuestiones ms estudiadas en la teora de la computabilidad ha sido la
posibilidad de construir algoritmos que nos determinen si un determinado
algoritmo posee o no una determinada propiedad. As, sera interesante responder
de forma automtica a cuestiones como:
Calculan los algoritmos A y B la misma funcin? (Problema de la
equivalencia)
Parar el algoritmo A para una de sus entradas? (Problema de la parada)
Parar el algoritmo A para todas sus entradas? (Problema de la totalidad)
Calcula el algoritmo A la funcin f? (Problema de la vericacin?)
etc . . .

En un principio se fueron obteniendo demostraciones individuales de la no
computabilidad de cada una de estas cuestiones, de forma que se tena la
sensacin de que casi cualquier pregunta interesante acerca de algoritmos era no
computable. A pesar de esto, y como consecuencia de la existencia de un
programa universal hay otras muchas cuestiones interesantes que se han
demostrado computables.

El identicar los problemas que son computables y los que no lo son tiene un
considerable inters, pues indica el alcance y los lmites de la computabilidad, y
as demuestra los lmites tericos de los computadores. Adems de las cuestiones
sobre algoritmos, se han encontrado numerosos problemas menos "generales"que
han resultado ser no computables. Como ejemplo se cita: Dcimo problema de
Hilbert. Una ecuacin diofntica es la ecuacin de los ceros enteros de un
polinomio con coecientes enteros. Se pregunta si hay un procedimiento efectivo
que determine si una ecuacin diofntica tiene o no solucin.

Por otro lado, son muchos los problemas interesantes que se han demostrado
computables. Todas las funciones construidas por recursividad primitiva o
minimalizacin a partir de funciones calculables resultan ser calculables como
consecuencia de los trabajos de Church y Turing. Pero adems, otras funciones
ms complejamente denidas tambin son computables. Como ejemplo ms
interesante de aplicacin de este tipo de recursin tenemos la funcin de
Ackermann


LECCION 2. - DIFERENTES MODELOS DE COMPUTACION
2


onsideraremos las Ciencias de la Computacin como un cuerpo de
conocimiento cuyo principal objetivo es la resolucin de problemas por medio
de un computador.
Se pueden citar las siguientes deniciones:

a) La ACM (Asociation Computing Machinering): la disciplina Ciencias de la
Computacin es el estudio sistemtico de los procesos algortmicos que

2
MORAL CALLEJN Serafn Teora de autmatas y lenguajes formales, En:
http://decsai.ugr.es/~smc/docencia/mci/automata.pdf
NAVARRETE SNCHEZ, Isabel y otros Teora de autmatas y lenguajes formales En:
http://perseo.dif.um.es/%7Eroque/talf/Material/apuntes.pdf
C
describen y transforman informacin: teora, anlisis, diseo, eciencia,
implementacin, y aplicacin.
b) Norman E. Gibbs y Allen B. Tucker (1986) indican que: no debemos
entender que el objetivo de las Ciencias de la Computacin sea la
construccin de programas sino el estudio sistemtico de los algoritmos y
estructura de datos, especcamente de sus propiedades formales.

Para ser ms concretos (A. Berztiss 1987), se consideran las Ciencias de la
computacin, como un cuerpo de conocimiento cuyo objetivo es obtener
respuestas para las siguientes cuestiones:

A) Qu problemas se pueden resolver mediante un computador?
B) Cmo puede construirse un programa para resolver un problema?
C) Resuelve realmente nuestro programa el problema?
D) Cuanto tiempo y espacio consume nuestro problema?

Al Analizar en profundidad los 4 puntos anteriores se llega a descubrir
explcitamente los diferentes contenidos abarcados por las Ciencias de la
Computacin.

El planteamiento de la primera cuestin conduce a precisar el concepto de
problema y de lo que un computador es capaz de realizar.

Durante muchos aos se crey que si un problema poda enunciarse de manera
precisa, entonces con suciente esfuerzo y tiempo sera posible encontrar un
algoritmo o mtodo para encontrar una solucin (o tal vez podra proporcionarse
una prueba de que tal solucin no existe). En otras palabras, se crea que no
haba problema que fuera tan intrnsecamente difcil que en principio nunca
pudiera resolverse. Uno de los grandes promotores de esta creencia fu el
matemtico David Hilbert (1862 - 1943), quien en un congreso mundial arm:

"Todo problema matemtico bien denido debe ser necesariamente susceptible de
un planteamiento exacto, ya sea en forma de una respuesta real a la pregunta
planteada o debido a la constatacin de la imposibilidad de resolverlo, a lo que se
debera el necesario fallo de todos los intentos... "

El principal obstculo que los matemticos de principios de siglo encontraban al
plantearse estas cuestiones era concretar con exactitud lo que signica la palabra
algoritmo como sinnimo de mtodo para encontrar una solucin. La nocin de
algoritmo era intuitiva y no matemticamente precisa. Las descripciones dadas por
los primeros investigadores tomaron diferentes formas, que pueden clasicarse
ampliamente del siguiente modo:

(a) mquinas computadoras abstractas (denidas de modo preciso),
(b) construcciones formales de procedimientos de cmputo, y
(c) construcciones formales productoras de clases de funciones.

Las dos primeras caracterizaciones se reeren a la propia nocin de algoritmo (en
principio no hay gran diferencia entre ambas). La ltima d descripciones de la
clase de funciones computables mediante un algoritmo.

Ejemplos de (a) son los Autmatas y las mquinas de Turing, (diseadas por
Turing en los aos 30). Un ejemplo de (b) son los sistemas de Thue. Por ltimo,
las funciones recursivas constituyen el ejemplo clsico de (c).

El resultado crucial es que las diversas caracterizaciones de las funciones
(parciales) computables mediante un algoritmo condujeron todas a una misma
clase, a saber, la clase de las funciones parciales recursivas. Esto es algo
suceptible de demostracin, y que ha sido demostrado. Lo que no es suceptible de
demostracin es que la clase de las funciones parciales recursivas coincida con la
clase de las funciones computables mediante un algoritmo. No obstante, a la luz
de las evidencias a favor y de la falta de evidencias en contra, aceptamos la Tesis
de Church que arma la equivalencia de ambas clases.

Se clasican los problemas segn que siempre sea posible encontrar la solucin
por medio de un algoritmo (problemas computables) que no existan algoritmos
que siempre produzcan una solucin (problemas no computables).

Surge de modo inmediato la cuestin B) de como disear un programa (algoritmo
especicado para poder ser ejecutado por un computador) que resuelva un
problema dado. En la primera poca del desarrollo informtico los programas
dependan intrnsecamente del computador utilizado, pues se expresaban en
lenguaje mquina, directamente interpretable por el computador.

Surgi entonces la necesidad de idear otros mecanismos para construir y expresar
los programas. El hilo conductor de tales mecanismos fu la abstraccin: separar
el programa del computador y acercarlo cada vez ms al problema.

Los subprogramas empezaron ya a usarse a principios de los 50, dando lugar
posteriormente al primer tipo de abstraccin, la procedimental. A principios de los
60, se empezaron a entender los conceptos abstractos asociados a estructuras de
datos bsicas pero an no se separaban los conceptos de las implementaciones.
Con el nacimiento en esta poca de los primeros lenguajes de alto nivel, Fortran
p.ej., se lleg a la abstraccin sintctica, al abstraerse la semntica de las
expresiones matemticas y encapsular el acceso a ellas a travs de la sintaxis
propia del lenguaje. En cualquier caso con el desarrollo de estos lenguajes de alto
nivel se solventaron los problemas de exibilidad en la comunicacin con el
computador, y se empezaron a estudiar los algoritmos de forma independiente del
computador concreto en que se probaran y del lenguaje concreto en que se
expresaran.

Aparece la necesidad de traducir los programas escritos en lenguajes de alto nivel
al lenguaje mquina, de forma automtica, y se buscan mquinas o
procedimientos que puedan reconer el lxico y la sintxis de dichos lenguajes.

Hay que comentar que no hay un algoritmo para ensear a disear algoritmos, y
que muchas veces el proceso de construccin puede llegar a ser muy poco
disciplinado. No obstante, existen tcnicas de diseo de algoritmos, que vienen a
ser modelos abstractos de los mismos aplicables a gran variedad de problemas
reales.

Una vez construido un programa para un problema, surge la cuestin C) de si lo
resuelve realmente. Normalmente los programadores prueban sus programas
sobre una gran cantidad de datos de entrada para descubrir la mayora de los
errores lgicos presentes, aunque con este mtodo (al que suele denominarse de
prueba y depuracin) no se puede estar completamente seguro de que el
programa no contiene errores. Necesitaramos para realizar la vericacin formal,
reglas que describan de forma precisa el efecto que cada instruccin tiene en el
estado actual del programa, para, aplicando dichas reglas demostrar
rigurosamente que lo que hace el programa coincide con sus especicaciones. En
cualquier caso y cuando la prueba formal resulte muy complicada, podemos
aumentar la conanza en nuestro programa realizando en el mismo los "test
cuidadosos de que hablbamos al principio.

Alcanzado este punto, ya tenemos un programa que en principio es solucin de un
problema.

Se plantea entonces la duda de que hacer en caso de que para el mismo
problema seamos capaces de construir otro programa que tambin lo resuelva.
Cmo decidirnos por una u otra solucin? o ms an, qu ocurre si el programa
an siendo correcto consume demasiados recursos y es inaceptable?. La
respuesta viene dada a travs del punto D) en nuestro recorrido: el anlisis del
tiempo y espacio que necesita una solucin concreta; en denitiva, el estudio de la
eciencia de los programas, midiendo la complejidad en espacio, por el nmero de
variables y el nmero y tamao de las estructuras de datos que se usan, y la
complejidad en tiempo por el nmero de acciones elementales llevadas a cabo en
la ejecucin del programa.

Los problemas computables fueron entonces clasicados en dos tipos: problemas
ecientemente computables, para los que exista un algoritmo eciente; y
problemas intratables, para los que no existen algoritmos ecientes. La existencia
de problemas intratables no ha sido probada, si bin se han encontrado muchas
evidencias a su favor.

Otra clase de problemas a considerar es la clase NP
3
de los problemas para los
que existia un algoritmo no determinstico en tiempo polinomial, y dentro de ella,
los problemas NP- completos.


3
la N de no determinista; la P de polinmico. Problemas que no pueden ser resueltos por la
mquinas determinsticas o computadores actuales.
Los intentos (desde los aos 40) de construir mquinas para modelizar algunas de
las funciones del cerebro biolgico, ha permitido desarrollar mquinas capaces de
aprender (y reproducir) funciones (o sistemas) cuya forma (o comportamiento) se
desconoce, pero s conocemos una serie de ejemplos que reejan esta forma (o
comportamiento). Estas mquinas llamadas Redes Neuronales Articiales tambin
aportan su granito de arena al desarrollo de la computacin.

A menudo se utiliza la tcnica de reducir un problema a otro para comprobar si
tiene o no solucin efectiva. La estrategia en el caso de la respuesta negativa es la
siguiente, si se reduce de forma efectiva un problema sin solucin efectiva a otro
problema (mediante una funcin calculable), entonces este nuevo problema
tampoco tendr solucin efectiva. La razn es muy simple, si tuviese solucin
efectiva, componiendo el algoritmo solucin con el algoritmo de transformacin
obtendramos una solucin para el problema efectivamente irresoluble. En sentido
inverso, si se reduce un problema a otro para el que se conoce una solucin
efectiva, entonces componiendo se obtiene una solucin para el primer problema.
Esta tcnica es muy til y se utiliza a menudo. Por otro lado, esta msma tcnica
es muy empleada en el campo de la complejidad algortmica.

La Complejidad Algortmica trata de estudiar la relativa dicultad computacional de
las funciones computables. Rabin (1960) fu de los primeros en plantear la
cuestin Qu quiere decir que f sea ms difcil de computar que g?

J. Hartmanis and R.E. Stearns, en On the computational complexity of algorithms
(1965) introducen la nocin fundamental de medida de complejidad denida como
el tiempo de computacin sobre una mquina de Turing multicinta.

Despus surge la denicin de funciones computables en tiempo polinomial, y se
establece una jerarqua de complejidad, los problemas NP, NP-duros y NP-
completos

LECCION 3. - AUTOMATAS Y LENGUAJES

l desarrollo de los ordenadores en la dcada de los 40, con la introduccin de
los programas en la memoria principal, y posteriormente con los lenguajes de
programacin de alto nivel, propician la distincin entre lenguajes formales, con
reglas sintcticas y semnticas rgidas, concretas y bin definidas, de los
lenguajes naturales como el ingls, donde la sintaxis y la semntica no se pueden
controlar fcilmente. Los intentos de formalizar los lenguajes naturales, lleva a la
construccin de gramticas, como una forma de describir estos lenguajes,
utilizando para ello reglas de produccin para construir las frases del lenguaje. Se
puede entonces caracterizar un Lenguaje, mediante las reglas de una gramtica
adecuada.

Los trabajos de McCulloch y Pitts (1943) describen los clculos lgicos inmersos
en un dispositivo (neurona artificial) que haban diseado para simular la actividad
E
de una neurona biolgica. El dispositivo reciba o no, una serie de impulsos
elctricos por sus entradas que se ponderaban, y produca una salida binaria
(existe pulso elctrico o no). Las entradas y salidas se podan considerar como
cadenas de 0 y 1, indicando entonces la forma de combinar la cadena de entrada
para producir la salida. La notacin utilizada es la base para el desarrollo de
expresiones regulares en la descripcin de conjuntos de cadenas de caracteres.

C. Shannon (1948) define los fundamentos de la teora de la informacin, y utiliza
esquemas para poder definir sistemas discretos, parecidos a los autmatas finitos,
relacionndolos con cadenas de Markov, para realizar aproximaciones a los
lenguajes naturales.

J. Von Neumann (1948) introduce el termino de teora de autmatas, y dice sobre
los trabajos de McCulloch-Pitts: ... el resultado ms importante de McCulloch-Pitts,
es que cualquier funcionamiento en este sentido, que pueda ser definido en todo,
lgicamente, estrctamente y sin ambiguedad, en un nmero finito de palabras,
puede ser realizado tambin por una tal red neuronal formal.

La necesidad de traducir los algortmos escritos en lenguajes de alto nivel al
lenguaje mquina, propicia la utilizacin de mquinas como los autmatas de
estados finitos, para reconocer si una cadena determinada pertenece (es una
frase de) a un lenguaje concreto, usando para ello la funcin de transicin de
estados, mediante un diagrama de transicin o una tabla adecuada. Tenemos as
otra forma de caracterizar los lenguajes, de acuerdo con mquinas automticas
que permitan reconocer sus frases.

S.C. Kleene, en 1951, realiza un informe (solicitado por la RAND Corporation)
sobre los trabajos de McCulloch-Pitts, que se publica en 1956. En este informe,
Kleene demuestra la equivalencia entre lo que l llama "dos formas de definir una
misma cosa", que son los sucesos regulares (que se pueden describir a partir de
sucesos bases y los operadores unin, concatenacin e iteracin (*) ), es decir,
expresiones regulares, y sucesos especificados por un autmata finito.

Rabin y Scott (1960) obtienen un modelo de computador con una cantidad finita de
memoria, al que llamaron autmata de estados finitos. Demostraron que su
comportamiento posible, era bsicamente el mismo que el descrito mediante
expresiones regulares, desarrolladas a partir de los trabajos de McCulloch y Pitts.
No obstante lo dicho, para un alfabeto concreto, no todos los lenguajes que se
pueden construir son regulares. Ni siquiera todos los interesantes desde el punto
de vista de la construccin de algortmos para resolver problemas. Hay entonces
muchos problemas que no son calculables con estos lenguajes. Esto pone de
manifiesto las limitaciones de los autmatas finitos y las gramticas regulares, y
propicia el desarrollo de mquinas reconocedoras de otros tipos de lenguajes y de
las gramticas correspondientes, asociadas a los mismos.

En 1956, la Princenton Univ. Press publica el libro Automata Studies, editado por
C. Shannon y J. McCarthy, donde se recogen una serie de trabajos sobre
autmatas y lenguajes formales.

D. A. Huffman (1954) ya utiliza conceptos como estado de un autmata y tabla de
transiciones.

N. Chomsky (1956) propone tres modelos para la descripcin de lenguajes, que
son la base de su futura jerarqua de los tipos de lenguajes, que ayud tambin en
el desarrollo de los lenguajes de programacin. Para ello intent utilizar autmatas
para extraer estructuras sintcticas (....el ingls no es un lenguaje de estados
finitos.) y dirige sus estudios a las gramticas, indicando que la diferencia esencial
entre autmatas y gramticas es que la lgica asociada a los autmatas (p.e.,
para ver la equivalencia entre dos de ellos) es Decidible, mientras que la asociada
a las gramticas no lo es. Desarrolla el concepto de gramtica libre del contexto,
en el transcurso de sus investigaciones sobre la sintxis de los lenguajes
naturales.

Backus y Naur desarrollaron una notacin formal para describir la sintxis de
algunos lenguajes de programacin, que bsicamente se sigue utilizando todava,
y que poda considerarse equivalente a las gramticas libres del contexto.

Consideramos entonces los lenguajes libres (independientes) del contexto, y las
gramticas libres del contexto y los autmatas con pila, como forma de
caracterizarlos y manejarlos. Los distintos lenguajes formales que se pueden
construir sobre un alfabeto concreto pueden clasificarse en clases cada vez ms
amplias que incluyen como subconjunto a las anteriores, de acuerdo con la
jerarqua establecida por Chomsky en los aos 50.

Se puede llegar as, de una forma casi natural a considerar las mquinas de
Turing, establecidas casi 20 aos antes, como mquinas reconocedoras de los
lenguajes formales dependientes del contexto o estructurados por frases, e incluso
a interpretar la Tesis de Turing como que un sistema computacional nunca podr
efectuar un anlisis sintctico de aquellos lenguajes que estn por encima de los
lenguajes estructurados por frases, segn la jerarqua de Chomsky".

En consecuencia, podemos utilizar la teora de autmatas y los conceptos
relativos a gramticas sobre distintos tipos de lenguajes, para decidir (si se puede)
si una funcin (o problema) es calculable, en base a que podamos construir un
algoritmo solucin mediante un lenguaje que puede ser analizado mediante alguna
mquina de las citadas anteriormente.

Los temas sobre autmatas, computabilidad, e incluso la complejidad algortmica
fueron incorporndose a los curriculum de ciencias de la computacin de
diferentes universidades, mediada la dcada de los 60. Esta incorporacin puso
de manifiesto que las ciencias de la computacin haban usado gran cantidad de
ideas de muy diferentes campos para su desarrollo, y que la investigacin sobre
aspectos bsicos poda cooperar y aumentar los avances de la computacin.

1.3.1. Qu es un lenguaje formal?
4


En matemticas, lgica, y las ciencias computacionales, un lenguaje formal es un
conjunto de palabras (cadenas de caracteres) de longitud finita formadas a partir
de un alfabeto (conjunto de caracteres) finito.

Informalmente, el trmino lenguaje formal se utiliza en muchos contextos (en las
ciencias, en derecho, etc.) para referirse a un modo de expresin ms cuidadoso y
preciso que el habla cotidiana. Hasta finales de la dcada de 1990, el consenso
general era que un lenguaje formal, era en cierto modo la versin lmite de este
uso antes mencionado: un lenguaje tan formalizado que poda ser usado en forma
escrita para describir mtodos computacionales. Sin embargo, hoy en da, el punto
de vista de que la naturaleza esencial de los lenguajes naturales (sin importar su
grado de formalidad en el sentido informal antes descrito) difiere de manera
importante de aquella de los verdaderos lenguajes formales, gana cada vez ms
adeptos.

Un posible alfabeto sera, digamos, {a, b}, y una cadena cualquiera sobre este
alfabeto sera, por ejemplo, ababba. Un lenguaje sobre este alfabeto, que
incluyera esta cadena, sera: el conjunto de todas las cadenas que contienen el
mismo nmero de smbolos a que b, por ejemplo.

La palabra vaca (esto es, la cadena de longitud cero) es permitida y
frecuentemente denotada mediante o . Mientras que el alfabeto es un conjunto
finito y cada palabra tiene una longitud tambin finita, un lenguaje puede bien
incluir un nmero infinito de palabras.

Algunos ejemplos varios de lenguajes formales:
el conjunto de todas las palabras sobre {a, b}
el conjunto {an: n es un nmero primo}
el conjunto de todos los programas sintcticamente vlidos en un
determinado lenguaje de programacin
el conjunto de entradas para las cuales una particular mquina de Turing se
detiene.
Los lenguajes formales pueden ser especificados en una amplia variedad de
maneras, como:

cadenas producidas por una gramtica formal (ver Jerarqua de Chomsky)
cadenas producidas por una expresin regular

4
Definicin de Wikipedia, En http://es.wikipedia.org/wiki/Lenguaje_formal
cadenas aceptadas por un autmata, tal como una mquina de Turing

Una pregunta que se hace tpicamente sobre un determinado lenguaje formal L es
cun difcil es decidir si incluye o no una determinada palabra v. Este tema es del
dominio de la teora de la computabilidad y la teora de la complejidad
computacional.

Por contraposicin al lenguaje propio de los seres vivos y en especial el lenguaje
humano, considerados lenguajes naturales, se denomina lenguaje formal a los
lenguajes artificiales propios de las matemticas o la informtica, los lenguajes
artificiales son llamados lenguajes formales (incluyendo lenguajes de
programacin). Sin embargo, el lenguaje humano tiene una caracterstica que no
se encuentra en los lenguajes de programacin: la diversidad.

En 1956, Noam Chomsky cre la Jerarqua de Chomsky para organizar los
distintos tipos de lenguaje formal.

Un Lenguaje normal o natural, como por ejemplo el lenguaje espaol u ingls, son
la clase de lenguajes que han evolucionado con el paso del tiempo y tienen por fin
la comunicacin humana. Este tipo de lenguajes estn en constante evolucin y
sus reglas gramaticales solo pueden ser explicadas y no determinadas en cuanto
a la estructura del lenguaje.

En contraste, un lenguaje formal esta definido por reglas preestablecidas y se
ajustan con rigor a ellas, ejemplos son los lenguajes computacionales como C o
Pascal.

Como especificar la sintaxis de un lenguaje?: Se utiliza la jerarqua de chomsky; la
jerarqua de Chomsky es una clasificacin jerrquica de distintos tipos de
gramticas formales que generan lenguajes formales. Esta jerarqua fue descrita
por Noam Chomsky en 1956.

Define cuatro familias de gramticas y lenguajes estas son: 0,1,2,3 gramticas sin
restricciones, de contexto, de contexto libre y regulares.
Gramticas de tipo 0 (sin restricciones), que incluye a todas las gramticas
formales. Estas gramticas generan todos los lenguajes capaces de ser
reconocidos por una mquina de Turing. Los lenguajes son conocidos como
lenguajes recursivamente enumerables. Ntese que esta categora es
diferente de la de los lenguajes recursivos, cuya decisin puede ser
realizada por una mquina de Turing que se detenga.
Gramticas de tipo 1 (gramticas sensibles al contexto) generan los
lenguajes sensibles al contexto. Estas gramticas tienen reglas de la forma
con A un no terminal y , y cadenas de terminales y no
terminales. Las cadenas y pueden ser vacas, pero no puede serlo. La
regla est permitida si S no aparece en la parte derecha de ninguna
regla. Los lenguajes descritos por estas gramticas son exactamente todos
aquellos lenguajes reconocidos por una mquina de Turing no determinista
cuya cinta de memoria est acotada por un cierto nmero entero de veces
sobre la longitud de entrada.
Gramticas de tipo 2 (gramticas libres del contexto) generan los lenguajes
independientes del contexto. Las reglas son de la forma con A un
no terminal y una cadena de terminales y no terminales. Estos lenguajes
son aquellos que pueden ser reconocidos por un autmata con pila.
Gramticas de tipo 3 (gramticas regulares) generan los lenguajes
regulares. Estas gramticas se restringen a aquellas reglas que tienen en la
parte izquierda un no terminal, y en la parte derecha un solo terminal,
posiblemente seguido de un no terminal. La regla tambin est
permitida si S no aparece en la parte derecha de ninguna regla. Estos
lenguajes son aquellos que pueden ser aceptados por un autmata finito.
Tambin esta familia de lenguajes pueden ser obtenidas por medio de
expresiones regulares.

LECCION 4. LENGUAJES REGULARES
5


os lenguajes regulares se llaman as porque sus palabras contienen
regularidades o repeticiones de los mismos componentes, como por ejemplo
en el lenguaje L
1
siguiente: L
1
= {ab, abab, ababab, abababab, . . .} En este
ejemplo se aprecia que las palabras de L1 son simplemente repeticiones de ab
cualquier nmero de veces. Aqu la regularidad consiste en que las palabras
contienen ab algn nmero de veces.

Otro ejemplo ms complicado sera el lenguaje L2: L2 = {abc, cc, abab, abccc,
ababc, . . .}

La regularidad en L
2
consiste en que sus palabras comienzan con repeticiones de
ab, seguidas de repeticiones de c. Similarmente es posible definir muchos otros
lenguajes basados en la idea de repetir esquemas simples. Esta es la idea bsica
para formar los lenguajes Regulares.

Adicionalmente a las repeticiones de esquemas simples, vamos a considerar que
los lenguajes finitos son tambin regulares por definicin. Por ejemplo, el lenguaje
L
3
= {anita, lava, la, tina} es regular.

Finalmente, al combinar lenguajes regulares unindolos o concatenndolos,
tambin se obtiene un lenguaje regular. Por ejemplo, L
1
L
3
= {anita, lava, la, tina,
ab, abab, ababab, abababab, . . .} es regular.


5
BRENA PIERO, Ramon F. Autmatas y lenguajes un enfoque de diseo (2003) ITESM, En:
http://lizt.mty.itesm.mx/~rbrena/AyL.html
L
Tambin es regular una concatenacin como L
3
L
3
= {anitaanita, anitalava, anitala,
anitatina, lavaanita, lavalava, lavala, lavatina, . . .}

Las cadenas no nulas, en un alfabeto se crean por concatenacion de cadenas
sencillas, las de longitud 1. Tambien es posible ver la concatenacin como una
operacin en lenguajes, de modo que se podran considerar los lenguajes
obtenidos por concatenacin de lenguajes sencillos de la forma {a}, donde a ,
No obstante si la concatenacin es la nica operacin permitida, entonces solo
pueden obtenerse cadenas o lenguajes que contengan cadenas sencillas, agregar
la operacin de conjuntos de unin posibilita tener lenguajes de varios elementos y
si se aade la operacin * cerradura o estrella de Kleene que se deriva
naturalmente de la concatenacin, tambien es factible producir lenguajes infinitos.

Se adicionan dos lenguajes ms a los lenguajes sencillos de la forma {a}: el
lenguaje vacio y el lenguaje {} cuyo nico elemento es la cadena nula.

Un lenguaje regular en un alfabeto es uno que puede obtenerse de esos
lenguajes bsicos con las operaciones de unin, concatenacin y * de Kleene. As
pues es factible describir un lenguaje regular como una frmula explcita. Es
comun que sta ltima se simplifique un poco, al omitir las llaves {} o substituirlas
con parntesis y al reemplazar con +, de lo cual resulta una expresin regular.

1.4.1. Definicin formal de Lenguaje Regular

Un lenguaje L es regular si y slo si se cumple al menos una de las condiciones
siguientes:
L es finito
L es la unin o la concatenacin de otros lenguajes regulares R
1
y R
2
, L =
R
1
R
2

L = R1R2 respectivamente.
L es la cerradura o estrella de Kleene de algn lenguaje regular, L = R
*
.

Sea un alfabeto. El conjunto de lenguajes regulares sobre se define como:

(a) es un lenguaje regular.
(b) {} es un lenguaje regular.
(c) Para todo a , {a} es un lenguaje regular.
(d) Si A y B son lenguajes regulares, entonces AB, AB y A* son lenguajes
regulares.
(e) Ningn otro lenguaje sobre es regular.

Por la definicin anterior, el conjunto de los lenguajes regulares sobre esta
formado por el lenguaje vaco, los lenguajes unitarios incluido {} y todos los
lenguajes obtenidos a partir de la unin, concatenacin y cerradura o estrella de
Kleene.

Ejemplo: Sea = {a, b}, lo siguiente es cierto:

(i) y {} son lenguajes regulares
(ii) {a} y {b} son lenguajes regulares.
(iii) {a, b} es regular pues resulta de la unin de {a} y {b}.
(iv) {ab} es regular pues resulta de la concatenacin de {a} y {b}.
(v) {a, ab, b} es regular (unin de ii) y iv)).
(vi) {a
i
i 0} es regular.
(vii) {a
i
b
j
i 0 y j 0} es regular.
(viii) {(ab)
i
i 0} es regular.

LECCION 5. - AUTOMATA
6


a palabra autmata evoca algo que pretende imitar las funciones propias de los
seres vivos, especialmente relacionadas con el movimiento, por ejemplo el
tpico robot antropomorfo. En el campo de los Traductores, Procesadores,
Compiladores e Intrpretes, lo fundamental no es la simulacin del movimiento,
sino la simulacin de procesos para tratar informacin.

La informacin se codifica en cadenas de smbolos, y un autmata es un
dispositivo que manipula cadenas de smbolos que se le presentan a su entrada,
produciendo otras tiras o cadenas de smbolos a su salida.

El autmata recibe los smbolos de entrada, uno detrs de otro, es decir
secuencialmente. El smbolo de salida que en un instante determinado produce un
autmata, no slo depende del ltimo smbolo recibido a la entrada, sino de toda
la secuencia o cadena, que ha recibido hasta ese instante.

Todo lo anterior conduce a definir un concepto fundamental: estado de un
autmata.

El estado de un autmata es toda la informacin necesaria en un momento dado,
para poder deducir, dado un smbolo de entrada en ese momento, cual ser el
smbolo de salida. Es decir, conocer el estado de un autmata, es lo mismo que
conocer toda la historia de smbolos de entrada, as como el estado inicial, estado
en que se encontraba el autmata al recibir el primero de los smbolos de entrada.
El autmata tendr un determinado nmero de estados (pudiendo ser infinitos), y
se encontrar en uno u otro segn sea la historia de smbolos que le han llegado.

Se define configuracin de un autmata a su situacin en un instante. Se define
movimiento de un autmata como el transito entre dos configuraciones. Si un
autmata se encuentra en un estado determinado, recibe un smbolo tambin

6

CUEVAS LOVALLE, Juan Manuel LENGUAJES, GRAMTICAS Y AUTMATAS. Segunda Edicin, (Espaa), 2001.

L
determinado, producir un smbolo de salida y efectuar un cambio o transicin a
otro estado (tambin puede quedarse en el mismo estado).

El campo de estudio de los Traductores, Procesadores e Intrpretes son los
lenguajes y las gramticas que los generan. Los elementos del lenguaje son
sentencias, palabras, etc... Formadas a partir de un alfabeto o vocabulario, que no
es otra cosa que un conjunto finito de smbolos. Establecidas las reglas
gramaticales, una cadena de smbolos pertenecer al correspondiente lenguaje si
tal cadena se ha formado obedeciendo esas reglas. Entonces un autmata
reconocedor de ese lenguaje, funciona de tal forma que cuando reciba a su
entrada una determinada cadena de smbolos indica si dicha cadena pertenece o
no al lenguaje. Tambin se mostrar como existe un tipo de autmata para
reconocer cada uno de los tipos de lenguajes generados por las correspondientes
gramticas.

1.5.1. Definicin formal de autmata

Un autmata es una quntupla A = ( E, S, Q, f, g ) donde :

E = {conjunto de entradas o vocabulario de entrada}
S = {conjunto de salidas o vocabulario de salida}
Q = {conjunto de estados}

E es un conjunto finito, y sus elementos se llaman entradas o smbolos de entrada.
S es un conjunto finito, y sus elementos se llaman salidas o smbolos de salida.
Q es el conjunto de estados posibles, puede ser finito o infinito.

f es la funcin de transicin o funcin del estado siguiente, y para un par del
conjunto
E Q devuelve un estado perteneciente al conjunto Q.
E Q es el conjunto producto cartesiano de E por Q.
g es la funcin de salida, y para un par del conjunto E Q, devuelve un smbolo de
salida del conjunto S.

Representacin de autmatas

Los autmatas se pueden representar mediante:
- Tabla de transiciones.
- Diagrama de Moore.

Tabla de transiciones. Las funciones f y g pueden representarse mediante una
tabla, con tantas filas como estados y tantas columnas como entradas. As por
ejemplo se puede representar el autmata A = ( E, S, Q, f, g ) donde E = {a,b}, S =
{0,1}, Q = {q1,q2,q3} y las funciones f y g se pueden representar por :

f a b g a b
q
1
Q
1
q
2


q
1
0 1
q
2
Q
3
q
2


q
2
0 0
q
3
Q
3
q
1


q
3
1 0

As se tiene que f(a ,q
1
)=q
1
;g (a ,q
1
)=0 ; o tambin f(a ,q
2
)=q
3
; y g (a ,q
3
)=1 .

Ambas funciones tambin se pueden representar en una misma tabla de la
siguiente forma:
f / g a b
q
1
q1/0 q2/1
q2 q3/0 q2/0
q3 q3/1 q1/0

Diagramas de Moore. Los diagramas de Moore son otra forma de representar las
funciones de transicin y salida de un autmata.

El diagrama de Moore es un grafo orientado en el que cada nodo corresponde a
un estado; y si f( , q
i
) = q
j
y g( , q
i
) = s existe un arco dirigido del nodo q
i
al
correspondiente q
j
, sobre el que se pone la etiqueta / s, tal y como se muestra en
la figura 1.

Figura 1: Diagrama de Moore

As continuando con el ejemplo, el autmata se representa con el diagrama de
Moore de la figura 2.

Figura 2: Ejemplo de Diagrama de Moore



Para comprender el significado de Autmata Finito
7
, tendremos en cuenta el
trmino mquina, que evoca algo hecho en metal, usualmente ruidoso y grasoso,
que ejecuta tareas repetitivas que requieren de mucha fuerza o velocidad o
precisin. Ejemplos de estas mquinas son las embotelladoras automticas de
refrescos. Su diseo requiere de conocimientos en mecnica, resistencia de
materiales, y hasta dinmica de fluidos. Al disear tal mquina, el plano en que se
le dibuja hace abstraccin de algunos detalles presentes en la mquina real, tales
como el color con que se pinta, o las imperfecciones en la soldadura.

El plano de diseo mecnico de una mquina es una abstraccin de sta, que es
til para representar su forma fsica. Sin embargo, hay otro enfoque con que se
puede modelar la mquina embotelladora: cmo funciona, en el sentido de saber
qu secuencia de operaciones ejecuta. As, la parte que introduce el lquido pasa
por un ciclo repetitivo en que primero introduce un tubo en la botella, luego
descarga el lquido, y finalmente sale el tubo para permitir la colocacin de la
cpsula (corcholata). El orden en que se efecta este ciclo es crucial, pues si se
descarga el lquido antes de haber introducido el tubo en la botella, el resultado no
ser satisfactorio.

Las mquinas que se estudian son abstracciones matemticas que capturan
solamente el aspecto referente a las secuencias de eventos que ocurren, sin
tomar en cuenta ni la forma de la mquina ni sus dimensiones, ni tampoco si
efecta movimientos rectos o curvos, etc.

En esta parte se estudian las mquinas abstractas ms simples, los autmatas
finitos, las cuales estn en relacin con los lenguajes regulares, como veremos a
continuacin.

LECCION 6. - DEFINICIN FORMAL DE AUTMATAS FINITOS

l describir una mquina de estados finitos en particular, debemos incluir las
informaciones que varan de un autmata a otro; es decir, no tiene sentido
incluir descripciones generales aplicables a todo autmata. Estas informaciones
son exactamente las que aparecen en un diagrama de estados y transiciones,
como se presenta ms adelante.

7
BRENA PIERO, Ramon F. Autmatas y lenguajes un enfoque de diseo (2003) ITESM, En:
http://lizt.mty.itesm.mx/~rbrena/AyL.html
A



Un autmata nito es una quintupla

M =(Q, A, , q
0
, F) en que:
Q es un conjunto nito llamado conjunto de estados
A es un alfabeto llamado alfabeto de entrada
es una aplicacin llamada funcin de transicin
: Q A Q
q
0
es un elemento de Q, llamado estado inicial
F es un subconjunto de Q, llamado conjunto de estado nales.










Figura 3: Automata Finito

Desde el punto de vista intuitivo, podemos ver un autmata nito como una caja
negra de control (ver Figura 3), que va leyendo smbolos de una cadena escrita en
una cinta, que se puede considerar ilimitada por la derecha. Existe una cabeza de
lectura que en cada momento est situada en una casilla de la cinta. Inicialmente,
esta se sita en la casilla de ms a la izquierda. El autmata en cada momento
est en uno de los estado de Q. Inicialmente se encuentra en q
0
.

En cada paso, el autmata lee un smbolo y segn el estado en que se encuentre,
cambia de estado y pasa a leer el siguiente smbolo. As sucesivamente hasta que
termine de leer todos los smbolos de la cadena. Si en ese momento la mquina
est en un estado nal, se dice que el autmata acepta la cadena. Si no est en
un estado nal, la rechaza.

Otra definicin:
Una mquina de estados finitos M es un quntuplo (K,, , s, F), donde:
K es un conjunto de identificadores (smbolos) de estados;
es el alfabeto de entrada;
s K es el estado inicial;
F K es un conjunto de estados finales;
: K x K es la funcin de transicin, que a partir de un estado y un smbolo del
Alfabeto obtiene un nuevo estado. (que puede ser el mismo en que se encontraba)


Otra Definicin:
Un Autmata Finito se define por una quntupla:< Q, , q
0
, , A > , en donde
Q es el conjunto de estados
es el alfabeto del lenguaje
q
0
es el estado inicial
es la funcin de transicin
A es el conjunto de estados de aceptacin.

Ejemplo: Tomando el diagrama anterior:

Q = { , 0 , 1 , No } ; = {0,1} q
0
= ; A ={ 1 }

Funcin de transicin: : Q x Q

ENTRADAS
0 1

E 0 1
S
T 0 NO 1
A
D 1 0 1
O
S NO NO NO

La funcin de transicin indica a qu estado se va a pasar sabiendo cul es el
estado actual y el smbolo que se est leyendo. Es importante notar que es una
funcin y no simplemente una relacin; esto implica que para un estado y un
smbolo del alfabeto dados, habr un y slo un estado siguiente. Esta
caracterstica, que permite saber siempre cul ser el siguiente estado, se llama
determinismo.

Los autmatas nitos son capaces de reconocer solamente, un determinado tipo
de lenguajes, llamados Lenguajes Regulares, que pueden ser caracterizados
tambin, mediante un tipo de gramticas llamadas tambin regulares. Una forma
adicional de caracterizar los lenguajes regulares, es mediante las llamadas
expresiones regulares, que son las frases del lenguaje, construidas mediante
operadores sobre el alfabeto del mismo y otras expresiones regulares, incluyendo
el lenguaje vaco.

Estas caracterizaciones de los lenguajes regulares se utilizan en la prctica, segn
que la situacin concreta est favorecida por la forma de describir el lenguaje de
cada una de ellas. Los autmatas nitos se utilizan generalmente para vericar
que las cadenas pertenecen al lenguaje, y como un analizador en la traduccin de
algortmos al computador.


Las gramticas y sus reglas de produccin se usan frecuentemente en la
descripcin de la sintaxis de los lenguajes de programacin que se suele incluir en
los manuales correspondientes. Por otro lado, las expresiones regulares
proporcionan una forma concisa y relativamente sencilla (aunque menos intuitiva)
para describir los lenguajes regulares, poniendo de maniesto algunos detalles de
su estructura que no quedan tan claros en las otras caracterizaciones. Su uso es
habitual en editores de texto, para bsqueda y sustitucin de cadenas.

En denitiva, las caracterizaciones sealadas de los lenguajes (formales)
regulares, y por tanto ellos mismos, tienen un uso habitual en la computacin
prctica actual.

Ejemplo de autmata finito: Se va a disear un autmata que reconozca el paso
de un alumno por un curso, por ejemplo, Autmatas y lenguajes formales.
Representar las distintas decisiones que se realizan y si se aprueba o aplaza el
curso. Se controla que no haya ms de dos convocatorias por ao y se termina
cuando se aprueba el curso.Habr un alfabeto de entrada contendr los siguientes
elementos:

P: El alumno se presenta al examen.
N: El alumno no se presenta al examen.
A: El alumno aprueba el examen.
S: El alumno aplaza un examen.

Figura 4: Recorrido de un alumno por una asignatura

La secuencia se ilustra en la gura 4. Comienza en un estado, Inicio. A
continuacin decide si presenta en Febrero o no. Si no presenta y aprueba,
termina. Si no presenta o aplaza, se decide si se presenta en septiembre, pero
como hay que controlar que un estudiante no se presente a tres convocatorias en
un ao, los estados son distintos en ambos casos. Si en septiembre aprueba,

termina. Si suspende o aplaza y ya se haba presentado en febrero, comienza de
nuevo. En otro caso, puede decidir si presenta en diciembre. Si aprueba, termina y
si suspende, empieza de nuevo.

Este esquema corresponde a un autmata finito. Se caracteriza por una estructura
de control que depende de un conjunto nito de estados. Se pasa de unos a otros
leyendo smbolos del alfabeto de entrada. Este autmata representa una versin
simplicada del problema real, ya que no controla el nmero total de
convocatorias. Un autmata para todos los cursos se puede construir uniendo
autmatas para cada una de los cursos, pero teniendo en cuenta relaciones como
requisitos entre los mismos.

Ejemplo Supongamos el autmata M =(Q, A, q
0
, , F) donde
Q ={q
0
, q
1
, q
2
}
A ={a, b}

Figura 5: Diagrama de transicin, Autmata de estado finito

La funcin de transicin est denida por las siguientes igualdades:

(q
0
, a)=q
1

(q
0
, b)=q
2

(q
1
, a)=q
1

(q
1
, b)=q
2

(q
2
, a)=q
1

(q
2
, b)=q
0


F ={q1} El diagrama de transicin viene expresado en la Figura 5.


LECCION 7. - AUTOMATAS FINITOS DETERMINISTICOS
8
(AFD)

n autmata finito determinstico (AFD) se dene como una quntupla
M=(Q,V,,q
0
,F),donde:

Q es un conjunto finito de estados
V es el alfabeto de entrada
q
0
es el estado inicial
F Q es el conjunto de estados finales
: Q V Q es la funcin de transicin

El nombre determinista viene de la forma en que est definida la funcin de
transicin: si en un instante t la mquina est en el estado q y lee el smbolo a
entonces, en el instante siguiente t + 1 la mquina cambia de estado y sabemos
con seguridad cual es el estado al que cambia, que es precisamente (q, a).

El AFD es inicializado con una palabra de entrada w como sigue:

1. w se coloca en la cinta de entrada, con un smbolo en cada celda
2. el cabezal de lectura se apunta al smbolo mas a la izquierda de w
3. el estado actual pasa a ser q
0



Una vez que se ha inicializado el AFD, comienza su ejecucin sobre la palabra
de entrada.
Como cualquier computador tiene un ciclo de ejecucin bsico:

1. se lee el smbolo actual, que es el apuntado por el cabezal de lectura. Si el
cabezal apunta a una celda vacila entonces el AFD termina su ejecucin,
aceptando la palabra en caso de que el estado actual sea final y
rechazando la palabra en caso contrario. Esto ocurre cuando se ha ledo
toda la palabra de entrada, y se produce una situacin similar a tener una
condicin fin de fichero en la ejecucin de un programa.

8
MARIN MORALES, Roque y otros, Teora de autmatas y lenguajes formales En: Universidad de
Murcia http://perseo.dif.um.es/%7Eroque/talf/Material/apuntes.pdf
U

2. se calcula el estado siguiente a partir del estado actual y del smbolo actual
segn la funcin de transicin, esto es, (estado actual, smbolo actual) =
estado siguiente
3. el cabezal de lectura se mueve una celda a la derecha
4. el estado siguiente pasa a ser el estado actual y vuelve al paso 1

La funcin de transicin de un AFD se puede representar de dos formas:
mediante una tabla de transicin o mediante un diagrama de transicin.

Tabla de
transicin

Cada fila corresponde a un estado q Q
El estado inicial se precede del smbolo
Cada estado final se precede del smbolo #
Cada columna corresponde a un smbolo de entrada a V
En la posicin (q, a) esta el estado que determine (q, a)

Diagrama de
transicin

Los nodos se etiquetan con los estados
El estado inicial tiene un arco entrante no etiquetado
Los estados finales estn rodeados de un doble crculo
Habr un arco etiquetado con a desde el nodo q
i
al q
j
si (q
i
, a) = q
j



Ejemplo: Suponga que se tiene el autmata finito determinista dado por
M = ({q0, q1, q2} , {0, 1} , , q0, {q1})
donde la funcin : {q0, q1, q2} {0, 1} {q0, q1, q2} viene dada por:

(q0, 0) = q0 (q0, 1) = q1
(q1, 0) = q0 (q1, 1) = q2
(q2, 0) = q2 (q2, 1) = q1

La tabla de transicin correspondiente a este autmata ser:

0 1
q0 q0 q1
# q1 q0 q2
q2 q2 q1


y el diagrama de transicin correspondiente se muestra a continuacin.



Figura 6: Diagrama de transicin del ejemplo

Nota El diagrama de transicin de un AFD tiene por cada nodo un solo arco
etiquetado con cada uno de los smbolos del alfabeto. Algunos autores consideran
que la funcin de transicin puede ser parcial, es decir, no estar definida para
algn (q, a). En ese caso se dice que el AFD es incompleto, y en el diagrama de
trancisin faltan entonces los arcos correspondientes a los casos no definidos de
la funcin de transicin. En este mdulo se Nosotros considera que los AFDs son
completos.

Ejemplo: Se considera la expresin regular r=(11 + 110)*0 Se intenta construir un
AF que acepte el lenguaje correspondiente L que corresponde a la expresin
regular (a+b)*(ab+bba)(a+b)*)

La solucion del ejercicio luego de los analisis correspondientes, en su diagrama de
transicin queda de la siguiente forma


Figura 7: Autmata finito que acepta L
3



LECCION 8. AUTOMATAS FINITOS NO DETERMINISTICOS (AFND)

na extensin a los autmatas finitos deterministas es la de permitir que de
cada nodo del diagrama de estados salga un nmero de flechas mayor o
menor que As, se puede permitir que falte la flecha correspondiente a alguno de
los smbolos del alfabeto, o bien que haya varias flechas que salgan de un solo
nodo con la misma etiqueta. Inclusive se permite que las transiciones tengan como
etiqueta palabras de varias letras o hasta la palabra vaca. A estos autmatas
finitos se les llama no Determinsticos o no deterministas (abreviado AFND), Al
retirar algunas de las restricciones que tienen los autmatas finitos
Determinsticos, su diseo para un lenguaje dado puede volverse ms simple.

Hacemos notar en este punto que, dado que los AFN tienen menos restricciones
que los AFD, resulta que los AFD son un caso particular de los AFND, por lo que
todo AFD es de hecho un AFND.

Los autmatas nitos no Determinsticos (AFND) aceptan exactamente los mismos
lenguajes que los autmatas determinsticos. Sin embargo, sern importantes para
demostrar teoremas y por su ms alto poder expresivo.

Un autmata finito no deterministico (AFND) es una quntupla M = (Q, V,, q
0
, F)
donde todos los componentes son como en los AFDs, excepto la funcin de
transicin que se define ahora como:
: Q V P(Q)
donde P(Q) denota el conjunto de las partes de Q (o conjunto potencia 2
Q
).

No determinismo (codominio P(Q)): a partir del estado actual y del smbolo actual
de entrada no se puede determinar de forma exacta cul ser el estado siguiente.

Por ejemplo, (q, a) = {q
1
, q
2
,...,q
m
} indica que para el estado actual q y el smbolo
de entrada a, el estado siguiente puede ser cualquier estado entre q
1
y q
m
.

Tambin puede darse (q, a) = 0: el estado siguiente no est definido, La
interpretacin intuitiva es que ahora el autmata, ante una entrada y un estado
dado, puede evolucionar a varios estados posibles (incluyendo un solo estado o
ninguno si (q, a)= 0). Es decir es como un algoritmo que en un momento dado
nos deja varias opciones posibles o incluso puede no dejarnos ninguna.

Un AFND acepta una palabra de entrada w siempre que sea posible comenzar por
el estado inicial y que exista una secuencia de transiciones que nos lleven a
consumir la palabra y acabe el autmata en un estado final, es decir Una palabra
se dice aceptada por un AFND si, siguiendo en cada momento alguna de las
opciones posibles, llegamos a un estado nal.
U


Los AFND tambin se representan mediante tablas o diagramas de transicin

En el diagrama de transicin, hay algn nodo del que parten dos o ms arcos
etiquetados con el mismo smbolo del alfabeto, o falta algn arco para algn
smbolo del alfabeto

En la tabla de transicin, alguna celda contiene 0 o un conjunto no unitario

a b
Q
0
{q
0
,q
3
} {q
0
,q
1
}
Q
1
0 {q
2
}
#Q
2
{q
2
} {q
2
}
Q
3
{q
4
} 0
#q
4
{q
4
} {q
4
}


Tabla de transicin Diagrama de transicion

Figura 8: Representacin de AFND

2.8.1 Diagramas de Transicin

Los diagramas de transicin de los AFND son totalmente anlogos a los de los
autmatas determinsticos. Solo que ahora no tiene que salir de cada vrtice un y
solo un arco para cada smbolo del alfabeto de entrada. En un autmata no
determinstico, de un vrtice pueden salir una, ninguna o varias echas con la
misma etiqueta.

Figura 9: Autmata Finito no Deterministico

Este es un autmata no-determinstico ya que hay transiciones no denidas. En
general, los autmatas no-determinsticos son ms simples que los
determinsticos.

(Reconocimiento de Patrones).-Supongamos un ejemplo de tranmisin de datos

entre barcos. El receptor de un barco debe de estar siempre esperando la
trasmisin de datos que puede llegar en cualquier momento. Cuando no hay
trasmisin de datos hay un rudo de fondo (sucesin aleatoria de 0, 1). Para
comenzar la trasmisin se manda una cadena de aviso, por ejemplo. 010010. Si
esa cadena se reconoce hay que registrar los datos que siguen. El programa que
reconoce esta cadena puede estar basado en un autmata nito. La idea es que
este no pueda llegar a un estado no nal mientras no se reciba la cadena inicial.
En ese momento el autmata pasa a un estado nal. A partir de ah todo lo que
llegue se registra. el propsito es hacer un autmata que llegue a un estado nal
tan pronto como se reconozca 010010. Intentar hacer un autmata nito
determinstico directamente puede ser complicado, pero es muy fcil el hacer un
AFND, como el de la Figura 10.

Hay que sealar que esto sera solamente el esquema de una sola parte de la
trasmisin. Se podra complicar incluyendo tambin una cadena para el n de la
trasmisin.


Figura 10: Autmata No-Deterministico que reconoce la cadena 010010.

Ejemplo: Usando los automatas No-Deterministicos se puede simplificar el
ejercicio de la figura 7 y representar con ms claridad la estructura de la expresin
regular (11 + 110)*0 se presentan las 2 figuras para verificar la similitud.
















Figura 11: Automata finito y automata finito no deterministico


LECCION 9. - AUTOMATA FINITO CON -TRANSICIONES.

Un automata nito con -transiciones (AFND-) es un AFND al que se le permite
cambiar de estado sin necesidad de consumir un smbolo de entrada. La funcin
se dene como:

: QV {} P(Q)

La tabla de transicion de un AFND- es como la de un AFND excepto que se le
aade una columna correspondiente a

Ejemplo AFND- cuyo diagrama de transicion es:


Figura 12: AFND-

En el instante actual est en q
1
y lee b:
en el instante siguiente, el autmata puede decidir de forma no determinista entre:
leer el smbolo b y cambiar al estado q
4

cambiar al estado q
2
sin mover el cabezal de lectura

El conjunto de cadenas que es capaz de aceptar este automata es {b, bb, bbb}

LECCION 10. - LENGUAJE ACEPTADO POR UN AF

n autmata finito sirve para reconocer cierto tipo de lenguajes. Antes de definir
formalmente el concepto de lenguaje aceptado por un AF necesitamos definir
los conceptos de configuracin y clculo en un autmata finito.

La configuracin de un autmata finito (sin importar el tipo) en cierto instante viene
dada por el estado del autmata en ese instante y por la porcin de cadena de
entrada que le queda por leer o procesar. La porcin de cadena leda hasta llegar
al estado actual no tiene influencia en el comportamiento futuro de la mquina. En
este sentido podemos decir que un AF es una mquina sin memoria externa; son
los estados los que resumen de alguna forma la informacin procesada.
U

Formalmente una configuracin de un AF es un elemento (q,w) (Q V*).
Algunos tipos de configuraciones especiales son:

Configuracin inicial : (q
0
,w), donde q
0
es el estado inicial y w la palabra de
entrada.

Configuracin de parada: cualquier configuracin en la que el autmata puede
parar su ejecucin, bien porque se haya procesado toda la entrada o bien porque
se haya llegado a una situacin donde no es aplicable ninguna transicin.

Configuracin de aceptacin: (q
F
, ), donde q
F
es un estado final del autmata.

Una vez alcanzada esta configuracin el autmata puede aceptar la palabra.

Si consideramos el conjunto de las configuraciones de un autmata finito,
podemos definir una relacin binaria (Q V*) (Q V *) que llamaremos
relacin de clculo en un paso.

Intuitivamente si dos configuraciones C
i
y C
j
estn relacionadas mediante la
relacin y lo notamos como Ci Cj , quiere decir que podemos pasar de la
configuracin C
i
a la C
j
aplicando una sola transicin y diremos que la
configuracin C
i
alcanza en un paso la configuracin C
j
.

Para definir formalmente la relacin de clculo en un paso , distinguiremos tres
casos correspondientes a los tres tipos de autmatas que hemos visto:

Si tenemos un AFD, la relacin de clculo en un paso se define de la siguiente
forma:



Si tenemos un AFND, la relacin de clculo en un paso la se define:



Si tenemos un AFND-, la relacin de clculo en un paso se define:


Cuando queramos distinguir el autmata M al que refiere la relacin, se usara
M
.

La clausura reflexiva y transitiva de la relacin es otra relacin binaria


* (Q V*) (Q V *), que llamaremos relacin de clculo. Diremos que la
configuracin C
i
alcanza (en cero o ms pasos) la configuracin C
j
, y lo notamos
como Ci * Cj , si se cumple una de las dos condiciones siguientes:


1. C
i
= C
j
, o bien,
2. C
0
,C
1
, ...C
n
, tal que C
0
= C
i
, C
n
= C
j
, y 0 k n1 se cumple que Ck Ck+1


A una secuencia del tipo C
0
C
1
. . . C
n
la llamaremos clculo en n pasos,
abreviadamente C
1
*
n pasos
C
n
.


Ejemplo: Considerando el AFD de la figura 6 podemos decir que (q0, 01) (q0, 1),
(q0, 1) (q1, ) y por tanto (q0, 01) * (q1, ). Tambin (q1, 101) (q2, 01) y en
varios pasos (q2, 0011) * (q1, 1).


Por otra parte para el AFND de la figura 8 tenemos, por ejemplo, que (q0, abb)
(q0, bb) y tambin (q0, abb) (q3, bb). Al ser el autmata no determinista vemos
que a partir de una misma configuracin, en este caso (q0, abb), se puede llegar
en un paso de clculo a dos o ms configuraciones distintas. Esta situacin no
puede producirse en un AFD.


Para el AFND- de la figura 12 el clculo (q1, bb) (q2, bb) es un ejemplo donde
se produce una transicin que implica un cambio de estado sin consumir smbolos
de entrada. Esto es posible porque q2 (q1, ).

Si tenemos un autmata finito M = (Q, V, , q0, F), se define el lenguaje aceptado
por M y lo notamos L(M), como:

L(M) = {w V * | (q0,w) * (qF , ) donde qF F}

Es decir, una palabra w Ser aceptada por el autmata M, si partiendo de la
configuracin inicial con w en la cinta de entrada, el autmata es capaz de
alcanzar una configuracin de aceptacin. Dependiendo del tipo de autmata de
que se trate, * har referencia a la clausura reflexiva y transitiva de la relacin
en un AFD, en un AFND o en un AF con -transiciones.


En un autmata finito determinista, el hecho de que una palabra w sea aceptada
por el autmata nos asegura que existe un nico camino en el diagrama de
transicin que nos lleva del nodo etiquetado con el estado inicial al nodo
etiquetado con el estado final y cada arco que se recorre en este camino sta
etiquetado con un smbolo de la palabra. Podramos simular la ejecucin de un
autmata finito determinista mediante un programa que codifique la funcin de
transicin y simule los cambios de estado. Si |w| = n entonces el programa puede
determinar si la palabra es aceptada o no en O(n).

En el caso de un AFND o un AFND- no podemos asegurar que exista un nico
camino en el diagrama que nos lleve del estado inicial a un estado final
consumiendo los smbolos de la palabra. Incluso puede que para una palabra w
L(M) podamos tener una camino que no acabe en estado final o que llegue a un
estado desde el que no se pueda seguir leyendo smbolos. Esto es debido al no
determinismo, que hace que los clculos en estos autmatas no estn
perfectamente determinados. Si quisiramos simular un autmata no determinista
para decidir si una palabra es aceptada o no, tendramos que usar alguna tcnica
de retroceso o backtracking para explorar distintas posibilidades hasta encontrar
un clculo correcto que reconozca la palabra o determinar que la palabra no es
aceptada si se han explorado todos los posibles clculos y ninguno de ellos
conduce a un estado final. Esto nos llevara a un algoritmo de tiempo exponencial
para reconocer una palabra. De ah que a efectos prcticos, como en la
construccin de analizadores lxicos o reconocimiento de patrones en un texto, lo
deseable es tener un autmata finito determinista.

Ejemplo Recordemos los AFs ya vistos y veamos ahora cual es el lenguaje
aceptado por ellos. El diagrama de la figura 8 correspondiente a un AFND permite
ver que L(M) es el lenguaje descrito por la expresin regular (a + b)*(aa + bb)(a +
b)* que consiste en aquellas cadenas sobre el alfabeto V = {a, b} que contienen al
menos una ocurrencia de la subcadena aa o bb. Por ejemplo, la cadena abb es
aceptada, ya que tenemos el clculo:

(q0, abb) (q0, bb) (q1, b) (q2, ), y q2 F

Sin embargo podemos tener otro clculo que no conduce a estado final:

(q0, abb) (q0, bb) (q0, b) (q1, ), q1 / F

e incluso un clculo que no llega a consumir la palabra:

(q0, abb) (q3, bb) (y no puede seguir)


A partir del diagrama del AFD de la figura 6 no es tan sencillo ver cual es el
lenguaje aceptado. Pero, segn se vera mas adelante con el teorema de kleene se
tiene un mtodo exacto para encontrar este lenguaje. En este caso el lenguaje
aceptado es el descrito por la expresin regular (0 + 1 (10*1)*)* 1 (10*1)*













Figura 13: AFs que aceptan L() donde = (ab + aba)




LECCION 11. - EXPRESIONES REGULARES
9


a notacin de conjuntos nos permite describir los lenguajes regulares, pero se
utiliza una notacin en que las representaciones de los lenguajes son
simplemente
texto (cadenas de caracteres). As las representaciones de los lenguajes regulares
son simplemente palabras de un lenguaje (el de las representaciones
correctamente formadas). Con estas ideas se va a definir un lenguaje, el de las
expresiones regulares, en que cada palabra va a denotar un lenguaje regular.

Asi mismo una expresin regular es la representacin de la cadena ms
caracterstica del lenguaje respectivo, por ejemplo 1*10 es una cadena consistente
en la subcadena 10 precedida de cualquier numero de unos.

La definicin de expresin regular es en realidad un poco ms restringida en
varios aspectos de los que se necesita en la prctica, se usa una notacin como
L
2
para lenguajes y es razonable denotar en forma similar las expresiones
regulares, entonces en ocasiones se escribe (r
2
) para indicar la expresin regular
(rr), (r
+
) para la expresin regular ((r
*
)r), y asi sucesivamente.

Una expresin regular R para un alfabeto se define como sigue:
y son expresiones regulares.
A es una expresin regular para todo a .
Si a y b son expresiones regulares, entonces a b, ab, a* y b* son expresiones
regulares.
Ninguna otra secuencia de smbolos de es una expresin regular.

Sea un alfabeto. El conjunto ER de las expresiones regulares sobre contiene
las cadenas en el alfabeto {^, +, , *, (, ), } que cumplen con lo
siguiente:

1. ^ y ER
2. Si , entonces ER.
3. Si E1,E2 ER, entonces (E1+E2) ER, (E1E2) ER, (E1)* ER.

Las comillas enfatizan el hecho de que estamos definiendo cadenas de texto,

9
BRENA PIERO, Ramon F. Autmatas y lenguajes un enfoque de diseo (2003) ITESM, En:
http://lizt.mty.itesm.mx/~rbrena/AyL.html
L

no expresiones matemticas (es el caso de las expresiones de conjuntos para
describir los conjuntos regulares.) Es la misma diferencia que hay entre el caracter
ASCII 0, que se puede teclear en una terminal, y el nmero 0, que significa que
se cuenta un conjunto sin ningn elemento.

Ejemplo:
Son ER : en {a, b, c} las siguientes: a, ((a+b))*, ((a b) c).
No son ER : ab, ((a b(c)*).

LECCION 12. - SIGNIFICADO DE LAS EXPRESIONES REGULARES

as ER son simplemente frmulas cuyo propsito es representar cada una de
ellas un lenguaje. As, el significado de una ER es simplemente el lenguaje que
ella representa.

Por ejemplo, la ER representa el conjunto vaco {}.

Para comprender intuitivamente la manera en que las ER representan lenguajes,
consideremos el proceso de verificar si una palabra dada w pertenece o no al
lenguaje representado por una ER dada. Vamos a decir que una palabra empata
con una expresin regular si es parte del lenguaje que esta representa.

La palabra vaca " empata con la ER ^.

Una palabra de una letra como a empata con una ER consistente en la misma
letra a, b empata b, Luego, una palabra w = uv, esto es w est formada de
dos pedazos u y v, empata con una expresin (U V ) a condicin de que u
empate con U y v empate con V.

Por ejemplo, abc empata con (a (b c)) porque abc puede ser dividida en a y bc,
y a empata con a en la ER, mientras que bc empata con (b c) separando b y c de
la misma manera.

Similarmente, cuando la ER es de la forma (U + V ), puede empatar con una
palabra w cuando esta empata con U o bien cuando empata con V . Por ejemplo,
bc empata (a+(bc)).

Una palabra w empata con una expresin U* cuando w puede ser partida en
pedazos w = w1w2, . . . de tal manera que cada pedazo wi empata con U.

Por ejemplo, caba empata con (((c + b) a))_ porque puede partirse en los
pedazos ca y ba, y ambos empatan con ((c + b) a), lo cual es fcil de verificar.

L

Para simplificar la especificacin de un lenguaje se utilizan las expresiones
regulares y por esto conviene escribir a en lugar de {a}:
a b denota {a,b} = {a} {b}
ab denota {a,b}
a* denota {a}*
a+ denota {a}+

El orden de precedencia de los operadores *, y es: Primero *; luego y por
ltimo .

Por ejemplo, una expresin dada por ({a}*{b}){c} se reduce a a*bc.

Otro ejemplo: El lenguaje de todas las cadenas sobre {a,b,c} que no tienen
ninguna subcadena ac se denota por c*(a bc*)*.

Esta definicin nos permite construir expresiones en la notacin de conjuntos que
representan lenguajes regulares.

Ejemplo.- Sea el lenguaje L de palabras formadas por a y b, pero que empiezan
con a, como aab, ab, a, abaa, etc. Probar que este lenguaje es regular, y dar una
expresin de conjuntos que lo represente.

Solucin.- El alfabeto es = {a, b}. El lenguaje L puede ser visto como la
concatenacin de una a con cadenas cualesquiera de a y b; ahora bien, stas
ltimas son los elementos de {a, b}*, mientras que el lenguaje que slo contiene la
palabra a es {a}. Ambos lenguajes son regulares.

Entonces su concatenacin es {a}{a, b}*, que tambin es regular.

NOTA: La concatenacin de dos lenguajes L1 y L2 se define como el conjunto de
las palabras formadas concatenando una de L1 con una de L2.

{a} es finito, por lo tanto regular, mientras que {a, b}* es la cerradura de {a, b}, que
es regular por ser finito.

LECCION 13. - AUTMATAS FINITOS Y EXPRESIONES REGULARES
10


asta ahora, la relacin entre los autmatas finitos y las expresiones regulares
se ha tratado de una manera intuitiva. Ahora formalizaremos dicha relacin.


10
IOST F. Hans, Teora de autmatas y lenguajes formales, CAPTULO 2, LENGUAJES REGULARES Y
AUTOMATAS FINITOS (2001) en: http://iie.ufro.cl/~hansiost/automatas/Capitulo2.doc
H

Para un alfabeto , se pueden construir los AFND (y los AFD) que acepten
palabras unitarias. Por ejemplo:

a
r s

r

(a) (b)

El autmata de la Figura (a) acepta el lenguaje unitario {a}. El autmata de la
Figura (b) acepta el lenguaje .

Si M
1
= (Q
1
,
1
,So
1
,F
1
,
1
) y M
2
= (Q
2
,
2
,So
2
,F
2
,
2
) son AFND, podemos unir M1 y
M2 en un nuevo AFND que acepte L(M
1
) L(M
2
), aadiendo un nuevo estado
inicial So y 2 transiciones , una de So a So
1
y otra de So a So
2
.Este nuevo AFND
estar dado por:

M = (Q,,So,F,), donde

=
1

2
; F = F
1
F
2
; Q = Q
1
Q
2
{So}

y se define de tal forma que se incluyan todas las transiciones de 1, 2 y las
transiciones de So a So1 y So2, es decir: = 1 2 {(So,,So1), (So,,So2)

Ejemplo: Considere los siguientes AFND:

a
r s t
b
b

u v
b
a

AFND que acepta ab* AFND que acepta (ab)*

Ambos AFND se pueden unir de manera tal que el nuevo AFND acepte ab*
(ab)* :

a
r s t
b
b
u v
b
a

So



Por otra parte si tenemos 2 autmatas M1 y M2, podemos unirlos para formar un
AFND que acepte L(M1) L(M2). Se requiere un autmata que reconozca una
cadena de L(M1) y a continuacin una de L(M2). Esto se realiza pasando del
estado final de M1 al estado inicial de M2 a travs de una transicin .

Por ejemplo:

a
r s

b
t u


Aceptan los lenguajes {a} y {b} respectivamente. As, el autmata que acepta el
lenguaje {ab} es:
a
r s
b
t u



Es importante resaltar que el autmata resultante tendr como estado inicial, el
estado inicial de M
1
y como conjunto de estados finales, el conjunto de estados
finales de M
2
. Por lo tanto el AFND que acepta L(M
1
) L(M
2
) est dado por:

Q = Q
1
Q
2

So = So
1

F = F
2

=
1

2
(F
1
x {} x {So
2
})

La funcin de transicin resultante, incluir todas las transiciones presentes en
ambos autmatas junto con todas las ternas de la forma (q,,So
2
), donde q es un
estado de aceptacin de M
1
, es decir So
2
(q,) para todo q F
1
.

Por otra parte se puede deducir un procedimiento para construir un AFND que
acepte L(M)* para un AFND M = (Q, , So, F, ), como sigue:

Primero, se agrega un nuevo estado inicial s'; adems, este nuevo estado ser de
aceptacin, con el fin de que se acepte . Se agrega una transicin desde s' al
antiguo estado inicial de M, So. Se agregar, adems, una transicin desde
todos los estados de aceptacin de M hasta s'. El autmata resultante ser:

M' = (Q', , s', F', ')

donde:

Q' = Q {s'}
F' = {s'}
' = {(s',,So)} (F x {} x {s'})

Ejemplo: Sea el AFND M que acepta el lenguaje dado por ab*:

M:
a b
b




L(M)* se construye aplicando el procedimiento anterior:

M:
a b
b

S


L(M) : (ab*)*

Teorema: El conjunto de lenguajes aceptados por un autmata finito sobre el
alfabeto contiene el lenguaje y los lenguajes unitarios {a} para todo a .
Este conjunto es cerrado con respecto a la unin, concatenacin y cerradura de
estrella.

Este teorema implica que todo lenguaje regular es aceptado por un autmata
finito.

Sea el autmata finito M = (Q, ,So,F,) y supongamos que So = q
0
es el estado
incial. Se define:

A
i
= {w * e(q
i
,w) F }

A
i
es el conjunto de las cadenas sobre * que hacen que M pase desde q
i
hasta
un estado de aceptacin. Se dice que A
i
es el conjunto de las cadenas aceptadas
por el estado q
i
. Es importante notar que A
0
= L(M). Adems, es posible que A
i
= .
Si q
i
F, entonces Ai. Como ejemplo, considrese el siguiente AFND:


q
0
q
1
q
2
q
4
q
3
q
5
a
a
a
a,b
a,b
b
b
b

A
5
=
A
2
=
A
4
=
A
1
= b
A
3
= a
A
0
= ab ba


Del autmata anterior se deduce:

(q
0
,a) = {q
1
}, es decir q
1
(q
0
,a), por lo tanto A
0
contiene a: aA
1
. En general, si:
q
j
(q
i
,w) implica que A
i
contiene a wA
j
. De hecho se tiene que:

A
i
= {wA
j
q
j
(q
i
,w)}

Esto proporciona las tcnicas bsicas para obtener una expresin regular a partir
de un autmata finito. Consideremos el ejemplo anterior, tenemos:

A
0
= a A
1
b A
3
A
1
= b A
2
a A
5

A
2
= a A
5
b A
5

A
3
= a A
4
b A
5

A
4
= a A
5
b A
5

A
5
=

As, tenemos un sistema de ecuaciones que se cumplen para L(M). Sustituyendo
se obtiene:

L(M) = ab ba = A
0


Considrese ahora el siguiente autmata:

a
b
q
0
q
1


A
0
= a A
0
b A
1
; A
1
=

Resolviendo y sustituyendo resulta que A
0
= a A
0
b, y no es posible simplificarlo
ms. El siguiente lema muestra como resolver este problema:

Lema de Arden: Una ecuacin de la forma X = AX B, donde A tiene una
solucin nica X = A*B.


En el ejemplo anterior, al aplicar el lema de Arden queda A
0
= a*b, que es lo que
intuitivamente se deduce del diagrama.

Ejemplo: Considrese el siguiente autmata:

q
0
q
1
q
2
q
3
q
4
a b
b
b
a a a b


A
0
= aA
1
; A
1
= aA
2
bA
4
; A
2
= aA
3
bA
4


A
3
= aA
3
bA
4
; A
4
= bA
4


Sustituyendo y aplicando el lema de Arden, tenemos:

A
4
= bA
4
= bA
4
= b* = b* (por lema de Arden)

A
3
= aA
3
bb* = aA
3
b
+
= a*( b
+
) = a*b*

A
2
= aa*b* bb* = a
+
b
*
b
+


A
1

= a(a
+
b* b
+
) bb* = aa
+
b* ab
+
b
+


A
0
= aA
1
= a(aa
+
b* ab
+
b
+
)

A
0
= a
2
a
+
b* a
2
b
+
ab
+



Lema: Sea M un autmata finito. Entonces existe una expresin r para la cual:

L(r) = L(M)

Teorema de anlisis de Kleene: Si L es un lenguaje aceptado por un autmata
finito M entonces existe una expresin regular tal que L = L(M) = L().

Podemos suponer que el autmata finito M no tiene -transiciones (si las tuviera
ya sabemos que podemos encontrar autmata equivalente sin -transiciones). Sea
M = (Q, V,, q
0
, F). A partir de este autmata podemos obtener un sistema de

ecuaciones de expresiones regulares que llamaremos ecuaciones caractersticas
del autmata. Estas ecuaciones se obtienen a partir del diagrama de transicin del
autmata del siguiente modo:

A cada nodo qi le corresponde una ecuacin y cada estado se puede considerar
como una incgnita de la ecuacin.

La ecuacin para el estado qi tiene en el primer miembro el estado qi y el segundo
miembro de la ecuacin est formado por una suma de trminos, de forma que por
cada arco del diagrama de la forma q
i

a
q
j
tenemos un trmino aq
j
. Si el
estado q
i
es final, aadimos adems el termino al segundo miembro.

Cada incgnita qi del sistema de ecuaciones representa el conjunto de palabras
que nos llevan del nodo qi a un estado final, en el diagrama de transicin. Por
tanto, si resolvemos el sistema de las ecuaciones caractersticas del autmata
tendremos soluciones de la forma qi =
i
, donde
i
es una expresin regular sobre
el alfabeto V y como hemos dicho el lenguaje descrito por esta expresin regular
es:

L(i) = {w V | (qi,w) (qF , ) , qF F} (3.1)

El mtodo que se propone para obtener una expresin regular a partir de un AF
es el siguiente:
1. Obtener las ecuaciones caractersticas del autmata;
2. Resolver el sistema de ecuaciones;
3. solucin para el estado inicial;

Para comprobar que este mtodo es vlido tendramos que probar que se cumple
L(i) = {w V | (qi,w) (qF , ) , qF F} (3.1) para toda solucin qi = i del
sistema de ecuaciones, y en particular la solucin para el estado inicial es la
expresin regular correspondiente al autmata. Aunque no lo vamos a demostrar
formalmente, por la forma de obtener las ecuaciones caractersticas del autmata
y la validez del mtodo de resolucin de sistemas de ecuaciones de expresiones
regulares. En realidad, no es necesario resolver todas las incgnitas, slo
necesitamos despejar la incgnita correspondiente al estado inicial.

Ejemplo Consideremos de nuevo el autmata finito M


Las ecuaciones caractersticas correspondientes a este autmata son:

q0 = 0q0 + 1q1
q1 = 0q0 + 1q2 +
q2 = 1q1 + 0q2

Comenzando por la ltima ecuacin se tiene que q2 = 01q1 y sustituyendo en la
segunda ecuacin queda q1 = 0q0 + 101q1 +
de donde se obtiene que q1 = (101) (0q0 + ) y este valor se sustituye en la
primera ecuacin q0 = 0q0 + 1 (101) (0q0 + ) = 0q0 + 1 (101) 0q0 + 1
(101)

Esta ecuacin es fundamental y por el lema de Arden tiene como nica solucin
q0 = (0 + 1 (101) 0) 1 (101)
y por tanto (0 +1 (101) 0)1(101) es la expresin regular que describe el
lenguaje L(M).

Teorema de Sntesis de Kleene

Si L es un lenguaje asociado a una expresin regular entonces existe un
autmata finito M tal que L = L() = L(M).
Demostrar por induccin sobre el nmero de operadores de (+, , ) que existe
un AFND- M con un slo estado final sin transiciones y distinto del estado inicial,
de forma que L() = L(M).

Base.- (cero operadores) puede ser: , , a, donde a V. Los autmatas que
aceptan el lenguaje vaco, el lenguaje {} y el lenguaje {a}, son, por este orden, los
siguientes: (a), (b) y (c)


Induccin.- (uno o ms operadores en ). Supongamos que se cumple la hiptesis
para expresiones regulares de menos de n operadores. Sean las expresiones
regulares 1 y 2 donde op(1), op(2) < n. Entonces, por hiptesis existen dos
autmatas finitos M1 y M2 tal que L(M1) = L(1) y L(M2) = L(2),
donde M1 = (Q1, V1,1, q1, {f1}) yM2 = (Q2, V2, 2, q2, {f2})
y podemos suponer sin prdida de generalidad que Q1 Q2 = . Estos
autmatas podemos representarlos esquemticamente como:



Supongamos que tenemos una expresin regular con n operadores. Vamos a
construir un autmata M tal que L(M) = L() y para eso distinguimos tres casos
correspondientes a las tres formas posibles de expresar en funcin de otras
expresiones regulares con menos de n operadores.

= 1 + 2 tal que op(1), op(2) < n. Los autmatas correspondientes a 1 y 2
son respectivamente M1 y M2, como hemos dicho antes. A partir de M1 y M2
construimos otro autmata M = (Q1 Q2 {q0, f0} , V1 V2,, q0, {f0}) donde
se define como:

a) (q0, ) = {q1, q2}
b) (q, ) = 1(q, ), q Q1 {f1}, V1 {}
c) (q, ) = 2(q, ), q Q2 {f2}, V2 {}
d) (f1, ) = (f2, ) = {f0}

M se puede representar grficamente del siguiente modo:

Cualquier camino de q
0
a f
0
debe pasar forzosamente a travs del autmata M
1
o
del autmata M
2
. Si una cadena w es aceptada por M, entonces debe ser
aceptada tambin por M
1
o por M
2
.

Es decir, L(M) = L(M1) L(M2) =
= L(1) L(2), por hiptesis de induccin
= L(1 + 2), por definicin de lenguaje asociado a 1 + 2
= L(), como queramos demostrar.

2. = 1 2 tal que op(1), op(2) < n. A partir de M1 y M2 construimos otro
autmata
M = (Q1 Q2, V1 V2,, q1, {f2}) donde se define como:

a) (q, ) = 1(q, ), q Q1 {f1}, V1 {}
b) (f1, ) = {q2}
c) (q, ) = 2(q, ), q Q2, V2 {}

M se puede representar esquemticamente como:


Cualquier camino de q1 a f2 debe pasar forzosamente a travs del autmata M1 y
del autmata M2. Si una cadena w es aceptada por M, entonces esa cadena se
puede descomponer como w = w1.w2, de forma que w1 debe ser aceptada por M1
y w2 por M2. Segn esto, L(M) = L(M1) L(M2) =

= L(1) L(2), por hiptesis de induccin
= L(1 2), por definicin de lenguaje asociado a 1 2
= L(), como queramos demostrar.

3. = (1) tal que op(1) = n1. El autmata correspondiente a 1 es M1, a
partir del cual construimos otro autmata M = (Q1 {q0, f0} ,V1,, q0, {f0}) donde
se define como:

a) (q0, ) = (f1, ) = {q1, f0}
b) (q, ) = 1(q, ), q Q1 {f1}, V1 {}

M se puede representar del siguiente modo:

Este autmata acepta cadenas de la forma w = w1w2 . . . wj , donde j 0 y cada
subcadena wi es aceptada por M1. Por tanto,

, por hiptesis de induccin
= (L(1)) , por definicin de clausura de un lenguaje
= L(1), por definicin de lenguaje asociado a
= L(), como queramos demostrar.

Ejemplo Siguiendo el mtodo anterior, en la figura siguiente se ha construido un
autmata para la expresin regular 01* +1, donde M
1
representa el autmata para
la expresin regular 0, M
2
representa 1* y M
3
la expresin regular 1. En el
autmata final se han integrado simultneamente los autmatas para la
concatenacin (0 con 1*) y la suma de expresiones regulares 01*+1.


Este mtodo de construccin de AFs para expresiones regulares est pensado para ser
implementado de forma automtica mediante un programa. Se puede haber pensado en
el siguiente autmata:








LECCION 14. - PROPIEDADES DE LOS LENGUAJES REGULARES
11


n los AFN es posible aplicar mtodos modulares de diseo, que permiten
manejar mejor la complejidad de los problemas. Son estos mtodos
modulares.

AFN para la unin de lenguajes

Si ya contamos con dos AFN, sean M
1
y M
2
, es posible combinarlos para hacer un
nuevo AFN que acepte la unin de los lenguajes que ambos autmatas
aceptaban.

Sean M1 = (K1,1,1, s1, F1) y M2 = (K2, 2, 2, s2, F2) dos autmatas que aceptan
los lenguajes L1, L2. Podemos entonces construir un AFN M3 que acepte L1 L2 de
la siguiente manera: Sea q un nuevo estado que no est en K1 ni en K2. Entonces

11
BRENA PIERO, Ramon F. Autmatas y lenguajes un enfoque de diseo (2003) ITESM, En:
http://lizt.mty.itesm.mx/~rbrena/AyL.html
E

hacemos un autmata M3 cuyo estado inicial es q, y que tiene transiciones vacas
de q a s1 y a s2. Esta simple idea permite escoger en forma no determinista entre ir
al autmata M1 o a M2, segn el que convenga: si la palabra de entrada w est en
L1, entonces se escoge ir a M1,,,,, y en contraposicin a M2 para L2.

Formalmente M3 = (K1 K2 {q}, 1 2, 1 2 {(q, , s1), (q, , s2)}, q, F1
F2).
En la figura siguiente se representa grficamente M3.

_Figura 14: AFN para la unin de dos lenguajes

Ejemplo.- Disear un autmata no determinista que acepte las palabras sobre {a,
b} que tengan un nmero par de a o que terminen en bb.

Solucin.- En la figura 15(a) se presenta un AFN que acepta las palabras que
contienen un nmero par de as, y en 15(b) otro que acepta las palabras que
terminan en bb. Finalmente, en 15(c) est el AFN que acepta el lenguaje dado.


Figura 15: Unin de dos lenguajes, Combinacin de AFN


AFN para la concatenacin de lenguajes

Similarmente al caso anterior, sean M
1
= (K
1
,
1
,
1
, s
1
, F
1
) y M
2
= (K
2
,
2
,
2
, s
2
, F
2
)
dos autmatas que aceptan los lenguajes L
1
, L
2
respectivamente. Podemos
entonces construir un AFN M
3
que acepte L
1
L
2
de la siguiente manera: Aadimos
unas transiciones vacas que van de cada uno de los estados finales de M1 al
estado inicial de M
2
; tambin se requiere que los estados finales de M1 dejen de
serlo.
Formalmente M
3
= (K
1
K
2
,
1

2
,
1

2
{(p, , s
2
) | p F
1
}, s1, F
2
)

El funcionamiento de M
3
es como sigue:

cuando se recibe una palabra w = w
1
w
2
, w
1
L
1
, w
2
L
2
, entonces se empieza
procesando w
1
exactamente como lo hara M
1
, hasta llegar hasta alguno de los
antiguos estados finales de M
1
; entonces se empieza procesando w
2
como lo hara
M
2
; forzosamente debe ser posible llegar a un estado final de M
2
, ya que por
hiptesis M
2
acepta w
2
. En la figura 16 se representa M
3
.




Figura 16: Concatanacin de dos lenguajes,Combinacin de AFNs

Ejemplo.- Construir un AFN que acepte el lenguaje en {a, b} donde las as vienen
en grupos de al menos dos seguidas, y los grupos de as que son repeticiones de
aaa estn a la derecha de los que son repeticiones de aa, como en baabaaa, aaa,
baab o baaaaa. Esta condicin no se cumple, por ejemplo, en bbaaabaa ni en
aaabaaaa.


Solucin.- Un AFN, ilustrado en la figura 17(a), acepta palabras que contienen bs
y grupos de aa en cualquier orden. Otro AFN figura 17(b) acepta un lenguaje
similar, pero con grupos de aaa. La solucin es su concatenacin, que se presenta
en la figura 17(c).




Figura 17: Concatenacin de dos AFN

LECCION 15. - EQUIVALENCIA DE AUTMATAS FINITOS DETERMINISTICOS
Y AUTMATAS FINITOS NO DETERMINSTICOS.

os autmatas finitos determinsticos (AFD) son un subconjunto propio de los no
determinsticos (AFN), lo que quiere decir que todo AFD es un AFN. Se puede
pensar entonces que los AFN son ms poderosos que los AFD, en el sentido de
que habra algunos lenguajes aceptados por algn AFN para los cuales no hay
ningn AFD que los acepte. Sin embargo, en realidad no sucede as.


Figura 18: AFN a transformar en AFD

Para todo AFN N, existe algn AFD D tal que L(N) = L(D).

Este resultado, sorprendente, pero muy til, puede probarse en forma constructiva,
proponiendo para un AFN cmo construir un AFD que sea equivalente.

El mtodo que se usa para pasar de un AFN a un AFD se basa en la idea de
considerar el conjunto de estados en los que podr encontrarse el AFN al haber
consumido una cierta entrada.

L

3.15.1. El mtodo de los conjuntos de estados

Dado un AFN M, consideremos la idea de mantener un conjunto de estados Q
i
en
los que sea posible estar en cada momento consumiendo las letras de una palabra
de entrada.

Por ejemplo, considrese el AFN de la figura 18. Se quiere analizar qu sucede
cuando este AFN recibe la palabra baaaaab. Para ello, se lleva el registro de los
conjuntos de estados en los que pueda encontrarse el AFN. Inicialmente, podr
encontrarse en el estado inicial q0, pero sin gastar ningn caracter puede estar
tambin en el estado q1, o sea que el proceso arranca con el conjunto de estados
Q0 = {q0, q1}. Al consumirse el primer caracter, b, se puede pasar de q0 a q0 o
bien a q1 (pasando por el ), mientras que del q1 slo se puede pasar a q1.
Entonces, el conjunto de estados en que se puede estar al consumir la b es Q1 =
{q0, q1}. Y as en adelante.

La tabla siguiente resume los conjuntos de estados por los que se va pasando
para este ejemplo:



Entrada Estados

{q0,q1}
b {q0,q1}
a {q2,q4}
a {q0,q1,q3}
a {q1,q2,q4}
a {q0,q1,q3,q4}
a {q1,q2,q3,q4}
b q1

Puesto que el ltimo conjunto de estados {q
1
} incluye a un estado final, se
concluye que la palabra de entrada puede ser aceptada. Otra conclusin es que si
se considera a los conjuntos de estados Q
i
como una especie de mega-estados
de cierto autmata, entonces se han estado siguiendo los pasos de ejecucin de
un AFD con mega-estados.

Una vez se comprenda lo anterior, se cocluye que, si en vez de considerar una
palabra en particular, como fue baaaaab, se considera cada posible caracter que
puede llegar a estar en un mega-estado, entonces se puede completar un AFD,
que ser equivalente al AFN dado. Para poder ser exhaustivos, se necesita
organizar las entradas posibles de manera sistemtica.

Ejemplo: Considrese el problema de transformar a AFD el AFN de la figura 18.


Se consideran el conjunto de estados del AFN en los que puede encontrarse ste
en cada momento. El conjunto inicial de estados estar formado por los estados
del AFN de la figura 18 en los que puede estar antes de consumir el primer
caracter, esto es, q
0
y q
1
. Dicho conjunto aparece en la figura 19(a).

A partir de ah, tras recibir un caracter a, el AFN puede encontrarse ya sea en q
2
o
en q
4
, los cuales se incluye un nuevo conjunto de estados, al que se llega con una
transicin con a, como se ilustra en la figura 19(b); similarmente, a partir del
conjunto inicial de estados {q
0
, q
1
} con la letra b se llega al mismo conjunto {q
0
, q
1
},
lo cual se representa con un lazo as mismo en la figura 19(b).

Con este mismo procedimiento se siguen formando los conjuntos de estados; por
ejemplo, a partir de {q
2
, q
4
}, con una a se pasa a {q
3
, q
0
, q
1
}. Continuando as, al
final se llega al diagrama de la figura 19(c).

Un detalle importante a observar en este procedimiento es que en ocasiones no
hay estados adonde ir; por ejemplo, a partir del conjunto de estados {q
2
, q
4
}, con b
no se llega a ningn estado. En casos como este, se considera que habr una
transicion con b a un nuevo conjunto de estados vacos, esto es {}, como se
aprecia en la figura 19(c). Por supuesto, este estado vaco tendr transiciones con
a y con b igualmente.


Figura 19: Transformacin de un AFN a un AFD

Si se ven los crculos como estados, se ha construido un AFD. Unicamente falta
determinar cuales de los nuevos estados son finales y cuales no. Obviamente, si
uno de los conjuntos de estados contiene un estado final del antiguo AFN, esto
muestra que es posible que en ese punto el AFN hubiera aceptado la palabra de

entrada, si sta se terminara. Por lo tanto, los estados finales del nuevo autmata
sern aquellos conjuntos de estados que contengan algn estado final. As, en el
AFD de la figura 19(d) se marcan los estados finales; adems se borran los
estados del antiguo AFN de cada uno de los crculos, y se bautizan cada conjunto
de estados como un estado.

3.15.2. Una transformacin inofensiva

Cuando se quiere aplicar el mtodo descrito en los prrafos precedentes, una
dificultad que puede presentarse es que algunas flechas del autmata tienen como
etiquetas palabras de varias letras, y desde luego no podemos tomar un pedazo
de una transicin. Esta situacin se aprecia en el AFN de la figura 20. En efecto, si
a partir del estado inicial se intenta consumir la entrada a, se observa que no hay
una transicin que permita hacerlo, an cuando hay una transicin (q0, aa, q1)
cuya etiqueta empieza con a.

Una solucin a esta dificultad es normalizar a 1 como mximo la longitud de las
palabras que aparecen en las flechas. Esto puede hacerse intercalando |w| 1
estados intermedios en cada flecha con etiqueta w. As, por ejemplo, de la
transicion (q
1
, aaa, q
1
) de la figura 20, se generan las transiciones siguientes: (q
1
,
a, q
2
), (q
2
, a, q
3
), (q
3
, a, q
1
), donde los estados q
2
y q
3
son estados nuevos
generados para hacer esta transformacin.

Con esta transformacin se puede pasar de un AFN cualquiera M a un AFN M
0

equivalente cuyas transiciones tienen como maximo un caracter. Esta
transformacin es inofensiva en el sentido de que no altera el lenguaje aceptado
por el AFN.

Por ejemplo, para el AFN de la figura 20 se tiene el AFN transformado de la figura
18.



Figura 20: AFN Con transicin de varias letras.

3.15.3. Formalizacin del algoritmo de conversin

Ahora se va a precisar el mtodo de conversin de AFN a AFD con suficiente
detalle como para que la programacin en computador sea relativamente sencilla.
Sin embargo, no se va a describir el algoritmo en trminos de ciclos, instrucciones
de asignacin, condicionales, etc., que son tpicos de los programas imperativos.
Se va a presentar un conjunto de definiciones que capturan los resultados
intermedios en el proceso de conversin de AFN a AFD. Estas definiciones
permiten programar en forma casi directa el algoritmo de conversin, si se utiliza
un lenguaje de programacin adecuado, preferentemente de tipo funcional, como
por ejemplo Scheme.

Este ejemplo se va a ir presentando con las definiciones partiendo de la ms
sencilla, hasta llegar a la ms compleja.

Primero introducimos una funcin transicion(q, ), que a partir de un estado q y un
caracter dado obtiene el conjunto de estados a los que se puede llegar desde q
directamente gastando el caracter . Por ejemplo, tomando el AFN de la figura 21,
tenemos que transicion(q
0
, b) = {q
0
, q
1
}. Similarmente, transicion(q
1
, b) = {q
1
}, y
transicion(q
3
, a) = {}.

Se puede definir matemticamente de la forma siguiente:

transicin(q, ) = {p | (q, , p) }

Sin embargo, esta definicin no toma en cuenta el hecho de que a veces es
posible tener transiciones que no gastan ningn caracter -aquellas marcadas con
. As, en la figura 18, se puede pasar de q
2
a q
0
y luego continuar de q
0
a q
1
, por
lo que en realidad se tiene que considerar a q
1
como uno de los estados a los que
se puede llegar desde {q
1
, q
2
} gastando una a. Por lo tanto, hay que modificar la
definicin anterior.

Se define una funcin auxiliar cerr-(q) que es el conjunto de estados a los que se
puede llegar desde el estado q pasando por transiciones vacas. Adems, si con
una transicin vaca se llega a otro estado que tambin tiene transiciones vacas,
hay que continuar aadiendo a cerr- (q) los estados a los que se llegue, hasta
que no sea posible aadir nuevos estados. Por ejemplo, en la figura 21, cerr - (q
1
)
= {q
1
, q
2
, q
4
}, cerr-(q
2
) = {q
2
, q
4
}, y cerr-(q
0
) = {q
0
}.



Figura 21: AFN con transiciones vacias

cerr - (q) se acostumbra llamar cerradura al vaco porque matemticamente es la
cerradura de q con la relacin {(x, y) | (x, , y) }.

La funcin cerr-(q) se puede definir como sigue:

La cerradura al vaco cerr-(q) de un estado q es el ms pequeo conjunto que
contiene:

1. Al estado q;
2. Todo estado r tal que existe una transicion (p, , r) , con p cerr - (q).

Es fcil extender la definicin de cerradura al vaco de un estado para definir la
cerradura al vaco de un conjunto de estados:

La cerradura al vaco de un conjunto de estados CERR- ({q
1
, ... , q
n
}) es
igual a cerr - (q
1
), ... , cerr- (q
n
).

Ejemplo. Sea el AFN de la figura 21. Entonces CERR-({q
1
, q
3
}) = {q
1
, q
2
, q
3
, q
4
}.

Con la funcin de cerradura al vaco ya estamos en condiciones de proponer una
versin de la funcin transicion que tome en cuenta las transiciones vacas.
Llamaremos a esta funcin transicion-, y la definimos de forma que transicion-
(q, ) sea el conjunto de estados a los que se puede llegar desde q gastando ,
inclusive pasando por transiciones vacas. El algoritmo es como sigue, para un
estado q y un caracter :

1. Calcular Q0 = cerr -(q)
2. Para cada estado de Q
0
, obtener transicion(q, ), y unir todos los conjuntos
obtenidos, dando por resultado un conjunto Q
1
.
3. transicion- (q, ) = CERR- (Q1).


Por ejemplo, tomando la figura 21, para calcular transicion-(q
1
, a), los pasos son
como sigue:

1. Q0 = {q
1
, q
2
, q
4
}
2. transicion(q
1
, a) = {q
1
}, transicion(q
2
, a) = {q
2
, q
3
}, y transicion(q
4
, a) = {}, por lo
que uniendo estos conjuntos, Q
1
= {q
1
, q
2
, q
3
}.
3. transicion-(q
1
, a) = CERR-({q
1
, q
2
, q
3
}) = {q
1
, q
2
, q
3
, q
4
}.

Como ltima definicin, es directo extender la funcin transicion-(q, ), que se
aplica a un estado y un caracter, a una funcin que se aplique a un conjunto de
estados y un caracter; llamamos a esta funcin TRANSICION-(Q, ), para un
conjunto de estados Q y un caracter . Simplemente aplicamos transicion-(q, )
para cada uno de los estados q Q, y juntamos los resultados en un solo
conjunto.

Por ejemplo, en la figura 21

TRANSICION- ({q0, q2}, a) = {q0, q2, q3, q4}.

Finalmente resumimos el proceso global de transformacin de un AFN a un AFD
en el siguiente algoritmo.

Algoritmo de transformacin AFN AFD:

Dado un AFN (K,,, s, F), un AFD equivalente se obtiene por los siguientes
pasos:

1. El conjunto de estados inicial es cerr -(s).
2. El alfabeto del AFD es el mismo del AFN.
3. Para cada conjunto de estados Q ya presente, hacer:
a) Aadir el conjunto de estados TRANSICION-(Q, ) para cada caracter del
alfabeto, si no ha sido creado an.
b) Aadir transiciones ((Q, ),Q

) para cada conjunto de estados Q

creado en el
paso anterior.
4. Los conjuntos de estados que contengan un estado en F sern finales.

Ms diseo de AFN: Interseccin de lenguajes

Los problemas de diseo de AFN en que se combinan dos condiciones que se
deben cumplir simultneamente son particularmente difciles de resolver. Un
ejemplo de estos problemas es: obtener un AFN que acepte las palabras que
contengan la cadena abb un nmero impar de veces y ba un nmero par de
veces.


Es mejor contar con un mtodo modular que permita combinar de una manera
sistemtica las soluciones parciales para cada una de las condiciones.Esto es
posible, si se considera la siguiente propiedad de la interseccin de conjuntos:

L
1
L
2
= (L
1
C
L
2
C
)
C


Esta frmula sugiere un procedimiento prctico para obtener un AFN que acepte la
interseccin de dos lenguajes dados. Esto se ilustra en el siguiente ejemplo.

Ejemplo.- Obtener un AF para el lenguaje en el alfabeto {a, b} en que las palabras
son de longitud par y adems contienen un nmero par de as. Este problema
parece bastante difcil, pero se vuelve fcil utilizando la frmula de interseccin de
lenguajes. En efecto, se inicia calculando los AFD para los lenguajes que cumplen
independientemente las dos condiciones.

El AFD M1 de la figura 22(a) acepta las palabras de longitud par, mientras que M2
de 2.32(b) acepta las palabras con un nmero par de as.

Ahora se obtienen los AFD que aceptan el complemento de los lenguajes de M1 y
M2, cambiando los estados finales por no finales y viceversa; sean M
1
C
M
2
C


Es muy importante notar que slo es posible complementar AFDs y no cualquier
AFN.

En efecto, si en un AFN simplemente se cambian estados finales por no finales y
viceversa, en general se llega a un resultado errneo (esto es, el autmata
resultante no es equivalente al original) Combinamos estos autmatas utilizando el
procedimiento para la unin de lenguajes, dando un AFN M3 (figura 22(c)), el cual
es convertido a un AFD M4. Finalmente, este AFD es simplificado y
complementado, dando M
4
c
(figura 22(d)), que es el autmata buscado.




Figura 22: Interseccin de dos AFN


ACTIVIDADES:

Ejercicios Propuestos:

1.- Obtener el lenguaje reconocido por el siguiente AFD:

A = ({a, b, c}, {q0, q1, q2, q3, q4}, f, q0, {q2})

f(q0, a) = q1 f(q0, b) = q4 f(q0, c) = q4
f(q1, a) = q4 f(q1, b) = q1 f(q1, c) = q2
f(q2, a) = q4 f(q2, b) = q4 f(q2, c) = q2
f(q3, a) = q4 f(q3, b) = q3 f(q3, c) = q2
f(q4, a) = q4 f(q4, b) = q4 f(q4, c) = q4

2.- Determinar el lenguaje que reconoce el siguiente AFD:


3.-Dado el autmata finito siguiente:

Definir la gramtica lineal izquierda que describe el mismo lenguaje reconocido por
el autmata.

4.-Decir cules de las siguientes palabras son reconocidas por el siguiente AFND:
110, 01, 100
AFND = ({0, 1}, {q0, q1, q2}, q0, {q1})
f(q0, 0) = f(q0, 1) = {q1, q2} f(q0, ) =
f(q1, 0) = {q0} f(q1, 1) = {q0, q1} f(q1, ) = {q0}
f(q2, 0) = {q2} f(q2, 1) = f(q2, ) = {q1}


5.- Determinar la pertenencia de las cadenas: aab, aba y ba, al lenguaje
reconocido por el siguiente AFND:

A = ({a,b}, {q1,q2,q3,q4}, f, q1, {q1}, {(q2,q4), (q3,q4), (q4,q3)})

f(q1,a) = {q2} f(q1,b) =
f(q2,a) = {q1,q3,q4} f(q2,b) = {q1,q3}
f(q3,a) = f(q3,b) = {q1,q4}
f(q4,a) = f(q4,b) = {q3}

MINIMIZACIN DE AUTMATAS FINITOS

6.-Obtener para cada uno de los siguientes autmatas finitos su autmata mnimo
Equivalente:


7.- Dada la gramtica lineal derecha: G = (T, N, S, P) T = {0, 1} .

N = {S, A} P = { S::= 1A | 1S, A::= 0A | 1A | 1 }

encontrar el autmata finito determinista (AFD) mnimo asociado.

8.-Dado el autmata finito:



(a) Construir el AFD mnimo equivalente
(b) Deducir el lenguaje que reconoce




9.- Encontrar el autmata mnimo equivalente al siguiente AFD:

10.- Construir el autmata finito determinista mnimo equivalente al siguiente:


11.- Encontrar el AFD mnimo equivalente al siguiente AFND:


Ejercicios Resueltos
12
:

Suponga que permitimos que los autmatas finitos cambien de un estado a otro
sin leer un smbolo de sus cintas de entrada. En un diagrama de transiciones, este
tipo de transiciones normalmente se representa como un arco con etiqueta en
vez de un smbolo del alfabeto; y se le conoce como transicin . Muestre que
cualquier diagrama de transiciones que tenga transiciones se puede modificar
para que ya no contenga este tipo de transiciones pero que a la vez acepte el
mismo lenguaje (el diagrama modificado puede ser no determinista).

12
Ingenieria Tcnica en Informatica de Sistemas y de Gestin de la UNED Espaa ASIGNATURA: TEORA DE UTMATAS
I Tutora del Centro Asociado de Plasencia en: URL http://dac.escet.urjc.es/lrincon/uned/ta1/ProblemasFinalCapitulo.pdf

Solucin: Pueden darse estos casos:

1.- La transicin conduce a un estado de cual salen otros arcos.
1.1 El estado al que conduce la transicin no es de aceptacin.

Esto significa que desde el estado 1, se puede pasar
a cualquiera de los estados E
1
, ..., E
j
, E
k
, leyendo
respectivamente x
1
, ..., x
j
, ...x
k
. Por lo cual podemos
eliminar el estado 2, sacando del 1 los mismos arcos
que salan del 2 (si los hubiera).

Resulta que ahora, el diagrama que
aparentemente era determinista, ya
no lo es. Hay dos arcos rotulados con la entrada x
k
.




1.2 El estado al que conduce la transicin es de aceptacin

Esto significa que desde el estado 1, se puede aceptar
la cadena sin leer ningn smbolo ms; o pasar a los
estados E
1
, ..., E
j
, E
k
, leyendo respectivamente x
1
, ...,
x
j
, ...x
k
.. En otras palabras, que el estado 1 es de
aceptacin. Por lo cual podemos eliminar el estado 2,
hacer de aceptacin el 1; y sacar del 1 los mismos
arcos que salan del 2.


2.- La transicin conduce a un estado de cual no salen otros arcos.
2.1 El estado al que conduce la transicin no es de aceptacin.

Esto significa que sea cual sea la entrada en el estado 1, se puede pasar a un
callejn sin salida. Y esta posibilidad podemos representarla sacando un arco
con cada entrada posible hacia el callejn sin salida.
x1







Es curioso, pero tiene su justificacin. Al fin y al cabo; si vamos a caer en ese
callejn sin salida (sin llegar a un estado de aceptacin), para los efectos del

anlisis de la cadena, da igual que leamos otra entrada ms (sea cual sea) o que
no la leamos.

2.2 El estado al que conduce la transicin es de aceptacin. El tratamiento es
igual que en 1.2


Esto significa que desde el estado 1, se puede aceptar la cadena sin leer ningn
smbolo ms. En otras palabras, que el estado 1 es de aceptacin. Por lo cual
podemos eliminar el estado 2 y hacer de aceptacin el 1.

Muestre que el lenguaje del alfabeto {x, y} que consiste en aquellas cadenas con
el mismo nmero de x e y es independiente del contexto determinista:

Solucin:

Comentarios: El estado inicial es de aceptacin,
para permitir cadenas con cero xs y cero ys.

Durante el estado X, el nmero de xs es mayor que
el de ys. Se introduce una x cada vez que se lee
una x; y se saca una x cada vez que se lee una y.
Si en algn momento se iguala este nmero
(smbolo # en la cima), se vuelve al estado F

Durante el estado Y, el nmero de ys es mayor que
el de xs. Se introduce una y cada vez que se lee una y; y se saca una y cada vez
que se lee una x. Si en algn momento se iguala este nmero (smbolo # en la
cima), se vuelve al estado F

Si durante el estado F se recibe FDC, la cadena queda aceptada.

Muestre que si L es un lenguaje independiente del contexto, entonces el lenguaje
que consiste en las cadenas de L escritas a la inversa tambin es independiente
del contexto.
Solucin:

Un lenguaje independiente del contexto se puede caracterizar mediante una
gramtica independiente del contexto que casi tiene la forma normal de

Chomsky. Las reglas de dicha gramtica pueden tener estas formas:

S (Nuevo smbolo inicial en el lado izquierdo y en el derecho para permitir
las cadenas vacas)
S x (Nuevo smbolo inicial en el lado izquierdo y un terminal en el lado derecho)
S AB (Nuevo smbolo inicial en el lado izquierdo y un par de no terminales en el
lado derecho)
S x (Antiguo smbolo inicial en el lado izquierdo y un terminal en el lado
derecho)
S AB (Antiguo smbolo inicial en el lado izquierdo y un par de no terminales en
el lado derecho)

Si en las reglas cuyo lado derecho son dos no terminales se invierte el orden de
dichos no terminales:
S
S x
S BA
S x
S BA

Resulta que las cadenas aceptadas son exactamente las inversas.

Ejercicios Resueltos.
13


Ejercicio 1- Define, de manera recursiva, el lenguaje L de las cadenas de
parntesis correctas.
(Es decir, (())() L, ()(() L)
SOLUCIN:
1. () L (aunque L, se puede considerar alternativamente que L para definir
con 2 y 3 las dems palabras).
2. Si x L, entonces (x) L .
3. Si x, y L, entonces x y L.
4. No hay ms palabras en L que las formadas por las reglas anteriores.

Ejercicio 2- Encuentra una expresin regular correspondiente al lenguaje de las
cadenas en {a, b}* que no empiezan por b y no contienen dos as consecutivas.
Construye un AFN- reconocedor de este lenguaje.

Una ER que describe el lenguaje es +a(b+ba)*. El AFN- se puede construir
directamente utilizando el Teorema de Kleene.


13
Ingeniera Superior en Informtica, Grupos A, B y C Teora de Autmatas y Lenguajes formales.
Examen Final-19 de Junio de 2003, Solucin Ejercicios


Ejercicio 3 (a) Define, mediante expresiones regulares, las clases de equivalencia
respecto a la relacin de distinguibilidad con respecto al lenguaje del ejercicio
anterior, utilizando para ello un conjunto distinguible mximo.
(b) Define completamente la operacin de concatenacin por la derecha de las
clases con las letras del alfabeto.
(c) Define a partir de (a) y (b) el AF mnimo.

SOLUCIN:
(a) Para encontrar un CDM, vamos estudiando las distintas palabras del lenguaje.
Empezamos comparando las palabras de longitud 1 con la palabra vaca y
entre s. Es fcil ver que {, a} es un conjunto distinguible (z = a). Tambin son
distinguibles {, b} (z = a) y {a, b} (z = b). Por tanto, {, a, b} es un conjunto
distinguible.
(b) En cuanto a las palabras de longitud 2, es fcil ver que aa es indistiguible de b,
que ba es indistinguible de b y que bb es indistinguible de b (son palabras que
no estn en el lenguaje y que, seguidas de cualquier cola, tampoco), mientras
que ab es distinguible de , a y b.

Con esto, es sencillo darse cuenta que si w es una palabra de longitud mayor o
igual que 3, resulta que:

(c) si w empieza por a, acaba por a y no contiene la subcadena aa, entonces es
indistinguible de a,
(d) si w empieza por a, acaba por b y no contiene la subcadena aa, entonces es
indistinguible de ab, y,
(e) si w empieza por b o contiene la subcadena aa, entonces es indistinguible de
b.
Por tanto, un CDM es {, a, b, ab}.
Las correspondientes clases de equivalencia vienen dadas por las siguientes ER:
[]
[a] a(b
+
a)*.
[ab] a(b
+
a)*b
+

[b] b(b + a)* + (b + a)*aa (b + a)*

Es sencillo ver que la unin de estas clases es {a, b}* y que la interseccin de
cada dos de ellas es vaca.

(b) La operacin de concatenacin a la derecha viene dada por
[]a = [a], []b = [b]
[a]a = [b], [a]b = [ab]
[b]a = [b], [b]b = [b]
[ab]a = [a], [ab]b = [ab]

(c) El AFD mnimo viene dado por la siguiente tabla (A-[], B-[a], C-[ab], D-[b]):

a b
*A B D
*B D C
*C B C
D D D

Ejercicio 4 Demostrar que el lenguaje L = {a
i
b
j
c
k
: j > i + k} no es regular,
utilizando el Lema de Bombeo.

SOLUCIN: Sea n la constante del Lema de Bombeo. Consideramos la palabra x
= a
n
b
2n+1
b
n
y consideramos todas las descomposiciones de x = uvw, con |uv| n y
|v| > 0. Por tanto, v est formado slo por as, y contiene al menos una. De esta
forma, uv
k
w L para todo k 2.

Ejercicio 5 Consideramos la siguiente tabla de transicin de un AFD:
a b
q1 q2 q1
q2 q2 q1
donde q1 es el estado inicial y q2 es el nico estado de aceptacin. Calcula una
expresin regular para el lenguaje reconocido por el autmata, utilizando el
mtodo de la demostracin del teorema de Kleene.

SOLUCIN: Utilizando la demostracin del Teorema de Kleene, basta calcular

R
(2)
1,2 = L(1, 2, 2). Aplicando R
(2)
1,2 = R
(1)
1,2 + R
(1)
1,2(R
(1)
2,2)*R
(1)
2,2, tenemos que

R
(0)
1,1 = + b, R
(0)
1,2 = a, R
(0)
2,1 = b, R
(0)
2,2 = + a

Por tanto, R
(1)
1,2 = a + (+ b)( + b)*a = b*a y R
(1)
2,2 = (+ a) + b(+ b)*a = + b*a.

Finalmente R = R
(2)
1,2 = b*a + (b*a)( + b*a)*( + b*a) = (b*a)
+
.

Ejercicio 6 Considera la gramtica incontextual G dada por: S SS | | ab
Demuestra que es ambigua. Encuentra una expresin regular que describa L(G) y
define una gramtica regular equivalente no ambigua.

SOLUCIN: Para ver que G es ambigua, mostramos dos derivaciones ms a la
izquierda para la palabra w = ab:
S SS abS ab
S ab
Una expresin regular que describe L(G) es (ab)*, y una gramtica incontextual
regular no ambigua que describe L(G) es S aB | ; B bS
(Es sencillo obtener esta gramtica a partir de un AFD que reconoce el lenguaje).


BIBLIOGRAFA DE LA UNIDAD

eBook Automatas y
Lenguajes:http://lizt.mty.itesm.mx/%7Erbrena/Libro/form2AyL.php de
ramon.brena@itesm.mx

IOST F. Hans, Teora de autmatas y lenguajes formales, CAPTULO 2, LENGUAJES
REGULARES Y AUTOMATAS FINITOS (2001) en:
http://iie.ufro.cl/~hansiost/automatas/Capitulo2.doc






INTRODUCCIN

Los lenguajes independientes del contexto que tambien se conocen con el nombre
de gramaticas de contexto libre son un mtodo recursivo sencillo de especificacin
de reglas gramaticales con las que se pueden generar cadenas de un lenguaje.

Es factible producir de esta manera todos los lenguajes regulares, ademas de que
existen ejemplos sencillos de gramaticas de contexto libre que generan lenguajes
no regulares.

Las reglas gramaticales de este tipo permiten que la sintaxis tenga variedad y
refinamientos mayores que los realizados con lenguajes regulares, en gran
medida sirven para especificar la sintaxis de lenguajes de alto nivel y otros
lenguajes formales.

OBJETIVO GENERAL

Conocer los modelos de computacin que corresponden a los lenguajes
independientes del contexto y su aplicacin.

OBJETIVOS ESPECIFICOS

Generalizar los conceptos de autmatas finitos y gramaticas regulares.

Reconocer el potencial de procesamiento del lenguaje del automata con los
autmatas de pila.



LECCION 16. GRAMATICAS REGULARES

asta ahora, se han visto dos formas de definir lenguajes: a travs de
autmatas finitos, y por medio de expresiones regulares. Ahora veremos otra
forma, usando el concepto de gramticas.

Sea el autmata:














Se puede pensar que este autmata es un generador de cadenas a partir de una
cadena vaca. As, las cadenas que puede generar el autmata son todas aquellas
que perteneces al lenguaje representado por el autmata L(M). Observando el
autmata podemos decir que todas las cadenas inician con una a, luego viene
una serie de as o bs y finalmente termina con una b.

Podemos utilizar la siguiente notacin para representar esto:

S a E : partiendo del estado inicial S, vendr una a y luego otra cadena
que denotamos genricamente con una E.
E A, EB : hay dos posibilidades para E, que venga una exp. tipo A o tipo B.

Luego, para expresiones tipo A y B tenemos:

A b, A aA
B b, B bB
Finalmente, tendremos el siguiente conjunto de expresiones (utilizamos para
representar o).
H
q
1 q
2
q
3
q
4
q
5
a
b
b
b
a


a(a
*
b
*
)b

a
b
a

S

b
a
b
b
a

1. S a E
2. E A B
3. A aA b
4. B bB b
Estas expresiones pueden ser consideradas como reglas de sustitucin y permiten
generar cualquier cadena o palabra vlida dada por el autmata del cual se
obtuvieron. Por ejemplo, sea la cadena a
3
b:




Una gramtica regular G es una cudrupla G = (, N, S, P), donde:

: alfabeto (no vaco) de smbolos terminales.
N : es un conjunto (no vaco) de smbolos no terminales.
S : es denominado el smbolo inicial y S N.
P : es una coleccin o conjunto de reglas de sustitucin llamadas producciones y
que son de la forma A w, donde A N y w es una cadena sobre N.

Adems, w debe satisfacer las siguientes condiciones:

1. w contiene un no terminal como mximo.
2. si w contiene un no terminal, entonces es el smbolo que est en el extremo
derecho de w.

Ejemplo: Dada la gramtica regular dada por:

S b A a B
A a b a S
B b a b S

Genera un lenguaje regular. Podemos obtener entonces el
autmata y la expresin regular correspondientes.


Autmata:


S a E a a A a a a A a a a b = a
3
b
3 3
2 3
,
Exp. Regular:
(baba abab)
*



Ejemplo: Obtener una gramtica regular para el lenguaje representado por:
a
*
b a
R: = {a, b}
N = {S}







P: S R a
R aR b

LECCION 17. - GRAMTICAS REGULARES Y LENGUAJES REGULARES

ea un lenguaje regular, se puede obtener una gramtica regular que
genere L a partir de un AFD M = (Q, , s
0
, F, ) para el cual L = L(M). Se
define esta gramtica G = (N, , S, P) de la siguiente manera:

N = Q
=
S = s
0

P = {q a p (q, a) = p} {q q F}

Por ejemplo, sea el AFD de la siguiente figura:




acepta el lenguaje a
*
b. La correspondiente gramtica regular ser:

Q
1
a Q
1
b Q
2
Q
2
a Q
3
b Q
3

Q
3
a Q
3
b Q
3


Es posible probar que cualquier palabra que sea aceptada por el AFD M, puede
ser generada por la gramtica regular G. Esto significa que L(G) = L(M).

Tambin es posible deducir un AFND a partir de una gramtica regular G.
Sea G = (N, , S
0
, P) una G.R., se define M = (Q, , S, F, ) como sigue:

S
b
a
S

a
R
b
a, b
Q
1
Q
2
Q
3
a, b

Q = N {}, donde es un nuevo smbolo.
S
0
= S
F = {}

y se construye a partir de las producciones de P, como se indica a continuacin:

1. Si A
1

n
B es una produccin de P, con A y B como no terminales,
entonces se agregan a Q los nuevos estados q
1
, q
2
, , q
n-1
y las transiciones
siguientes:

(A,
1

n
) = (q
1
,
1

n
) = = (q
n-1
,
n
) = B

2. Si A
1

n
es una produccin de P, entonces se aadirn a Q los nuevos
estados q
1
, q
2
, , q
n-1
y a , las transiciones siguientes:

(A,
1

n
) = (q
1
,
1

n
) = = (q
n-1
,
n
) =

Ejemplo: Sea la gramtica Regular dada por.

S aSbBb
B cC
C aS

Obtenemos el AFND correspondiente, utilizando el mtodo anterior:

Q = {S, B, C, }
S
0
= S
F = {}

i. S aS : (S,a) = S
ii. S bB : (S,b) = B
iii. S b : (S,b) =
iv. B cC : (B,c) = C
v. C aS : (C,a) = S

As, podemos construir el AFND siguiente:






a
S
b
B
C
c
S
b
B
c

a
b

Para el caso de una produccin de la forma: A abaS, tendremos las siguientes
transiciones y nuevos estados:

(A, a b a) = S, se descompone en :

(A, a) = q
1
; (q
1
, b) = q
2
; (q
2
, a) = S

donde q
1
y q
2
son nuevos estados que se agregan a Q.

LECCION 18. - GRAMTICAS INDEPENDIENTES DEL CONTEXTO.

uando se eliminan las restricciones impuestas al lado derecho de las
producciones de una gramtica, se pueden tener producciones como por
ejemplo:

S aBbA
A aaSbAA
B bbSaBB
o incluso:
S aSb

Es decir, no hay ninguna restriccin respecto de la cantidad y posicin de los
smbolos no terminales en el lado derecho de las producciones.

Una gramtica independiente del contexto (GIC) es una cudrupla G=(N, , S, P),
donde:
N: es una coleccin finita (no vaca) de smbolos no terminales.
: es un alfabeto.
S: es un no terminal llamado smbolo inicial.
P: un conjunto de producciones tal que P N (N )
*
.

Los lenguajes generados por una GIC son llamados Lenguajes Independientes
del Contexto (LIC).

Es posible probar que la gramtica independiente del contexto dada por:

S aSb

genera el lenguaje independiente del contexto {a
n
b
n
/ n 0} y se puede probar
que este no es un lenguaje regular. Esto indica que hay LIC que no son lenguajes
regulares; y por lo tanto el conjunto de los LIC contienen al conjunto de los
lenguajes regulares.

C

4.18.1. rboles de derivacin y ambigedad.

Al derivar una cadena a travs de una GIC, el smbolo inicial se sustituye por
alguna cadena. Los no terminales se van sustituyendo uno tras otro por otras
cadenas hasta que ya no quedan smbolos no terminales, queda una cadena con
slo smbolos terminales.

A veces es til realizar un grfico de la derivacin. Tales grficos tienen forma de
rbol y se llaman arbol de derivacin o rbol de anlisis.

Para una derivacin dada, el smbolo inical S etiqueta la raz del rbol. El nodo
raz tienen unos nodos hijos para cada smbolo que aparezca en el lado dereho de
la produccin, usada para reemplazar el smbolo inicial. De igual forma, cada
smbolo no terminal tienen unos nodos hijos etiquetados con smbolos del lado
derecho de la produccin usada para sustituir ese no terminal.

Ejemplo: Sea la GIC dada por
S AB
A aAa
B bBb

La cadena aabbb tienen la siguiente derivacin:

S => AB => AbB => AbbB => Abbb => aAbbb => aabbb

Con esto, el rbol de derivacin ser dado por:











Existen muchas derivaciones posibles para la cadena aabbb, por ejemplo:

S => AB => aAB => aaB => aabB => aabbB => aabbb
S => AB => aAB => aAbB => aAbbB => aAbbb => aabbb

Pero el rbol de derivacin ser siempre el mismo.Sin embargo, esto no siempre
se cumple.
S
a
b
b
b
A
B
B
B
a
A

Considrese la gramtica: S SbSScSa
la cadena abaca se puede derivar:

1. S => SbS => SbScS => SbSca => Sbaca => abaca.
2. S ScS SbScS abScS abacS abaca

S
a
b
c
S S
S
S
a
a

S
a
c
b
S
S
S
a
S
a

Derivacin 1 Derivacin 2

En este caso, para una misma cadena, se obtuvieron rboles de derivacin
distintos.

Entonces, diremos que una gramtica es ambiga cuando hay dos o ms
rboles de derivacin distintos para una misma cadena.

En algunos casos, si la gramtica es ambigua, se puede encontrar otra gramtica
equivalente pero que no sea ambiga. Por ejemplo:

S A B
A a
B a

... es ambigua porque tiene rboles de derivacin distintos para la cadena a. Una
gramtica equivalente que no es ambiga es:

S a

Si todas las GIC para un lenguaje son ambigas, se dice que el lenguaje es un
lenguaje independiente del contexto (LIC) inherentemente ambigo.

Ejemplo: Considere la gramtica G
1
dada por:

N = {S,A} ; = {a} ; S ; P: {S AA ; A aSa ; A a}

Se pueden obtener 2 rboles de derivacin para la cadena aaaaa:


S
a
S
A
A
a
A
a
A
a a

S
A A
a a
a
a
S
A
A
a


La gramtica G
1
no es una gramtica regular, pero es relativamente fcil mostrar
que L(G
1
) es el conjunto regular {a
2
,a
5
,a
8
,a
11
,a
14
, ...}. La ambigedad no es
inherente al lenguaje y puede definirse una gramtica libre de contexto mucho
ms simple:

G
2
= ({T}, {a}, T, {T aaaT, T aa})

Esta gramtica es claramente no ambiga. La ambigedad no es una
caracterstica deseable en una gramtica que describe un lenguaje, especialmente
en un lenguaje de programacin. No sera claro cul es el rbol de derivacin que
tendra que usarse para inferir el significado de una cadena. Para ilustrar lo
anterior, considere el siguiente ejemplo:

G: A I=E
I a b c
E E+E E*E (E) I

La cadena: a=b+c*a , es una cadena de este lenguaje y se pueden obtener 2
rboles de derivacin para ella:


A
I
=
+
I
E
E a
*
E
E E
I I b
c a

A
=
*
I
E
a
+
E
E E
I I
a
b c
E
I

Si se pretende obtener el valor del resultado de la expresin a la derecha del
operador de asignacin (=), se obtienen 2 resultados posibles, b+(c*a) o (b+c)*a
.En general, estos resultados no son iguales.

LECCION 19. - FORMAS CANNICAS PARA LAS GIC

a definicin de una gramtica independiente del contexto es demasiado amplia,
y por lo tanto, es deseable establecer una forma cannica que restrinja los
tipos de producciones que pueden utilizarse.

Una produccin A B en una GIC G = (N, , S, P) es til si esta es parte de una
derivacin comenzando con el smbolo incial y terminando con una cadena
terminal. Esto es, A B es til si hay una derivacin:

S * w
1
Aw
2
*w
1
Bw
2
* x, donde x *

Una produccin que no es til es llamada no usada.
Un noterminal que no aparece en ninguna produccin til es llamado no
usado.
Un no terminal que no est entre los terminales no usados, es llamdo til.

Ejemplo:

(1) S gAe aYB CY
(2) A bBY ooC
(3) B dd D
(4) C jVB gi
(5) D n
(6) U kW
1. Para el no terminal W, es imposible
encontrar una derivacin que iniciando
en S produzca una sentencia que
contenga W. Lo mismo ocurre con U.

2. No hay derivaciones que contengan
el no terminal Y y que puedan producir
L

(7) V baXXX oV
(8) W c
(9) X fV
(10) Y Yhm
una cadena terminal. Lo mismo ocurre
con X y V.

3. B se utiliza en conjunto con no
terminales no usados y por lo tanto es
no usado tambin. Con D ocurre lo
mismo.

Todo lenguaje independiente del contexto L (no vaco) puede ser generado por
una gramtica libre de contexto que contenga slo producciones tiles y no
terminales tiles.

Una produccin de la forma A B, donde A, B N (no terminales), es llamada
una produccin unitaria o produccin no generativa.

Ejemplo:
A B
B w
1
C

Se puede eliminar A B e incluir la produccin A w
1
C.

Utilizando todo lo anterior al ejemplo de la pgina anterior, tendremos como
resultado la gramtica:

S gAe
A ooC
C gi

Una gramtica independiente del contexto esta en la forma normal de Chomsky si
no contiene producciones (A ) y si todas las producciones son de la forma A
a, para a , o de la forma A BC, donde B, C son no terminales. Esto es, en
la forma normal de Chomsky, el lado derecho de cada produccin contiene un
nico smbolo terminal o un par de no terminales.

Cualquier lenguaje libre de contexto L puede ser generado por una gramtica libre
de contexto en la forma normal de Chomsky.

A partir de lo anterior se infiere que cualquier gramtica libre de contexto puede
ser transformada a la forma normal de Chomsky. La estrategia bsica ser
agregar nuevos smbolos no terminales a aquellas producciones no normalizadas
tales como por ejemplo A JKcb y reemplazarlas por un conjunto de
producciones equivalentes tales como:

A JY
1
, Y
1
KY
2
, Y
2
X
c
X
b
, X
c
c , X
b
b


Donde Y
1
, Y
2
, X
c
y X
b
son nuevos smbolos no terminales.

Ejemplo:

G
1
:
(1) S SABC
(2) S be
(3) S CBh
(4) A aaC
(5) B Sf
(6) B ggg
(7) C cA
(8) C d
G
2:
S SY
11
, Y
11
AY
12
, Y
12
BC
S X
b
X
e

S CY
31
, Y
31
BX
h

A X
a
Y
41
, Y
41
X
a
C
B SX
f

B X
g
Y
61
, Y
61
X
g
X
g

C X
c
A
C d
X
b
b , X
e
e , X
h
h , X
a
a , X
f
f , X
g
g

Gramticas Libres de Contexto



Figura 22: Arbol de Derivacin


4.19.1. Simplicacin De Las Gramticas Libres De Contexto

Para un mismo lenguaje de tipo 2 existen muchas gramticas libres de contexto
que lo generan. Estas ser n de formas muy diversas por lo que, en general se
hace muy difcil trabajar con ellas. Por este motivo interesa simplicarlas lo mas
posible y denir unas formas normales para las gramticas que las hagan mas
homogneas.

4.19.2. Eliminacin de Smbolos y Producciones Intiles

Un smbolo X (V T ) se dice til si y solo si existe una cadena de derivaciones
en G tal que S X w T


es decir si interviene en la derivacin de alguna palabra del lenguaje generado por
la gramtica. Una produccin se dice til si y solo si todos sus smbolos son tiles.
Esto es equivalente a que pueda usarse en la derivacin de alguna palabra del
lenguaje asociado a la gramtica. Esta claro que eliminando todos los smbolos y
producciones intiles el lenguaje generado por la gramtica no cambia.

El algoritmo para eliminar los smbolos y producciones intiles consta de dos
pasos fundamentales:

1. Eliminar las variables desde las que no se puede llegar a una palabra de T y las
producciones en las que aparezcan.
2. Eliminar aquellos smbolos que no sean alcanzables desde el estado inicial, S, y
las producciones en las que estos aparezcan.

El primer paso se realiza con el siguiente algoritmo (V es un conjunto de
variables):
1. V

= 0
2. Para cada produccin de la forma A w, A se introduce en V.
3. Mientras Vcambie
4. Para cada produccin B
5. Si todas las variables de pertenecen a V

,B se introduce en V

6. Eliminar las variables que esten en V y no en V
7. Eliminar todas las producciones donde aparezca una variable de las eliminadas
en el paso anterior

El segundo paso se realiza con el siguiente algoritmo:

Vy J son conjuntos de variables. J son las variables por analizar.
T

es un conjunto de smbolos terminales

1. J = {S} V

= {S} T= 0
2. Mientras J 0
3. Extraer un elemento de J : A, (J = J {A}).
4. Para cada produccion de la forma A
5.Para cada variable B en
6. Si B no est en V

aadir B a J y a V
7. Poner todos los simbolos terminales de en T


8. Eliminar todas las variables que no esten en V

y todos los simbolos terminales
que no esten en T

.

9. Eliminar todas las producciones donde aparezca un simbolo o variable de los
eliminados


Ejemplo: Es importante aplicar los algoritmos anteriores en el orden especicado
para que se garantice que se eliminan todos los smbolos y variables intiles.

Como ejemplo de lo anterior, supongamos que tenemos la gramtica dada por

S AB, S a, A a

En el primer algoritmo se elimina B y la produccin S AB.
Entonces en el segundo se elimina la variable A y la produccin A a.
Sin embargo, si aplicamos primero el segundo algoritmo, entonces no se elimina
nada. Al aplicar despues el primero de los algoritmos se elimina B y la produccin
S AB. En denitiva, nos queda la gramtica S a, A a donde todava nos
queda la variable intil A.

Ejemplo: Eliminar smbolos y producciones intiles de la gramtica
S gAe, S aY B, S cY,
A bBY, A ooC, B dd,
B D, C jV B, C gi,
D n, U kW, V baX X X ,
V oV, W c, X f V, Y Y hm

se aplica el primer algoritmo.

Inicialmente V

tiene las variables V = {B, D, C, W }.
En la siguiente iteracin aadimos a V las variables que se alcanzan desde estas:
A y W . V

queda igual a {B, D, C, W, A, U }.
En la siguiente V

= {B, D, C, W, A, U, S}.
En la siguiente V

= {B, D, C, W, A, U, S}.

Como V

no cambia ya se ha terminado el ciclo. Estas son las variables desde las
que se alcanza una cadena de smbolos terminales. El restos de las variables: X ,
Y, V, son intiles y se pueden eliminar. Tambin se eliminan las producciones
asociadas. La gramtica resultante es:

S gAe, A ooC,
B dd, B D, C gi,
D n, U kW, W c
A esta gramtica le aplicamos el segundo algoritmo

J = {S}, V

= {S}, T = 0

Tomando S de J y ejecutando las instrucciones del ciclo principal nos queda
J = {A}, V

= {S, A}, T = {g, e}


Tomando A de J, tenemos
J = {C}, V

= {S, A, C}, T = {g, e, o}

Sacando C de J, obtenemos
J = 0, V = {S, A, C}, T

= {g, e, o, i}

Como J = 0 se acaba el ciclo. Solo nos queda eliminar las variables intiles: B, D,
U, W, los smbolos terminales intiles: n, k, c, d, y las producciones donde estos
aparecen. La gramtica queda

S gAe, A ooC, C gi

En esta gramtica solo se puede generar una palabra: googige.

Si el lenguaje generado por una gramtica es vaco, esto se detecta en que la
variable S resulta intil en el primer algoritmo. En ese caso se pueden eliminar
directamente todas las producciones, pero no el smbolo S.

Ejemplo eliminar smbolos y producciones intiles de la gramtica

S aSb,S ab,S bcD,

S cSE,E aDb,F abc,E abF

4.19.3. Producciones Nulas

Las producciones nulas son las de la forma A . Vamos a tratar de eliminarlas
sin que cambie el lenguaje generado por la gramtica ni la estructura de los
rboles de derivacin. Evidentemente si L(G) L(G) no vamos a poder
eliminarlas todas sin que la palabra nula deje de generarse. As vamos a dar un
algoritmo que dada una gramtica G, construye una gramtica G

equivalente a la
anterior sin producciones nulas y tal que L(G)= L(G) { }. Es decir, si la palabra
nula era generada en la gramtica original entonces no puede generarse en la
nueva gramtica.

Primero se calcula el conjunto de las variables anulables:
H es el conjunto de las variables anulables
1. H = 0
2. Para cada produccion A , se hace H = H {A}
3. Mientras H cambie
4. Para cada produccion B A
1
A
2
...A
n
,
donde A
i
H para todo i = 1,...,n, se hace H = H {B}

Una vez calculado el conjunto, H, de las variables anulables, se hace lo siguiente:


1. Se eliminan todas las producciones nulas de la gramatica
2. Para cada produccion de la gramatica de la forma A
1
...
n
,
donde
i
V T
3. Se elimina la produccion A
1
...
n

4. Se aaden todas las producciones de la forma A 1... :n
5. donde
i
=
i
si
i
H

(
i
=
i
) (
i
= ) si H
y no todos los
i
puedan ser nulos al mismo tiempo

G

es la gramtica resultante despus de aplicar estos dos algoritmos.

Si G generaba inicialmente la palabra nula, entonces, a partir de G, podemos
construir una gramtica G

con una sola produccin nula y que genera el mismo
lenguaje que G. para ello se aade una nueva variable, S, que pasa a ser el
smbolo inicial de la nueva gramtica, G. Tambin se aaden dos producciones:

S

S, S



Ejemplo: Eliminar las producciones nulas de la siguiente gramtica:

S ABb, S ABC, C abC,
B bB, B , A aA,
A , C AB

Las variables anulables despues de ejecutar el paso 2 del primer algoritmo son B y
A. Al ejecutar el paso 3, resulta que C y S son tambin anulables, es decir H = {A,
B, C, S}. Al ser S anulable la palabra vaca puede generarse mediante esta
gramtica. En la gramtica que se construye con el segundo algoritmo esta
palabra ya no se podr generar. Al ejecutar los pasos 3 y 4 del segundo algoritmo
para las distintas producciones no nulas de la gramtica resulta

3. Se elimina la produccin S ABb
4. Se aade S ABb, S Ab, S Bb

3. Se elimina S ABC
4. Se aade S ABC, S AB, S AC,
S BC, S A, S B, S C

3. Se elimina C abC
4. Se aade C abC, C ab

3. Se elimina B bB

4. Se aade B bB, B b

3. Se elimina A aA
4. Se aade A aA, A a

3. Se elimina C AB
4. Se aade C AB, C A, C B

En denitiva, la gramtica resultante tiene las siguientes producciones:

S ABb, S Ab, S Bb, S ABC, S AB, S AC, S BC, S A, S B,
S C, C abC, C ab, B bB, B b, A aA,
A a, C AB, C A, C B

Ejemplo: Sea la gramtica
S aHb, H aHb, H

La nica variable anulable es H. Y la gramtica equivalente, que resulta de aplicar
el algoritmo 2 es:

S aHb, H aHb, S ab, H ab

4.19.4. Producciones Unitarias

Las producciones unitarias son las que tienen la forma
A B
donde A, B V . Veamos como se puede transformar una gramtica G, en la que
L(G), en otra gramtica equivalente en la que no existen producciones
unitarias. Para ello, hay que partir de una gramtica sin producciones nulas.
Entonces, se calcula el conjunto H de parejas (A, B) tales que B se puede derivar
a partir de
A: A B. Eso se hace con el siguiente algoritmo

1. H = 0
2. Para toda produccion de la forma A B, la pareja (A, B) se introduce en H.
3. Mientras H cambie
4. Para cada dos parejas (A, B), (B, C)
5. Si la pareja (A, C) no est en H
(A, C) se introduce en H

6. Se eliman las producciones unitarias
7. Para cada produccion A
8. Para cada pareja (B, A) H
9. Se aade una produccion B

Ejemplo: Consideremos la gramtica resultante de un ejemplo anterior

S ABb, S Ab, S Bb, S ABC, S AB, S AC, S BC, S A, S B,
S C, C abC, C ab, B bB, B b, A aA,
A a, C AB, C A, C B

El conjunto H est formado por las parejas {(S, A), (S, B), (S, C), (C, A), (C, B)}.

Entonces se eliminan las producciones S A, S B, S C, C A, C B

Se aaden a continuacion las producciones (no se consideran las repetidas)

S a, S aA, S bB, S b, S abC, S ab, C aA, C a, C bB, C b

Ejemplo: El lenguaje L = {a
n
b
n
: n 1} {a
n
ba
n
: n 1} viene generado por la
siguiente gramtica de tipo 2:

S A, S B, A ab, A aHb
H ab, H aHb, B aBa, B b

Las parejas resultantes en el conjunto H son {(S, A), (S, B)}. La gramtica sin
producciones unitarias equivalente es:

Aab, AaHb, Hab, HaHb, BaBa, Bb, Sab, SaHb, SaBa, Sb.

LECCION 20. - FORMAS NORMALES

4.20.1. Forma Normal de Chomsky

Una gramtica de tipo 2 se dice que est en forma normal de Chomsky si y solo si
todas las producciones tienen la forma
A BC, A a,
donde A,B,C V , a T .

Toda gramtica de tipo 2 que no acepte la palabra vaca se puede poner en forma
normal de Chomsky. Para ello lo primero que hay que hacer es suprimir las
producciones nulas y unitarias. A continuacin se puede ejecutar el siguiente
algoritmo:

1. Para cada produccion de la forma A
1
...
n
,
i
(V T ),n 2
2. Para cada
i
, si
i
es terminal:
i
=a T
3. Se aade la produccion Ca a
4. Se cambia
i
por Ca en A
1
...
n

5. Para cada produccion de la forma A B
1
,...B
m
, m 3

6. Se aaden (m 2)variables D
1
,D
2
,...,D
m2
(distintas para cada produccion)
7. La produccion A B
1
...B
m
se reemplaza por
A B
1
D
1
, D
1
B
2
D
2
, ..., D
m2
B
m1
B
m



Ejemplo Sea la Gramtica G =({S,A,B},{a,b},P,S) dada por las producciones
S bA | aB, A bAA | AS | a, B aBB | bS | b
Para pasarla a forma normal de Chomsky, en el ciclo asociado al paso 1 se
aaden las producciones
Ca a, Cb b
y las anteriores se transforman en

S CbA | CaB, A CbAA | AS | Ca, B CaBB | CbS | Cbb
Al aplicar el paso asociado al paso 5, la gramtica queda

S CbA | CbB, A CbD1 | AS | a, D1 AA,
B CaE1 | CbS | b, E1 B, Ca a, Cb b
Con esto la gramtica ya est en forma normal de Chomsky.

4.20.2. Forma Normal de Greibach

Una gramtica se dice que est en forma normal de Greibach si y solo si todas las
producciones tienen la forma A a donde a T , V*. Toda gramtica de
tipo 2 que no acepte la palabra vaca se puede poner en forma normal de
Greibach. Para ello hay que partir de una gramtica en forma normal de Chomsky
y aplicarle el siguiente algoritmo. En realidad no es necesario que la gramtica
est en forma normal de Chomsky. Basta que todas las producciones sean de uno
de los tipos siguientes:
A a, a T, V*

.
A , V*

.

Claro est, en una gramtica en forma normal de Chomsky, todas las
producciones son de alguno de estos dos tipos. En este algoritmo se supone que
el conjunto de variables inicial de la gramtica est numerado

V = {A
1
,...,A
m
}.

El algoritmo se basa en dos operaciones bsicas. La primera es eliminar una
produccin, A B de la gramtica G, donde A B. Esto se hace con los
siguientes pasos:

1. Eliminar A B
2. Para cada produccion B
3. Aadir A


La otra operacin bsica consiste en eliminar todas las producciones del tipo A
A donde V* . Esto se hace siguiendo los siguiente pasos:

1. Aadir una nueva variable B
A

2. Para cada produccion A A
3. Aadir B
A
y B
A
B
A

4. Eliminar A A
5. Para cada produccion A no empieza por A
6. Aadir A B
A


Llamemos ELIMINA
1
(A B) a la funcin que realiza el primer paso y
ELIMINA
2
(A) a la funcin que reliza el segundo paso. Si si llama a ELIMINA
2
(A
j
),
la variable que aadimos la notaremos como B
j
.

En estas condiciones vamos a realizar un algoritmo, al nal del cual todas las
producciones tengan una forma que corresponda a alguno de los patrones
siguientes:
A a, a T, V*

.
A
i
A
j
, j > i, V*

.
B
j
A
i
, V*



El algoritmo es como sigue:
1. Para cada k = 1,...,m
2. Para cada j = 1,...,k 1
3. Para cada produccion A
k
A
j

4. ELIMINA
1
(A
k
A
j
)
5. Si existe alguna produccion de la forma A
k
A
k

6. ELIMINA
2
(A
k
)

A continuacin se puede eliminar denitivamente la recursividad por la izquierda
con el siguiente algoritmo pasando a forma normal de Greibach

1. Para cada i = m 1,...,1
2. Para cada produccion de la forma A
i
A
j
, j > i
3. ELIMINA
1
(A
i
A
j
)
4. Para cada i = 1,2,...,m
5. Para cada produccion de la forma B
j
A
i
.
6. ELIMINA
1
(B
j
A
i
)

El resultado del segundo algoritmo es ya una gramtica en forma normal de
Greibach.


Ejemplo: Pasar a forma normal de Greibach la gramtica dada por las
producciones

A
1
A
2
A
3
, A
2
A
3
A
1
, A
2
b, A
3
A
1
A
2
, A
3
a
Aplicamos ELIMINA
1
a A
3
A
1
A
2
. Se elimina esta produccin y se aade:
A
3
A
2
A
3
A
2


Queda:
A
1
A
2
A
3
, A
2
A
3
A
1
, A
2
b, A
3
a, A
3
A
2
A
3
A
2

Aplicamos ELIMINA
1
a A
3
A
2
A
3
A
2

Se elimina esta produccin y se aaden: A
3
A
3
A
1
A
3
A
2
, A
3
bA
3
A
2


Queda:

A
1
A
2
A
3
, A
2
A
3
A
1
, A
2
b, A
3
a, A
3
A
3
A
1
A
3
A
2
, A
3
bA
3
A
2

Aplicamos ELIMINA
2
a A
3
Se aade B
3
y las producciones B
3
A
1
A
3
A
2
, B
3

A
1
A
3
A
2
B
3
Se elimina A
3
A
3
A
1
A
3
A
2
. Se aaden las producciones: A
3
aB
3
, A
3

bA
3
A
2
B
3


Queda:
A
1
A
2
A
3
, A
2
A
3
A
1
, A
2
b, A
3
a, A
3
bA
3
A
2
B
3
A
1
A
3
A
2
, B
3
A
1
A
3
A
2
B
3

A
3
aB
3
, A
3
bA
3
A
2
B
3


Se aplica ELIMINA
1
a A
2
A
3
A
1
.

Se elimina esta produccin y se aaden:

A
2
aA
1
, A
2
aB
3
A
1
, A
2
bA
3
A
2
B
3
A
1
, A
2
bA
3
A
2
A
1


Queda:
A
1
A
2
A
3
, A
2
b, A
2
aA
1
, A
2
aB
3
A
1
, A
2
bA
3
A
2
B
3
A
1
, A
2
bA
3
A
2
A
1
, A
3

a, A
3
bA
3
A
2
, B
3
A
1
A
3
A
2
, B
3
A
1
A
3
A
2
B
3
A
3
aB
3
, A
3
bA
3
A
2
B
3


Se aplica ELIMINA
1
a A
1
A
2
A
3
.

Se elimina esta produccin y se aaden:

A
1
bA
3
, A
1
aA
1
A
3
, A
1
aB
3
A
1
A
3
, A
1
bA
3
A
2
B
3
A
1
A
3
, A
1
bA
3
A
2
A
1
A
3


Queda:









Se aplica ELIMINA
1
a B
3
A
1
A
3
A
2
Se elimina esta produccin y se aaden:


Se aplica ELIMINA
1
a B
3
A
1
A
3
A
2
B
3
. Se elimina esta produccin y se aaden:
B
3
bA
3
A
3
A
2
B
3
, B
3
aA
1
A
3
A
3
A
2
B
3
, B
3
aB
3
A
1
A
3
A
3
A
2
B
3
, B
3
bA
3
A
2
B
3
A
1
A
3
A
3
A
2
B
3
,
B
3
aB
3
A
1
A
3
A
3
A
2
B
3
,


A
2
b, A
2
aA
1,
A
2
aB
3
A
1
,
A
2
bA
3
A
2
B
3
A
1
, A
2
bA
3
A
2
A
1
, A
3
a,
A
3
bA
3
A
2
, B
3
A
1
A
3
A
2
, B
3
A
1
A
3
A
2
B
3
,
A
3
aB
3
, A
3
bA
3
A
2
B
3
, A
1
bA
3
,
A
1
aA
1
A
3
, A
1
aB3A1A3, A
1
bA
3
A
2
B
3
A
1
A
3
,
A
1
bA
3
A
2
A
1
A
3

B
3
bA
3
A
3
A
2
, B
3
aA
1
A
3
A
3
A
2
, B
3
aB
3
A
1
A
3
A
3
A
2
,
B
3
bA
3
A
2
B
3
A
1
A
3
A
3
A
2
, B
3
aB
3
A
1
A
3
A
3
A
2
,

Queda:
A
2
b, A
2
aA
1
A
2
aB
3
A
1
,
A
2
bA
3
A
2
B
3
A
1
, A
2
bA
3
A
2
A
1
A
3
a,
A
3
bA
3
A
2
, B
3
A
1
A
3
A
2
B
3
, A
3
aB
3
,
A
3
bA
3
A
2
B
3
, A
1
bA
3
, A
1
aA
1
A
3
,
A
1
aB
3
A
1
A
3
, A
1
bA
3
A
2
B
3
A
1
A
3
, A
1
bA
3
A
2
A
1
A
3

B
3
bA
3
A
3
A
2
, B
3
aA
1
A
3
A
3
A
2
, B
3
aB
3
A
1
A
3
A
3
A
2
,
B
3
bA
3
A
2
B
3
A
1
A
3
A
3
A
2
, B
3
aB
3
A
1
A
3
A
3
A
2
,
Resultado:
A
2
b, A
2
aA
1
, A
2
aB
3
A
1
,
A
2
bA
3
A
2
B
3
A
1
, A
2
bA
3
A
2
A
1
A
3
a,
A
3
bA
3
A
2
, A
3
aB
3
, A
3
bA
3
A
2
B
3
,
A
1
bA
3
, A
1
aA
1
A
3
, A
1
aB
3
A
1
A
3
,
A
1
bA
3
A
2
B
3
A
1
A
3
, A
1
bA
3
A
2
A
1
A
3
, B
3
bA
3
A
3
A
2
,
B
3
aA
1
A
3
A
3
A
2
, B
3
aB
3
A
1
A
3
A
3
A
2
, B
3
bA
3
A
2
B
3
A
1
A
3
A
3
A
2
,
B
3
aB
3
A
1
A
3
A
3
A
2
, B
3
bA
3
A
3
A
2
B
3
, B
3
aA
1
A
3
A
3
A
2
B
3
,
B
3
aB
3
A
1
A
3
A
3
A
2
B
3
, B
3
bA
3
A
2
B
3
A
1
A
3
A
3
A
2
B
3
, B
3
aB
3
A
1
A
3
A
3
A
2
B
3




LECCION 21. - DEFINICIN DE AUTMATA CON PILA
14


or ejemplo el lenguaje de los parntesis bien balanceados, que se sabe es
propiamente un LLC (lenguaje Libre de contexto,Qu mquina se requiere
para distinguir las palabras de parntesis bien balanceados de las que tienen los
parntesis desbalanceados?

Una primera idea podra ser la de una mquina que tuviera un registro aritmtico
que le permitiera contar los parntesis; dicho registro sera controlado por el
control finito, quien le mandara smbolos I para incrementar en uno el contador y
D para decrementarlo en uno. A su vez, el registro mandara un smbolo Z para
indicar que est en cero, o bien N para indicar que no est en cero. Entonces para
analizar una palabra con parntesis lo que haramos sera llevar la cuenta de
cantos parntesis han sido abiertos pero no cerrados; en todo momento dicha
cuenta debe ser positiva o cero, y al final del clculo debe ser exactamente cero.
Por ejemplo, para la palabra (())() el registro tomara sucesivamente los valores 1,
2, 1, 0, 1, 0.

Como segundo ejemplo, considrese el lenguaje de los palndromos (palabras que
se leen igual al derecho y al revs, como ANITALAVALATINA). Aqu la mquina
contadora no va a funcionar, porque se necesita recordar toda la primera mitad de
la palabra para poder compararla con la segunda mitad. Ms bien pensaramos en
una mquina que tuviera la capacidad de
recordar cadenas de caracteres arbitrarias, no
nmeros. Siguiendo esta idea, podramos
pensar en aadir al AF un almacenamiento
auxiliar, que llamaremos pila, donde se
podran ir depositando caracter por caracter
cadenas arbitrariamente grandes, como se
aprecia en la Figura 23. A estos nuevos
autmatas con una pila auxiliar los
llamaremos autmatas de pila (AP)
Figura 23. Automata con Pila Auxiliar

14
MORAL CALLEJN Serafn Teora de autmatas y lenguajes formales, En
http://decsai.ugr.es/~smc/docencia/mci/automata.pdf
P


5.21.1. Funcionamiento de los Autmatas de Pila
15


La pila funciona de manera que el ultimo carcter que se almacena en ella es el
primero en salir (LIFO por las siglas en ingls), como si apilramos platos uno
encima de otro, y naturalmente el primero que quitaremos es el ltimo que hemos
colocado. Un aspecto crucial de la pila es que slo podemos modificar su tope,
que es el extremo por donde entran o salen los caracteres. Los caracteres a la
mitad de la pila no son accesibles sin quitar antes los que estn encima de ellos.
La pila tendr un alfabeto propio, que puede o no coincidir con el alfabeto de la
palabra de entrada. Esto se justifica porque puede ser necesario introducir en la
pila caracteres especiales usados como separadores, segn las necesidades de
diseo del autmata.

Al iniciar la operacin de un AP, la pila se encuentra vaca. Durante la operacin
del AP, la pila puede ir recibiendo (y almacenando) caracteres, segn lo indiquen
las transiciones ejecutadas. Al final de su operacin, para aceptar una palabra, la
pila debe estar nuevamente vaca.

En los AP las transiciones de un estado a otro indican, adems de los caracteres
que se consumen de la entrada, tambin lo que se saca del tope de la pila, as
como tambin lo que se mete a la pila.

Al igual que los AF, los AP tienen estados finales, que permiten distinguir cuando
una palabra de entrada es aceptada.

De hecho, para que una palabra de entrada sea aceptada en un AP se deben
cumplir todas las condiciones siguientes:

1. La palabra de entrada se debe haber agotado (consumido totalmente).
2. El AP se debe encontrar en un estado final.
3. La pila debe estar vaca.

los lenguajes generados por las gramticas libres de contexto tambin tienen un
autmata asociado que es capaz de reconocerlos. Estos autmatas son parecidos
a los autmatas nitos determinsticos, solo que ahora tendrn un dispositivo de
memoria de capacidad ilimitada: una pila. A continuacin daremos la denicin
formal de autmata con pila no determinstico (APND). Al contrario que en los
autmatas nitos, los autmatas con pila no determinsticos y determinsticos no
aceptan las mismas familias de lenguajes. Precisamente son los no determsticos

15
MARTN C. John (2004). Lenguajes Formales y teora de la computacin Tercera edicin
Mcgraw Hill Interamericana
BRENA PIERO, Ramon F. Autmatas y lenguajes un enfoque de diseo (2003) ITESM, En:
http://lizt.mty.itesm.mx/~rbrena/AyL.html

los asociados con los lenguajes libres de contexto. Los determinsticos aceptan
una familia mas restringida de lenguajes.

Un autmata con pila no determinstico(APND) es una septupla (Q,A,B,,q
0
,Z
0
F)
en la que
Q es un conjunto nito de estados
A es un alfabeto de entrada
B es un alfabeto para la pila
es la funcin de transicin

: Q (A { } ) B Q B*)
q
0
es el estado inicial
Z
0
es el smbolo inicial de la pila
F es el conjunto de estados nales

La funcin de transicin aplica cada estado, cada smbolo de entrada (incluyendo
la cadena vaca) y cada smbolo tope de la pila en un conjunto de posibles
movimientos. Cada movimiento parte de un estado, un smbolo de la cinta de
entrada y un smbolo tope de la pila. El movimento en s consiste en un cambio de
estado, en la lectura del smbolo de entrada y en la subtitucin del smbolo tope de
la pila por una cadena de smbolos.

Ejemplo Sea el autmata M =({ q1, q2} , { 0, 1, c} , { R, B, G} , , q
1
, R, 0)donde

(q1, 0, R)={ (q1, BR)} (q1, 1, R)={ (q1, GR)}
(q1, 0, B)={ (q1, BB)} (q1, 1, B)={ (q1, GB)}
(q1, 0, G)={ (q1, BG)} (q1, 1, G)={ (q1, GG)}
(q1, c, R)={ (q2, R)} (q1, c, B)={ (q2, B)}
(q1, c, G)={ (q2, G)} (q2, 0, B)={ (q2, )}
(q2, 1, G)={ (q2, )} (q2, , R)={ (q2, )}


La interpretacin es que si el autmata est en el estado q
1
y lee un 0 entonces
permanece en el mismo estado y aade una B a la pila; si lo que lee es un 1,
entonces aade una G; si lee una c pasa a q
2
. En q
2
se saca una B por cada 0, y
una G por cada 1.

Se llama descripcin instantnea o conguracin de un autmata con pila a una
tripleta (q,u,) Q A*

B* en la que q es el estado en el se encuentra el
autmata, u es la parte de la cadena de entrada que queda por leer y el
contenido de la pila (el primer smbolo es el tope de la pila).

Definicin:Se dice que de la conguracin (q,au,Z) se puede llegar a la
conguracin (p,u,)y se escribe (q,au,Z) (p,u, ) si y solo si (p, ) (q,a,Z)

donde a puede ser cualquier smbolo de entrada o la cadena vaca.

Definicin:Si C
1
y C
2
son dos conguraciones, se dice que se puede llegar de C
1
a
C
2
mediante una sucesin de pasos de clculo y se escribe C
1
C
2
si y solo si
existe una sucesin de conguraciones T
1
,...,T
n
tales que C1 =T1 T Tn1
Tn =C2

Teorema: a) Si M es un APND entonces existe otro autmata M, tal que
N(M)=L(M)
b) Si M es un APND entonces existe otro autmata M, tal que L(M)=N(M).

Demostracin:

-a) Si M =(Q,A,B,,q
0
,Z
0
,F ), entonces el autmata M se construye a partir de M
siguiendo los siguientes pasos:

Se aaden dos estados nuevos, q
0
y q
f
. El estado inicial de M

ser q
0
y q
f
ser
estado nal de M

.

Se aade un nuevo smbolo a B: Z
o

. Este ser el nuevo smbolo inicial de la pila.

Se mantienen todas las transiciones de M, aadindose las siguientes:

(q
0
,,Z
0

)={(q
0
,Z
0
Z
0

)}
(q, , Z
0
)={(q
f
,Z
0

)}, q Q

b) Si M =(Q, A, B, , q
0
, Z
0
, F ), entonces el autmata M

se construye a partir de M
siguiendo los siguientes pasos:
Se aaden dos estados nuevos, q
0
y q
s
. El estado incial de M

ser q
0
.
Se aade un nuevo smbolo a B: Z
0

. Este ser el nuevo smbolo inicial de la
pila.
Se mantienen todas las transiciones de M, aadindose las siguientes:

(q
0
, , Z
0

)={(q
0
, Z
0
Z
0

)}
(q, , H)={(q
s
, H)}, q F, H B {Z
0

}
(qs, , H)={(qs, )}, H B {Z
0

}

LECCION 22. - DISEO DE AUTMATAS DE PILA

l problema de diseo de los AP consiste en obtener un AP M que acepte
exactamente un lenguaje L dado. Por exactamente queremos decir, como en
el caso de los autmatas finitos, que, por una parte, todas las palabras que acepta
E

efectivamente pertenecen a L, y por otra parte, que M es capaz de aceptar todas
las palabras de L.

Aunque en el caso de los AP no hay metodologas tan generalmente aplicables
como era el caso de los autmatas finitos, siguen siendo vlidas las ideas bsicas
del diseo sistemtico, en particular establecer claramente qu es lo que
recuerda cada estado del AP antes de ponerse a trazar transiciones a diestra y
siniestra. Para los AP, adicionalmente tenemos que establecer una estrategia
clara para el manejo de la pila.

En resumen, a la hora de disear un AP tenemos que repartir lo que requiere ser
recordado entre los estados y la pila. Distintos diseos para un mismo problema
pueden tomar decisiones diferentes en cuanto a que recuerda cada cual.

Ejemplo:.- Disear un AP que acepte exactamente el lenguaje con palabras de la
forma a
n
b
n
, para cualquier nmero natural n.

Una idea que surge inmediatamente es la de utilizar la pila como contador para
recordar la cantidad de as que se consumen, y luego confrontar con la cantidad
de bs. Una primera versin de este diseo utiliza un slo estado q, con
transiciones a//a y b/a/ de q a s mismo, como en la figura 24(a).


Figura 24:. Automata de pila para el lenguaje a
n
b
n

Para verificar el funcionamiento del autmata, podemos simular su ejecucin,
listando las situaciones sucesivas en que se encuentra, mediante una tabla que
llamaremos traza de ejecucin. Las columnas de una traza de ejecucin para un
AP son: el estado en que se encuentra el autmata, lo que falta por leer de la
palabra de entrada, y el contenido de la pila.

Por ejemplo, la traza de ejecucin del AP del ejemplo, para la palabra aabb, se
muestra a continuacin:


Estado Por leer Pila
q
q
q
q
q
aabb
abb
bb
b


a
aa
a


Conclumos que el AP efectivamente puede aceptar palabras como a
n
b
n
. Sin
embargo, hay un problema: el AP tambin acepta palabras como abab, que no
tienen la forma deseada (es fcil construir la traza de ejecucin correspondiente
para convencerse de ello). El problema viene porque no hemos recordado cuando
se terminan las a y comienzan las b, por eso ha sido posible mezclarlas en abab.

Una solucin es utilizar los estados para memorizar las situaciones de estar
consumiendo a o estar consumiendo b. El diagrama de estados correspondiente
se muestra en la figura 24(b).

Ejemplo:.- Proponer un AP que acepte el lenguaje de los palndromos con un
nmero par de smbolos, esto es, palabras que se leen igual de izquierda a
derecha y de derecha a izquierda, y que tienen por tanto la forma ww
R
, donde w
R

es el reverso de w (esto es, invertir el orden), en el alfabeto {a, b}. Por ejemplo, las
palabras abba, aa y bbbbbb pertenecen a este lenguaje, mientras que aab y
aabaa no.

Una estrategia de solucin para disear este AP sera almacenar en la pila la
primera mitad de la palabra, y luego irla comparando letra por letra contra la
segunda mitad. Tendramos dos estados s y f, para recordar que estamos en la
primera o segunda mitad de la palabra. En la figura 25 se detalla este AP.



Figura 25: Autmata de pila para el lenguaje { ww
R
}

Se puede apreciar en el AP de dicha figura la presencia de una transicin de s a f,
en que ni se consumen caracteres de la entrada, ni se manipula la pila. Esta
transicin parece muy peligrosa, porque se puede disparar en cualquier

momento, y si no lo hace exactamente cuando hemos recorrido ya la mitad de la
palabra, el AP podr llegar al final a un estado que no sea final, rechazando en
consecuencia la palabra de entrada. Entonces, cmo saber que estamos
exactamente a la mitad de la palabra?

Conviene en este punto recordar que en un autmata no determinista una palabra
es aceptada cuando existe un clculo que permite aceptarla, independientemente
de que un clculo en particular se vaya por un camino errneo. Lo importante es,
pues, que exista un clculo que acepte la palabra en cuestin. Por ejemplo, la
siguiente tabla muestra un clculo que permite aceptar la palabra w = abba:

Estado Falta leer Pila Transicin
s abba

s bba A 1
s ba ba 2
f ba ba 3
f a A 5
f 4

LECCION 23. - COMBINACIN MODULAR DE AUTMATAS DE PILA

n los AP tambin es posible aplicar mtodos de combinacin modular de
autmatas, como se hizo con los autmatas finitos. En particular, es posible
obtener AP que acepten la unin y concatenacin de los lenguajes aceptados por
dos AP dados.

En el caso de la unin, dados dos AP M1 y M2 que aceptan respectivamente los
lenguajes L1 y L2, podemos obtener un AP que acepte la unin L1 L2,
itroduciendo un nuevo estado inicial s0 con transiciones // a los dos antiguos
estados iniciales s1 y s2, como se ilustra en la figura 26.

Figura 26: Unin de Autmatas de Pila

Ejemplo:- Obtener un AP que acepte el lenguaje {a
n
b
m
|n m}. Claramente este
lenguaje es la unin de a
n
b
m
|n > m} con { a
n
b
m
|n < m}, por lo que basta obtener
E

los AP de cada uno de ellos, y combinarlos con el mtodo descrito.

Ejemplo.- Disear un AP que acepte el lenguaje L = {a
i
b
j
c
k
|(i = j = k)}. Nos damos
cuenta de que L es la unin de dos lenguajes, que son:

L = {a
i
b
j
c
k
| i j} [ {aibjck | j k}

Para cada uno de estos dos lenguajes es fcil obtener su AP. Para el primero de
ellos, el AP almacenara primero las as en la pila, para luego ir descontando una b
por cada a de la pila; las as deben acabarse antes de terminar con las bs o bien
deben sobrar as al terminar con las bs; las cs no modifican la pila y simplemente
se verifica que no haya a o b despus de la primera c.

Tambin es posible obtener modularmente un AP que acepte la concatenacin de
los lenguajes aceptados por dos AP dados.

Sin embargo, la construccin de un AP que acepte la concatenacin de dos
lenguajes a partir de sus respectivos AP M1 y M2, es ligeramente ms complicada
que para el caso de la unin. La idea bsica sera poner transiciones vacas que
vayan de los estados finales de M1 al estado inicial de M2. Sin embargo, existe el
problema que hay que garantizar que la pila se encuentre vaca al pasar de M1 a
M2, pues de otro modo podra resultar un AP incorrecto.

Para esto, es posible utilizar un caracter especial, por ejemplo @, que se mete a
la pila antes de iniciar la operacin de M1, el cual se saca de la pila antes de iniciar
la operacin M2.

LECCCION 24. - AUTMATAS CON PILA Y LENGUAJES LIBRES DE
CONTEXTO.

eorema Si un lenguaje es generado por una gramtica libre del contexto,
entonces es aceptado por un Autmata con Pila No-Determinstico.

Demostracin.-Supongamos que la gramtica no acepta la palabra vaca. En caso
de que acepte la palabra vaca se le eliminara y despues se podra transformar el
autmata para aadir la palabra vaca al lenguaje aceptado por el autmata.

Transformemos entonces la gramtica a forma normal de Greibach. El autmata
con pila correspondiente es M =({q}, T, V, , q, S, 0)donde la funcin de transicin
viene dada por
(q, )(q, a, A)A a P

Este autmata acepta por pila vaca el mismo lenguaje que genera la gramtica.

T

Ejemplo: Para la gramtica en forma normal de Greibach:
S aAA
A aS | bS | a
el autmata es M =({q}, {a, b}, {A, S}, , q, S, 0)
donde (q, a, S)={(q, AA)}
(q,a,A)={(q,S),(q,)}
(q,b,A)={(q,S)}

Teorema Si L =N(M)donde M es un APND, existe una gramtica libre del contexto
G, tal que L(G)=L.
Demostracin.-
Sea M =(Q,A,B, ,q
0
,Z
0
,0), tal que L =N(M). La gramtica G =(V,A,P,S)se
construye de la siguiente forma:

V ser el conjunto de los objetos de la forma [q,C, p], donde p,q Q y C B,
adems de la variable S que ser la variable inicial.

P ser el conjunto de las producciones de la forma

1. S [q
0
,Z,q]para cada q Q.
2. [q,C,q
m
] a[p,D
1
,q
1
][q
1
,D
2
,q
2
]...[q
m1
,D
m,qm
]

donde a A , y C,D
1
,...,D
m
B tales que

(p,D
1
D
2
...D
m
) (q,a,C)

(si m =0, entonces la produccin es [q,A, p] a).

Esta gramtica genera precisamente el lenguaje N(M). La idea de la demostracin
es que la generacin de una palabra en esta gramtica simula el funcionamiento
del autmata no determinstico. En particular, se verica que [q,C, p] genera la
palabra x si y solo si el autmata partiendo del estado q y llegando al estado p,
puede leer la palabra x eliminando el smbolo C de la pila.

Ejemplo Si partimos del autmata M =({q
0
,q
1
},{0,1},{X ,Z},,q
0
,Z
0
,0), donde


(q
0
,0,Z
0
)={(q
0
,X Z
0
)}, (q
1
,1,X )={(q
1
,)}
(q
0
,0,X )={(q
0
,X X )}, (q
1
, ,X )={(q
1
, )}
(q
0
,1,X )={(q
1
, )}, (q
1
, ,Z
0
)={(q
1
, )}

las producciones de la gramtica asociada son:
S [q
0
, Z
0
, q
0
]

S [q0, Z
0
, q
1
]

[q
0
, Z
0
, q
0
] 0[q
0
, X , q
0
][q
0
, Z
0
, q
0
]
[q
0
, Z
0
, q
1
] 0[q
0
, X , q
0
][q
0
, Z
0
, q
1
]
[q
0
, Z
0
, q
0
] 0[q
0
, X , q
1
][q
1
, Z
0
, q
0
]
[q
0
, Z
0
, q
1
] 0[q
0
, X , q
1
][q
1
, Z
0
, q
1
]

[q
0
, X , q
0
] 0[q
0
, X , q
0
][q
0
, X , q
0
]
[q
0
, X , q
1
] 0[q
0
, X , q
0
][q
0
, X , q
1
]
[q
0
, X , q
0
] 0[q
0
, X , q
1
][q
1
, X , q
0
]
[q
0
, X , q
1
] 0[q
0
, X , q1][q
1
, X , q
1
]

[q
0
, X , q
1
] 1
[q
1
, X , q
1
] 1
[q
1
, X , q1]
[q
1
, Z0, q
1
]

Elimando smbolos y producciones intiles queda

S [q
0
, Z
0
, q
1
]
[q
0
, Z
0
, q
1
] 0[q
0
, X , q
1
][q
1
, Z
0
, q
1
]
[q
0
, X , q
1
] 0[q
0
, X , q
1
][q
1
, X , q
1
]
[q
1
, X , q
1
] 1
[q
1
, X , q
1
]
[q
1
, Z0, q
1
]

LECCION 25. - RELACIN ENTRE LOS AUTMATAS DE PILA Y LENGUAJES
LIBRES DE CONTEXTO

hora vamos a establecer el resultado por el que iniciamos el estudio de los AP,
es decir, verificar si son efectivamente capaces de aceptar los LLC.

Teorema.- Los autmatas de pila aceptan exactamente los LLC.

Vamos a examinar la prueba de esta afirmacin, no solamente por el inters por la
rigurosidad matemtica, sino sobre todo porque provee un mtodo de utilidad
prctica para transformar una GLC en un AP. La prueba de este teorema se puede
dividir en dos partes:

1. Si M es un AP, entonces L(M) es un LLC
2. Si L es un LLC, entonces hay un AP M tal que L(M) = L
Vamos a presentar nicamente la prueba con la parte 2, que consideramos de
mayor relevancia prctica.
A

Sea una gramtica G = (V,,R, S). Entonces un Automata de Pila M que acepta
exactamente el lenguaje generado por G se define como sigue:
M = ({p, q},, V ,, p, {q})
donde contiene las siguientes transiciones:
1. Una transicin ((p, , ), (q, S))
2. Una transicin ((q, ,A), (q, x)) para cada A x R
3. Una transicin ((q, , ), (q, )) para cada 2

Ejemplo.- Obtener un AP que acepte el LLC generado por la gramtica con reglas:
1. S aSa
2. S bSb
3. S c
Las transiciones del AP correspondiente estn dadas en la tabla siguiente:

1 (p, ,) (q,S)
2 (q, ,S) (q,aSa)
3 (q, ,S) (q,bSb)
4 (q, ,S) (q,c)
5 (q,a, a) (q, )
6 (q,b, b) (q, )
7 (q,c, c) (q, )

El funcionamiento de este AP ante la palabra abcba aparece en la siguiente tabla:

Estado Falta leer Pila
P
Q
Q
q
q
q
q
q
q
q
abcba
abcba
abcba
bcba
bcba
cba
cba
ba
a


S
aSa
Sa
bSba
Sba
cba
ba
a


Se justifica intuitivamente el mtodo que se introdujo para obtener un AP
equivalente a una gramtica dada. Si se observa las transiciones del AP, veremos
que solamente tiene dos estados, p y q, y que el primero de ellos desaparece del
clculo en el primer paso; de esto conclumos que el AP no utiliza los estados para
recordar caractersticas de la entrada, y por lo tanto reposa exclusivamente en el
almacenamiento de caracteres en la pila. En efecto, podemos ver que las
transiciones del tipo 2, lo que hacen es reemplazar en la pila una variable por la

cadena que aparece en el lado derecho de la regla correspondiente. Dado que la
(nica) transicin de tipo 1 (transicin 1 del ejemplo) coloca el smbolo inicial en la
pila, a continuacin lo que hacen las reglas de tipo 2 es realmente efectuar toda la
derivacin dentro de la pila de la palabra de entrada, reemplazando un lado
izquierdo de una regla por su lado derecho. Una vez hecha la derivacin de la
palabra de entrada, la cual estara dentro de la pila, sin haber an gastado un
solo caracter de la entrada podemos compararla caracter por caracter con la
entrada, por medio de las transiciones de tipo 3.

Existe sin embargo un problema tcnico: si observamos la corrida para la palabra
abcba, nos daremos cuenta de que no estamos aplicando las reglas en el orden
descrito en el prrafo anterior, esto es, primero la transicin del grupo 1, luego las
del grupo 2 y finalmente las del grupo 3, sino que ms bien en la cuarta lnea de la
tabla se consume un caracter a (aplicacin de una transicin del grupo 3) seguida
de la aplicacin de una transicin del grupo 2. Esto no es casualidad; lo que ocurre
es que las variables no pueden ser reemplazadas por el lado derecho de una regla
si dichas variables no se encuentran en el tope de la pila. En efecto, recurdese
que los AP solo pueden accesar el caracter que se encuentra en el tope de la pila.

Por esto, se hace necesario, antes de reemplazar una variable por la cadena del
lado derecho de una regla, desenterrar dicha variable hasta que aparezca en el
tope de la pila, lo cual puede hacerse consumiendo caracteres de la pila (y de la
entrada, desde luego) mediante la aplicacin de transiciones del tipo 3.




LECCION 26. - LEMA DE BOMBEO

omenzamos esta seccin con un lema que nos da una condicin necesaria
que deben de cumplir todos los lenguajes libres de contexto. Nos sirve para
demostrar que un lenguaje dado no es libre de contexto, comprobando que no
cumple esta condicin necesaria.

Lema 2 (Lema de Bombeo para lenguajes libres de contexto) Sea L un
lenguaje libre de contexto. Entonces, existe una constante n, que depende solo de
L, tal que si z L y |z| n, z se puede escribir de la forma z = uvwxy de manera
que
1. |vx| 1
2. |vwx| n, y
3. i 0, uv
i
wx
i
y L

Demostracin.- Supongamos que la gramtica no tiene producciones nulas ni
unitarias (si existiesen siempre se podran eliminar). Supongamos un rbol de
derivacin de una palabra u generada por la gramtica. Es fcil ver que si la
longitud de u es sucientemente grande, en su rbol de derivacin debe existir un
camino de longitud mayor que el nmero de variables. Sea N un nmero que
garantice que se verica esta propiedad. En dicho camino, al menos debe de
haber una variable repetida. Supongamos que esta variable es A, y que la gura
6.1 representa el rbol de derivacin y dos apariciones consecutivas de A.


Figura 27: Arbol de Derivacin en el lema del Bombeo

Ejemplo Vamos a utilizar el lema de bombeo para probar que el lenguaje L =
{a
i
b
i
c|i 1} no es libre de contexto.

C

Supongamos que L fuese libre de contexto y sea n la constante especicada en el
Lema de Bombeo. Consideremos la palabra z = a
n
b
n
c
n
L, que tiene una longitud
mayor que n. Consideremos que z se puede descomponer de la forma z = uvxy,
vericando las condiciones del lema de bombeo.

Como |vwx| n, no es posible para vx tener smbolos a y c al mismo tiempo: entre
la ltima a y la primera c hay n smbolos. En estas condiciones se pueden dar los
siguientes casos:
|vx| contiene solamente smbolos a. En este caso para i = 0, uv
0
wx
0
y = uwy
debera pertenecer a L por el lema de bombeo. Pero uwy contiene n smbolos b, n
smbolos c, menos de n smbolos a, con lo que no podra pertenecer a L y se
obtiene una contradiccin.

|vx| contiene solamente smbolos b. Se llega a una contradiccin por un
procedimiento similar al anterior.

|vx| contiene solamente smbolos c. Se llega a una contradiccin por un
procedimiento similar.

|vx| contiene smbolos a y b. En este caso, uwy tendra ms smbolos c que a o
b, con lo que se llegara de nuevo a una contradiccin.

|vx| contiene smbolos b y c. En este caso, uwy tendra ms smbolos a que b o c,
con lo que se llegara tambin a una contradiccin.

En todo caso se llega a una contradiccin y el lema de bombeo no puede
cumplirse, con lo que L no puede ser libre de contexto.

Es importante sealar que el lema de bombeo no es una condicin suciente. Es
solo necesaria. As si un lenguaje verica la condicin del lema de bombeo no
podemos garantizar que sea libre de contexto.

Un ejemplo de uno de estos lenguajes es

L = {a
i
b
j
c
k
d
l

| (i = 0) ( j = k = l)}

Ejemplo Demostrar que el lenguaje L = {a
i
b
j
c
i
d
j
: i, j 0} no es libre de contexto.
Ejemplo Demostrar que el lenguaje L = {a
i
bc
k
: i j k 0} no es libre de contexto.


LECCION 27. - PROPIEDADES DE CLAUSURA DE LOS LENGUAJES LIBRES
DE CONTEXTO

eorema Los lenguajes libres de contexto son cerrados para las operaciones:

Unin
Concatenacin
Clausura

Demostracin
Sean G
1
=(V
1
, T
1
, P
1
, S
1
) y G
2
=(V
2
, T
2
, P
2
, S
2
) dos gramticas libres de contexto y
L
1
y L
2
los lenguajes que generan. Supongamos que los conjuntos de variables
son disjuntos. Demostraremos que los lenguajes L
1
L
2
, L
1
L
2
y L
1
* de tipo 2 que
los generen. son libres de contexto, encontrando gramticas
1


L
1
L
2
. Una gramtica que genera este lenguaje es G
3
=(V
1
V
2
{S
3
}, T
1
T
2
,
P
3
, S
3
), donde S
3
es una nueva variable, y P
3
=P
1
P
2
ms las producciones S
3

S
1
y S
3
S
2
.

L
1
L
2
. Una gramtica que genera este lenguaje es G
4
=(V
1
V
2
{S
4
}, T
1
T
2
,P
4
,S
4
),
donde S
4
es una nueva variable, y P
4
=P
1
P
2
ms la produccin S
4
S
1
S
2
.

L
1
* Una gramtica que genera este lenguaje es G
5
=(V
1
{S
5
}, T
1
P5,S
5
) donde
P
5
es P
1
ms las producciones S
5
S
1
S
5
y S
5
.

Algunas propiedades de clausura de los lenguajes regulares no se verican en la
clase de los lenguajes libres de contexto, como las que expresan el siguiente
teorema y corolario.

Teorema La clase de los lenguajes libres de contexto no es cerrada para la
interseccin.
Demostracin.-Sabemos que el lenguaje L ={ a
i
b
i
c
j

| i 1} no es libre de contexto.
Por otra parte los lenguajes L
2
={a
i
b
i
c
j
| i 1 y j 1} y L
3
={ a
i
b
j
c
j
| i 1 y j 1} si lo
son.
El primero de ellos es generado por la gramtica:
S AB
A aAb|ab
B cB|c

y el segundo, por la gramtica:

S CD
T

C aC|a
D bDc|bc

Como L
2
L
3
= L
1
, se deduce que la clase de lenguajes libres de contexto no es
cerrada para la interseccin

Corolario La clase de lenguajes libres de contexto no es cerrada para el
complementario.

Demostracin.-

Es inmediato, ya que como la clase es cerrada para la unin, si lo fuese para el
complementario, se podra demostrar, usando las leyes De Morgan que lo es
tambin para la interseccin.

LECCION 28. - ALGORITMOS DE DECISIN PARA LOS LENGUAJES LIBRES
DE CONTEXTO

xisten una serie de problemas interesantes que se pueden resolver en la clase
de los lenguajes libres de contexto. Por ejemplo, existen algoritmos que nos
dicen si un Lenguaje Libre de Contexto (dado por una gramtica de tipo 2 o un
autmata con pila no determinstico) es vaco, nito o innito. Sin embargo, en la
clase de lenguajes libres de contexto comienzan a aparecer algunas propiedades
indecidibles. A continuacin, veremos algoritmos para las propiedades decidibles y
mencionaremos algunas propiedades indecidibles importantes.

Teorema Existen algoritmos para determinar si un lenguaje libre de contexto es
a) vaco
b) nito
c) innito

Demostracin.

a) En la primera parte del algoritmo para eliminar smbolos y producciones intiles
de una gramtica, se determinaban las variables que podan generar una cadena
formada exclusivamente por smbolos terminales. El lenguaje generado es vaco si
y solo si la variable inicial S es eliminada: no puede generar una palabra de
smbolos terminales.

b) y c) Para determinar si el lenguaje generado por una gramtica de tipo 2 es
nito o innito pasamos la gramtica a forma normal de Chomsky, sin smbolos ni
producciones intiles. En estas condiciones todas las producciones son de la
forma:

E

A BC, A a

Se construye entonces un grafo dirigido en el que los vrtices son las variables y
en el que para cada produccin de la forma A BC se consideran dos arcos: uno
de A a B y otro de A a C. Se puede comprobar que el lenguaje generado es nito
si y solo si el grafo construido de esta forma no tiene ciclos dirigidos.

Ejemplo Consideremos la gramtica con producciones,
S AB
A BC|a
B CC|b
C a
El grafo asociado es el de la gura 28(a). No tiene ciclos y el lenguaje es nito. Si
aadimos la produccin C AB, el grafo tiene ciclos (gura 28(b)) y el lenguaje
generado es innito.

Figura 28: Grafo asociado a una gramatica de tipo 2 con lenguaje finito e Infinito


LECCION 29. - ALGORITMOS DE PERTENENCIA

stos algoritmos tratan de resolver el siguiente problema: dada una gramtica
de tipo 2, G =(V, T, P, S)y una palabra u T*, determinar si la palabra puede
ser generada por la gramtica. Esta propiedad es indecidible en la clase de
lenguajes recursivamente enumerables, pero es posible encontrar algoritmos para
la clase de lenguajes libres de contexto.

Un algoritmo simple, pero ineciente se aplica a gramticas en forma normal de
Greibach (si una gramtica no est en esta forma se pasa, teniendo en cuenta que
hemos podido dejar de aceptar la palabra vaca). La pertencencia de una palabra
no vaca se puede comprobar en esta forma normal de Greibach de la siguiente
forma: Como cada produccin aade un smbolo terminal a la palabra generada,
sabemos que una palabra, u, de longitud |u| ha de generarse en |u| pasos. El
algoritmo consistira en enumerar todas las generaciones por la izquierda de
longitud |u|, tales que los smbolos que se vayan generando coincidan con los de
la palabra u, y comprobar si alguna de ellas llega a generar la palabra u en su
totalidad. Este algoritmo para, ya que el nmero de derivaciones por la izquierda
de una longitud dada es nito. Sin embargo puede ser muy ineciente
E

(exponencial en la longitud de la palabra). Para comprobar la pertenencia de la
palabra vaca se puede seguir el siguiente procedimiento:

Si no hay producciones nulas, la palabra vaca no pertenece.
Si hay producciones nulas, la palabra vaca pertenece si y solo si al aplicar el
algoritmo que elimina las producciones nulas, en algn momento hay qhe eliminar
la produccin S .

6.29.1. - El Algoritmo De Cocke-Younger-Kasami
Existen algoritmos de pertenencia con una complejidad O(n
3
), donde n es la
longitud de la palabra de la que se quiere comprobar la pertenencia. Nosotros
vamos a ver el algoritmo de Cocke-Younger-Kasami (CYK). Este algoritmo se
aplica a palabras en forma normal de Chomsky. Este consta de los siguientes
pasos (n es la longitud de la palabra).

1. Para i = 1 hasta n
2. Calcular V
i1
= {A | A a es una produccion y el simbolo i-esimo de u es a}
3. Para j = 2 hasta n
4. Para i = 1 hasta n j + 1
5. V
ij
= 0
6. Para k = 1 hasta j 1

V
ij
= V
ij
{A | A BC es una produccion, B V
ik
y C V
i+k, jk
}
Este algoritmo calcula para todo i, j(i {1,...,n}, j n - j + 1), el conjunto de
variables V
ij
que generan u
ij
, donde u
ij
es la subcadena de u que comienza en el
smbolo que ocupa la posicin i y que contiene j smbolos. La palabra u ser
generada por la gramtica si la variable inicial S pertenece al conjunto V
1n
.

Los clculos se pueden organizar en una tabla como la de la siguiente gura (para
una palabra de longitud 5):


En ella, cada V
i, j
se coloca en una casilla de la tabla. En la parte superior se
ponen los smbolos de la palabra para la que queremos comprobar la pertenencia.
La ventaja es que es fcil localizar los emparejamientos de variables que hay que
comprobar para calcular cada conjunto V
ij
. Se comienza en la casilla que ocupa la
misma columna y est en la parte superior de la tabla, y la casilla que est en la
esquina superior derecha, emparejando todas las variables de estas dos casillas.

A continuacin elegimos como primera casilla la que est justo debajo de la
primera anterior, y como segunda casilla la que ocupa la esquina superior derecha
de la segunda anterior. Este proceso se contina hasta que se eligen como
primera casilla todas las que estn encima de la que se est calculando. La
siguiente gura ilustra el proceso que se sigue en las emparejamientos (para un
elemento de la cuarta la, en una palabra de longitud 5).



Ejemplo Consideremos la gramtica libre de contexto dada por las producciones
S AB|BC
A BA|a
B CC|b
C AB|a

Comprobar la pertenencia de las palabras baaba, aaaaa, aaaaaa al lenguaje
generado por la gramtica.

El algoritmo de Early es tambin de complejidad O(n
3
) en el caso general, pero es
lineal para gramticas LR(1), que son las que habitualmente se emplean para
especicar la sintaxis de las lenguajes de programacin.

Al contrario que el algoritmo de Cocke-Younger-Kasami que trata de obtener las
palabras de abajo hacia arriba (desde los smbolos terminales al smbolo inicial, el
algoritmo de Early comenzar en el smbolo inicial (funciona de arriba hacia
abajo).

Sea G una gramtica con smbolo inicial S y que no tenga producciones nulas ni
unitarias.

Supondremos que u[i.. j] es la subcadena de u que va de la posicin i a la posicin
j. El algoritmo producir registros de la forma (i, j, A, , ), donde i y j son enteros y
A es una produccin de la gramtica. La existencia de un registro indicar
un hecho y un objetivo. El hecho es que u[i +1.. j]es derivable a partir de y el
objetivo es encontrar todos los k tales que deriva a u[j +1..k]. Si encontramos

uno de estos k sabemos que A deriva u[i +1..k].

Para cada j, REGISTROS[j]contendr todos los registros existentes de la forma (i,
j, A, , ).

El algoritmo consta de los siguiente pasos:

P1 Inicializacin.-Sea

REGISTROS[0]={(0, 0, S, , ): S es una produccin}
REGISTROS[j]= 0 para j =1, . . . , n.
j =0

P2 Clausura.- Para cada registro (i, j, A, , B)en REGISTROS[j] y cada
produccin B , crear el registro (j, j, B, , )e insertarlo en REGISTROS[j].
Repetir la operacin recursivamente para los nuevos registros insertados.

P3 Avance.-Para cada registro (i, j, A, , c) en REGISTROS[j], donde c es un
smbolo terminal que aparece en la posicin j +1 de u, crear (i, j +1, A, , c) e
insertarlo en REGISTROS[j + 1].
Hacer j = j +1.

P4 Terminacin.-Para cada par de registros de la forma (i, j, A, , ) en
REGISTROS[j] y (h, i, B, A, ) en REGISTROS[i], crear el nuevo registro (h, j, B,
A, ) e insertarlo en REGISTROS[j].

P5 Si j < n ir a P2.

P6 Si en REGISTROS[n] hay un registro de la forma (0, n, S, , ), entonces u es
generada. En caso contrario no es generada.

Ejemplo Comprobar mediante el algoritmo de Early si la palabra baa es generada
por la gramtica con producciones:

S AB, S BC, A BA, A a,
B CC, B b, C AB, C a

Despus de aplicar el paso de inicializacin, el contenido de REGISTROS[0] es:

REGISTROS[0]:(0,0,S,,AB),(0,0,S,,BC),(0,0,A,,BA),(0,0,A,,a),(0,0,B,,CC),(0,0,
B,,b),(0,0,C,,AB),(0,0,C,,a)

REGISTROS[1] :(0, 1, B, b, ), (0, 1, S, B, C), (0, 1, A, B, A), (1, 1, C, , AB), (1, 1,

C, , a), (1, 1, A, , BA), (1, 1, A, , a), (1, 1, B, , CC), (1, 1, B, , b)

REGISTROS[2] :(1, 2, C, a, ), (1, 2, A, a, ), (0, 2, S, BC, ), (0, 2, A, BA, ), (1, 2,
C, A, B), (1, 2, B, C, C), (0, 2, S, A, B), (0, 2, C, A, B), (2, 2, B, , CC), (2, 2, B, ,
b), (2, 2, C, , AB), (2, 2, C, , a), (2, 2, A, , BA), (2, 2, A, , a)

REGISTROS[3] :(2, 3, C, a, ), (2, 3, A, a, ), (1, 3, B, CC, ), (2, 3, B, C, C) (2, 3,
C, A, B), (1, 3, A, B, A)

Como (0, 3, S, , ) no est en REGISTROS[3], la palabra baa no es generada

S T, S S + T, T F, T T * F, F a, F b, F (S)
Palabra: (a + b) * a

REGISTROS[0] :(0,0,S,,T ), (0,0,S,,S +T), (0,0,T,,F), (0,0,T,,T*F), (0,0,F,,a),
(0,0,F,,b),(
REGISTROS[1] :(0, 1, F, (, S)), (1, 1, S, , T ), (1, 1, S, , S + T ), (1, 1, T, , F),
(1, 1, T, , T * F), (1, 1, F, , a), (1, 1, F, , b), (1, 1, F, , (S)),

REGISTROS[2] :(1, 2, F, a, ), (1, 2, T, F, ), (1, 2, S, T, ), (0, 2, F, (S, )), (1, 2, S,
S, +T )

REGISTROS[3] :(1, 3, S, S+, T ), (3, 3, T, , F), (3, 3, T, , T *F), (3, 3, F, , a), (3,
3, F, , b), (3, 3, F, , (S))

REGISTROS[4] :(3, 4, F, b, ), (3, 4, T, F, ), (1, 4, S, S + T, ), (3, 4, T, T, * F), (0,
4, F, (S, )), (1, 4, S, S, +T )

REGISTROS[5] :(0, 5, F, (S), ), (0, 5, T, F, ), (0, 5, S, T, ), (0, 5, T, T, * F), (0, 5,
S, S, +T ),

REGISTROS[6] :(0, 6, T, T *, F), (6, 6, F, , a), (6, 6, F, , b), (6, 6, F, , (S)),

REGISTROS[7] :(6, 7, F, a, ), (0, 7, T, T * F, ), (0, 7, S, T, ), (0, 7, T, T, *F), (0,
7, S, S, +T ) Como tenemos (0, 7, S, T, ), entonces la palabra (a + b) * c es
generada.


LECCION 30. - PROBLEMAS INDECIDIBLES PARA LENGUAJES LIBRES DE
CONTEXTO

ara terminar el apartado de algoritmos de decisin para gramticas libres de
contexto daremos algunos problemas que son indecidibles, es decir, no hay
ningn algoritmo que los resuelva. En ellos se supone que G, G1 y G2 son
gramticas libres de contexto dadas y R es un lenguaje regular.

Saber si L(G
1
) L(G
2
) = 0.
Determinar si L(G) = T*, donde T es el conjunto de smbolos terminales.
Comprobar si L(G1) = L(G2).
Determinar si L(G1) L(G2).
Determinar si L(G1) = R.
Comprobar si L(G) es regular.
Determinar si G es ambigua.
Conocer si L(G) es inherentemente ambiguo.
Comprobar si L(G) puede ser aceptado por una autmata determinstico con
pila.

P

ACTIVIDADES:

Ejercicios Propuestos:

EJERCICIOS DE AUTOMATAS CON PILA

CONCEPTOS BSICOS
1.- Dado el siguiente autmata con pila, indicar:
(a) Qu lenguaje reconoce
(b) Cules de las siguientes palabras son aceptadas por el autmata:
aabbc, abbc, bbcc, aabbbcc (mostrando la sucesin de descripciones
instantaneas)
AP = ({a, b, c}, {A, B, S}, {q, r, s, t}, q, S, f, )

f(q, a, S) = {(r, S)} f(s, b, S) = {(s, BS)}
f(q, a, A) = {(r, A)} f(s, b, A) = {(s, )}
f(q, b, S) = {(s, BS)} f(s, b, B) = {(s, BB)}
f(q, b, A) = {(s, )} f(s, c, B) = {(t, )}
f(r, a, S) = {(q, AS)} f(t, c, B) = {(t, )}
f(r, a, A) = {(q, AA)} f(t, , S) = {(t, )}

2.- Definir formalmente el lenguaje reconocido por el siguiente autmata con pila:
A = ({a,b,c}, {S,A,B}, {q,r,s,p}, q, S, f, )

f(q, a, S) = {(r, S)} f(s, b, S) = {(s, BS)}
f(q, b, S) = {(s, BS)} f(s, b, A) = {(s, )}
f(q, a, A) = {(r, A)} f(s, b, B) = {(s, BB)}
f(q, b, A) = {(s, )} f(s, c, B) = {(p, )}
f(r, a, S) = {(q, AS)} f(p, c, B) = {(p, )}
f(r, a, A) = {(q, AA)} f(p, , S) = {(p, )}

3.- Dado el siguiente autmata con pila indicar:

(a) Qu lenguaje reconoce por vaciado de pila.
(b) Cules de las siguientes palabras son aceptadas por el AP: abba, abaaba.

AP = ({a,b}, {Z}, {q0, q1, q2, q3}, q0, Z, f, )
f(q0, a, Z) = {(q1, aZ)} f(q2, b, b) = {(q2, )}
f(q0, b, Z) = {(q1, bZ)} f(q2, a, a) = {(q2, )}
f(q1, a, a) = {(q1, aa), (q2, )} f(q2, , Z) = {(q2, )}
f(q1, a, b) = {(q1, ab)}
f(q1, b, a) = {(q1, ba)}
f(q1, b, b) = {(q1, bb), (q2, )}



CONSTRUCCIN DE AUTMATAS

4.- Construir un autmata con pila que reconozca cada uno de los siguientes
lenguajes:
(a) L = { a
n
b
2n
/ n > 0 }
(b) L = { a
n
b
m
c
n
/ n, m > 0 }

Ejercicios de Autmatas con Pila 2

(c) L = { x / x {0,1}+ & n 0s = n 1s }
(d) L = { a
i
b
j
c
i+j
/ i, j > 0 }
(e) L = { a
2i
b
3i
/ i >= 0 }
(f) L = { a
n
b
m
c
2m
a
n+2
, m > 0, n >= 0 }
(g) L = { xcy / x,y {a, b}+, n de subcadenas ab en x = n de subcadenas ba
en y }
(h) L = { 0
n
1
n
/ n > 0 } { 0
n
1
2n
/ n > 0 }
(i) L = {a
n
b
m
c
r
a
s
b
n
/ s = m + r, m,n > 0, r 0}
(j) L = {a
2n
b
m
0
i
b
2m
a
n
, i = 0 1, m, n > 0}
(l) L = {x
1n
2
m
x-1 / n, m = 0 1 y x {a, b}+}
(m) L = {a
n
b
m
c
p
/ n,m >= 0, p > n + m}

5.- Construir un autmata con pila que reconozca por vaciado de pila el lenguaje
que contiene las palabras formadas por los smbolos 0, 1 y 2 que tienen
tantas apariciones de las secuencia 01 como del smbolo 2.

6.- Construir un autmata con pila que reconozca por vaciado de pila las palabras
formadas por los smbolos a y b que tengan doble nmero de smbolos a que
de smbolos b (incluyendo ). Es decir, el autmata deber reconocer por
ejemplo las palabras aabbaa, abbaaa, bababaaaa, bbbaaaaaa, y no debe
reconocer palabras como abab, abbabab, a, b, aaa, bbb.

7.- Construir un autmata con pila que reconozca, por vaciado de pila, el lenguaje
formado por las cadenas que contienen smbolos de abrir y cerrar parntesis, es
decir ( y ), que cumple las siguientes condiciones:
- todo parntesis que se abre debe ser cerrado posteriormente
- todo parntesis que se cierra debe haber sido abierto anteriormente
- se permiten los parntesis anidados.
Tnganse en cuenta los siguientes ejemplos de cadenas reconocidas y no
reconocidas
por el autmata:
Cadenas reconocidas Cadenas no reconocidas
()()((()())()) ()())
((()))() )()(
((())(()))()()(()()) (((()

8.- Dado el siguiente lenguaje: L = { anbcmdmen / n, m > 0 }

(a)Construir un autmata con pila que reconozca dicho lenguaje por vaciado de
pila.
(b)Comprobar mediante el uso de descripciones instantneas que la cadena
aabccddee es aceptada por dicho autmata.

9.- Construir un autmata con pila que reconozca por vaciado de pila el lenguaje
siguiente:

L = { 0
n
1
n
/ n > 0 } { 0
n
1
2n
/ n > 0 }

10.- Dado el siguiente lenguaje:
L= {a
n
b
m
d
m
/ n, m > 0} {a
n
b
m
c
m
d
n
/ n, m > 0}
(a) Encontrar un autmata con pila que reconozca L por vaciado de pila.
(b) Comprobar mediante el uso de descripciones instantneas que la cadena
aacd es aceptada por dicho autmata.

Ejercicios Resueltos:

1. Cul es el lenguaje que acepta el autmata de pila cuyo diagrama de
transiciones es el siguiente?

Solucin:
Acepta la cadena vaca.
Segn la rama superior, toda x que se reciba, se registrar en la pila; y el estado
siguiente ser de aceptacin.
Segn la rama inferior, slo se aceptar la entrada y si se puede sacar una x de la
pila.
Conclusin:
Acepta cualquier cadena que (empezando a contar por la izquierda) contenga un
nmero de y menor o igual a que de x. Pueden estar intercaladas
Ejemplos: xyx, xxy, xxyxyx, etc.

2.- Modifique el diagrama de transiciones del ejercicio anterior para que el
autmata de pila acepte el mismo conjunto de cadenas, pero con su pila vaca.

Solucin:



3.- Muestre que toda cadena derivada por la izquierda de una gramtica
independiente del contexto puede derivarse tambin por la derecha.
Solucin:


El lado por donde se empieza a construir (por la derecha o por la izquierda) slo
tiene relevancia en las etapas intermedias de la construccin del rbol. Pero con la
construccin terminada, no es relevante el lado por donde se empez. La cadena
es la misma en ambos casos.






INTRODUCCIN

En las Unidades precendentes se han estudiado lo que se puede considerar las
mquinas abstractas que permiten solucionar ciertos tipos de algoritmos, los
algoritmos en los que no puede recordarse ms que una cantidad fija de
informacin y otros en los que la informacin desarrollada durante la ejecucin del
algoritmo puede recuperararse solo en concordancia con la regla lifo ultimos en
entrar primeros en salir, en esta unidad se describe una maquina abstracta,
llamada Mquina de turing , que es aceptada de manera amplia como modelo
general de computacin, aunque las operaciones bsicas de esta mquina son
comparables en su sencillez a las de las mquinas estudiadas en las unidades
anteriores, las nuevas maquinas pueden realizar una mplia varidad de
operaciones de computo. Ademas de aceptar lenguajes les es posible computar
funciones y de conformidad con la tesis de Church-Turing, ejecutar casi cualquier
procedemiento algoritmico concebible.

OBJETIVO GENERAL

Reconocer la importancia y el poder computacional de las maquinas de turing en
el contexto de la solucin de problemas computacionales de reconocimiento de
lenguajes.

OBJETIVOS ESPECIFICOS

Estudiar las Mquinas de Turing y sus propiedades bsicas




LECCION 31. - DEFINICIN
16


s como en secciones anteriores vimos cmo al aadir al autmata finito
bsico una pila de almacenamiento auxiliar, aumentando con ello su poder de
clculo, cabra ahora preguntarnos que es lo que habra que aadir a un autmata
de pila para que pudiera analizar lenguajes como {a
n
b
n
c
n
}. Partiendo del AP bsico
de la figura siguiente.

Figura (a)Automata de Pila (b) Maquina de Turing

Algunas ideas podran ser:

1. Aadir otra pila;
2. Poner varias cabezas lectoras de la entrada;
3. Permitir la escritura en la cinta, adems de la lectura de caracteres.

Vamos a enfocar nuestra atencin a una propuesta en particular que ha tenido un
gran impacto en el desarrollo terico de la computacin: la Mquina de Turing.

A. Turing propuso en los aos 30 un modelo de mquina abstracta, como una
extensin de los autmatas finitos, que result ser de una gran simplicidad y
podero a la vez. La mquina de Turing es particularmente importante porque es la
ms poderosa de todas las mquinas abstractas conocidas (A. Turing.- On
computable numbers with an application to the Entscheidungs-problem, Proc.
London Math. Soc., v.2, n.42, pp230-265.)

16
VAQUERO SNCHEZ, Antonio Ramon, Calculabilidad y maquinas de turing (2004)
En: http://www.fdi.ucm.es/profesor/vaquero/TALF-5-Turing.doc
BRENA PIERO, Ramon F. Autmatas y lenguajes un enfoque de diseo (2003) ITESM, En:
http://lizt.mty.itesm.mx/~rbrena/AyL.html.



A


LECCION 32. - FUNCIONAMIENTO DE LA MQUINA DE TURING

a mquina de Turing (abreviado MT) tiene, como los autmatas que hemos
visto antes, un control finito, una cabeza lectora y una cinta donde puede haber
caracteres, y donde eventualmente viene la palabra de entrada. La cinta es de
longitud infinita hacia la derecha, hacia donde se extiende indefinidamente,
llenndose los espacios con el caracter blanco (que representaremos con t). La
cinta no es infinita hacia la izquierda, por lo que hay un cuadro de la cinta que es
el extremo izquierdo, como en la figura En la MT la cabeza lectora es de lectura y
escritura, por lo que la cinta puede ser modificada en curso de ejecucin. Adems,
en la MT la cabeza se mueve bidireccionalmente (izquierda y derecha), por lo que
puede pasar repetidas veces sobre un mismo segmento de la cinta.

La operacin de la MT consta de los siguientes pasos:

1. Lee un caracter en la cinta
2. Efectua una transicin de estado
3. Realiza una accin en la cinta

Las acciones que puede ejecutar en la cinta la MT pueden ser:

Escribe un smbolo en la cinta, o Mueve la cabeza a la izquierda o a la derecha
Estas dos acciones son excluyentes, es decir, se hace una o la otra, pero no
ambas a la vez.

La palabra de entrada en la MT est escrita inicialmente en la cinta, como es
habitual en nuestros autmatas, pero iniciando a partir de la segunda posicin de
la cinta, siendo el primer cuadro un caracter blanco. Como la cinta es infinita,
inicialmente toda la parte de la cinta a la derecha de la palabra de entrada est
llena del caracter blanco (t).

Figura.2: MT que acepta palabras que empiezan con a

L

Por definicin, al iniciar la operacin de la MT, la cabeza lectora est posicionada
en el caracter blanco a la izquierda de la palabra de entrada, el cual es el cuadro
ms a la izquierda de la cinta.

Decimos que en la MT se llega al final de un clculo cuando se alcanza un
estado especial llamado halt en el control finito, como resultado de una transicin.
Representaremos al halt por h. Al llegar al halt, se detiene la operacin de la MT,
y se acepta la palabra de entrada. As, en la MT no hay estados finales. En cierto
sentido el halt sera entonces el nico estado final, slo que adems detiene la
ejecucin.

Cuando queremos que una palabra no sea aceptada, desde luego debemos evitar
que la MT llegue al halt. Podemos asegurarnos de ello haciendo que la MT caiga
en un ciclo infinito El lenguaje aceptado por una MT es simplemente el conjunto de
palabras aceptadas por ella

Al disear una MT que acepte un cierto lenguaje, en realidad diseamos el
autmata finito que controla la cabeza y la cinta, el cual es un autmata con salida
As, podemos usar la notacin grfica utilizada para aquellos autmatas para
indicar su funcionamiento. En particular, cuando trazamos una flecha que va de un
estado p a un estado q con etiqueta /L, quiere decir que cuando la entrada al
control finito (esto es, el caracter ledo por la cabeza de la MT) es , la cabeza
lectora hace un movimiento a la izquierda, indicada por el caracter L (left, en
ingls); similarmente cuando se tiene una flecha con /R el movimiento es a la
derecha. Cuando la flecha tiene la etiqueta /, donde es un caracter, entonces
la accin al recibir el caracter consiste en escribir el caracter en la cinta. Con
estos recursos es suficiente para disear algunas MT, como en el siguiente
ejemplo.

Ejemplo.- Disear (el control finito de) una MT que acepte las palabras en {a, b}
que comiencen con a. La solucin se muestra en la figura 29. Si la primera letra es
una a, la palabra se acepta, y en caso contrario se hace que la MT caiga en un
ciclo infinito, leyendo y escribiendo b. Ntese que la accin inmediatamente
antes de caer en el halt es irrelevante; igual se poda haber puesto a/a o a/R
como etiqueta de la flecha.


Figura.29: MT que acepta palabras que empiezan con a

Ejemplo.- Disear una MT que acepte las palabras en {a, b} que terminen con a.
Aunque este ejemplo parece bastante similar al precedente, en realidad es ms
complicado, pues para ver cual es la ultima letra, hay que ir hasta el blanco a la
derecha de la palabra, luego regresar a la ultima letra y verificar si es una a. Una
solucin se muestra en la figura 3.


Figura 30: MT que acepta palabras que terminan con a

Ejemplo.- Probar que hay lenguajes que no son libres de contexto, pero que
pueden ser aceptados por una maquina de Turing. Proponemos el lenguaje
anbncn, que se sabe que no es LLC. Ahora construiremos una MT que lo acepte.
La estrategia para el funcionamiento de dicha MT consistira en ir haciendo
pasadas por la palabra, descontando en cada una de ellas una a, una b y una c;
para descontar esos caracteres simplemente los reemplazaremos por un caracter
*. Cuando ya no encontremos ninguna a, b o c en alguna pasada, si queda
alguna de las otras dos letras la palabra no es aceptada; en caso contrario se llega
a halt. Es til, antes de emprender el diseo de una MT, tener una idea muy clara
de cmo se quiere que funcione. Para eso se puede detallar el funcionamiento con
algn ejemplo representativo, como en la tabla siguiente, para la palabra aabbcc.
La posicin de la cabeza se indica por el smbolo .


Operatividad Formalmente: La mquina de Turing opera cclicamente. Al comienzo
de un ciclo se parte de una determinada configuracin. El smbolo contenido en la
celda explorada por la cabeza L/E ms el estado de la MT determinan las acciones a
realizar en un ciclo. Estas acciones son:

1) Sustituir un smbolo por otro (puede ser el mismo)
2) Desplazar la cabeza L/E: a la derecha (D), a la izquierda (I) o dejarla en la
misma casilla (N).
3) Pasar la UC a otro estado (el mismo como caso particular).

Una vez realizadas esas tres acciones, el ciclo ha terminado y puede comenzar otro
ciclo nuevo. En cada ciclo se realiza una instruccin. As pues, una instruccin viene
representada por una quntupla: a
i
s
k
a
j
m s
l
;

a
i
, a
j
; s
k
, s
l
S y m {D, I, N}

Los dos primeros smbolos de la quntupla son el carcter al que apunta la cabeza
L/E al comienzo del ciclo y el estado de la mquina en ese instante; los tres smbolos
finales son el carcter que sustituye al que haba en la casilla, el movimiento de la
cabeza L/E y el estado de la mquina al final del ciclo.

Consiguientemente una MT queda completamente definida por
, S , I , Q
: alfabeto, S: conjunto de estados, I: configuracin inicial, Q: conjunto de quntuplas
(repertorio de instrucciones).


Una instruccin importante es la de Parada, equivalente a una quntupla

a
i
s
j
a
i
N s
j
.

La mquina ha de ser no ambigua. Es decir, no debe haber, ante las mismas
condiciones iniciales, reacciones diferentes de la mquina. Ello implica que no debe
haber dos quntuplas distintas con los dos primeros smbolos iguales. S puede
haber, obviamente, dos quntuplas diferentes con los tres ltimos smbolos iguales.

LECCION 33. - DIFERENCIAS ENTRE LAS COMPUTADORAS Y LAS
MQUINAS DE TURING

parte de la capacidad de memoria, las diferencias entre una MT y una
computadora de estructura Von Neuman son:

En cuanto a estados: En una MT el n de estados depende del algoritmo. En una
computadora, un estado viene representado por el contenido de la memoria, y una
situacin por un estado y un puntero a una direccin (la que contiene a la instruccin
que va a ejecutarse). La ejecucin de la instruccin pasa a la mquina a otro estado
y la variable de enlace adopta otro argumento (la direccin siguiente si la instruccin
no era de bifurcacin y la mquina es secuencial natural).

En cuanto a memoria: En una MT la memoria es la cinta de E/S ms el "soporte
fsico" de los estados de la UC. Y ya sabemos cmo se pasa de una situacin a
otra: a
i
s
r
a
j
m s
l
. Programa en una MT es la secuencia de quntuplas que hay
que seguir para hacer el clculo. El mismo algoritmo, expresado en lenguaje-
mquina "tipo" para una computadora "tipo", o sea, programa en lenguaje
mquina, es algo distinto que la secuencia de quntuplas. Y se debe a la
marcada diferencia entre n-upla e instruccin. Para formalizar el concepto de
programa en lenguaje mquina no es, pues, buen modelo una MT.

En cuanto al orden de ejecucin de las instrucciones: En la estructura Von Neumann
el secuenciamiento lo marca el orden de colocacin de las instrucciones en la
memoria interna y viene asegurado por el contador de programa. En una MT el
orden de ejecucin lo marca en todo instante el estado de la mquina y el carcter
de la cinta apuntado, que son los dos datos que determinan la quntupla que ha de
ser ejecutada.

Estrategia de trabajo:

Desplazar el puntero hacia la derecha hasta que se encuentre un blanco, haciendo
los retoques necesarios para que queden tantos 1s como requiere el resultado
correcto.
A

En esta situacin son suficientes dos estados. En el estado inicial la mquina puede
permanecer desplazando la cabeza hacia la derecha hasta que encuentra un b. Esa
es la idea central para la construccin de la mquina. Paso a paso se ha de ir
definiendo cada instruccin necesaria para seguir la estrategia de trabajo. Y slo se
introducir un nuevo estado cuando se necesite. En este caso se llega a:


M s
o
s
1

0 1 D s
0

1/1D 1/bN
b/bI 1 1 D s
0
b N s
1

s
0
s
1

b b I s
1
b N s
1
= Parada
0/1D b/bN
Matriz de Turing
Diagrama de estados o Esquema funcional
Comprobacin: Se debe tener seguridad de la correccin de la mquina construida.
Para ello se debe probar el procesamiento a mano de ejemplos significativos. As:

Secuencia de descripciones instantneas:
s
0
... b 1 1 1 0 1 1 b b . . . configuracin inicial
s
0
... b 1 1 1 0 1 1 b b . . .
------------------------------
s
0
... b 1 1 1 0 1 1 b . . .
s
0
... b 1 1 1 1 1 1 b . . .
------------------------------
s
0
... b 1 1 1 1 1 1 b . . .
S1
b 1 1 1 1 1 1 b . . . pasa de s
0
a s
1

S1
b 1 1 1 1 1 b b . . . Configuracin final

Tambin hay que comprobar para el 1
er
sumando = 0 y/o 2 sumando = 0.
Hacindolo, se ve que se cumple en este ejemplo. Podemos confiar en la mquina
construida slo si ha salido airosa de las comprobaciones.

Es conveniente aplicar sistemticamente el mtodo de construccin seguido, que
consta de las siguientes etapas:

1.- Representacin de los objetos: Datos y resultados.
2.- Alfabeto de la cinta y codificacin de los objetos en el alfabeto. Y de ah la
configuracin inicial.
3.-Definicin del resultado para todos los ejemplares de entrada. Y de ah la
configuracin final, excepto el estado final y la celda apuntada en esa situacin.
4.-Estrategia de trabajo que ha de seguir la mquina para pasar de la configuracin
inicial a la final.

5.- Estados e instrucciones de la mquina.
6.- Comprobacin.

Siempre que la mquina no sea muy simple se debe seguir este mtodo.

Mquinas equivalentes
Veamos que puede haber diversas mquinas de Turing para resolver el mismo
problema.

Otra MT para el mismo problema del ejemplo 1: El retoque (borrar un 1) se hace al
principio. La mquina equivalente es:

Q = {0 s
0
0 D s
1
, 0 s
1
1 D s
1
,1 s
0
b D s
1
, 1 s
1
1 D s
1
, b s
1
b N s
1
}

Explicacin de la quntupla <0 s
0
0 D s
1
>: Es el caso de 1
er
sumando nulo. Como el
resultado ha de ser el 2 sumando, ste ha de quedar intacto, as como el separador.

Comprobacin:

Configuracin inicial: s
0
b b 1 1 . . 1 0 1 1 . . 1 b
s
1
b b b 1 . . 1 0 1 1 . . 1 b
s
1
. . . . . . . . . . . . . . . . . .
s
1
b b b 1 . . 1 0 1 1 . . 1 b
s
1
b b b 1 . . 1 1 1 1 . . 1 b
s
1
. . . . . . . . . . . . . . . .....
Configuracin final: s
1
b b b 1 . . 1 1 1 1 . . 1 b

Tambin hay que comprobar para 1
er
sumando = 0 y/o 2 sumando = 0.

Para una descripcin instantnea inicial distinta, la MT sera algo distinta. Por
ejemplo, si se partiese de la configuracin inicial s
0
... b b b ... b 1 1 ... 1 0 1 1 ... 1 b
b ...,
la MT correspondiente sera (borrando el 1
er
"1" del 1
er
n):

M
2
b 1 0
s
0
b D s
0
b D s
1
0 D s
1

s
1
b N s
1
1 D s
1
1 D s
1


Hay que hacer notar que si se partiese de la 1 MT (borrando el ltimo "1" del 2 n)
habra que introducir un estado ms, porque habra que distinguir 3 tipos de b: Los
que se recorren hacia la derecha al principio, el primero que se encuentra cuando ha
terminado de barrerse el 2 n y el b que se encuentra al volver a la izquierda (por
transformacin del ltimo "1" del 2 n).


Observacin sobre la Parada:

En el ejemplo 1 hay una casilla (0, s
1
) vaca. Si la mquina se encontrara en esa
situacin, quedara parada (bloqueada) por no existir instruccin para operar en ese
caso. Eso no debe suceder si la mquina est bien construida. No debe haber otras
instrucciones que lleven a la mquina a una tal situacin (situacin equivalente a una
mquina de Von Neuman en un estado tal que el contenido del "contador del
programa" apunta a una celda de memoria que no contiene ninguna instruccin).

Datos incorrectos:

Ahora bien en el caso de la MT puede llegarse a una situacin, estando bien
construida la mquina, de buena Parada aun cuando los datos estn
incorrectamente representados (con errores). P.ej. supongamos en el Ejemplo 1 que
queremos sumar 3 + 3 y nos hemos equivocado al escribir el 2 sumando:

Configuracin inicial: ... b b 1 1 1 0 1 0 1 b b ...

La mquina trabajara hasta llegar a la configuracin final ...b b 1 1 1 1 1 1 b ..., que
es la solucin. Sin embargo esta situacin no es deseable. Una elemental reflexin
nos lleva a la conclusin de que esta mquina no distingue un smbolo separador de
un error en un dato. Lo que podra hacerse en este caso es que la mquina
distinguiera entre un primer smbolo y otros ms, pues se supone que slo debe
haber uno. En la situacin de encontrarse con un segundo 0 debe llegarse a una
situacin de Parada, pero esta Parada es debida a la deteccin de un error por la
propia mquina. Es decir, todo programa debera contener una parte de
reconocimiento y validacin de la configuracin inicial. En el caso que estamos
tratando habran de crearse un estado ms y quntuplas nuevas, al mero efecto de
reconocimiento de un error en algn dato y consiguiente parada de aviso.

En s
0
, cuando se encuentra el primer 0, lo cambia a "1" y hay una transicin a s
1
, de
forma que, si se encuentra otro "0" en estado s
1
, pueda parar: s
1
0 0 N s
1
. Ver M
e
.
Entonces se necesita un nuevo estado s
2
, para encargarse de lo que antes se
encargaba a s
1
.

Por qu no hace bien el resultado M? Qu es lo que hace en realidad M?. M (igual
que M
1
y M
2
) calcula la funcin:
n
f(x
1
, x
2
,...,x
n
) = x
1
+ 1 + x
2
+ 1 + ... + x
n
- 1 = x
i
+ n - 2


i=1
Para n = 2, f (x
1
,x
2
) = x
1
+ x
2

M
e
1 0 b
s
0
1 D s
0
1 D s
1

s
1
1 D s
1
0 N s
1
b I s
2

s
2
b N s
2
b N s
2

parada parada
error buena

Consideraciones similares pueden hacerse sobre todas las posibles clases de
errores (b en los datos, p.e.). Las cosas pueden adquirir una complejidad grande en
funcin de las clases de errores que admitamos como posibles.

Mientras no digamos lo contrario supondremos que la configuracin inicial es
correcta. Pero debemos tener en cuenta que "un algoritmo solo debe hacer aquella
funcin para la que ha sido construido", y nada ms. En el caso del Ej. 1, la mquina
suma dos nmeros y, adems, hace otras cosas (considera que los 0, a partir del
1, son "1").

Relacin entre la cardinalidad del alfabeto y el n de estados:

Los datos se pueden codificar con uno u otro alfabeto, con ms o menos smbolos.
Las MT correspondientes son diferentes en uno u otro caso. Vemoslo con un
ejemplo:

Ejemplo : Sumar dos nmeros, con la misma representacin del ej. 1. = {b, 1}
Configuracin inicial: . . . b 1 1 1 b 1 1 b . . .

Necesitamos distinguir entre el b separador de los 2 nmeros y el b que sigue al 2
nmero. Las acciones a realizar, en cada uno de esos dos casos, son diferentes.
Con el mismo smbolo de entrada, la primera vez hay que sustituirlo por "1" y
continuar moviendo el cursor a la derecha, pero en el 2 caso hay que dejarlo todo tal
cual y desplazar el cursor a la izquierda. Teniendo en cuenta que no puede haber
dos quntuplas distintas con los mismos dos primeros smbolos y, adems, que el
smbolo de entrada (b) es el mismo en los dos casos, es preciso introducir otro
estado ms.

Tendremos entonces tres estados, caracterizados por:
s
0
: el carcter (1) que se lee es del 1
er
sumando.
s
1
: el carcter que se lee es del 2 sumando.
Cuando llega un b se ha terminado de explorar el 2 sumando.
s
2
: Se han terminado los sumandos.


Esquema funcional

s
0
s
1
s
2

b 1 D s
1
b I s
2
b N s
2

1 1 D s
0
1 D s
1
b N s
2


Vemos que, para el mismo problema, se necesita un estado ms. Y no es posible
hacerlo con menos estados. Es sta un regla general: "Cuanto menor es el n de
smbolos para representar la misma informacin, mayor es el n de estados de la
Mquina de Turing necesarios para resolver un problema dado".

LECCION 34. - LA MAQUINA UNIVERSAL DE TURING

asta aqu hemos considerado cada esquema funcional asociado a su MT propia.
Pero es posible concebir una M T capaz de ejecutar cualquier algoritmo; es decir
capaz de realizar los clculos que realizara cualquier otra MT, o sea, capaz de
simular (tener el mismo comportamiento) cualquier MT particular.

Esta mquina Universal no debe ser diseada para realizar un clculo especfico,
sino para procesar cualquier informacin (realizar cualquier clculo especfico -MT
particular- sobre cualquier configuracin inicial de entrada correcta para esa MT
particular). La MUT ha de tomar como informacin de entrada la MT particular ms la
C.I. . El algoritmo universal ha de ser un intrprete de esa informacin de entrada.
La cinta de entrada ha de tener una C.I. tal como: ... bb quntupla b quntupla b... C I
(MT) b b ...

El trabajo de interpretacin del esquema universal ha de consistir en:
1) s
k
= s
0
(Inicializacin: Suponer que la MT particular empieza estando en s
0
).
2) Acceder al carcter de la Configuracin apuntado por la Cabeza L/E de la MT
(a
i
).
3) Encontrar en la cinta una quntupla que empiece por a
i
s
k
(a
i
s
k
a
j
m s
1
).
4) Reemplazar a
i
por a
j
en la casilla donde se accedi a a
i
.
5) Realizar el desplazamiento m desde la casilla donde estaba a
i
. O sea, marcar la
nueva casilla a la que apunta la cabeza L/E de la MT particular.
6) s
k
= s
1
(actualizar el estado de la MT particular).
7) Volver a 2).

Observaciones sobre el esquema universal:

- La M U T parar cuando el clculo est terminado, o sea, cuando la quntupla a
aplicar sea del tipo a
i
s
k
a
i
s
k
N s
k
. As pues, en el ciclo que es el algoritmo universal,
H

hay que incluir dentro de la fase 3 una exploracin de la quntupla, una vez
encontrada, para decidir si hay que parar o continuar.

-Es complicado explicitar detalladamente las instrucciones que componen cada fase
del Algoritmo Universal, debido al carcter unidimensional de la cinta y a la
exploracin casilla a casilla.

- Es obligada una codificacin de la informacin. El n de alfabetos y de caracteres
distintos de todas las posibles M T particulares que puedan pensarse es
arbitrariamente grande y, sin embargo, la M U T slo puede disponer de un alfabeto
finito determinado. Esto obliga a definir procedimientos para codificar la informacin
de cualquier alfabeto finito al alfabeto que definamos para la M U T. Por el mismo
motivo ha de haber una normalizacin en la notacin de los estados (el estado inicial
de cualquier M T debe ser designado con el mismo smbolo, y as para los
sucesivos).

Una metodologa para la aplicacin de este concepto de normalizacin de la
informacin es la numeracin de Gdel, que se ve en Funciones Recursivas.


LECCION 35. - CODIFICACIN DE MTS:

a codificacin debe permitir a la MUT un reconocimiento preciso de cada
componente sintctico registrado en la cinta.

Para las letras del alfabeto:
c (b) = b (cdigo del carcter blanco)
c (a
i
) = 1
i+1
; a
i
(indeterminadamente grande); i = 0,1,2,

Para los estados:
c (h) = 1; h = estado de parada.
c( s
i
) = 1
i+1
; S
i
Q S (indeterminadamente grande).
Para los desplazamientos del cursor, m { N, I, D}:
c (N) = 1; c ( I) = 1 1; c (D) = 1 1 1.

El cdigo de una quntupla p a q d m est representado por una palabra {0, 1}*,
definida as: c(p) b c(a) b

c

(q)

b c(d) b c(m) b.

Una MT que tiene n quntuplas (el orden no importa): u
1
, u
2
, , u
n
tiene un cdigo:
c(q
j
) b

c(u
1
) b

c(u
2
) b .. b

c(u
n
) b, siendo q
j
: estado inicial de T.




L

Codificacin de palabras

Sean las letras del alfabeto Z
i
A y Z una palabra Z = Z
1
Z
2
Z
n

Z tiene un cdigo c(Z) = b b c ( Z
1
) b c (Z
2
) b b c (Z
n
)

b


Sobre el trabajo de la MUT (continuacin)

La entrada a la MUT est dada por una MT y una palabra Z. La entrada codificada
es: c(T) c(Z).

Obsrvese que entre el final del cdigo de la ltima quntupla y el comienzo del
cdigo de Z hay tres blancos.

Es fcil construir la MT que transforma T en c(T) y Z * en c(Z).

Para simular el trabajo de T con una entrada Z, la entrada a la MUT es c(T) c(Z). El
trabajo ha de ser:
a) Cuando la funcin parcial que calcula T est definida para Z, T se detiene y da s
como resultado. En este caso la MUT debe parar y dar c(s) como resultado.

z T s

c(T) c(Z) MUT c(T) c(s)


b) Cuando la funcin que calcula T no est definida para Z, T no se detiene y la MUT
tampoco debe parar. En este caso la MUT se mete en un ciclo infinito.


BIBLIOGRAFIA

M. Alfonseca, J. Sancho, M. Martnez Orga, (1990). Teora de Lenguajes,
Gramticas y Autmatas,Espaa,Ediciones Universidad y Cultura.

Brokshear J, Blend (1993), Teoria de la computacin, Lenguajes formales,
Autmatas y complejidad Mxico edicin, Addison-Wesley iberoamericana.

Dean Kelley, (1995), Teora de autmatas y lenguajes formales, Espaa Prentice -
Hall.

Pedro Isasi, Paola Martnez, Daniel. Borrajo (1997). Lenguajes, gramticas y
autmatas Un enfoque prctico Espaa, 2 edicin, Addison-Wesley

J.E. Hopcroft, R. Motwani, J.D. Ullman, (2002) Introduccin a la Teora de
Autmatas, Lenguajes y Computacin, Espaa 2 edicin, Addison-Wesley
iberoamericana.

Martn John, (2004), Lenguajes formales y teora de la computacin, Mxico, 3
Edicin, Mc Graw Hill.

SITIOS WEB

Pgina web de la asignatura universidad rey Juan carlos:
http://www.ia.escet.urjc.es/grupo/docencia/automatas

Foro: http://www.ia.escet.urjc.es/foros/automatas

http://luisguillermo.com/castellano/default.htm#supra

http://www.ing.puc.cl/jabaier/iic2222

aula virtual http://www.upseros.com/

Software

Software para el aprendizaje de lenguajes y autmatas: JFLAP
http://www.cs.duke.edu/%7Erodger/tools/jflap/ Excelente paquete en Java, por lo
que es multiplataforma. Incluye edicin grfica de autmatas, conversiones,
minimizacin, gramticas, mquinas de Turing, y mucho ms.

Chalchalero http://www.ucse.edu.ar/fma/sepa/chalchalero.htm Extenso paquete
hecho en Argentina para PC con Windows, incluye editor de autmatas,
conversiones, minimizacin, asi como numerosas herramientas para aprendizaje
de compiladores.

REFERENCIAS

MORAL CALLEJN Serafn Teora de autmatas y lenguajes formales, En
http://decsai.ugr.es/~smc/docencia/mci/automata.pdf

NAVARRETE SNCHEZ, Isabel y otros Teora de autmatas y lenguajes formales
En: http://perseo.dif.um.es/%7Eroque/talf/Material/apuntes.pdf

MORAL CALLEJN, Serafn Modelos de Computacin I, Departamento de
ciencias de la computacin Universidad de Granada En:
http://decsai.ugr.es/%7Esmc/docencia/mci/automata.pdf.

NAVARRETE SNCHEZ, Isabel y otros Teora de autmatas y lenguajes formales
En: http://perseo.dif.um.es/%7Eroque/talf/Material/apuntes.pdf.

Wikipedia, En http://es.wikipedia.org/wiki/Lenguaje_formal

BRENA PIERO, Ramon F. Autmatas y lenguajes un enfoque de diseo (2003)
ITESM, En: http://lizt.mty.itesm.mx/~rbrena/AyL.html.

MARIN MORALES, Roque y otros, Teora de autmatas y lenguajes formales En:
Univ. de Murcia http://perseo.dif.um.es/%7Eroque/talf/Material/apuntes.pdf

IOST F. Hans, Teora de autmatas y lenguajes formales, CAPTULO 2,
LENGUAJES REGULARES Y AUTOMATAS FINITOS (2001) en:
http://iie.ufro.cl/~hansiost/automatas/Capitulo2.doc

Ingeniera Tcnica en Informtica de Sistemas y de Gestin de la UNED Espaa
TEORA DE AUTMATAS I Tutora del Centro Asociado de Plasencia en: URL
http://dac.escet.urjc.es/lrincon/uned/ta1/ProblemasFinalCapitulo.pdf.

Departamento de Ingeniera de Sistemas Facultad de Ingeniera Ciencias y
Administracin Universidad de La Frontera IIS340 TEORA DE AUTOMATAS Y
LENGUAJES FORMALES APUNTES DEL CURSO Temuco, 1999 2001

CUEVAS LOVALLE, Juan Manuel LENGUAJES, GRAMTICAS Y AUTMATAS.
Segunda Edicin, (Espaa), 2001.

Ingeniera Superior en Informtica, Grupos A, B y C Teora de Autmatas y
Lenguajes formales. Examen Final-19 de Junio de 2003, Solucin Ejercicios




AUTOEVALUACION
FORMATO EVALUACION ACTIVIDAD INDIVIDUAL
Cada tarea individual ser revisada y evaluada segn esta pauta de carcter
formativo, se considerarn los siguientes aspectos:
Actividad N _____ Nota : Formativa
Nombre: ________________________________________________________
Fecha: Aspectos considerados en la revisin
Fecha recepcin
Envo archivo
Presentacin de los contenidos

Respuesta a lo solicitado

Nivel de profundidad y/o anlisis

Observaciones


PAUTA EVALUACION PRESENTACIN FINAL PROYECTO
Fecha : Nombre de los integrantes en orden de presentacin:
1._____________________________________________________________________
2._____________________________________________________________________
3._____________________________________________________________________
4._____________________________________________________________________
5.
Puntaje por aspecto para cada integrante
(1 a 3 puntos y 1 a 2 puntos)

ASPECTOS A EVALUAR
1 2 3 4 5
Dominio del contenido de persona que expone
en representacin del grupo
1/ 2 / 3 1/ 2 / 3 1/ 2 / 3 1/ 2 / 3 1/ 2 / 3
Exposicin complementada con el uso del
recurso tecnolgico (presentacin en PPT)
1 / 2 / 3 1 / 2 / 3 1 / 2 / 3 1 / 2 / 3 1 / 2 / 3
Defensa del proyecto con calidad y precisin de
las respuestas del expositor y/o grupo
1 / 2 1 / 2 1 / 2 1 / 2 1 / 2
Habilidad para motivar y mantener la atencin de
la audiencia por parte del expositor.
1 / 2 1 / 2 1 / 2 1 / 2 1 / 2
Coordinacin grupal para antes, durante y
despus de la presentacin.
1 / 2 1 / 2 1 / 2 1 / 2 1 / 2
Exposicin dentro del tiempo estipulado (15
minutos por grupo).
1 / 2 1 / 2 1 / 2 1 / 2 1 / 2
Puntaje mximo 14 puntos
Nota 10%

Nombre del Tutor:
________________________________________________________


AUTOEVALUACION
Evaluacin individual de cada integrante del grupo

Nombre: _______________________________________ Fecha: _____________

A continuacin se presenta una serie de aspectos relacionadas con la participacin en el
desarrollo del curso acadmico

Para autoevaluar la participacin individual y grupal, asignar para cada aspecto un puntaje
de 1 a 5. Aquellos aspectos o afirmaciones aseveraciones que no pueda calificar, asignar
0 (cero) y justificar por escrito.

Puntaje y su descripcin:
1 2 3 4 5
Insuficiente Menos que regular Regular Bueno Muy Bueno

Aspectos o afirmaciones Puntaje
Estuve en permanente contacto con mi grupo colaborativo.
Me comuniqu con mi tutor frente a alguna emergencia, duda, etc.
Acus recibo de las comunicaciones realizadas por e-mail.
Realic las tareas que me compromet en forma oportuna
Colabor oportunamente en la fases del desarrollo de las guas didcticas
Tom en cuenta las observaciones y sugerencias hechas por el tutor en la
planificacin de las actividades.

Busqu otras fuentes de informacin (textos, URL, etc.) para el desarrollo del sitio
web.

Particip activamente en el desarrollo de los contenidos de la gua didctica
Particip activamente en las reuniones grupales para la realizacin de las
actividades.

Los aportes realizados a mi grupo de trabajo fueron oportunos.
Mantuve una interaccin respetuosa con mis compaeros de grupo y tutor.
Asist puntualmente a todas las reuniones fijadas por el grupo

Qu aspectos ha mejorado en sus procesos de aprendizaje




Justificacin para afirmaciones o aspectos no calificadas con puntaje de 1 a 5:






COEVALUACION
Evaluacin del coordinador a su grupo o de cada integrante del grupo a un compaero
Nombre del Evaluador:___________________________Fecha: ____________

El trabajo grupal colaborativo relacionado con la participacin y aporte de cada
integrante en las actividades grupales solicitadas, en aspectos como son la
discusin, anlisis y generacin conjunta de los contenidos requeridos en los
mismos, al igual que la participacin activa y colaborativa en el proceso de
aprendizaje.

Como Integrante del grupo de trabajo y coordinador, se le solicita evaluar el grado
de participacin de cada uno de los participantes, asignando un puntaje de 1 a 5
para cada una de los siguientes aspectos. Aunque esta evaluacin implica
apreciacin personal, la solicitud es que asigne el puntaje de manera objetiva.
Puntaje y su descripcin:
1 2 3 4 5
Insuficiente Menos que regular Regular Bueno Muy Bueno

NOMBRE DEL PARTICIPANTE
AFIRMACIONES aspectos
Asisti a las reuniones de trabajo de grupo.
Mantuvo permanente comunicacin con el resto
de los participantes del grupo.

Ayud a aclarar dudas o confusiones en torno a
los temas tratados en las actividades.

Intercambi informacin, datos, ideas, etc. con
sus compaeros de grupo durante el desarrollo
de las actividades.

Hizo algn aporte en el desarrollo de las
actividades.

Particip en la solucin de problemas durante el
trabajo grupal.

Ayud a organizar el trabajo grupal.
Fue responsable con las acciones asumidas
dentro del grupo de trabajo.

Fue puntual en las reuniones convocadas para el
trabajo grupal.

Mantuvo una interaccin respetuosa con todos
los integrantes del grupo.

Consider las ideas y aportes del resto del grupo
de trabajo.

Colabor en la bsqueda de informacin y
recursos para la fase del desarrollo de las
unidades didcticas.

En su rol de Coordinador del grupo de trabajo o de integrante se le solicita sealar cmo se sinti
respecto al trabajo en equipo, adems de las debilidades y fortalezas percibidas en su grupo de
trabajo.
_______________________________________________________________________________
_______________________________________________________________________________

Das könnte Ihnen auch gefallen