Está en la página 1de 11

3.2 AUTMATAS FINITOS. LENGUAJES RECONOCIDOS POR AUTMATAS FINITOS. DISTINGUIBILIDAD 3.2.

1 MEMORIA NECESARIA PARA RECONOCER UN LENGUAJE 3.2.2 TRANSICIONES ENTRE ESTADOS 3.2.3 FUNCIN DE TRANSICIN EXTENDIDA 3.2.4 CARACTERIZACIN DE LOS LENGUAJES REGULARES 3.2.5 DISTINGUIBILIDAD ENTRE PALABRAS 3.2.5.1 Teorema de la distinguibilidad 3.2.5.2 Aplicaciones: Diseo de AFs. Lenguajes no regulares

2
3.2 AUTMATAS FINITOS La segunda caracterizacin de los lenguajes regulares es que son reconocidos por autmatas finitos. En este enfoque de la teora de la Informtica, hemos comenzado por los lenguajes ms simples(los regulares) y, a continuacin, vamos a ver los requisitos mnimos de un modelo abstracto de mquina(autmata finito) para procesar las palabras de *, de forma que sepa distinguir si la palabra es del lenguaje que el autmata reconoce o no. 3.2.1 MEMORIA NECESARIA PARA RECONOCER UN LENGUAJE Reconocer un L es: Dada cualquier x *, responder S si x L y NO si x L. Los LR pueden ser caracterizados, como todos los LFs, en trminos de la "memoria" requerida para reconocerlos. La forma de procesar la informacin por el autmata A la entrada se pone la palabra que se somete a ser leda por el autmata. El procesamiento de la informacin lo hemos restringido a una pasada nica de la palabra de izquierda a derecha. Esta manera de considerar el procesamiento es arbitraria, pero es estndar; eso ayuda a clasificar la informacin que debe ser recordada de la parte de la cadena que ya ha sido procesada. Ello permite clasificar los Ls sobre la base de la cantidad de memoria, en la forma de nmero de estados distintos, que se necesita disponer guardando en cada caso la informacin necesaria para la clasificacin de las palabras. Dada una palabra, o bien es del L o bien no. La forma de procesar es ir tomando decisiones acerca de si la palabra puede pertenecer al lenguaje cada vez que se ha ledo un carcter o si, por el contrario, se puede decidir, sin llegar al final de la cadena, que sta no pertenece a L . En este ltimo caso no es necesario llegar al final. En el primer caso, debemos estar siempre en una situacin en la que "recordamos" toda la informacin casustica necesaria contenida en la subcadena leda para poder seguir tomando decisiones tentativas: bien "si hubiese terminado la palabra, sta pertenecera a L", o bien "si hubiese terminado la palabra, sta no pertenecera a L". Cada estado se asocia a un conjunto de palabras de * , de forma que la unin de esos conjuntos sea * y la interseccin sea . En todo momento el autmata permanece en un estado y slo en uno (esta propiedad no se mantendr para los autmatas no deterministas). Forzosamente uno de los estados ha de ser el estado inicial, o sea el estado en el que se encuentra el autmata mientras no se lee nada, ni siquiera la letra ms a la izquierda de la palabra; es decir, cuando se lee . As pues todo autmata tiene que tener, al menos, un estado (el estado inicial). 3.2.2 ESTADOS y TRANSICIONES Sea L = *. En este caso no hay que distinguir unas palabras de otras. La respuesta, despus de haber ledo la palabra completa, ha de ser S, independientemente de cul sea la palabra. Por consiguiente no hay nada que recordar. El AF tiene un solo estado y ste es de aceptacin, ya que cualquier palabra de entrada es de *.

Explicacin: Un AF tiene, al menos, un estado. En este caso es el estado inicial; es decir, el estado en el que permanece cuando an no ha empezado a trabajar, o bien cuando ha ledo la palabra . Si sta pertenece al L que reconoce el AF, el estado inicial es de aceptacin. Los estados de aceptacin se marcan para distinguirlos de los de no aceptacin. Por tanto, el AF que reconoce * se representa grficamente as, habiendo tenido en cuenta slo los estados, y no las transiciones entre los mismos. Tampoco se necesita recordar nada para reconocer el lenguaje vaco, , puesto que ninguna palabra de * forma parte del mismo. En este caso el estado nico del AF que lo reconoce no es de aceptacin (es de rechazo). Por tanto, grficamente, es:

