Anda di halaman 1dari 0

Autmatas y Lenguajes Formales

Una breve introduccin



Este tema es bsico para la construccin y programacin de maquinas de cualquier tipo
1

que deben realizar tareas repetitivas, y que reaccionan apropiadamente ante cualquier
situacin diferente a la usual, que pueda presentarse. Por ejemplo, supongamos que en
una embotelladora se tiene un maquina electrnica para colocar las etiquetas a los
botellas que viajan en una banda transportadora. Esta mquina debe realizar unas
cuantas tareas en forma repetitiva, bsicamente tomar una etiqueta y pegarla sobre el
botella que vaya llegando, pero, qu debe hacer la mquina cuando no lleguen
botellas? o cuando se acaben las etiquetas? Esto debi haber sido resuelto en el
momento del diseo y programacin de la misma, y para eso, y otras cosas ms, sirven
estos temas.

Como pueden darse cuenta, aqu, para tristeza de muchos, no se trabaja con botellas,
sino nicamente con letras, nmeros, smbolos y en general palabras. La razn, el
objetivo es desarrollar una teora bastante general, de tal manera que estos temas se
puedan aplicar en diversidad de situaciones. Todos sabemos lo que ocurre cuando
programamos en algn lenguaje, como C o C#, si una instruccin se escribe
correctamente el compilador la acepta y la procesa, pero en caso que no sea as se
informa que existe un error antes de generar el archivo compilado. Quien se encarga, en
este caso, de revisar las instrucciones y verificar que todo este bien escrito, para que el
compilador las pueda interpretar adecuadamente, es un componente de software
(autmata) que hace parte del mismo. La teora que fundamenta todo esto y que facilita
el desarrollo de este tipo de sistemas son los Autmatas y Lenguajes Formales.

Para hacer ms formal toda esta teora electrnico-matemtico-computacional es
necesario, antes, conocer algunos formalismos que le dan cierto orden a todo este
cuento. (Voy a hablar de ellos solo en los trminos de este escrito, que trabaja con
autmatas que procesan cadenas de texto).

Alfabeto

Es un conjunto de smbolos que sirven para construir palabras (llamadas frecuentemente
cadenas). Los dos ejemplos ms conocidos de alfabetos que nosotros utilizamos, son las
letras del alfabeto espaol

a, b, c, e, f, , z

que permitieron, entro otros, escribir el contenido de este artculo.

Tambin estn los diez dgitos decimales matemticos que nos permiten construir
cualquier nmero,

0, 1, 2, ., 9

Pero, resulta que, para complicarnos la vida, por que no pueden vernos yendo a la
escuela felices y con ganas de aprender ms y ms sin necesidad de tanta simbologa

1
Las mquinas de las que se habla en este documento pueden ser virtuales. Un compilador es un ejemplo
de las llamadas mquinas virtuales.
www.pedrov.phpnet.us 2
rara, los cientficos de la computacin y las matemticas, y tambin los de la
electrnica, se han inventado smbolos raros para representar estos elementos. En el
caso de los alfabetos, se utiliza la letra griega sigma, , para su representacin.
Entonces, si nos piden que escribamos el alfabeto espaol en trminos computacionales,
debera hacerse algo como lo siguiente:

{ } , , , , , ,...., a b c d e f z = (Lo correcto sera escribir todo el alfabeto)

Cul es el alfabeto que se utiliza para escribir los nmeros arbigos? Sencillo, es,

{ } 0,1, 2, 3, 4, 5, 6, 7, 8, 9 =

En este ltimo caso, el lector se preguntar, y que palabras se construyen con este
alfabeto? Lo que pasa es que en esta teora se llama palabra a todo lo que se pueda
construir con la combinacin de los elementos de un alfabeto. Por ejemplo, el nmero
25 es una palabra.

Palabras

Como ya se explico arriba, las palabras son todas las combinaciones que se puedan
obtener con los elementos de un alfabeto. Por ejemplo, con el alfabeto,

{ } 0,1, 2, 3, 4, 5, 6, 7, 8, 9 =

podemos construir todas las palabras que llamamos nmeros, tales como: 0, 12, 123222,
100000, etc.

Con el alfabeto espaol,

{ } , , , , , ,...., a b c d e f z =

podemos construir todas las palabras propias de nuestro idioma, como las que
conforman este escrito, y otras que incluso no tienen sentido, tales como: seddddqqq,
Mejor dicho, todas las combinaciones que se nos ocurran.

