You are on page 1of 24

UNIVERSIDAD MAYOR DE SAN SIMON

FACULTAD DE CIENCIAS Y TECNOLOGIA


LIC. EN INFORMATICA













Texto base para la materia:
Teora de Autmatas y Lenguajes Formales





Preparado por : Lic. Victor Hugo Montao Quiroga.
Richard Orellana Arce















Cochabamba, 13 agosto de 1998
2


CAPITULO 1
CONCEPTOS GENERALES

Este captulo presenta a los reconocedores de lenguajes y los generadores de lenguajes
resaltando sus caractersticas y la gran utilidad que stos ofrecen.
1.1 DEFINICION DE PROGRAMA

Por bastante tiempo los problemas que se planteaban al ser humano eran resueltos mediante el
uso de su capacidad y habilidad intelectual. Exista un buen nmero de problemas que
necesitaban clculos complicados y el trabajo se converta en un trabajo pesado y rutinario, por si
fuera poco, el temor de equivocarse haca ms temible este tipo de tareas.

Con la aparicin de la computadora se eliminan estos inconvenientes pues su capacidad se
caracteriza por la rapidez, precisin y el almacenamiento o memoria. No obstante, la computadora
por s sola no sabra resolver ni el ms sencillo problema que se nos pueda ocurrir. Para esto se
debe describir con detalle y en su lenguaje todos los pasos que ha de llevar a cabo para la
resolucin del problema. Qu es un lenguaje? Hasta ahora las personas comunes conocemos el
lenguaje espaol, el lenguaje ingls, el lenguaje francs, etc. Aunque comnmente los llamamos
idiomas, son en realidad lenguajes que estn definidos por una gramtica o conjunto de reglas que
se aplican a un conjunto de smbolos llamado alfabeto. Por ejemplo la lengua espaola tiene en su
alfabeto 28 letras { a ,b ,c ,d ,e.....,w ,x ,y ,z} y posee un conjunto de reglas gramaticales que
determinan la formacin de palabras, frases, oraciones, etc.

Si quisiramos comunicarnos con una persona que habla Japons tenemos dos alternativas:
conseguir un traductor o aprender Japons. Algo similar ocurre con la computadora, pues para que
entienda nuestros requerimientos debemos describirle todos los pasos en el lenguaje que
entiende. Ese conjunto de pasos en un determinado lenguaje de computadora se llama programa.

Por lo tanto, el estudio de la especificacin formal de lenguajes de programacin ha sido el centro
de atencin de la ciencia informtica. El anlisis de dichos lenguajes requera mtodos y
herramientas para poder generar especificaciones formales, para poder averiguar si el programa
de entrada estaba bien escrito o no y finalmente para poder disear reglas gramaticales para la
formacin de las instrucciones.
1.2 RECONOCEDORES DE LENGUAJES

En este afn de formalizar la especificacin de los lenguajes surgen modelos matemticos entre
los cuales se encuentran los autmatas, que son bastante utilizados como reconocedores o
aceptores de lenguajes. Nosotros, los seres humanos, tenemos un reconocedor automtico en
nuestro cerebro. Por ejemplo la frase Hola como stas? no tiene sentido, existe una palabra
incompleta. Y cmo sabemos esto? Se puede decir que casi automticamente estamos actuando
como reconocedores o aceptores de lenguajes, en este caso del lenguaje espaol, al decir que
la frase anterior no est bien escrita.

Sin embargo pocas personas, hablando de personas comunes, han escuchado algo sobre
autmatas y la mayora los desconoce, aunque a veces actuamos como tales. Para nosotros, los
3
informticos, es comn hablar de ellos porque los utilizamos explcita o implcitamente dentro de
nuestras actividades formativas.
1.3 AUTOMATAS

Las computadoras son frecuentemente caracterizadas por tener tres partes principales: la unidad
central de proceso, la memoria y los dispositivos de entrada y salida. La unidad central de proceso
es la parte pensante y es responsable de los clculos aritmticos y las decisiones lgicas. Sin
embargo la cantidad de informacin que puede manejar en cualquier instante est limitada por su
diseo; para solucionar este problema, las computadoras, deben pasar datos de la memoria a
dispositivos de entrada y salida y recuperarlos cuando sean necesarios. La memoria es el lugar
donde se almacena la informacin que la unidad central de proceso utiliza para realizar sus
operaciones. Finalmente los dispositivos de entrada y salida son los medios por los cuales la
informacin es transmitida al mundo exterior: estos son dispositivos tales como terminales, lectores
de tarjetas, impresoras, etc.

Los autmatas finitos son un modelo restringido de lo que en realidad es una computadora. Estos
comparten con las computadoras reales el hecho de tener un procesador central de capacidad
limitada. Sin embargo no tienen memoria auxiliar. Reciben informacin a travs de una cinta en la
cual est almacenada una cadena de caracteres. No producen ningn resultado excepto la
indicacin de que la entrada recibida es considerada aceptable o no. En otras palabras es un
dispositivo reconocedor de lenguajes. Tambin su aplicabilidad para el diseo de varios tipos
comunes de algoritmos y programas computacionales es muy apreciada.


Figura 1-1. Representacin grfica de una autmata

Los autmatas son una herramienta til para representar los sistemas de estados finitos. Esta
clase de sistemas es rica en estructura y posee una aplicacin potencial. Un claro ejemplo de un
sistema de estados finito es el mecanismo de control de un elevador. El mecanismo no recuerda
los requerimientos de servicio anteriores al piso en el que se encuentra; solamente recibe seales
(entrada) y de acuerdo a las mismas se mueve hacia arriba o hacia abajo.

Quizs la razn ms importante de estudiar los sistemas de estados finito es la naturalidad del
concepto que surge en muchos ejemplos de la vida cotidiana.
4
1.4 MAQUINAS DE TURING