3
Cuando se necesita recordar ms propiedades, para poder distinguir entre palabras del lenguaje y palabras de * que no son del lenguaje que el autmata reconoce, ste debe tener estados de aceptacin y estados de rechazo, al menos uno de cada clase. Construyamos el autmata que reconoce el lenguaje L ={x * termina en a}. x Cuando se lee una letra, hace falta al menos otro estado, ya que L y, por tanto, el estado inicial no es de aceptacin. De hecho hacen falta, al menos, dos estados, ya que en uno de ellos (el de aceptacin) recordaremos que la palabra, si ya se hubiese ledo completamente, sera aceptada, mientras que en el otro no (porque no pertenecera a L). Grficamente lo representamos (sin transiciones) as: 1 2

Y no necesitamos recordar nada ms. Discriminamos con 2 estados los 2 casos posibles: La palabra leda no pertenece a L(no termina en a) o La palabra leda s pertenece a L(termina en a). Construyamos ahora el autmata reconocedor del L = {x * | x termina en ba}. En principio parece que no hay necesidad de distinguir entre prefijos diferentes que no terminan en ba, y tampoco entre prefijos diferentes que s terminan en ba. Solo habra que distinguir entre los que terminan en ba` y los que no. Pero hay que ser cuidadoso en la "forma de procesar" que hemos indicado. Veamos. No es lo mismo que se haya leido el prefijo aabb que el baaa`. Ninguno de los dos termina en ba. Por tanto, en principio, tendramos que recordar en ambos casos que ninguno termina en ba`. Pero en el primer caso, si nos fijamos, debemos recordar las caractersticas del prefijo tales que, para caracteres siguientes, son tiles para tomar decisiones tentativas: "Si el siguiente carcter que viene es a` y la cadena termina, sta pertenece a L". En cambio en el segundo caso, no tenemos nada til que recordar al respecto, tanto si el prximo carcter es una a` como si es una b`. Para cualquier prefijo hemos de recordar, como mucho, los dos ltimos caracteres ledos, porque solo ba` corresponde a una cola tal que, si no hubiese posteriores caracteres, sera una palabra del lenguaje. En los casos bb` y ab` debemos recordar que el ltimo carcter ledo es b, independientemente de que el penltimo sea uno u otro, de forma que si en el siguiente paso leyramos una a`, estaramos en el caso anterior. Por ltimo, en el caso aa` no tenemos nada til que recordar (estamos como al principio). Los conjuntos diferentes de palabras, llevando desde el estado inicial al final, cada uno ligado a un estado diferente, son: Palabras que terminan en ba(corresponde a un estado de aceptacin) , las que terminan en b y las que terminan en a pero no en ba , adems de . Este ltimo corresponde al estado inicial, que es de rechazo, ya que L. Hay, pues, 4 estados, de los cules tres son de rechazo. Vemos que cuanto ms complejo es un lenguaje, ms estados se necesitan para reconocerlo. Qu debemos recordar para reconocer un lenguaje como PAL? En el ejercicio ltimo debemos recordar 4 casos distintos solamente. Cuntos prefijos distintos deben ser recordados ahora?. La respuesta es todos. Hasta llegar al final no es posible saber si un determinado prefijo pertenece, o no, a PAL. Necesitamos infinitos estados para reconocerlo. 3.2.2 TRANSICIONES ENTRE ESTADOS En general, para reconocer lenguajes regulares debemos clasificar las palabras en clases diferentes. Solo tenemos que recordar de un prefijo la clase a que pertenece, asociada a un determinado estado, para tomar la decisin de a qu estado hacer la transicin cuando se lee una nueva letra. Ejemplo: = {0,1}, L= {x *| x termina con 1` x no contiene 00`}.