Una pregunta: Con el anterior alfabeto podr escribir la palabra Yo amo a mi
pas!? La respuesta es, NO. Observe que, se han incluido al menos cuatro elementos
que no estn en el alfabeto: los dos signos de admiracin, el espacio separador y una
tilde. En esta teora las cosas son estrictas, solo se puede trabajar con los elementos del
alfabeto definido, y si se necesitan otros, antes se los debe incluir en el alfabeto, o
mejor utilizar otro alfabeto.

Operaciones con cadenas

La operacin bsica con cadenas es la concatenacin que consiste en unir palabras. Por
ejemplo, si tenemos las palabras Colombia y Pasto, la concatenacin de estas es
ColombiaPasto.

www.pedrov.phpnet.us 3
Se acostumbra a representar la concatenacin en forma similar a como las matemticas
representan la multiplicacin. Se colocan las palabras entre parntesis una a
continuacin de otra. Entonces nuestro ejemplo, lo podramos simbolizar como:

(Colombia) (Pasto) = ColombiaPasto

Y como siempre, para complicarnos ms las cosas, se acostumbra a utilizar variables
que representan a cada palabra. Supongamos que w representa a Colombia y x
representa a Pasto, entonces podemos representar todo como,

w = Colombia
x = Pasto

y la concatenacin como

wx = ColombiaPasto

Adems, cuando se quiere representar la concatenacin de una palabra que se repite
varias veces se utiliza la simbologa de la potenciacin (un caso particular de la
multiplicacin). Supongamos que tenemos la palabra Pasto, entonces

(Pasto)
0
= (vaco)
(Pasto)
1
= Pasto
(Pasto)
2
= PastoPasto
(Pasto)
3
= PastoPastoPasto
(Pasto)
4
= PastoPastoPastoPasto

O en forma simblica, si x es igual a Pasto entonces

x
0
= (vacio)
x
1
= Pasto
x
2
= PastoPasto
x
3
= PastoPastoPasto
x
4
= PastoPastoPastoPasto

Al conjunto de todas las palabras que sea posible formar, con sentido o sin l, con los
smbolos de un alfabeto se lo simboliza con
*
.

Lenguaje

Con un alfabeto se podran construir cualquier cantidad de palabras, unas con sentido y
otras sin sentido. Un lenguaje es un pequeo conjunto de palabras que se toman de ese
gran conjunto.

Supongamos que tenemos el alfabeto que nos permite generar nmeros binarios,

{ } 0,1 =

www.pedrov.phpnet.us 4
Sabemos que con este conjunto podemos formar cualquier palabra formada por ceros y
unos. De ese gran conjunto, en particular podramos tomar un conjunto formado por
unas cuantas palabras, como por ejemplo,

{ }
1
01,10,11,111 L =

Este es un ejemplo de lenguaje definido sobre el alfabeto . Pero, este no es el nico
lenguaje que podemos definir sobre este alfabeto. Mire este otro:

{ }
2
01, 0101, 010101, 01010101,... L =

Observe, que este ltimo lenguaje tiene algo particular. Est formado por palabras que
resultan de la concatenacin de la palabra bsica 01. Teniendo en cuenta este detalle,
podemos escribir este lenguaje como,

{ }
1 2 3 4
2
(01) , (01) , (01) , (01) ,... L =

O incluso, para simplificar an ms las cosas, podemos hacerlo como sigue:

{ }
2
(01) / 1
n
L n =

La condicin 1 n significa que el mnimo valor que puede tomar n es 1 y por lo tanto,
la primera cadena que contiene este lenguaje es 01.

Un ejercicio rpido: Escriba cinco elementos del lenguaje
{ }
/ 1
n
L a bc n = > definido
sobre el alfabeto { } , , a b c = .

Una pregunta: En el anterior lenguaje est la palabra abc? Y la palabra aabc?


Autmata

En la prctica, un autmata es un mtodo, tambin llamado mquina virtual, que sirve
para saber si una palabra hace parte de un lenguaje. Un autmata se encarga de leer los
smbolos que conforman una palabra, desde el primero hasta el ltimo en estricto orden,
y determinar si cumple con las condiciones impuestas por el lenguaje. Por ejemplo en el
lenguaje,

{ }
1 2 3 4
2
(01) , (01) , (01) , (01) ,... L =

el autmata asociado a l deber revisar si una palabra que se desea identificar cumple
la condicin de ser una repeticin sucesiva de la base 01. Cuando el autmata revise la
palabra 01010101 no tendr problema en aceptarla, pero la palabra 01010 no podr ser
aceptada como miembro de este lenguaje.

www.pedrov.phpnet.us 5
Para no complicar las cosas, digamos que una forma de representar grficamente un
autmata es mediante unos crculos y unas lneas que los unen, y que se conoce con el
nombre de diagrama de transicin.