Al hablar de las mquinas de Turing, muchas personas se imaginan un dispositivo mecnico y
obsoleto que tiene muchos engranajes que mueven brazos metlicos para realizar alguna tarea
especfica. Esa idea no es totalmente errnea pues tiene algo de cierto: realizan una tarea
especfica. Estas mquinas son un modelo ms generalizado de los autmatas. Constituyen una
clase mxima de los autmatas y se podra decir que son autmatas ms poderosos.

El nombre de mquina de Turing se debe al trabajo de investigacin que Alan Turing realiz en el
ao 1930. Su trabajo demostr que existen ciertos problemas que no pueden ser resueltos por
ningn algoritmo
1
real o imaginado.

Cualquier intento de formalizar la idea de un
procedimiento computacional o un algoritmo es
equivalente a la idea de una mquina de Turing"
2
.

1.5 GENERADORES DE LENGUAJES

Hasta ahora se ha hablado de reconocedores de lenguajes; es decir de dispositivos que indican si
una palabra o frase est bien escrita o no. Pero cmo se puede generar palabras o frases
correctas?. Nosotros somos capaces de producir oraciones correctas; es decir que ocasionalmente
pronunciamos o escribimos oraciones que estn sintcticamente bien escritas. De alguna manera
actuamos tambin como generadores de lenguajes.

As como existen dispositivos reconocedores de lenguajes, existen tambin modelos formales
generadores de lenguajes: las expresiones regulares y las gramticas.

El funcionamiento de estos generadores de lenguajes comienza con una seal de inicio desde la
cual se forma una cadena o palabra de acuerdo a las reglas definidas que posee.
Las expresiones regulares van formando las palabras o cadenas de izquierda a derecha mientras
que las gramticas lo hacen indistintamente en ambas direcciones.

En el siguiente captulo se desarrolla de una manera ms completa cada uno de estos modelos,
pero para despertar el inters sobre los mismos se provee algunos ejemplos a continuacin.

a) Sea la expresin regular: ab*c

Su interpretacin sera:

Primero una a
Luego cero o ms b
Finalmente una c

Las cadenas generadas seran: {ac, abc, abbc, abbbc, abbbbc, ......}

Ntese que todas las cadenas generadas siempre comienzan con una a , luego vienen cero o
ms b y finalmente contienen una c.

1
Serie de instrucciones o acciones que se deben realizar en el mismo orden en que se describen.
2
Definicin de una maquina de Turing segn Lewis y Papadimitriov.
5
b) Considrense las siguientes reglas de produccin para una gramtica que genera las mismas
cadenas que la expresin regular anterior.

SABC
Aa
BbB
B
Cc

S es el smbolo inicial.
S genera una A, seguida de una B y finalmente una C.
A genera solamente una a.
B genera una b seguida de una B
genera la cadena vaca (ningn caracter).
C genera una c.


Las letras maysculas representan la parte de la cadena final que an no ha sido sustituda por su
correspondiente lado derecho.

Claramente, la gramtica anterior genera las cadenas {ac, abc, abbc, abbbc, abbbbc, ......}
SABC
Aa
BbB
B
Cc
6
CAPITULO 2
LENGUAJES Y GRAMATICAS


Este Captulo habla de los lenguajes y las gramticas en general. La definicin, clasificacin y
desarrollo terico pretende mostrar la importancia de los lenguajes en el mbito de la ciencia
informtica y sobre todo los tipos de lenguajes existentes as como sus caractersticas propias.
Estas definiciones van acompaadas de conceptos y terminologa matemtica que es utilizada
para representar las ideas y definiciones abstractas que sern utilizadas en captulos posteriores.
2.1 RESEA HISTORICA

La teora moderna de lenguajes formales se origina de dos corrientes:

El intento de Noam Chomsky (1950) de dar una
caracterizacin precisa de los lenguajes naturales, tales
como el Ingls y Francs, en base a reglas matemticas
formales.

El desarrollo de una especificacin formal para el lenguaje
de programacin ALGOL 60.

La investigacin de Chomsky tena como objetivo describir la sintaxis
1
del lenguaje natural en
base a reglas de sustitucin y transformacin, lo cual dio origen a lo que se denomina gramticas
libres de contexto. Poco despus, el desarrollo de ALGOL 60 demostr que las gramticas libres
de contexto son perfectamente adecuadas para describir la sintaxis de los lenguajes de
programacin.
2.2 ALFABETO, GRAMATICA Y LENGUAJE

As como el punto y la lnea no se definen formalmente en geometra, un smbolo es una
entidad abstracta que tampoco tiene definicin formal. Esto quiere decir que tenemos que
aceptarlos como entidades autodefinidas que ayudarn mas bien a definir conceptos ms amplios.
Las letras y los dgitos son ejemplos comunes de smbolos pero no nicos.

Un alfabeto es un conjunto finito de smbolos. Un claro ejemplo es el alfabeto Romano {a,b,c,...z}.
Cualquier smbolo puede estar en un alfabeto. Desde un punto de vista formal, un alfabeto es un
conjunto finito de cualquier tipo. Pero por ciertos motivos usamos solamente letras, nmeros y
algunos caracteres especiales.

Una cadena sobre una alfabeto es una secuencia de smbolos yuxtapuestos del alfabeto. As,
hola es una cadena formada por el alfabeto {a,b,c,....z}.

La longitud de una cadena o palabra se denota por |w| y representa el nmero de smbolos por los
cuales est compuesta. As la longitud de la palabra hola es 4, porque est formada por cuatro
smbolos del alfabeto. Tambin existe la cadena vaca que no contiene smbolo alguno; es decir
que su longitud es 0.

1
Especificacin de formacin de instrucciones
7
El prefijo de una cadena es cualquier nmero de smbolos delanteros que pertenecen a la cadena.
El sufijo de una cadena es cualquier nmero de smbolos finales que pertenecen a la cadena. As
la cadena hola tiene los siguientes prefijos: h, ho, hol, hola. De igual manera sus sufijos seran:
hola, ola, la, a.