4
Su expresin regular es (01 + 1)* (01 + 1) = (01 + 1) . Sea un prefijo s. En el caso de que contenga una secuencia 00`, no tenemos que recordar ms cosas. Jams una cadena que tenga s como prefijo pertenecer a L. Luego la clase de palabras que contienen 00 debe ir asociada a un estado, y ste es de rechazo: No . Cules son los otros casos cuando 00` an no ha aparecido en s.? 0 : el ltimo smbolo de s es 0. La subcadena s puede ser prefijo de una cadena de L, dependiendo del siguiente carcter. Si el siguiente que llega es 0`, esto nos lleva a No , puesto que 00` ya est contenido en la cadena. Si el siguiente es un 1`, esto nos lleva a 1 (la subcadena pertenece a L). 1 : el ltimo smbolo de s es 1. Entonces s pertenece a L. Se trata de un estado de aceptacin, puesto que si termina la cadena (la cadena es s), sta pertenece a L. Si el siguiente smbolo que se lee es un 1, s sigue perteneciendo a L. Si el siguiente es 0, esto nos lleva al caso 0 . Tambin debemos distinguir el caso , puesto que debemos clasificar todas las palabras de * y *. As pues, en forma de diagrama: 0 0 1 1 En se recuerda que an no ha entrado un solo carcter y que L. En 1 se recuerda que el prefijo ledo no contiene 00` y termina en 1`. Por tanto s L. En 0 se recuerda que el prefijo ledo no contiene 00` y termina en 0`. s L. En NO se recuerda que el prefijo ledo contiene 00` (s L y cualquier cadena que tenga s como prefijo no pertenece a L). Este tipo de diagramas representan autmatas, que trabajan con el concepto de estado, entradas y transiciones entre estados. Algunos de los estados son de aceptacin , mientras que otros son de rechazo. La mquina est en un estado de aceptacin si y solo si el actual prefijo leido es una palabra de L. Es una mquina abstracta porque es una especificacin de lo que debe hacer, independientemente de la implementacin (hd/ o soft/ ). El conjunto de estados y la funcin de transicin constituyen la definicin del trabajo de la mquina abstracta. Lo que es esencial es la finitud del n de estados. Debido a su finitud, los AF reconocen lenguajes ms bien simples, los LR, que son los ms simples en la jerarqua que estamos considerando. No es obvio, desde el enfoque de las expresiones regulares, que hay lenguajes que no son regulares. Bajo el enfoque de los AF, es ms evidente la distincin entre L R y L No R. Definiciones y Notacin Un Autmata Finito se define por una quntupla: < Q, , q0, , A > , en donde Q es el conjunto de estados es el alfabeto del lenguaje q0 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} 1 0 0,1 0 NO
+

5
q0 =

Funcin de transicin: : Q x Q ENTRADAS 0 1 E S T A D O S 0 1 NO 0 NO 0 NO 1 1 1 NO

A ={ 1 }

Autmatas que reconocen un LR Un mismo L puede ser reconocido por AFs distintos , con ms o menos estados. Ejemplo: L = { 0, 1}* { 1 0 } En un primer enfoque, podemos distinguir los 4 casos diferentes que se presentan cuando se recuerdan los dos ltimos caracteres ledos. As se ve en el diagrama siguiente:

0 0 0 0 00 1 1 1 01 0 0

1 1 0 1 11 0 1 1 Estados en los que se recuerdan las dos ltimas letras ledas Estados intermedios (usados hasta que se recibe la 2 entrada)

10

Hay 4 clases de palabras de longitud 2: las que terminan en 00, 01, 10, 11. Se asocian respectivamente a los estados 00 , 01 , 10 y 11 . Las flechas entre ellos marcan las transiciones, dependiendo de la clase de la palabra que es el prefijo, cuando se lee un nuevo carcter. Se completa el autmata con los estados previos necesarios hasta conducirlo a uno de los 4 estados mencionados. Dos de estos 3 estados corresponden a las clases de palabras de longitud 1 y el otro a . Es fcil simplificar este diagrama. As 0 y 00 , desde el punto de vista de la clasificacin de palabras, cumplen la misma funcin. Deben recordar solamente que el prefijo termina en 0 y que L. Es la clase de palabras que no terminan en 1. No es necesario el estado . Basta precisar que el estado inicial q0 A. Lo mismo pasa con 1 y 11. Pero tambin con 01. Hay que recordar lo mismo en los tres casos: que la cadena termina en 1. A la clase de las palabras que terminan en 1 asociamos el estado q1, de rechazo. Para completar * estn las palabras que terminan en 10, o sea L, con el estado q2, nico estado de aceptacin. Llegados a esta situacin, es imposible simplificar ms.