Los diagramas de transicin estn formados por crculos, que se llaman estados y
flechas o arcos de transicin que se conocen como transiciones, y podemos considerarlo
como un croquis de rutas a seguir. Un estado es un punto del diagrama donde hay que
detenerse para definir hacia donde se contina el viaje. Cada estado se acostumbra a
representarlo mediante letras y subndices, tal como q
0
, q
1
, q
2
, etc.

Para viajar de un estado hacia otro, se utilizan caminos llamados transiciones. Pero, el
camino que se debe tomar lo define el smbolo que se vaya a leer. Por ejemplo, tenemos
la palabra 101, que deseamos saber si pertenece a un determinado lenguaje, y un
autmata que lo reconoce, representado en el siguiente diagrama:


101


Haga de cuenta que el dibujo esta trazado en el piso y que Usted se encuentra parado en
q
0
. El crculo q
0
se llama estado inicial, y aqu se distingue con una flecha ubicada a su
izquierda. El crculo q
2
, con lnea doble, se llama estado final o de aceptacin.

Observe que, estando en q
0
, tiene dos caminos por seguir, uno que lo lleva a darse una
vuelta y volver al mismo punto y el otro que lo lleva al estado q
2
. Para realizar el viaje
procedemos de la siguiente forma:

- Leemos el primer smbolo de la cadena. Como el primer smbolo ledo es 1, tiene
que tomar el camino hacia q
2
, eso est marcado en el camino respectivo.

- Ahora estando en q
2
, debe leer el siguiente smbolo de la palabra, en este caso es 0.
Nuevamente tenemos dos caminos por seguir, pero el camino que le corresponde a
este valor es aquel que lo hace dar un recorrido y volver inmediatamente al mismo
punto, q
2
.

- Leemos el tercer smbolo, que es 1, y este nos lleva al estado q
0
. Ah termina todo,
por que ya se acabaron los smbolos.

Si despus de leer toda la palabra se llega al estado de aceptacin, entonces la palabra se
da por aceptada, de lo contrario no. En el ejemplo anterior, la palabra 101 no es
aceptada por el autmata, por que el punto de llegada fue q
0
, y no el estado final o de
aceptacin q
2
, por lo tanto se concluye que no hace parte del lenguaje que se est
analizando.

Analice los movimientos que hay que hacer para la palabra 1011 y determine si es
aceptada por el autmata. (La respuesta es SI).
www.pedrov.phpnet.us 6

Autmata finito determinista (AFD)

Un autmata se considera determinista cuando en cada uno de los estados existe una
nica transicin o camino para cada una de las entradas.



Por ejemplo, si en nuestro autmata juguete, Usted se encuentra en el estado q2, y le
llega un 1, sabe que tiene un nico camino por seguir, y es aquel que lo lleva a q0. Igual
ocurre si le llega un 0, debe irse a dar una vuelta por el camino correspondiente y volver
a q2. Es decir, todo est claramente determinado. Una condicin es que, todas las
posibles entradas posean una transicin de salida en cada estado del autmata.


Autmata finito no determinista (AFND o AFN)

Un autmata no determinista, puede poseer ms de un camino sealado con la misma
etiqueta. Es decir, para cada una de las entradas pueden existir varias transiciones, o
incluso ninguna. El siguiente, es un ejemplo de autmata no determinista.



Realice el ejercicio mental de suponer que es un croquis dibujado en el piso. Si Usted se
encuentra en la posicin q0, y le llega una a, tiene dos caminos para seguir, y se
enfrentar a una incertidumbre Cul es el camino correcto? Si nos vamos hacia q1, y
luego nos llega una b, podremos llegar al estado de aceptacin q2, pero si no llega dicha
letra, habremos comprobado que tomamos el camino equivocado y talvez debamos
regresar al punto de inicio.

Tambin podemos observar que, para b no existe una transicin de salida en q0. Algo
similar ocurre en q2, donde no existen transiciones de salida ni para a ni para b. Como
podemos darnos cuenta, en este tipo de autmatas nada est claramente determinado.

Este AFN, aceptar la cadena abbb? Y la cadena aaaaa? Las respuestas son Si y No,
respectivamente.
www.pedrov.phpnet.us 7


Esta es una descripcin demasiado elemental de la teora de autmatas. Hacen falta muchos detalles que deben
tenerse en cuenta para fundamentar mejor el producto de estas teoras. Pero, en el intento de iniciar la comprensin
de los conceptos bsicos de esta disciplina de la computacin, puede ser muy til.