La concatenacin de cadenas es la cadena resultante de poner la primera cadena seguida
inmediatamente de la segunda y as sucesivamente. Por ejemplo la concatenacin de casa y
grande sera casagrande.

Una gramtica es un conjunto de reglas que especifican la formacin de cadenas sobre un
alfabeto dado. Un ejemplo de una gramtica sera:

Despus de una vocal, debe venir una consonante. Donde vocal puede
ser {a,e,i,o,u} y consonantes todas letras del alfabeto que no sean vocales.

Por lo tanto un lenguaje es cualquier conjunto de cadenas definidas sobre un alfabeto.

2.3 DEFINICIONES FORMALES

Sea un alfabeto donde: ={a,b,c,d,e,.....x,y,z}

* es el conjunto de todas las palabras (cadenas) posibles sobre incluyendo la cadena vaca.
Claramente se puede demostrar que el conjunto * es infinito.
* tambin se llama lenguaje universal sobre .


Imagnense la cadena ms larga que pueden formar con los smbolos de . A
esta cadena larga le aadiremos un smbolo de al final. Entonces la nueva
cadena tambin pertenece a *.
Si quisiramos formar la ltima cadena, siempre existir otra que tambin
pertenece a *.

Generalmente se designa a las cadenas con un nombre.

Por ejemplo, sea w = hola entonces w es una cadena formada por los smbolos del alfabeto .
w = bhjsfh tambin es una cadena formada por los smbolos del alfabeto .
w = tambin pertenece al conjunto de cadenas generado por el alfabeto .

En este ltimo caso w es la cadena vaca y se la representa por: (psilon) (lambda)

Un lenguaje L sobre el alfabeto se define de la siguiente manera:

L={ w * / w tiene la propiedad p }

Que se interpreta: El lenguaje L est formado por todas la cadenas que
pertenecen a * y adems cumplen con la condicin p.
Se puede deducir entonces que L es subconjunto de *.

8
EJEMPLOS.
1.- Sea ={ a,b,c,d,.......x,y,z }
Sea L={ w * / w es el nombre de un departamento de Bolivia }

Entonces:

L={ Cochabamba, La Paz, Oruro, Santa Cruz, Beni, Tarija, Pando, Chuquisaca }

Acaso no falta un departamento?
Claro que s. El departamento que no est en la lista es Potos.
No pertenece al conjunto L porque la letra no pertenece al Alfabeto.

2. - Sea L= (L es el lenguaje vaco)

3. - Sea L= {} (el lenguaje L contiene un elemento: la cadena vaca)

2.4 OPERACIONES SOBRE LENGUAJES

La unin de A y B, denotada por A B, est formada por todas las palabras que
pertenecen al menos a uno de los dos lenguajes.
A B = { x |xA v xB}
Ejemplo:
Sea = {0,1}
Sea A = {0,1,10,11}
Sea B = {1,0110,1001}
Entonces: A B = {0,1,10,11,0110,1001}

La interseccin de A y B, denotada por A B, est formada por todas las palabras que
pertenecen al lenguaje A y al lenguaje B.
A B = { x |xA xB}
Ejemplo:
Sea = {a, b}
Sea A = {a, b, ab, ba}
Sea B = {b, ab, abba, baab}
Entonces: A B = {b, ab}

La concatenacin de A y B, denotada por A B, est formada por todas las cadenas que
resultan de la yuxtaposicin de las cadenas del lenguaje A con las del lenguaje B.
A B = { w : w = xy para algn xA y yB}

Ejemplo:
Sea = {a, b}
Sea A = {a, b}
Sea B = {c, d}
Entonces: A B = {ac, ad, bc, bd}
9
Se dice que A es sublenguaje de B si todas las cadenas de A son tambin cadenas de B.
Para esto se supone que A y B estn definidos sobre un mismo alfabeto .

Ejemplo:
Sea = {0,1,2,3,4,5,6,7,8,9}
Sea A = {x | x es un nmero par }
Sea B = {x | x es un nmero entero positivo}
Entonces: A es sublenguaje de B.

Se dice que A y B son iguales si contienen exactamente las mismas cadenas. De otra
manera: si son conjuntos iguales. Por la teora de conjuntos sabemos que para demostrar
la igualdad de conjuntos se debe probar que A es subconjunto de B y B es subconjunto de
A. Esta demostracin se la encuentra en los libros citados al final de captulo.

Si A es un lenguaje sobre un alfabeto cualquiera, se define la clausura de Kleene
3
o
iteracin de A como:

A* =

n=0
A
n
. ( Unin de cero o ms concatenaciones de las cadenas del
lenguaje)

La iteracin positiva se define como:
A
+
=

n=1
A
n
. ( Unin de una o ms concatenaciones de las cadenas del
lenguaje)

Ejemplo:
Sea = {a, b}
Sea A = {ab, bb}
Entonces: A* = {, ab, bb, abab, abbb, bbab, bbbb, ...}


Si A y B son lenguajes sobre , la diferencia se define como:
A - B = {x | x A x B}

El complemento de un lenguaje A sobre un alfabeto se define como:
_
A = * - A


3
Tambin se la denomina cerradura de Kleene por algunos autores.
10
2.5 LENGUAJES REGULARES Y EXPRESIONES REGULARES

Para un alfabeto dado, los lenguajes regulares sobre son los que constituyen el menor
conjunto de lenguajes cerrados
4
con respecto a las operaciones de concatenacin, la clausura de
Kleene y la unin. Adems de esto, contienen el lenguaje vaco y los lenguajes unitarios {a} para
a .

Una expresin regular es una especificacin abreviada de un lenguaje regular. Las expresiones
regulares sirven como generadores de lenguajes regulares, produciendo las cadenas que
pertenecen al lenguaje de izquierda a derecha.