6
0 q0 0 1 q1 1 0 Todos los autmatas que reconocen un mismo lenguaje son equivalentes. 3.2.3 LA FUNCIN DE TRANSICIN EXTENDIDA La funcin de transicin (q, a) nos da "el estado al que llega la mquina cuando, estando en el estado q, lee el carcter a". Es conveniente definir otra funcin que nos diga: " Estando en el estado inicial q0, cuando lee una palabra x, la mquina termina estando en el estado q". Esta funcin es * (q, x), de forma que es * : Q x * Q Igual que hemos hecho para definir recursivamente otras funciones, definiremos la funcin correspondiente a una palabra cualquiera a partir de la funcin correspondiente a las palabras ms simples: 1) * (q, ) = q para cualquier estado en que se encuentre la mquina. 2) * (q, x a). Hay que definir, conociendo * (q, x), es decir, el estado al que llega la mquina partiendo del estado q y leyendo la cinta x, a qu estado se llega partiendo del mismo estado q y leyendo la cinta x a, que es la anterior (x) concatenada con la letra a. Pero, si el estado de llegada, despus de haber ledo x, se conoce (sea. qi), el estado final, despus de leer x a, ser (qi ,a). Por tanto es * (q, x a ) = (* (q0, x), a). Con estas dos reglas est definida totalmente * (q, x) para cualquier palabra x. La definicin de * es operativa. As una cadena a a b, desde un estado q, ser procesada as: * (q, x b) = (* (q, x), b); x = a a = ( ( * (q, y), a), b); y = a = ( ( ( *(q, ), a), a), b); y = a (por 1)) = ( ((q, a), a), b) Conociendo : Q x Q el problema est resuelto. Se aplica (q, a) una 1 vez, una 2 vez ( (q, a), a) y por fin, una 3 vez: ( ( (q, a), a), b). Y eso sera * (q, a a b ): estado final del AF, con funcin de transicin , cuando procesa la palabra a a b desde el estado q. Una propiedad directamente derivable de 2 Es: Si z = x y, entonces es * (q, z) = * (* (q, x), y) El prefijo x se supone fijo. El parmetro de induccin es |y| = n 0 Base: Para y = es * (q, x ) = * (*(q, x), ) = * (q, x) Hiptesis: Para |y| = k, es * (q, xy) = *(* (q, x), y) Tesis: Para |y| = k + 1, * (q, x y a) = * (*(q, x), y a) Demostracin: Por (2) es * ( * (q, x), y a) = (* (* (q, x), y), a) siendo *(* (q, x), y) = * (q, x y) (por la hiptesis) Sustituyendo y aplicando la igualdad de la regla (2), queda *(q, x y a) = *(*(q, x), ya) , c.q.d. 3.2.4 CARACTERIZACIN DE LOS LENGUAJES REGULARES Son los lenguajes reconocidos por AFs. - Una palabra x * es aceptada por M = < Q, , q0 , , A > si * (q0, x) A - Una palabra x * es rechazada por M si *(q0, x) A q2

7
- El lenguaje reconocido por M es L(M) = {x x es aceptada por M} - Un L es reconocido por M si y slo si L = L(M) Observacin: Este conjunto de definiciones no permiten interpretar que un L dado es reconocido por un M dado cuando todas las palabras de L son aceptadas por M, sino slo cuando todas las palabras aceptadas por M son exactamente el conjunto de todas las palabras de L, y ninguna ms!. Es decir, todas las palabras del conjunto complementario de L (L= *- L) han de ser rechazadas por M. Si no fuese as el AF ms sencillo capaz de reconocer cualquier lenguaje formal sera a a
*

