Professional Documents
Culture Documents
Nociones Bsicas
La importancia del estudio de los lenguajes formales y sus gramticas radica en su utilidad para definir el conjunto de datos
sobre los que debe operar un programa (y por tanto, ayudar a validar lgicamente su entrada y su salida), as como para
definir los lenguajes de programacin.
Definition Una Palabra o Cadena es una secuencia finita de cero o ms smbolos, tomados de algn alfabeto
conocido, y colocados en secuencia o concatenacin.
A la palabra formada por cero smbolos se le llama Palabra vaca o Cadena vaca y se le denota ().
Definition La Longitud de una palabra o cadena es el nmero de smbolos (diferentes del smbolo nulo) que la
conforman.
Por definicin, || 0 , por ello, aunque la palabra vaca puede ocurrir como parte de otra cadena, su presencia no modifica
la longitud de dicha cadena, esto sin importar cuntas veces aparezca como parte de ella o si es concatenada por la izquierda
o por la derecha de la misma. As, para una palabra w, w w w, y adems, |w| |w| |w|.
Si A es un alfabeto, entonces un Lenguaje sobre A es cualquier lenguaje cuyas cadenas estn formadas exclusivamente
con los smbolos en A.
Si A es un alfabeto entonces, el conjunto de todas las palabras o cadenas que es posible formar con sus smbolos, se
denota A (ledo "A estrella"). A es el lenguaje ms grande posible sobre A y, cualquier otro lenguaje sobre A es un
subconjunto de A . Ntese que aunque A es finito por definicin, A siempre ser infinito (aunque numerable).
Example Sean L 00, 11 y M 101, 010 dos lenguajes formales sobre el alfabeto B 0, 1. Entonces:
L M 00, 11, 101, 010
LM
Lc B L
Algunos operadores de conjuntos requieren un pequeo ajuste para ser aplicados sobre lenguajes, por ejemplo, el
operador de Producto Cartesiano se redefine para lenguajes, llamndolo slo Producto y se especifica de la siguiente manera:
Definition Si L y M son dos lenguajes, entonces su producto se define:
L M cats, t|sL tM
L 1 L 0, 11
L 2 L L 00, 011, 110, 1111
L 3 L L 2 000, 0011, 0110, 01111, 1100, 11011, 11110, 111111
Al operar lenguajes con el operador de producto la palabra vaca tiene un efecto semejante al de el conjunto vaco, por
ejemplo:
L L L
L L L
Observe que: . La palabra vaca es diferente del smbolo nulo, a su vez, la palabra vaca es tambin
difierente del lenguaje que contiene nicamente a dicha palabra y ste es distinto del conjunto vaco.
Resulta bastante obvio que el producto de lenguajes es asociativo, es decir, si L, M y N son lenguajes, entonces:
L M N L M N
Por lo tanto, es posible escribir productos de lenguajes sin usar parntesis. Sin embargo, tambin resulta claro que el
mismo producto NO es conmutativo, esto es, podemos encontrar, por lo menos dos lenguajes L y M , para los cuales:
LM ML
Otra propiedad interesante y til del producto de lenguajes es que, se distribuye sobre los operadores de unin e
interseccin:
L M N L M L N y M N L M L N L
L M N L M L N y M N L M L N L
Definition Si L es un lenguaje sobre el alfabeto A, entonces la Cerradura de L, denotada L se define:
L L0 L1 L2 . . .
Definition La Cerradura Positiva de L, denotada L se define:
L L1 L2 L3 . . .
Obsrvese, en primer lugar, que la definicin de cerradura coincide totalmente con la anterior definicin de la estrella de un
alfabeto, es decir, el conjunto de todas las palabras que es posible formar con los elementos de un alfabeto. Por tanto, esa
ser la interpretacin de la cerradura de un lenguaje: el conjunto de todas las posibles palabras que se pueden formar con los
elementos del alfabeto sobre el cual se define el lenguaje.
En segundo lugar, observe que de las dos definiciones anteriores es fcil concluir que L L . Sin embargo, no
necesariamente resulta cierto que L L . Por ejemplo, suponga el alfabeto A a y, sobre l, el lenguaje
L , a. En ese caso resulta que:
L L
Propiedades de la Cerradura
1. L L L
2.
3. L L L L
4. L M L L M L
5. L M L M L M
Lenguajes Regulares
Hemos estudiado que un lenguaje formal es un conjunto de cadenas sobre un alfabeto finito. Si L es un lenguaje sobre el
alfabeto A ,entonces L A . Ahora comenzaremos a tratar el problema de reconocimiento que, en su primera forma ms
elemental, se expresa:
Dado un lenguaje formal L y una cadena cualquiera w,
Cmo se puede saber si w L ?
En una primera instancia la respuesta depende de la precisin con la que se especifique el lenguaje L. Algunos lenguajes
son fciles de especificar y otros no lo son. A continuacin estudiaremos una familia especial de lenguajes que resultan
fciles de especificar y para la cual existen diversos algoritmos que permiten resolver el problema de reconocimiento. Se trata
de la familia de los Lenguajes Regulares. Estos lenguajes se distinguen de otros similares porque pueden ser especificados
usando las operaciones de unin, concatenacin y cerradura. Formalmente los lenguajes regulares, sobre el alfabeto A, se
definien inductivamente de la siguiente forma:
Caso base: , y s son Lenguajes Regulares para todo s A.
Induccin: Si L y M son lenguajes regulares, entonces tambin lo
son: L M, ML y L
Cerradura: Los lenguajes regulares son nica y exclusivamente aquellos que
satisfacen los dos pasos anteriores.
Example Si A a, b es un alfabeto, entonces, por el paso base de la definicin anterior, los siguientes son
lenguajes regulares sobre A:
, , a y b
Por el paso de induccin anterior, los siguientes tambin son algunos otros lenguajes regulares sobre el mismo alfabeto A:
a b a, b b a, b ba, bb y b , b, bb, . . . , b n , . . .
De manera que, para saber si un cierto lenguaje es regular o no, basta con encontrar alguna forma de expresar dicho
lenguaje (factorizarlo) usando las operaciones de unin, concatenacin o cerradura.
Los dos ejemplos anteriores muestran que existen muchos lenguajes que potencialmente son regulares pero, puede
resultar difcil averiguarlo. Desde un punto de vista computacional es de sumo inters encontrar algoritmos que puedan
reconocer si una cadena pertenece o no a un lenguaje regular. Para ayudar en tal tarea conviene disponer de una forma ms
conveniente (compacta aunque precisa) para representar a los lenguajes naturales.
Expresiones Regulares
Se trata de expresiones algebricas para denotar lenguajes regulares. Para denotar a estos lenguajes las expresiones
regulares deben representar las mismas tres operaciones con las que se construyen lenguajes regulares: unin,
concatenacin y cerradura.
Si L y M son dos lenguajes formales, entonces la siguiente tabla indica la forma en que las expresiones regulares
denotan las operaciones bsicas:
Operacin con Lenguajes Expresin Regular
LM LM
LM LM
L L
Una expresin regular siempre denota un lenguaje formal (uno regular), sin embargo, la unidad atmica de expresin son
los smbolos del alfabeto sobre el cual se define el lenguaje. Es decir, una expresin regular indica la estructura que tienen las
cadenas que pertenecen al lenguaje denotado. Para aclarar esto se definir a continuacin, de forma inductiva, el conjunto de
las expresiones regulares sobre un alfabeto A:
Caso base: , y s son expresiones regulares para todo s A.
Induccin: Si R y S son expresiones regulares, entonces tambin lo son:
R, R S, RS y R .
Adems, con la intencin de que las expresiones regulares sean lo ms compactas posible, aunque sin perder precisin,
se evita el uso excesivo de parntesis asumiendo la siguiente jerarqua de prioridades entre los operadores:
Operacin Prioridad Orden
(cerradura) Alta (calcular al inicio)
(producto) Media
(unin) Baja (calcular al final)
Example Sea 0, 1 un alfabeto y sea L un lenguaje sobre que contiene todas aquellas cadenas que estn
formadas estrictamente por parejas de ceros y parejas de unos.
El lenguaje L se puede representar mediante la expresin informal:
L , 00, 11, 0011, 0000, 1111, 1100, . . .
o bien, usando la siguiente expresin regular:
00 11
La expresin regular anterior se debe interpretar de la siguiente forma: "cero o ms ocurrencias (por la cerradura), ya sea de
doble cero, o bien (por la unin), de doble uno"
Observe que la definicin inductiva de las expresiones regulares no incluye la cerradura positiva, slamente la cerradura
transitiva. De manera que una expresin regular como a slo puede interpretarse como "cero o ms ocurrencias del smbolo
a ". Si se quisiera expresar un lenguaje cuya descripcin fuera "una o ms ocurrencias del smbolo a ", entonces se tienen dos
alternativas:
1. Modificar la definicin inductiva, en el paso de induccin, para que incluya L como una expresin regular
aceptada: a
2. Forzar una ocurrencia del smbolo en la expresin regular: aa
Al lenguaje descrito por una expresin regular R se le denota R. La siguiente tabla indica el lenguaje denotado por
algunas de las expresiones regulares ms notables:
s s para todos los s
R S R S
RS R S
R R
A partir de la asociacin mostrada en la tabla anterior resulta claro que, toda expresin regular denota un lenguaje y,
reciprocamente, todo lenguaje regular puede ser representado por una expresin regular. Adems, la tabla puede ser de
utilidad para determinar el lenguaje denotado por una expresin regular:
Lo anterior significa que, todo lenguaje regular que sea finito se puede representar por una expresin regular que
smplemente sea la unin de cada uno de los smbolos en el alfabeto del lenguaje, esto es, todo lenguaje finito es regular. Por
otra parte, los lenguajes infinitos pueden ser o no ser regulares.
Sin embargo, no es seguro que expresiones regulares distintas representen diferentes lenguajes regulares. Dos
expresiones regulares distintas pueden denotar al mismo lenguaje, como es el caso con las expresiones: a b y b a.
Observe que, por la propiedad conmutativa de la unin:
a b b a a, b
Representando el caso contrario tenemos a las expresiones regulares ab y ba que no denotan al mismo lenguaje, pues
ab ab ba ba
En trminos generales resulta claro que, dado que el producto no tiene la propiedad de conmutatividad, entonces algunas
expresiones que, a simple vista, pareceran denotar al mismo lenguaje, en realidad no ocurre as. Considere como ejemplo
las expresiones
ab c y b ca
ab c ab, ac, pero
b ca ba, ca y,
ab, ac ba, ca
Ejemplos
Todos los ejemplos de esta seccin se refieren a lenguajes formales sobre el alfabeto B 0, 1.
Example La expresin regular 101 denota al lenguaje de todas las palabras formadas por cero o ms ocurrencias
de la cadena 101. Es decir,
101 , 101, 101101, 101101101, . . .
Example La expresin regular 00 11 denota al lenguaje de las palabras formadas por cero o ms ocurrencias de
la cadena 00 o de la cadena 11,
00 11 , 00, 11, 0000, 0011, 1100, 1111, . . .
Example La expresin regular 00 11 es diferente de la expresin en el ejemplo anterior. En este caso denota el
lenguaje de todas las palabras formadas por: cero o ms ocurrencias de la cadena 00 , o bien, cero o ms ocurrencias de la
cadena 11.
00 11 , 00, 0000, 000000, . . . , 11, 1111, 111111, . . .
Example La expresin regular 1100 10 denota al lenguaje de todas aquellas palabras, sobre el alfabeto B, tales
que comienzan con doble 1, continan con cero o ms ocurrencias de la cadena 00 y terminan con la cadena 10. Observe que
este lenguaje no incluye la palabra vaca.
1100 10 1110, 110010, 11000010, 1100000010, . . .
A continuacin se presenta una lista con algunas de las propiedades ms notables de las expresiones regulares. Observe
que son anlogas a las correspondientes propiedades de los lenguajes.
Sean R, S y T expresiones regulares sobre algn alfabeto .
Propiedades de la unin: 1 RS SR
2 R R R
3 RR R
4 R S T R S T
Propiedades distributivas: 8 RS T RS RT
9 S TR R TR
Propiedades de la cerradura: 10
11 R R R R R R
12 R R RR
13 R S R S R S
14 R S R S R R SR
15 RSR RS R
16 R S R S S
17 RS RR S
Durante el tema anterior qued claro que no todos los lenguajes formales son regulares. Existen otros lenguajes formales
que no pueden ser construidos a partir de slo las operaciones elementales de unin, producto y cerradura. El caso ms
evidente de ello es el lenguaje:
a n b n | n
para el cual, no existe forma de verificar la variable n, es decir, no hay forma de verificar que el nmero de smbolos a
sea exactamente igual al nmero de smbolos b. Esta limitacin resulta bastante fuerte, por lo que es de gran inters estudiar
otras clases de lenguajes formales, sus propiedades asociadas y, por supuesto, los mecanismos para especificar dichos
lenguajes. Para ello se presentan en este tema las gramticas.
Gramticas
Informalmente, tal como se entiende en el contexto de los lenguajes naturales, una gramtica es un conjunto de reglas
que definen la estructura de algn lenguaje formal. Esto es, la estructura de las cadenas vlidas dentro de dicho lenguaje.
Definition Una Gramtica es una tupla de la forma:
A, T, S, R
donde:
A es un alfabeto de smbolos (llamados Smbolos No-Terminales)
T es otro alfabeto de smbolos llamados Smbolos Terminales
SA es un smbolo no-terminal especial llamado Smbololo Inicial.
R es un conjunto de Reglas de Produccin o smplemente Producciones.
1) , A T
Tanto como son cadenas en el alfabeto A T, es decir, cadenas formadas por cualquier combinacin de smbolos
terminales y no-terminales.
2)
El lado izquierdo de una produccin nunca puede contener exclusivamente la palabra vaca.
3) r R r : S
Existe al menos una regla de produccin tal que, en su lado izquierdo, contiene exclusivamente al smbolo inicial.
Las reglas de produccin, en una gramtica, permiten construir ciertas cadenas. Por ello, el conjunto de todas las cadenas
que permite formar una gramtica, se conoce como el Lenguaje de dicha gramtica. Es decir, cada gramtica determina un
lenguaje formal especfico.
Construccin de cadenas
Si G es una gramtica, entonces el conjunto de todas las cadenas, sobre el mismo alfabeto que G, que es posible formar,
siguiendo las reglas de produccin en G, se denomina el Lenguaje de G y se denota G.
Para construir las cadenas que pertenecen al lenguaje formal de una gramtica es necesario seguir las reglas de
produccin y usar las operaciones de substitucin y concatenacin. Por ejemplo, considere la siguiente gramtica:
G S, A, a, b, S, Rp
donde:
Rp es el siguiente conjunto de reglas de produccin:
S
S bA
A aaA
Ab
El mecanismo para construir cadenas vlidas en el lenguaje de una gramtica es el siguiente:
PASOS: RESULTADO:
1) Comenzar con el smbolo inicial "S"
En general, el proceso para construir cadenas vlidas en el lenguaje de una gramtica se denomina Proceso de
Derivacin y cada paso o substitucin se denota con el smbolo (ledo "deriva"). De esa forma, el proceso de derivacin
del ejemplo anterior puede se denota de la siguiente forma:
S bA baaA baaaaA baaaab
Ntese, como lo indican las reglas del proceso de derivacin, que toda derivacin comienza con el smbolo inicial de la
gramtica (en este caso S ) y termina con una cadena formada exclusivamente por smbolos terminales de la misma
gramtica (en este caso a y b ).
Variantes
Como se puede observar en el ejemplo anterior, varias reglas de produccin pueden tener el mismo smbolo en su lado
izquierdo, tal es el caso, en la gramtica G anterior, de los dos siguientes grupos de reglas:
S A aaA
S bA Ab
Las reglas de produccin en esta circunstancia pueden ser escritas de forma compacta usando el smbolo | (barra
vertical):
S | ba
A aaA | b
De la misma forma, un proceso de derivacin tambin puede expresarse en forma compacta si se consideran las
siguientes variantes del smbolo de derivacin:
Deriva directamente (en un solo paso)
Deriva en CERO o ms pasos
Deriva en UNO o ms pasos
As es posible resumir procesos de derivacin en expresiones cortas, por ejemplo, es posible definir en trminos generales
el lenguaje G para cualquier gramtica G de la siguiente forma:
G w | w T S w
Para definir la gramtica de algn lenguaje formal es necesario, al menos, observar si el lenguaje que se quiere describir
es finito o infinito. Si el lenguaje es FINITO, entonces la gramtica puede consistir de todas las reglas de la forma S w para
cada cadena w en el lenguaje. Sin embargo, si el lenguaje que se desea describir es INFINITO, entonces al menos una de
las reglas de produccin en la gramtica deber ser una regla recursiva:
Definition Una regla de produccin se denomina Recursiva cuando y slo cuando su lado izquierdo aparece como
parte de su lado derecho.
Definition Una regla se denomina Indirectamente Recursiva si su lado izquierdo aparece en el lado derecho de
alguna otra regla derivable a partir de la primera.
Para ilustrar lo anterior considrese la regla de produccin S b | aS, evidentemente se trata de una regla recursiva, sin
embargo, se en alguna otra gramtica se encontraran las siguientes reglas de produccin:
S b | aA
A c | bS
Entonces se tienen dos reglas indirectamente recursivas, por una parte, S aA es indirectamente recursiva ya que:
S aA abS
Por otra parte, tambin la regla A bS es indirectamente recursiva, ya que:
A bS baA
As que, de las cuatro reglas de produccin contenidas en la gramtica, dos de ellas son indirectamente recursivas.
Definition Una gramtica se denomina Gramtica Recursiva si y slo si contiene alguna regla de produccin
recursiva, o bien alguna regla indirectamente recursiva.
Por lo tanto, es posible realizar la siguiente afirmacin acerca de las gramticas que describen lenguajes infinitos:
Una gramtica cuyo lenguaje es infinito, forzosamente es recursiva
Adems, la conclusin anterior conduce inevitablemente a reflexionar sobre la estructura de las reglas de produccin en
una gramtica cualquiera. Siempre es posible tener reglas que no sean ni recursivas, ni indirectamente recursivas, y algunas
veces se encontrarn reglas que s lo sean. Lo cual, inevitablemente lleva a observar que:
El lenguaje G definido por una gramtica G, siempre es
un conjunto definido inductivamente de la siguiente forma
Sea G una gramtica cualquiera, con smbolo inicial S y sea w cualquier cadena en el mismo alfabeto de G, entonces:
Todas las cadenas w que pueden ser derivadas a partir de S
Caso Base: sin usar ninguna regla recursiva o indirectamente recursiva,
pertenecen a G.
Example Sea G A, B, 0, 1, S, Rp una gramtica cuyas reglas de produccin en el conjunto Rp son las
siguientes:
S | 0B
B 1 | 1B
Para describir el lenguaje G se debe proporcionar un caso base y una regla de induccin. Segn la observacin
anterior, el caso base est formado por todas las cadenas derivables sin usar recursividad. En la gramtica existen tres reglas
de produccin que no son ni recursivas, ni indirectamente recursivas: S , S 0B y B 1. Slo existen dos cadenas
que pueden ser derivadas usando estas reglas:
S y S 0B 01
Por lo tanto, queda conformado el caso base:
Caso Base: , 01 G.
Ahora, para formar la regla de induccin, se observa la nica regla recursiva: B 1B. Segn lo establecido anteriormente,
cualquier elemento de G cuya derivacin contenga una ocurrencia del smbolo B se puede usar para agregar un paso
ms y obtener nuevos elementos de G.
La nica derivacin apta para tal proceso es:
S 0B 01
S 0B 01B 011
Ejemplos
Para finalizar esta seccin se presentan algunos ejemplos tiles de gramticas que describen lenguajes formales bastante
conocidos. En la siguiente seccin se presentarn los elementos tericos y prcticos para realizar combinaciones de
gramticas.
Example (Numerales decimales enteros) Es posible definir una gramtica para representar a los numerales decimales
enteros haciendo la sencilla observacin de que todos ellos estn formados, ya sea por un dgito, o bien por un dgito seguido
de otro numeral. As la siguiente es una gramtica correcta para el lenguaje de los numerales decimales:
Nd S, D, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, S, Rp
donde Rp est formado por las siguientes producciones:
S D | DS
D 0|1|2|3|4|5|6|7|8|9
Con esta gramtica es posible derivar cualquier numeral decimal entero, por ejemplo, el 8107 puede ser derivado de la
siguiente forma:
S DS 8S 8DS 81S 81DS 810S 810D 8107
Esta derivacin no es nica. Es posible definir distintas derivaciones de una misma cadena. Por ejemplo, el mismo
numeral anterior puede tambin ser derivado de esta otra forma:
S DS DDS D1DS D10S D10D D107 8107
Example (Numerales decimales pares) Tomando como referencia el ejemplo anterior es tambin posible definir una
gramtica para representar el lenguaje de todos los numerales decimales pares, para ello basta con observar que todo
numeral decimal par siempre termina en cero o en un dgito par:
Ndp S, D, P, N, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, S, Rp
donde Rp est formado por las siguientes producciones:
S P | NP
N D | DN
P 0|2|4|6|8
D 0|1|2|3|4|5|6|7|8|9
Por ejemplo, para derivar el numeral par 376 el proceso podra ser:
S NP DNP 3NP 3DP 37P 386
Mquinas de Estados
Las expresiones regulares tienen la capacidad de describir, de forma algebrica, la estructura de las palabras o cadenas
que forman un determinado lenguaje. Por su parte, las gramticas libres de contexto facilitan la construccin o derivacin de
todas las palabras en un determinado lenguaje. Ambos mecanismos pueden colaborar para conocer los lenguajes que se
desea estudiar, pero an resulta necesario disponer de algn otro mecanismo especfico para resolver el problema de
reconocimiento, es decir, que dada la especificacin de un lenguaje y alguna cadena en el mismo alfabeto que el lenguaje,
permita identificar si la cadena pertenece o no al lenguaje especificado.
El mecanismo necesario es justamente una mquina de estados. Estas mquinas (conceptuales o tericas) son capaces
de estar en uno de varios estados de procesamiento y, a partir del anlisis de su entrada, cambian de estado hasta agotar su
entrada o llegar a un estado final. De ah el nombre de mquinas de estados.
Esta mquina puede encontrase en cualquiera de los k estados definidos en Q. A partir de su inicio de operacin (en el
estado inicial q 0 ), el autmata "lee", en orden secuencial, cada uno de los smbolos que forman la cadena de entrada. Ante
cada smobolo encontrado en la cadena de entrada, el autmata reacciona cambiando de estado, hasta que eventualmente
examina el ltimo smbolo de la cadena de entrada. Llegado ese momento, si el estado en que se encuentra el autmata es
un estado final (alguno de los estados contenidos en el conjunto F) entonces, la cadena de entrada al autmata s pertenece al
lenguaje especificado, de lo contrario, no pertenece a dicho lenguaje.
Como se puede apreciar, no se trata de una representacin convencional de un grafo dirigido. En primer lugar se agrega
una transicin etiquetada "Inicio" para identificar el estado inicial. En segundo lugar, los estados finales o de aceptacin se
distinguen marcndolos con doble contorno o el interior sombreado como en el caso anterior. Cuando la situacin no cause
confusin, para denotar un autmata se presentar exclusivamente el grafo de su relacin de transicin. Todos los dems
elementos de la tupla correspondiente pueden ser deducidos de dicho grafo.
Aunque durante este curso propedutico no se realizan demostraciones, es importante mencionar un teorema
fundamental, debido al notable matemtico Steephen Kleene, quien en 1956 demostr que:
"La familia de lenguajes formales que pueden ser reconocidos
o aceptados por los autmatas de estados finitos, es exactamente
igual a la familia de los Lenguajes Regulares"
Este importantsimo teorema indica que los autmatas de estados finitos son justamente la mquina adecuada para
reconocer lenguajes regulares. As, para cualquier lenguaje regular, es siempre posible construir un autmata de estados
finitos que lo reconoce. Igualmente, ya que como se estudi en la seccin correspondiente, las expresiones regulares denotan
justamente la misma familia de lenguajes, entonces resulta que, a partir de la expresin regular que denota a algn lenguaje
regular, es tambin posible construir un autmata de estados finitos que reconozca justo dicho lenguaje y viceversa.
Comencemos el estudio de esta simetra presentando un algoritmo que permite construir una expresin regular que
especifique exactamente el mismo lenguaje que es reconocido por un autmata de estados finitos. Este algoritmo construye
la expresin regular a partir de la simplificacin y reordenamiento de las etiquetas de cada transicin, por ello resulta til
estudiar primero el siguiente procedimiento para simplificacin de estados en un autmata:
Algorithm Dado un autmata que relaciona los estados i y j a travs de un estado intermedio k en la forma:
Este algoritmo considera todas las transiciones importantes entre los estados i, j y k. Cuando alguna de estas
transiciones no existe se considera vaca .
Este algoritmo resulta til en ms de una forma. En primer lugar, permite la simplificacin de autmatas sin modificar el
lenguaje reconocido. En segundo lugar, establece la relacin bsica entre la transicin entre estados que realiza un autmata
y la estructura de las cadenas aceptadas (y denotadas por la expresin regular). Este algoritmo se usar en forma de
procedimiento como parte del algoritmo siguiente:
Algorithm Dado un Autmata de Estados Finitos A, construir una Expresin Regular E con la propiedad de que
E A, de la siguiente forma:
1 Crear un nuevo estado inicial (s) y una transicin,etiquetada ,
desde s hacia el estado inicial original.
Example Obtenga una expresin regular cuyo lenguaje sea exactamente el mismo que es reconocido por el siguiente
autmata:
Sin necesidad de conocer el lenguaje reconocido por el autmata, es posible seguir, paso a paso, el algoritmo anterior para
obterner la expresin regular pedida.
Tal como se indica en los primeros dos pasos del algoritmo, creamos un nuevo estado inicial que substituye al original y un
nuevo estado final que tambin substituye a todos los estados finales anteriores. En ambos casos establecemos las
transiciones indicadas por el algoritmo:
Despus, se deben eliminar sucesivamente todos los nodos anteriores del autmata. Para ello conviene identificar primero
aquellos estados por los cuales no pasa ninguna trayectoria que conecte estados adyacentes. Tal es el caso del estado (2) y,
por tanto, este estado puede ser eliminado por completo, ya que no afecta el resultado final:
En seguida parece inmediata la reduccin del estado (0) aplicando el procedimiento respectivo para simplificar la
trayectoria que une a los estados (s) y (1):
news, 1 olds, 1 olds, 0old0, 0 old0, 1
a
a
Como se mencion ms arriba, el hecho de que, tanto las expresiones regulared, como los autmatas de estados finitos,
estn asociados con los lenguajes regulares, permite establecer algoritmos de conversin en ambos sentidos. El algoritmo
anterior obtiene una expresin regular para el lenguaje reconocido por un autmata y, el algoritmo que a continuacin se
presentar opera justo de manera inversa, construyendo un autmata para reconocer el mismo lenguaje descrito por un a
expresin regular. Ambos procesos pueden realizarse de forma intuitiva y emprica cuando el lenguaje en cuestin es sencillo,
por ejemplo:
Example Construya un autmata de estados finitos que sea capaz de reconocer exactamente el mismo lenguaje que
la expresin regular a b abb sobre el alfabeto a, b.
Inicialmente se identifica que el lenguaje especificado por dicha expresin es el de todas las palabras, sobre a, b, tales
que terminan con la subcadena abb. Dicho lenguaje no es complicado de manejar y se puede, intuitivamente disear un
autmata que lo reconoce:
Observe que, la nica trayectoria desde el nodo inicial hasta el nico nodo de aceptacin pasa por todos los estados y est
etiquetada secuencialmente abb. Cualquier otro smbolo encontrado en la palabra de entrada ocasionar que el autmata
cambie a un estado que no es final.
En ocasiones, sin embargo, se puede estar estudiando un lenguaje regular que no sea tan sencillo para disear un
autmata que lo reconozca. Afortunadamente se dispone de un algoritmo general que permite, a partir de cualquier expresin
regular, disear el autmata que reconoce el mismo lenguaje.
Algorithm Para construir un Autmata de Estados Finitos, capaz de reconocer el mismo lenguaje especificado por una
Expresin Regular:
1) Crear un estado inicial y uno final, as como una transicin entre ellos etiquetada con la expresin regular en cuestin.
2) Transformar sucesivamente todos los sub-diagramas segn la siguiente tabla:
Los sub-diagramas del tipo: Transormarlos en:
Segn este algoritmo, la expresin regular correspondiente a la cerradura debe ser transformada en un diagrama que
involucra smbolos nulos. Los autmatas que contienen transiciones de este tipo (etiquetadas con el smbolo nulo) se
denominan Autmatas Finitos No-Determinsticos. En general, para distinguir a estos autmatas no-determinsticos de todos
los dems se hace notar que, para que un autmata sea no-determinstico debe cumplir alguna de las siguientes condiciones:
1 Contener transiciones etiquetadas con el smbolo nulo (transiciones nulas).
Y, aunque en este breve curso propedutico no se alcanza a estudiar el tema de los autmatas no-determinsticos, s resulta
importante mencionar que, en virtud de un importante teorema que no se presentar, todo autmata no-determinstico puede
ser transformado en un autmata determinstico, sin alterar el lenguaje que reconoce.