La definicin de un expresin regular sobre un alfabeto es la siguiente:

1. es expresin regular.
2. a es una expresin regular para todo a .
3. Si r y s son expresiones regulares, entonces r + s, r s y r * tambin
lo son.
4. Ninguna otra secuencia de smbolos es una expresin regular.

El orden de precedencia de los operadores *, + y es el siguiente:

*

+

Las expresiones regulares complejas se pueden simplificar a expresiones ms sencillas:

Por ejemplo:
Consideremos la siguiente expresin regular: (a*+ b*)*
Simplificando, se tiene: (a+b)*
Las cadenas generadas por esta expresin regular seran: {,a,b,aa,aaa,bb,bbb,aab......}


Finalmente la clase de los lenguajes regulares se caracteriza por tener las siguientes propiedades:

1. {} es un lenguaje regular.
2. Si a , entonces {a} es un lenguaje regular.
3. Si A y B son lenguajes regulares, entonces A B, A B, A* y B* son
tambin lenguajes regulares.
4. Ningn otro lenguaje sobre es regular.


4
Lenguajes cerrados con respecto a las operaciones mencionadas anteriormente quiere decir que si se aplican dichas
operaciones a lenguajes regulares, el resultado es tambin un lenguaje regular.

primero el cierre reflexivo
luego la concatenacin
finalmente la unin.
11
EJEMPLO
Consideremos el alfabeto = {a,b}
Las siguientes afirmaciones son ciertas:

1. {a} y {b} son lenguajes regulares.
2. {a, b} es regular porque es la unin de {a} y {b} .
3. {ab} es regular porque es la concatenacin de {a} y {b} .
4. {a, ab, b} es regular porque es la unin de {a, b} y {ab} .
5. {a
i
| i0} es regular.
6. {a
i
b
j
| i0 y j 0} es regular.
7. {(ab)
i
| i0} es regular.

2.6 GRAMATICAS LIBRES DE CONTEXTO

Anteriormente se mencion que las expresiones regulares son generadoras de lenguajes. De igual
manera existen generadores de lenguajes ms complejos y basados en un mejor entendimiento de
la estructura de las cadenas pertenecientes al lenguaje y tales generadores se llaman Gramticas
libres de contexto.

Las gramticas libres de contexto, al igual que las expresiones regulares, son de gran importancia,
especialmente en la definicin de lenguajes de programacin, en la formalizacin del anlisis
gramatical, la simplificacin de la traduccin de los lenguajes de programacin y en otras
aplicaciones referentes al procesamiento de cadenas de caracteres. Como un ejemplo, las
gramticas libres de contexto son bastante tiles para describir las expresiones aritmticas con
anidamientos de parntesis perfectamente balanceados, lo cual no podra ser representado por las
expresiones regulares.

Este tipo de gramticas genera lenguajes libres de contexto. Los lenguajes libres de contexto son
cerrados bajo las operaciones de unin, concatenacin e iteracin.

Su funcionamiento est limitado por un conjunto de reglas. Cuando el proceso de construccin
termina, se tiene una cadena final y el lenguaje definido por la gramtica, es el conjunto de todas
las posibles cadenas que sta puede generar.

La motivacin original para las gramticas libres de contexto ha sido la descripcin del lenguaje
natural. Una gramtica libre de contexto es un conjunto finito de variables (llamadas tambin
smbolos no-terminales) las cuales representan un lenguaje especfico. Los lenguajes
representados por tales variables no-terminales, son descritos recursivamente en trminos de s
mismas y otros smbolos llamados terminales. Las reglas que relacionan las variables
noterminales son llamadas reglas de produccin. Una tpica regla de produccin sostiene que el
lenguaje asociado con un smbolo no-terminal contiene cadenas formadas por la concatenacin de
las cadenas de lenguajes pertenecientes a otros smbolos no-terminales y tal vez con algunos
smbolos terminales. Los smbolos terminales pertenecen al alfabeto sobre el cual est definida la
gramtica.

Por ejemplo:
Consideremos la siguiente gramtica sobre el alfabeto = {a, b}:


Los smbolos no-terminales son: S,A,B,C
Los smbolos terminales son: a, b
Las reglas de produccin estn numeradas del 1 al 5.


1. SABC
2. Aa
3. BBb
4. B
5. Cc
12
Se denominan gramticas libres de contexto debido a que el reemplazo de un smbolo no-terminal
por su correspondiente lado derecho no depende de los smbolos adyacentes al mismo. De esta
manera la caracterstica principal de una gramtica libre de contexto es que todas las derivaciones
tengan en su lado izquierdo solamente un smbolo no-terminal.

Nota: Generalmente los smbolos terminales se representan mediante letras minsculas y los
smbolos no-terminales mediante letras maysculas. El smbolo inicial es comnmente S ,
pudiendo ser otra letra que sea explcitamente especificada.
Formalmente, una gramtica libre de contexto G es una cudrupla (,N,P,S), donde






Ejemplo:
G=({a, b}, {A,B,C,S},{ SABC, Aa, BbB, B, Cc},S)




Aparte de las gramticas libres de contexto, existe otro tipo de gramticas denominadas
gramticas sensibles al contexto, las cuales se diferencian de las anteriores en el hecho de que
para reemplazar un smbolo no-terminal se debe tomar en cuenta los smbolos adyacentes al
mismo. Las gramticas sensibles al contexto poseen mucha utilidad en los problemas que
requieran analizar el contexto de una cadena de caracteres, sin embargo, las gramticas libres de
contexto han demostrado su gran utilidad en varios tipos de situaciones, especialmente en los
lenguajes de programacin.

Las gramticas sensibles al contexto generan los lenguajes sensibles al contexto y la forma de sus
reglas de produccin es:

uAv uWv donde

2.7 JERARQUIA DE CHOMSKY