Relacin entre AFs y ERs. Antes de ver la equivalencia entre LRs y Ls reconocidos por AFs, veamos algn caso de AF para deducir la expresin regular que le corresponde al L que reconoce M. Es la cara inversa de lo que hemos visto antes, que ha sido cmo clasificar las palabras de L, o sea cmo disear la M que tiene tantos estados como clases de palabras distintas tiene con respecto al L a reconocer. Este problema es, en general, ms complicado que el directo: Dado el L, deducir un AF reconocedor del mismo. Sea el AF: a,b 2 a 1 a,b b 3

En el nico estado de aceptacin se aceptan las palabras que llegan desde el estado 2, seguidas de una a o de una b y las que llegan desde el estado 3, tambin seguidas de una a o de una b. Y que estas palabras pueden concatenarse entre s tantas veces como se quiera. Tambin se acepta . Se deduce que el L reconocido tiene las expresiones regulares: (a (a + b) + b (a + b))* = ((a + b) (a + b))* = (aa + ab + ba + bb)*. 3.2.5 DISTINGUIBILIDAD ENTRE PALABRAS Decir que los LR se caracterizan por ser reconocidos por AFs es igual que decir que * est constituido por un conjunto de palabras que pueden ser clasificadas en n grupos con respecto a L, de forma que, cuando se procese una cadena, no debemos recordar ms que a cul de los n tipos diferentes pertenece la subcadena procesada en cada momento del procesamiento. Los n tipos corresponden a los estados de un AF (n finito). As, en el ejemplo del AF de 3 estados que reconoce el lenguaje de las palabras de longitud par, L1 son las palabras de longitud par, L2 = L1{b} y L3 = L1{a}. Para disear ese AF no hemos pensado, de entrada, si, a partir del estado inicial, se necesitan dos estados nuevos, uno por cada letra del alfabeto {a, b}, o bien basta slo uno. Desde luego al menos se necesitan dos, pues no basta uno solo. En general eso se puede pensar en cada estado de cualquier AF. Estando en un estado, si se sigue leyendo porque la palabra an no ha terminado, puede que se necesiten dos nuevos estados, puede que uno o puede que ninguno. Siguiendo con el ejemplo, si estamos en el estado 1 y llega una a se necesita un nuevo estado, puesto que L y a L. Pero si llega una b, se necesitara un tercer estado nuevo?. Para las palabras de longitud impar terminadas en a se requiere un estado nuevo, el 2. Pero para las impares terminadas en b,se requiere otro, el 3?. O bien si para las impares terminadas en b se requiere uno nuevo, el 3, para las impares terminadas en a, se requiere tambin el 2?. Observamos que: (3, a) = (2, a) = (3, b) = (2, b) = 1.

