You are on page 1of 35

Lenguajes Formales, Gramticas y Autmatas

Dr. Salvador Godoy Caldern

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 Un Alfabeto es un conjunto finito de smbolos.


Existe siempre, en todo alfabeto, un smbolo especial llamado el Smbolo nulo ().

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.

La longitud de una palabra w se denota |w| y es siempre un nmero entero.

Example Sobre el alfabeto B 0, 1, la cadena s 10010111 tiene longitud |s| 8.

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|.

Definition Un Lenguaje, o Lenguaje Formal, es cualquier conjunto de cadenas.

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 Si A a entonces, A , a, aa, aaa, aaaa, . . . .

Cuatro sencillos lenguajes sobre A son:


, , a y , a, aa, aaa, aaaa, . . . .
Ntese que todos ellos son subconjuntos de A .
Computacionalmente resulta muy til establecer definiciones inductivas de ciertos conjuntos como A :

Definition Sea A un alfabeto conocido. El conjunto A se define inductivamente de la siguiente manera:


Caso base: A
Induccin: Si a A y adems, w A , entonces cata, w A .
Cerradura: A est formado, nica y exclusivamente por aquellos elementos
que satisfagan los dos pasos anteriores.
Algunas cadenas se pueden representar con la notacin de exponente para la concatenacin, de forma tal que, w 0 ,
w 1 w, w 2 ww, w 3 www y as sucesivamente. De esa forma, es posible representar algunos conjuntos de cadenas de
una forma ms concisa, por ejemplo:
si A a entonces A a n | n .
Igualmente,
ab n |n a, ab, abb, abbb, . . .
a n b n |n , ab, aabb, aaabbb, . . .
ab n |n , ab, abab, ababab, . . .
De forma general se utilizan letras maysculas como smbolos de alfabetos y lenguajes; las letras minsculas se usan
para representar smbolos en un alfabeto. Tambin es comn usar letras griegas maysculas para alfabetos.

Construcciones con Lenguajes


Dado que los lenguajes son conjuntos, pueden ser combinados mediante los mismos operadores de los conjuntos:
unin, interseccin, diferencia e inclusive complemento. Adems, los lenguajes formales son cerrados en el mismo sentido
que los conjuntos lo son. Por ejemplo, las siguientes operaciones entre lenguajes formales dan como resultado otro lenguaje
formal:
La unin de dos lenguajes L 1 L 2 es tambin un lenguaje
La interseccin de dos lenguajes L 1 L 2 es tambin un lenguaje
La diferencia entre dos lenguajes L 1 L 2 es tambin un lenguaje
El complemento de un lenguaje L L es tambin un lenguaje

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

Example Si L ab, ac y M x, xy, xz, entonces:


L M abx, abxy, abxz, acx, acxy, acxz
De manera semejante al uso de la notacin de exponente para palabras, tambin es posible usar dicha notacin para
lenguajes. La siguiente es una defincin inductiva de ese operador:

Definition Si L es un lenguaje y n un nmero natural, entonces:


Caso base: L 0
Induccin: L n L L n1
Cerradura: L n est formado, nica y exclusivamente por aquellos elementos
que satisfagan los dos pasos anteriores.

Example Si L 0, 11 es un lenguaje sobre el alfabeto B 0, 1, entonces:


L
0

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.

Example Si A a, b es un alfabeto y L a, ab, abb, . . . , ab n , . . . es un lenguaje sobre A, Es L un lenguaje


regular?
La respuesta es s, puesto que L se puede expresar como el producto de los dos siguientes lenguajes:
L a, ab, abb, . . . , ab n , . . . a , b, bb, . . . , b n , . . .
y, a su vez, el segundo conjunto es equivalente a b , por lo tanto:
L a b
lo cual, por definicin, es un lenguaje regular.
Example Sobre el mismo alfabeto anterior Ser regular el siguiente lenguaje?
, a, b, aa, bb, . . . , a n , b n , . . .
Nuevamente la respuesta es s, ya que:
, a, b, aa, bb, . . . , a n , b n , . . . , a, aa, . . . , a n , . . . , b, bb, . . . , b n , . . .
a b
y ambos son, por definicin, lenguajes regulares.

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 .

Cerradura: Las expresiones regulares son, nica y exclusivamente aquellas


que satisfagan los dos pasos anteriores.

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:

Example Para determinar el lenguaje denotado por la expresin regular:


a bc
sobre el alfabeto a, b, c, se puede proceder de la siguiente forma:
a bc a bc
a b c
a b c
a b c
a b , c, cc, ccc, . . .
a b, bc, bcc, bccc, . . .
a, b, bc, bcc, bccc, . . .
es decir, "el lenguaje de las cadenas sobre , formadas, ya sea por el smbolo a, o bien por un smbolo b seguido por
cero o ms ocurrencias del smbolo c ".

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, . . .

Propiedades de las Expresiones Regulares

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 del producto: 5 R R


6 R R R
7 RST RST

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.

Las reglas de produccin de una gramtica son todas de la forma:


ledo: "alfa produce beta"
y el conjunto R de reglas debe cumplir las siguientes restricciones:

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"

2) Substituir el smbolo inicial por la parte


derecha de alguna produccin cuyo lado "bA"
izquierdo sea justo dicho smbolo
3) De la misma forma, substituir cada smbolo
no-terminal por el lado derecho de alguna "baaA"
produccin con dicho smbolo en su lado izquierdo
hasta que la cadena no contenga ningn "baaaaA"
smbolo no-terminal.
"baaaab"

Es decir, el lenguaje G de la gramtica G se puede explicar de la siguiente forma:


Todas las cadenas, sobre el alfabeto a, b, tales que
comienzan y terminan con el smbolo b y en medio
contienen cero o ms parejas de smbolos a.
As, todas las siguientes cadenas forman parte de G :

, bb, baab, baaaab, baaaaaab, . . .


pero todas las siguientes cadenas NO son parte de ese lenguaje porque no es posible construirlas a partir de las reglas de
produccin en G :
ab, aa, bab, abab, bbabb, aabbaa. . .

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.

Si w G y alguna derivacin S w contiene un smbolo


Induccin: no-terminal de alguna regla recursiva o indirectamente recursiva,
entonces agregar un paso ms a la derivacin, usando dicha
regla para obtener S x y entonces, x G.

G est formado nicamente por aquellos smbolos


Cerradura:
considerados en esta definicin y por ningn otro.

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

Si se agrega un paso ms, usando para ello la regla recursiva, se obtiene:

S 0B 01B 011

Y as queda conformada la regla de induccin de la siguiente forma:

Si x es una cadena formada exclusivamente por smbolos 1,


Induccin:
y 0x G, entonces tambin 01x G .

Agregando la clusula de cerradura, se tiene completa la definicin inductiva de G.


De acuerdo a esa definicin, 01 G implica que 011 G. Si ahora se usa ese conocimiento se puede deducir, por
la regla de induccin que 0111 G y tambin que 01111 G. En general, esa estructura sugiere que:
G 01 n |n

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

Autmatas de Estados Finitos


Hasta este momento se han estudiado los lenguajes formales, regulares y libres de contexto. Se han estudiado tambin
dos mecanismos para describir a estos lenguajes: las expresiones regulares y las gramticas. Ahora corresponde estudiar la
relacin entre los lenguajes formales y la teora de mquinas. Estas mquinas son elementos complementarios a las
gramticas y que permiten resolver el problema de reconocimiento de un lenguaje de forma eficaz y elegante. Los Autmatas
de Estados Finitos que se presentan en esta seccin constituyen el fundamento terico y operativo de las computadoras
modernas.

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.

Definition Un Autmata de Estados Finitos (AF) es una tupla de la forma:


, Q, , q 0 , F
donde:
Es un Alfabeto de referencia
Q Es un conjunto Q q 0 , q 1 , . . . , q k de Estados de Operacin
Es una Relacin de Transicin definida : Q Q
q0 Es un elemento de Q, denominado Estado Inicial
F Es un subconjunto F q p , . . . , q q Q de Estados Finales

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.

Example Considere el siguiente AF:


a, b, q 0 , q 1 , q 2 , , q 0 , q 1
donde la relacin est dada por la siguiente matrz:
a b
q0 q1 q2
q1 q1 q1
q2 q2 q2
En este caso, el autmata opera sobre el alfabeto a, b, tiene tres estados q 0 , q 1 , q 2 , de los cuales q 0 es el estado inicial y
slo q 1 es un estado final o de aceptacin. La relacin expresa el funcionamiento del autmata, esta relacin
tradicionalmente se representa, ya sea en forma tabular como se acaba de presentar, o bien, en forma de grafo dirigido. La
misma relacin anterior se expresa como grafo as:

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.

Example Considere el autmata siguiente:


Al observar el grafo de la relacin de transicin debe resultar claro que se trata de un autmata cuya tupla definidora es:
a, b, 0, 1, 2, 3, , 0, 3
y que la relacin de transicin es justamente representada por el grafo.

Autmatas y Lenguajes Regulares


Dependiendo de su estructura y su relacin de transicin un autmata de estados finitos es capaz de reconocer un
determinado conjunto de palabras sobre el alfabeto que opera. Al igual que en el caso de las gramticas, al conjunto de
cadenas aceptadas o reconocidas por un autmata de estados finitos A, se le denomina el Lenguaje del Autmata y tambin
se denota A.

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:

lo cual se denotar algebricamente como:


oldi, j
simplificar el autmata, eliminando el estado intermedio y creando una sola transicin desde el estado i hacia el estado j,
cuya etiqueta est dada por la expresin regular:
newi, j oldi, j oldi, koldk, k oldk, j

Este algoritmo considera todas las transiciones importantes entre los estados i, j y k. Cuando alguna de estas
transiciones no existe se considera vaca .

Example Simplifique el siguiente autmata, eliminando el estado intermedio:


Siguiendo el algoritmo anterior y considerando que la transicin directa entre i y j no est presente, entonces:
newi, j oldi, j oldi, koldk, k oldk, j
aa b
aa b
y, por lo tanto, la simplificacin pedida es:

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.

2 Crear un nuevo estado final (f ) y transiciones, etiquetadas ,


desde todos los estados finales originales hacia el nuevo estado

3 Por cada pareja de estados i , j que presenten ms de una


transicin entre ellos, reemplazarlas todas por una sola transicin
etiquetada con la expresin regular de la suma de todas las
etiquetas anteriores.

4 Usando el procedimiento de eliminacin de estados visto anteriormente,


eliminar un estado a la vez en el autmata, hasta que los nicos estados
restantes sean s y f . Al llegar ese momento la etiqueta de la nica
transicin restante ser la expresin regular buscada.
Veamos un ejemplo del funcionamiento de este algoritmo:

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

Por lo que el autmata queda:

Por ltimo, eliminar el estado (1) usando el mismo procedimiento:


news, f olds, f olds, 1old1, 1 old1, f
a a b

aa b

Con lo cual se llega a la expresin buscada.

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).

2 Contener, en por lo menos un estado, dos o ms transiciones etiquetadas


con el mismo smbolo

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.

You might also like