La jerarqua de Chomsky es una jerarqua estricta de las diferentes clases de lenguajes, la cual
sostiene que:

Los lenguajes regulares constituyen un subconjunto de
los lenguajes libres de contexto.

Los lenguajes libres de contexto constituyen un
subconjunto de los lenguajes sensibles al contexto.

Los lenguajes sensibles al contexto constituyen un
subconjunto de los lenguajes sin restricciones.
Formalmente:
Leng. Reg. Libres de Contexto Sensibles al Contexto Sin Restricc.

La demostracin de este teorema se encuentra en la bibliografa mencionada al final de este
trabajo.
es el alfabeto
N es el conjunto de smbolos no terminales
P es el conjunto de las reglas de produccin
S es el smbolo inicial.
Smbolo inicial
No-terminales
Reglas de produccin
Alfabeto
13
CAPITULO 3
AUTOMATAS FINITOS


Este captulo desarrolla la teora de los autmatas, su clasificacin, sus ejemplos de aplicacin y
algunas caractersticas ms importantes que poseen. Se presentan los conceptos bsicos para los
lectores principiantes en el tema y algunos conceptos para lectores avanzados.

3.1 AUTOMATAS FINITOS

En los captulos anteriores, se describi a los autmatas finitos como un modelo restringido de una
computadora. Comparten con las computadoras el hecho de tener un procesador central de
capacidad limitada. Sin embargo, adems de esta limitacin, un autmata finito carece de memoria
auxiliar. Recibe cadenas de caracteres como entrada y no produce ningn resultado, excepto la
indicacin de que la entrada recibida es considerada aceptable o no. La cadena de caracteres que
recibe como entrada, se encuentra estampada en una cinta, la cual est dividida en porciones
rectangulares y cada porcin de cinta contiene un carcter de la cadena.


Figura 3-1. Autmata

Este modelo computacional tan sencillo podra ser considerado trivial y hasta inadecuado para
merecer un estudio serio, pero cuando lo entendamos completamente, estaremos en condiciones
de apreciar exactamente el aumento del poder computacional que adquieren con la expansin de
su memoria auxiliar. Los autmatas finitos son de potencia limitada, pero constituyen una subclase
completamente conocida de modelos computacionales ms poderosos.

3.2 APLICACIONES DE LOS AUTOMATAS FINITOS

Otra de las razones para el estudio de los autmatas finitos es su aplicabilidad en el diseo de
varios tipos de algoritmos y programas computacionales. Por ejemplo, el anlisis lexicogrfico de
un compilador y la bsqueda y reemplazo de caracteres en los editores de texto. Estos problemas
de diseo de software se facilitan mediante la conversin de la notacin de un autmata a una
implementacin de computadora.

En el caso de los analizadores lexicogrficos, el autmata finito es construido basndose en
expresiones regulares para cada tipo de token
5
del lenguaje de programacin.




5
Piezas constituyentes del lenguaje de programacin. Ejemplo: identificadores, nmeros, operadores aritmticos, etc.
14
3.3 AUTOMATAS FINITOS DETERMINISTICOS

Los autmatas finitos determinsticos constituyen una subclase de los autmatas finitos. Su
funcionamiento est completamente determinado por su entrada, lo cual quiere decir que al leer un
smbolo de la cinta, se mueve a un estado y nicamente a uno. No puede moverse a estados
distintos con un mismo smbolo ledo.

En general los autmatas finitos estn constituidos por un conjunto finito de estados y un conjunto
de transiciones de un estado a otro que
ocurren en base a caracteres de entrada
(estos caracteres pertenecen al alfabeto).

Para cada smbolo de entrada existe una
sola transicin que sale de cada estado. Un
estado, generalmente denotado por q
0
, es el
estado inicial y algunos estados son
designados como estados finales.

Figura 3-2. A.F. Determinstico

Un grafo dirigido, llamado diagrama de transicin
6
, se asocia con un autmata finito de la
siguiente manera:

Los nodos del grafo corresponden a los estados del
autmata finito.

Si existe una transicin del estado q al estado p en base al
smbolo a, entonces existe un arco etiquetado a que va
desde estado q al estado p.

El autmata finito acepta una cadena w si la secuencia de
transiciones correspondientes a los smbolos de w , llegan
a un estado final aceptado.

Ejemplo:
q
0
q
1
q
2
a
a
b
Inicio

Figura 4-3
Alfabeto: {a,b}
Estado inicial: q
0

Estado final: q
2

Expresin Regular equivalente: aa*b a
+
b

6
Tambin llamado diagrama de estados por otros autores.
15
Definicin

Un Autmata Finito Determinstico es una quntupla (Q,,, q
0
,F)

Donde: Q = Conjunto de estados
= Alfabeto finito de entrada
q
0
=

Estado inicial que pertenece a Q
F = Conjunto de estados finales F Q
= funcin de transicin Q x Q
(de un estado perteneciente a Q, con un smbolo ledo llego a otro
estado que tambin pertenece a Q)
(q,x) = q (estado al cual se mueve el autmata despus de haber ledo
el smbolo x estando parado en el estado q)


3.4 CARACTERISTICAS FUNCIONALES

La funcin de transicin determina, en todos los casos, nicamente un estado al cual se mueve
el control finito despus de leer un smbolo de la cinta de entrada.

Una vez ledo un smbolo de la cinta de entrada, el cabezal de lectura se mueve sobre la cinta una
posicin a la derecha. Si el cabezal se movi a la derecha, ya no puede retroceder.

Este proceso es repetido una y otra vez; se lee un smbolo, el cabezal de lectura se mueve a la
derecha y el estado del control finito cambia.

En algn momento el cabezal de lectura llega al final de la cadena de entrada, entonces el
autmata acepta o rechaza la cadena leda mediante la verificacin del estado en el que se
encuentra. Si el estado pertenece a F entonces se acepta la cadena, de lo contrario se la rechaza.
El lenguaje aceptado por el autmata es el conjunto de cadenas que ste acepta.