8
En trminos de la funcin de transicin extendida, si dos palabras, x e y, distintas llevan al autmata, desde el estado inicial, 1, a dos estados distintos, 2 y 3, o sea: *(1, x) = 2 y *(1, y) = 3, se puede comprobar que, para cualquier palabra z de * , se cumple que *(1, x z) = *(1, y z). O sea cualquier cola z *, leda desde el estado 2 o desde el estado 3, lleva al autmata a un estado, bien de aceptacin (1) o bien de rechazo (2 o 3). Es decir las palabras que llevan desde el estado 1 al estado 2 son indistinguibles de las que llevan al 3, ya que *(2, z) = *(3, z). Otro ejemplo: L = {x {0,1}* | el n-simo carcter de x contado desde la derecha es 1` (0 0`)} Para n = 3, el AF debera encaminar las subcadenas hasta cada uno de los 2 3 = 8 estados diferentes, correspondientes a las posibles subcadenas (en ese momento la subcadena analizndose tiene una cola de 3 caracteres) que quedan clasificados en 8 clases distintas. No importa lo que hubiera en el prefijo de esa cola de los 3 caracteres ltimos. A partir de ese momento cualquier transicin debe llevar a uno u otro de esos 8 estados. Si llamamos a b c` a la cola y a b c al estado en el que se reconoce la palabra que termina en esa cola, siendo a, b, c, d {0,1}, la parte de la funcin de transicin entre esos 8 estados ser ( a b c , d ) = b c d. 4 de estos estados deben ser de aceptacin (a = 1) y los otros 4 de rechazo (a = 0). Este mtodo se puede refinar un poco ms para reducir el nmero de estados, pero no drsticamente. En general el n de estados es por este procedimiento NQ. NQ = 2n+1 -1; (20 + 21 + 22 + ..... 2n ) = 2n+1 -1 Y lo ms que podramos reducir es a un n de estados del orden 2n, pero nunca < 2n, ya que hemos de distinguir entre 2n clases de cadenas distintas. Para buscar un procedimiento sistemtico de ir encaminando la cadena por el itinerario adecuado, la pregunta es cundo se debe distinguir entre una cadena y otra? Es decir, estando en un estado determinado, si llega un nuevo carcter, segn sea ste, hay que distinguir entre una y otra subcadenas? Y, en funcin de la respuesta a esa pregunta, si no son distinguibles (pertenecen a la misma clase) el siguiente estado debe ser el mismo, tanto si llega un carcter como si llega otro; y si lo son, el siguiente estado deber ser distinto, en funcin del carcter que llegue. As vemos que, al comienzo ya hay que distinguir entre las cadenas que empiezan por 0` y las que empiezan por 1`. En el primer caso una misma cola (p. e. 00` ) lleva a 0` a un estado (de rechazo puesto que el tercer dgito contando desde la derecha debe ser 1` ) y a 1` a un estado de aceptacin. Igualmente escogiendo para ambas la cola 01`, o la cola 10`, o la cola 11`. Esta forma de ver las cosas nos llevar a establecer una relacin entre las clases de cadenas que necesitamos distinguir y el nmero de estados del AF. As pues, dos cadenas debern ser distinguidas entre s por la mquina cuando, aadiendo a cada una de ellas una misma cola, esta misma cola lleve en un caso a un estado de aceptacin y en el otro a un estado de rechazo. Este procedimiento ya no es intuitivo, sino sistemtico. En general lo que importa es que dos palabras que han de ser distinguidas entre s no pueden conducir a un mismo estado desde el estado inicial. Este concepto de distinguibilidad entre palabras es con respecto a un L. Por tanto ha de ser un concepto puramente lingstico. Definicin: Sea L *, y *, x * "Se dice que x e y son distinguibles respecto de L si existe z * tal que slo una de las palabras (x z o y z) L". Se dice que "la palabra z distingue x de y con respecto a L". Se dice tambin, en caso contrario (es decir, si no existe z tal que x z L (o no) e y z L (o s)), que "x e y son indistinguibles con respecto a L". En este caso tanto x z como y z pertenecern ambas a L o ninguna, para cualquier cadena z *.

9
Cuando x, y son dos palabras indistinguibles entre s con respecto a L, z se verifica que x z L si y solo si y z L, y viceversa. Y tambin x z L si y solo si y z L, y viceversa. Observaciones: 1- Se hace abstraccin de M(L). 2- L es cualquier subconjunto de *, no necesariamente regular. El concepto de distinguibilidad es aplicable a cualquier conjunto de dos o ms palabras. El siguiente teorema relaciona este concepto a los autmatas reconocedores. 3.2.5.1- Teorema de la distinguibilidad : "Dado un L, si existe un conjunto S de cadenas de *, en nmero de n, tal que cualquier par de cadenas de S son distinguibles entre s con respecto a L, entonces cualquier autmata que reconozca L debe tener, al menos, n estados". Observamos que el teorema no dice que L sea regular. Puede que no exista ningn AF que lo reconozca. Lo que precisa es una propiedad sobre el nmero de estados de cualquier autmata reconocedor de L. Demostracin: Supongamos que existe M = <Q, , q0, , A > que reconoce L*. Sea S * un conjunto de n cadenas, tal que cualesquiera dos x, y S son distinguibles respecto de L. Esto quiere decir que existe al menos una z * tal que, si x z L, entonces y z L; y si y z L, entonces x z L. Pongmonos en el primer caso. Entonces * (q0, x z) ser un estado q A, mientras que * (q0, y z) ser un estado q Q - A. Es decir, *(*(q0, x), z) A *(*(q0, y), z) Q - A. O sea el estado *(q0, x) ha de ser distinto del *(q0, y), puesto que, si fuesen iguales, la cadena z sera procesada a partir del mismo estado y se llegara al mismo estado final, tanto para x z como para y z, en contra de la hiptesis de que x e y son distinguibles. Necesitamos, pues, un estado distinto por cada palabra de S. La condicin es necesaria, pero no suficiente. Si hay n palabras distintas en S, puede haber ms de n estados cumplindose los requisitos de distinguibilidad. Pero con menos de n estados distintos es imposible que se pueda distinguir entre cualquier par de palabras x, y S.
*

3.2.5.2- Aplicaciones El teorema de la distinguibilidad es aplicable en muchas ocasiones. Aqu vamos a ver dos tipos de aplicaciones, las primeras orientadas al diseo de AFs y las segundas a lenguajes no regulares. 1- Diseo de AFs Ejemplo: Sea = = {0,1}, L = {x * x termina en 10} x = 11` es distinguible de y =00`. En efecto, sea z = 0. En este caso x z = 110 L y y z = 000 L. Hay, al menos, una cola z que distingue x de y con respecto a L. Cualquier palabra que termine en 10 es distinguible de cualquier otra que no termine en 10. A su vez cualquier palabra que no termine en 10 pero que termine en 0 es distinguible de la que termina en 1. Otros pares de palabras son indistinguibles: p. ej.: x = 0 de y = 100, porque cualquier z que pongamos como cola terminando en 10 har que x z L y y z L. Por otra parte cualquier otra cola que pongamos, no terminando en 10, har que x z L y y z L. Todo esto se puede hacer sistemticamente aplicando el teorema. As, p. ej., un conjunto distinguible de palabras de longitud 2 tiene cardinalidad 3 y no puede ser 4, puesto que 01 es indistinguible de 11.

10
Analicemos a la luz de este teorema el AF que reconoce las palabras sobre {0,1} que terminan por una cola de 3 bits tal que el primero por la izquierda es un 1: L = {x {0,1}* 3 letra por la derecha de x es 1}. Evidentemente ha de ser 3 la x Una forma de razonar es partir del estado inicial y empezar a considerar palabras cortas: Tengo necesidad de distinguir entre las dos palabras de longitud 1? Respuesta: SI, porque si 0` no fuera distinguible de 1` con respecto a L, llegara un momento en que no podramos distinguir 0 x x` de 1 x x` (x {0,1}). Por tanto hay un conjunto de 2 cadenas ({0,1}) que necesita 2 estados, 0 y 1. Por el mismo razonamiento, a partir del estado 0 necesitamos otros dos estados para distinguir las cadenas del conjunto {00,01}. Es decir para distinguir las cadenas 00 y 01 necesitamos dos estados distintos (observamos que son distinguibles, aadiendo, p. ej. z = 00). Igual se puede decir para las cadenas 10 y 11. Ms an, es necesario distinguir entre cada dos cadenas del conjunto {00, 01, 10, 11}. Por tanto necesitamos 4 estados para realizar la distincin y, ms an, necesitamos distinguir entre cada dos cadenas del conjunto {000, 001, 010, 011, 100, 101, 110, 111}. La necesidad viene de que, si la cadena que est procesndose ya ha terminado de leerse, el estado final ser de aceptacin segn que la primera letra sea 1, o de rechazo si es 0; pero si no ha terminado, depender de la cola el estado final y, en cualquier paso del procesamiento, siempre de los tres ltimas letras procesadas. Se puede comprobar que esas 8 cadenas son distinguibles entre s dos a dos respecto de L. As pues necesitamos 8 estados (23, n=8) para distinguir esas 8 cadenas. Es se el hecho fundamental. Y es eso lo que nos dice el teorema: Si queremos distinguir entre n cadenas necesitamos, al menos, n estados. El sentido de "al menos" es que, posiblemente, se precisan otros estados adicionales intermedios para llegar a esos n estados. Se puede generalizar a lenguajes de palabras que tienen letra 1 en la i-sima plaza, contando desde la derecha hacia la izquierda. Hay que recordar las i letras ltimas. La pregunta es: Cuntas palabras de longitud i son distinguibles entre s, dos a dos, respecto de L? La respuesta es 2i. En efecto, supongamos dos palabras distintas de longitud i. Observemos que dos cualesquiera de ellas difieren en, al menos, una letra. Supongamos que la primera plaza en la que difieren, empezando por la izquierda, es la j. Son distinguibles con respecto a L porque, si difieren en la letra de la plaza j (1 2... j....i), aadiendo una cola de j 1 letras, independientemente de cules sean estas letras, una cadena L (aquella cuyo prefijo tiene en la plaza j un 1`) y la otra L (aquella cuyo prefijo tiene en la plaza j un 0`). Lo que dice el teorema de la distinguibilidad aplicado al conjunto de las palabras de longitud i es que hay un conjunto distinguible con 2i palabras y, consiguientemente, cualquier autmata que reconozca L debe tener, al menos, 2 i estados. En el diseo del autmata reconocedor ya no necesitamos ms estados de nivel superior a i. A partir del nivel i observamos que "todas las palabras que tienen iguales los ltimos i smbolos son indistinguibles entre s con respecto a L". En efecto, concatenndolas por la derecha con una misma cola, las dos palabras resultantes o bien pertenecen a L o bien ninguna de las dos pertenece, para cualquier cola. Por ello el autmata debe tener, al menos, 1 + 21+ 22 + .... 2i = 2i +1 -1 estados. Eso es lo que parece sumando: 1(estado inicial) + 2(estados para distinguir las palabras de longitud 1) + 4(estados para distinguir las palabras de longitud 2) + 8(estados para distinguir las palabras de longitud 4) + ........... Pero, en este ejemplo, es cierto ese resultado? Pensemos en los conjuntos S que hemos ido estudiando. Ello es consecuencia de haber tratado por separado los conjuntos S siguientes: {0, 1}, {00, 01, 10, 11}, {000, 001,......,111},.... Eso quiere decir que, para distinguir las palabras del primero de ellos, necesitamos 2 estados (el autmata que reconoce ese lenguaje necesita, al menos, 2 estados). Para el segundo necesita, al menos, 4 estados, etc. Para el i-simo necesita al
*