El clculo que realizan los autmatas en base a una cadena de entrada se muestra mediante una
secuencia de configuraciones que representan el estado del control finito, cabezal de lectura y la
cinta de entrada en un momento determinado. En palabras simples, una configuracin es una
fotografa del autmata en un momento dado.

De esta manera una configuracin est formada por el estado actual en el que se encuentra y la
porcin de la cinta que an no ha sido leda.

Formalmente:

Una configuracin de un autmata finito determinstico M = (Q,,,q
0
,F) es cualquier
elemento de Q x *. Por ejemplo la configuracin ilustrada en la figura 4-2 es (q
1
,chabamba)

Es una relacin binaria entre las configuraciones. Esta relacin se establece entre dos
configuraciones de M si y solamente si el autmata pasa de la primera configuracin a la
segunda en un solo movimiento. De esta manera, si (q,w) y (q,w) son dos configuraciones
del autmata M, entonces (q,w) (q,w) si y solamente si w = w para , y (q,) = q .

Ejemplo:
(q
0
,aabba) (q
1
,abba)

En este caso w = aabba
w = abba
adems ... (q
0
,a) = q
1

w = aw
16
Ntese que la relacin es realmente una funcin de Q x
+
a Q x * puesto que para
cada configuracin existe una nica configuracin siguiente.

* es el cierre reflexivo, transitivo de .

As (q,w) * (q,w) quiere decir que estando en el estado q con la cadena w,
se llega al estado q y se obtiene w en cero o ms pasos.

Una cadena w * es aceptada por M si y solamente si existe un estado q F tal que:
(q
0
,w) * (q,).

Finalmente el lenguaje aceptado por el autmata M, denotado por L(M), es el conjunto de
todas las cadenas que ste acepta.

Ejemplo:
Considrese el siguiente autmata finito determinstico M = (Q,,,q
0
,F), donde

Q = {q
o
,q
1
}
= {a, b}
q
o
= estado inicial
F = { q
o
}

y es la funcin tabulada a continuacin:

Q (q,)
q
o
a q
o

q
o
b q
1

q
1
a q
1

q
1
b q
o


Entonces su diagrama de transicin (diagrama de estados) correspondiente es:
q
0
q
1
b
a
b
Inicio
a

Claramente se puede llegar a la conclusin de L(M) es el conjunto de todas las cadenas que tienen
un nmero par de bs

Si el autmata M recibe como entrada la cadena aabba, su configuracin inicial sera (q
0
,aabba)

Entonces: (q
0
,aabba) (q
0
,abba)
(q
0
,bba)
(q
1
,ba)
(q
0
,a)
(q
0
, ).
3.5 AUTOMATAS FINITOS NO DETERMINISTICOS
Por lo tanto aabba es
aceptada por el
autmata M
17
Son autmatas finitos con una caracterstica adicional que es el no-determinismo. En esencia, es
la habilidad de cambiar de estado de una manera parcialmente determinada por el estado actual y
el smbolo de la cinta de entrada. Esto significa que de un estado al leer un smbolo, el autmata
puede ir a varios posibles estados siguientes.

A medida que el autmata va leyendo la cadena de entrada, ste puede escoger en cada momento
ir a cualquiera de los estados siguientes posibles; esta eleccin no est totalmente determinada y
es por eso que este modelo es denominado no determinstico. Sin embargo esta eleccin del
siguiente estado no es totalmente arbitraria; solamente aquellos estados siguientes que estn
definidos pueden ser seleccionados.

Aunque el no-determinismo es una caracterstica poderosa, normalmente no tiene ninguna relacin
con computadoras reales. Simplemente surge como una extensin del comportamiento de los
autmatas finitos determinsticos.

Definicin

Un Autmata Finito No-Determinstico es una quntupla (Q,,, q
0
,F)

Donde: Q = Conjunto de estados
= Alfabeto finito de entrada
q
0
=

Estado inicial que pertenece a Q
F = Conjunto de estados finales F Q
= relacin de transicin, subconjunto finito de Q x * x Q.

El significado de las triplas (q,u,p) de la relacin de transicin es que el autmata estando en el
estado q, consume la cadena u y pasa al estado p. En otras palabras, si en el diagrama de
transicin existe un arco del nodo q al nodo p cuya etiqueta es u. De esta manera, cada tripla
(q,u,p) que pertenece a es una transicin. Tomando en cuenta que los autmatas son finitos, la
relacin de transicin es tambin finita aunque Q x * x Q sea infinito.


3.6 CARACTERISTICAS FUNCIONALES

La relacin de transicin ya no determina nicamente un estado al cual se mueve el control finito
despus de leer un smbolo de la cinta de entrada. Esta es la razn para denominarse relacin y
no as funcin.

Ahora el cabezal de lectura puede leer uno ms smbolos de la cinta de entrada, pero al igual que
antes, ya no puede retroceder sobre la cinta.

Una cadena es aceptada si existe por lo menos un camino desde el estado inicial al estado final
siguiendo los arcos etiquetados que corresponden a los smbolos ledos de la cinta de entrada, de
lo contrario se la rechaza. El lenguaje aceptado por el autmata es el conjunto de cadenas que
ste acepta.

El clculo que realizan los autmatas no-determinsticos en base a una cadena de entrada se
muestra mediante una secuencia de configuraciones que representan el estado del control finito,
cabezal de lectura y la cinta de entrada en un momento determinado.

De esta manera una configuracin est formada por el estado actual en el que se encuentra y la
porcin de la cinta que an no ha sido leda.
Formalmente:

Una configuracin de un autmata finito no-determinstico M = (Q,,,q
0
,F) es cualquier
elemento de Q x *.
18

Es una relacin binaria entre las configuraciones. Esta relacin se establece entre dos
configuraciones de M si y solamente si el autmata pasa de la primera configuracin a la
segunda en un solo movimiento. De esta manera, si (q,w) y (q,w) son dos configuraciones
del autmata M, entonces (q,w) (q,w) si y solamente si w = uw para u *, y (q,u,q) .

Ejemplo:
(q
0
,aabba) (q
1
,bba)

En este caso w = aabba
w = bba
adems ... (q
0
,aa,q
1
)

*
es el cierre reflexivo, transitivo de .

As (q,w) * (q,w) quiere decir que estando en el estado q con la cadena w,
se llega al estado q y se obtiene w en cero o ms pasos.

Una cadena w * es aceptada por M si y solamente si existe un estado q F tal que:
(q
0
,w) * (q,).

Finalmente el lenguaje aceptado por el autmata M, denotado por L(M), es el conjunto de
todas las cadenas que ste acepta.

Ejemplo:
Considrese el siguiente autmata finito no-determinstico M = (Q,, ,q
0
,F), donde

Q = {q
o
,q
1
,q
2
}
= {a, b}
q
o
= estado inicial
F = { q
o
}
= {( q
o
,a,q
1
), (q
1
,b,q
0
), (q
1
,b,q
2
), (q
2
,a,q
0
)}

Entonces su diagrama de transicin (diagrama de estados) correspondiente es:

q
0
q
1
a
b
Inicio
q
2
a b
w = aaw
19
Claramente se puede llegar a la conclusin de L(M) es el conjunto de todas las cadenas de la
forma : (ab aba)*

Si el autmata M recibe como entrada la cadena aba, su configuracin inicial sera (q
0
,aba)

Entonces: (q
0
,aba) (q
1
,ba)
(q
2
,a)
(q
0
, )
Pero tambin puede tomar el siguiente camino:

(q
0
,aba) (q
1
,ba)
(q
0
,a)
(q
1
, )

Una cadena w * es aceptada por M si y solamente si existe por lo menos un camino desde el
estado inicial a uno de los estados finales.

No interesa que existan caminos que conducen a estados no aceptores, mientras exista por lo
menos uno que llegue a un estado final leyendo los smbolos de la cinta de entrada. Por otro lado,
la cadena abb no es aceptada, puesto que no existe una manera de llegar desde q
0
hasta q
0

nuevamente.

3.7 EQUIVALENCIA ENTRE AUTOMATAS FINITOS DETERMINISTICOS Y NO
DETERMINISTICOS.

Aunque los autmatas finitos no-determinsticos parecen ser ms generales que los autmatas
determinsticos, no son ms poderosos en cuanto a los lenguajes que stos reconocen o generan.

Un autmata no-determinstico siempre puede ser convertido en uno determinstico.

Recordemos que dos autmatas M
1
y M
2
son equivalentes si y solamente si aceptan el mismo
lenguaje, aunque utilicen mtodos diferentes.

Formalmente:
M
1
y M
2
son equivalentes si y solamente si L(M
1
) = L(M
2
)

Existe un teorema que sostiene que:

Para cada autmata finito no-determinstico,
existe un autmata finito determinstico
equivalente
7
.

Basndonos en el teorema anterior, podemos afirmar que ambos tipos de autmatas son
equivalentes.

7
Elements of the Theory of Computation, Lewis-Papadimitriou
aba es aceptada por
el autmata M
aba NO es aceptada
por el autmata M
20
3.8 LENGUAJES MANEJADOS POR LOS AUTOMATAS FINITOS

El lenguaje aceptado por el autmata M = (Q,,,q
0
,F), denotado por L(M), es el conjunto de todas
las cadenas que son aceptadas por M.

Un lenguaje es regular si y solamente si es
aceptado por un autmata finito
8


Esto quiere decir que el lenguaje aceptado por un autmata finito, denotado por L(M) es regular.

Otra caracterstica de los lenguajes aceptados por los autmatas finitos es que son lenguajes
alineados a la derecha. En el libro An Introduction to Formal Languaje Theory se deduce en base
a las propiedades de los lenguajes regulares que cada lenguaje regular puede ser transformado
en un lenguaje alineado a la derecha.

Para mayor informacin, se sugiere revisar la bibliografa citada.

En resumen la clase de lenguajes aceptados por los autmatas finitos es cerrada bajo:

(a) Unin
(b) Concatenacin
(c) Iteracin o clausura de Kleene
(d) Complemento
(e) Interseccin

3.9 AUTOMATAS DE PILA

Algunos lenguajes libres de contexto pueden ser reconocidos por los autmatas finitos. Sin
embargo, existen lenguajes libres de contexto que no pueden ser reconocidos por estos
autmatas. Entonces surge la pregunta: Qu tipo de autmata puede reconocer cualquier
lenguaje libre de contexto?

Tomando un ejemplo especfico, el conjunto de cadenas con parntesis perfectamente
balanceados no es regular y no puede ser reconocido por un autmata finito. Sin embargo existe
un algoritmo sencillo que nos permite reconocer este lenguaje:

1. Inicializamos un contador en cero.
2. Incrementamos el contador en uno por cada parntesis
de apertura.
3. Decrementamos el contador en uno por cada parntesis
de cierre.
4. Iterar 2 y 3 hasta que no existan ms caracteres.
5. Si el contador es distinto de cero, la cadena no tiene
parntesis balanceados. De lo contrario, la cadena tiene
parntesis balanceados.

El ejemplo anterior sugiere una extensin a los autmatas finitos, la cual consiste de una memoria
auxiliar que ayude a reconocer cualquier lenguaje libre de contexto.


8
Teorema demostrado en el libro de Lewis-Papadimitriou
21
Luego de algunas consideraciones, se lleg a la conclusin de que esta memoria auxiliar sea un
almacenamiento vertical en forma de tubo destapado en el extremo superior, conocido tambin
como pila.