11
menos 2 estados. Pero no hemos considerado el conjunto {0,1,00,01,10,11,000.......}. Puede que haya palabras que son indistinguibles entre s en ese conjunto. El diseo depender de los conjuntos distinguibles que consideremos. Hay un autmata finito mnimo, si el lenguaje es regular. Eso se ver cuando estudiemos el concepto de conjunto distinguible mximo en el captulo de minimizacin de autmatas. 2- Lenguajes que no son regulares El Teorema de la distinguibilidad nos permite detectar los lenguajes no regulares. Si se necesita distinguir entre las parejas de cadenas de un conjunto infinito, no puede haber un AF que reconozca el L. As ocurre con los lenguajes: PAL, expresiones totalmente parentizadas, an bn , etc. Ejemplo1: El propio lenguaje L = {x {0,1}* el i-simo bit` empezando por la derecha es 1`} slo es regular para i finito, puesto que, p.ej., un conjunto distinguible es S = {0....00, 0....01, ...., 1....11}, formado por las 2i palabras de longitud i. Luego L es un lenguaje no regular si se considera cualquier i 0. Ejemplo 2: L = { x {a, b}* x = an bn, n 0} Hay necesidad de distinguir entre cualesquiera dos palabras del conjunto: {, a, a2, a3,....., an, ....}. Cualquier par de palabras de a * son distinguibles con respecto a L. P.e.: a 3 y a4. Basta poner una cola z = b3 y la primera L mientras que la segunda L. O bien basta poner una z = b4, y la 1 L mientras que la 2 L. Pero el nmero de cadenas del conjunto a* es infinito. Luego L es un lenguaje no regular. Ejemplo 3: PAL Cualquier par de palabras de * es distinguible respecto de PAL. En efecto, dadas x, y * y x y, es fcil demostrar que x e y son dos palabras distinguibles respecto de PAL, puesto que basta poner una cola z * que sea la imagen de una de ellas (y es imposible que sea la imagen de la otra) para que x z PAL (o no) y z PAL (o s). Pero el nmero de palabras de * es infinito. Luego PAL no es un lenguaje regular.
i