Figura 4-4. Autmata de pila

Definicin

Un autmata de pila es una sxtupla M = (Q,,, ,q
0
,F) donde...

Q es el conjunto finito de estados
es el alfabeto (smbolos de entrada)
es el alfabeto de la pila
q
0
Q, estado inicial
F Q, conjunto de estados finales
es la relacin de transicin, subconjunto finito de: (Q x * x *)(Q x *)

La transicin ((p,u,), (q,)) se interpreta de la siguiente manera: del estado p con el smbolo en
el tope de la pila, se lee u de la cadena de entrada y se pasa al estado q reemplazando por

Esta definicin se aplica a mquinas de pila no-determinsticas que, como sabemos, pueden ser
transformadas en determinsticas.

Apilar un smbolo (aadir al tope de la pila) se representa por:
((p,u,),(q,a)) si la pila est vaca, se apila el smbolo a.
((p,u,a),(q,xa)) si en el tope se tiene el smbolo a, se apila x.

Desapilar un smbolo (remover del tope de la pila) se representa por:
((p,u,a),(q, )) desapila el smbolo a.

Modificar el tope de la pila es una operacin que consta de 2 movimientos: desapilar y apilar.

Una configuracin es un miembro de Q*x*x* que se interpreta: Estado actual, cadena que an
no ha sido leda y el contenido de la pila (leda de arriba hacia abajo).

De igual manera
M
es una relacin binaria entre dos configuraciones.

*
M
es el cierre reflexivo, transitivo de
M
.

22
El autmata M acepta la cadena w si y solamente si (q
0
,w,) *
M
(p, ,) tal que p F

Es decir, cualquier cadena representada por w es aceptada si del estado inicial con la pila vaca
en cero o ms transiciones llego a un estado final tambin con la pila vaca.

El lenguaje aceptado por el autmata M, denotado por L(M), es el conjunto de todas las cadenas
aceptadas por M.

L(M) = { w * | (q
0
,w,) *
M
(p, ,) donde p F }
23
CAPITULO 4
MAQUINAS DE TURING


Los autmatas finitos y los autmatas de pila son dispositivos tiles para el reconocimiento de
lenguajes; sin embargo, no pueden ser considerados como modelos matemticos generales
debido a que no son capaces de reconocer algunos lenguajes como {a
n
b
n
c
n
: n0}. Este captulo
introduce a los dispositivos que pueden reconocer ste y otros lenguajes ms complejos llamados
Mquinas de Turing.

4.1 DEFINICION DE UNA MAQUINA DE TURING

Este dispositivo lleva el nombre de Mquina de Turing gracias a su inventor Alan Turing (1912-
1954). Aunque son ms generales que los autmatas previamente estudiados, su apariencia
bsica es similar. Una mquina de Turing consta de un control finito, una cinta de entrada y un
cabezal que puede leer y escribir sobre la cinta.


Figura 4-1

Las mquinas de Turing no son simplemente una clase ms de autmatas que puede ser
reemplazada por otra ms poderosa. Aunque su apariencia primitiva revela simplicidad, intentos de
extenderlas en poder computacional no han tenido efecto alguno. Por ejemplo, la caracterstica de
poseer cintas adicionales con o sin cabezales independientes, no aumenta el poder computacional
que tiene una mquina de Turing bsica.

Las mquinas de Turing forman una clase mxima y estable de los autmatas en trminos de los
cmputos que pueden realizar. Estn diseadas para satisfacer tres criterios:

(a) Deberan ser autmatas; es decir, su construccin y funcin
debera tener la misma esencia general.

(b) Deberan poder ser descritas, definidas formalmente y
analizadas de la manera ms sencilla posible.

(c) Deberan ser tan generales como sea posible en trminos de
los cmputos que pueden realizar.


24
4.2 CARACTERSTICAS FUNCIONALES

Como dijo anteriormente, una mquina de Turing bsica consta de un control finito, una cinta de
entrada y un cabezal que puede leer y escribir sobre la cinta. La unidad de control ejecuta dos
funciones en cada paso que realiza:

1. Se posiciona en un nuevo estado

2. Realiza una de las siguientes acciones:

(a) Escribir un smbolo en la porcin de cinta que se est
leyendo, reemplazando el que ya exista.

(b) Mover el cabezal de lectura/escritura una porcin de
cinta a la izquierda o a la derecha.

La cinta de entrada est limitada en el extremo izquierdo pero se extiende indefinidamente hacia la
derecha. Puesto que la maquina mueve su cabezal una porcin de cinta a la vez, solamente se
habrn visitado un nmero finito de porciones de cinta luego de haber realizado un cmputo finito.
Si la mquina intenta mover el cabezal fuera del extremo izquierdo, sta queda paralizada.

La mquina de Turing es provista de una cadena de entrada mediante la cinta. Cada smbolo se
encuentra en una porcin de cinta y generalmente empieza en el extremo izquierdo quedando el
resto de la cinta de entrada con smbolos nulos. La mquina puede alterar la entrada que recibe de
la manera que vea conveniente, como tambin escribir smbolos sobre la regin derecha de la cinta
que contiene nulos.

Puesto que una mquina de Turing puede escribir sobre la cinta, puede dejar una respuesta al final
del cmputo realizado. Por lo tanto no necesitamos proveer estados finales como ocurre con los
autmatas. Sin embargo existe un estado especial de parada que es usado para indicar el final del
cmputo.

A continuacin se mencionan algunas convenciones utilizadas por algunos autores acerca de estas
mquinas:

El estado de parada se denota por h.
El smbolo nulo es representado por #.
El smbolo L denota el movimiento del cabezal a la izquierda.
El smbolo R denota el movimiento del cabezal a la derecha.

Se asume que todos estos smbolos no son miembros de alfabeto alguno que se pueda considerar.