Вы находитесь на странице: 1из 16

1.

LENGUAGES REGULARES
Este tema tiene que ver con un modelo computacional matemtico utilizado para
evidenciar cierto tipo de tarea que un computador real puede hacer.

1.1 CONCEPTOS RELACIONADOS A LA TEORA DE AUTMATAS
- Alfabeto.
Es un conjunto finito no vaco de smbolos. Comnmente se utiliza el smbolo . Ejemplos de
alfabeto son = {0, 1} y ={a, b, z}.

- String.
Es una secuencia de smbolo de un alfabeto determinado. Por ejemplo, la cadena 1101 es un
string sobre el alfabeto {0, 1}.

- El string vaco.
Es una cadena sin smbolos que se aplica sobre cualquier alfabeto. Este string se simboliza por
e. Es posible que nosotros apliquemos el smbolo . La longitud de una cadena es el nmero de
posiciones que ocupan los smbolos que conforman la cadena. Por ejemplo, la cadena 1101
tiene longitud 4 (Observe que la cadena solamente tiene dos smbolos, los cuales ocupan
cuatro posiciones en la cadena). y la cadena aabbzxy tiene longitud 7. Por lo general, la
longitud se simboliza encerrando el string entre barras vertical, |. As que |aabbzxy| = 7.

- Potencia de un alfabeto.
Si es un alfabeto, podemos expresar el conjunto de todas las cadenas de una longitud
determinada de dicho alfabeto, utilizando una notacin exponencial. Se define
k
como el
conjunto de cadenas, sobre , de longitud k. Note que
0
= { }.

Por ejemplo, si = {0, 1}, entonces,
1
= {0, 1},
2
={ 00, 01, 10, 11].

Por convenio, el conjunto de todas las cadenas posibles de un alfabeto , se representa como

*
. Por ejemplo, si = {0, 1}, entonces
*
= {, 0, 1, 00, 01, 10, 11, 000, 001, }. Otra forma de
expresarlo es,
*
=
0

1

2


Cuando se desea excluir a la cadena vaca del conjunto potencia, este conjunto se simboliza por

+
y es igual a
*
- {}.

- Concatenacin de cadenas.
Si w y x son strings, la concatenacin de w y x, denotada por wx, es el string que se obtiene
haciendo una copia de w seguida de una copia de los smbolos de x. Se quiere decir que si w =
aabb y x=xyz, entonces wx=aabbxyz.


- Lenguajes.
Se denomina as, a un conjunto de cadenas, todas ellas elegidas de algn
*
, donde es un
alfabeto. Algunos ejemplos de lenguajes son:
o El lenguaje conformado por todas las cadenas que tienen n ceros consecutivos,
seguidos de n unos consecutivos, para cualquier n > 0: {, 01, 0011, 000111, }
o El conjunto de todas las cadenas de ceros y unos con igual nmero de ceros y unos. Es
decir, {, 01, 10, 0011, 0110, ]

1.2 AUTMATAS FINITOS (AF)
Los autmatas finitos son buenos modelos computacionales que tienen como caracterstica una
cantidad de memoria extremadamente limitada.

Qu se puede hacer con una cantidad tan pequea de memoria?

Nosotros interactuamos con muchos dispositivos que pueden modelarse como autmatas finitos.
Un ejemplo de estos es el controlador de una puerta automtica que muchas veces se encuentran
en las entradas a supermercados. Enseguida, se presenta el AF que modela este mecanismo.












Este controlador es un computador que tiene slo un bit de memoria capaz de recordar en cul de
los dos estados el controlador se encuentra.

Otro ejemplo que podemos modelar a travs de un AF es el control de un elevador, en el cual un
estado puede ser el piso en el que el elevador est y las entradas pueden ser las seales recibidas
desde los botones de mando.

Existen otros ejemplos adicionales de controladores que pueden modelarse como AF.

Los autmatas finitos son herramientas tiles en el reconocimiento de patrones de datos. Estos
dispositivos son utilizados en el procesamiento del habla y en el reconocimiento de caracteres
pticos.

El diseo de tales dispositivos requiere que se tenga en mente la terminologa y metodologa de AF.

Intentaremos ahora, dar una definicin formal de AF. Antes, se introducirn los conceptos y
trminos de una manera abstracta



- Al anterior dibujo se le denomina un diagrama de estado.
- En este diagrama se hallan tres estados, etiquetados como q
1
, q
2
y q
3
.
- En el diagrama existe un estado inicial que es el estado q
1
el cual se identifica por la flecha
que llega a l desde ningn otro estado.
- En el diagrama existe un estado de aceptacin etiquetado como q
2
, el cual se identifica
porque es un doble crculo.
- Las flechas que van de un estado a otro se denominan transiciones.
- El autmata recibe como entrada un string y produce como salida si no, esta ltima
representa que el autmata acepta rechaza la entrada.
- Ilustremos el comportamiento del autmata para una cadena de entrada tal como 1101:
o Inicia en q
1
.
Alguna persona
cerca
Ninguna persona
cerca
Ninguna persona
cerca
Alguna persona
cerca
open close
o Lee un 1, entonces transiciona de q
1
a q
2
.
o Lee un 1, entonces transiciona de q
2
a q
2
.
o Lee un 0, entonces transiciona de q
2
a q
3
.
o Lee un 1, entonces transiciona de q
3
a q
2
.
o Acepta la entrada porque terminada el procesamiento de la entrada, el AF se
encuentra en el estado de aceptacin q
2
.

DEFINICIN FORMAL DE UN AUTMATA FINITO
Un autmata finito es una quntupla (Q, , o, q
0
, F) donde
1. Q es un conjunto finito llamado conjunto de estados.
2. es un conjunto finito llamado el alfabeto.
3. o:Q x Q es la funcin de transicin.
4. Q
0
e Q es el estado inicial.
5. F _ Q es el conjunto de estados de aceptacin.

Podemos usar la definicin formal para describir autmatas finitos individuales, especificando cada
una de las cinco partes listadas en la definicin anterior. Por ejemplo, retornando al autmata de la
figura 2, podemos describirlo formalmente reescribiendo tal autmata M = (Q, , o, q
1
, F), donde:
1. Q = { q
1
, q
2
, q
3
}.
2. = { 0, 1 }.
3. La funcin de transicin se describe asi:
o( q
1
, 0) = q
1
o( q
1
, 1) = q
2

o( q
2
, 0) = q
3
o( q
2
, 1) = q
2

o( q
3
, 0) = q
2
o( q
3
, 1) = q
2

4. El estado inicial es q
1
y
5. F = {q
2
}.

Si A es el conjunto de todos las cadenas que el autmata M acepta, decimos que A es el lenguaje
del autmata, lo cual simbolizamos como L(M) = A. Se dice, tambin, que M reconoce A. para el
ejemplo que estamos considerando,

A = {w | w contiene al menos un 1 y un nmero par de ceros seguidos de al menos un 1}

EJEMPLOS DE AUTMATAS FINITOS
En los siguientes ejemplos, se pide a los alumnos que describan formalmente los AF y digan cul es
el lenguaje que reconocen.
1. Ejemplo Uno


2. Ejemplo dos.

3. Ejemplo Tres





4. Ejemplo cuatro


DEFINICIN FORMAL DE COMPUTACIN
Hasta el momento hemos descrito AF de una manera formal e informal. La manera informal hace
ms fcil la comprensin de los AF y la manera formal impone rigurosidad y con ellos resolvemos
cualquier ambigedad. Enseguida, se hace una definicin formal de la computacin de un
autmata.

Hagamos M = (Q, , o, q
0
, F) un AF, y supongamos que w = w
1
w
2
w
n
es una cadena donde cada w
i

es un elemento de . Entonces, M acepta w si una secuencia de estados r
0
, r
1
, , r
n
en Q existe con
estas tres condiciones:
1. r
0
= q
0
. La mquina inicia en el estado inicial.
2. o(r
i
, w
i+1
) = r
i+1
. Se mueve de estado en estado de acuerdo con la funcin de transicin.
3. r
n
e F. La mquina acepta su entrada si finaliza en un estado de aceptacin.


DEFINICIN DE LENGUAJE REGULAR. Un lenguaje se dice que es un lenguaje regular si algn
autmata finito lo reconoce.

DISEANDO AUTMATAS FINITOS
NOTA
Un tratamiento alternativo de la computacin de un autmata utiliza una definicin extendida
de la funcin de transicin para que acepte toda una cadena en lugar de un smbolo del
alfabeto. Enseguida presentamos esta definicin.

o : Q x
*
Q
Adicionalmente, esta funcin debe cumplir las siguientes condiciones:
1. o(q, ) = q y
2. o(q, wa) = o(o(q, w), a)
o(q
1
,1101) = o(o(q
1
,110),1) = o(o(o(o(q
1
,1),1),0),1) = o(o(o(q
2
,1),0),1)= o(o( q
2
,0),1)=
o( q
3
,1) = q
2


El lenguaje A que reconoce este autmata se define de la siguiente forma:

L(A) = {w e
*
| o(q
0
, w) e F}
Sabemos todos que cualquier actividad de diseo es un proceso creativo y no se puede dar una
especie de receta de cocina para ello, porque entonces ya no habra diseo. Sin embargo, se
pueden dar algunos consejos tiles para que el diseo sea efectivo. En el caso que nos concierne se
recomienda meterse usted mismo en el lugar de la mquina que est intentando disear y observe
cmo hara para ejecutar usted las actividades de la mquina. Pretender que usted est en la
mquina es un truco sicolgico que le ayuda a ocupar su mente completa en el proceso de diseo.

EJERCICIO UNO. A manera de ejercicio, construya un AF que reconozca el lenguaje, sobre el
alfabeto {0, 1}, conformado por todas las palabras que tienen un nmero impar de 1s.

EJERCICIO DOS. Construya un AF que reconozca el lenguaje conformado por todas las cadena sobre
el alfabeto {0, 1} que contienen la cadena 001 como subcadena.

LAS OPERACIONES REGULARES
Por medio de estas operaciones podremos investigar propiedades de los lenguajes regulares. Se
definen tres operaciones en los lenguajes regulares, denominadas operaciones regulares.

DEFINICIN.
Supongamos que A y B son lenguajes. Se definen las operaciones de unin, concatenacin y
cerradura de la siguiente forma:
Unin: A B = {x | x eA o x e B}.
Concatenacin: A.B = {xy | x e A e y e B}.
Cerradura: A
*
= {x
1
x
2
x
k
| k > 0 y cada x
i
e A}.

La cerradura es una operacin unaria y consiste en concatenar cualquier nmero de cadenas en A
para obtener una cadena en el nuevo lenguaje.

Ejemplo.
Supongamos que el alfabeto es el conjunto de letras del Castellano. Si A={bueno, malo}, entonces
A
*
= {, bueno, malo, buenobueno, buenomalo, malobueno, malomalo, buenobuenobueno, }.

1.3 AUTMATA FINITOS NO DETERMINISTA (AFN)
Concepto de gran utilidad que ha tenido un gran impacto en la teora de la computacin. Los AF
siempre se encuentran en un nico estado en cualquier momento, por el contrario, los AFN tienen
la capacidad de encontrarse en varios estados simultneamente.

En un AF, cuando el autmata se encuentra en un estado determinado y lee el siguiente smbolo de
la cadena de entrada, sabemos que l transiciona a otro estado nico. Por eso lo denominamos
determinismo. En un AFN, la transicin de la mquina desde un estado cualquiera y por la lectura
del siguiente smbolo de la cadena de entrada, puede alcanzar varios estados.

El no determinismo es una generalizacin del determinismo, por lo que un AF determinista es
automticamente un AFN.

El siguiente diagrama constituye un ejemplo de un AFN.



Como puede observarse del diagrama, un AFN tiene varias diferencias con un AFD:
- En un AFN se puede transicionar con un mismo smbolo a varios estados distintos. Esto se
evidencia en el estado 1 con el smbolo 1.
- En un AFN puede haber transiciones etiquetadas con el smbolo c (Para nosotros es ).

Cmo hace su clculo un AFN?
Enseguida se ilustra una simple corrida del AFN anterior, para la entrada 010110


Los AFN son tiles en varios aspectos:
- Cualquier AFN puede ser convertido a un AFD equivalente, y construir un AFN es, algunas
veces, ms fcil que construir directamente un AFD.
- Un AFN resulta ser ms pequeo que su AFD equivalente.

EJERCICIO UNO
Dibujar el AFN que reconozca el lenguaje sobre el alfabeto {0, 1} conformado por todas las palabras
que tienen como antepenltimo smbolo un 1.

EJERCICIO DOS
Cul es el lenguaje reconocido por el siguiente AFN?

DEFINICIN FORMAL DE UN AFN
Un autmata finito no determinista es una quntupla (Q, , o, q
0
, F), donde:
1. Q es un conjunto finito de estados.
2. es un alfabeto finito.
3. o: Q x ( c) 2
Q

4. q
0
es el estado inicial.
5. F _ Q es el conjunto de estados de aceptacin

EJERCICIO TRES
Describa formalmente el AFN del ejercicio uno.

La definicin formal de computacin de un AFN es similar a la de un AFD. Supongamos que N = (Q,
, o, q
0
, F) es un AFN y w es una cadena sobre el alfabeto . Decimos que N acepta w si podemos
escribir w = y
1
y
2
y
m
, donde cada y
i
es un elemento de ( c) y una secuencia de estados r
0
, r
1
,
r
m
existe en Q con tres condiciones:
1. r
0
= q
0

2. r
i+1
e o(r
i
, y
i+1
), para cada i = 0, , m-1 y
3. r
m
e F.
La condicin 1 dice que el AFN inicia en el estado inicial. La condicin 2 dice que el estado r
i+1
uno
de los estados alcanzables cuando N se encuentra en el estado r
i
y lee y
i+1
. Finalmente la condicin 3
establece que la mquina acepta su entrada si el ltimo estado es un estado de aceptacin.
EQUIVALENCIA ENTRE AFN Y AFD
Los AFN y AFD reconocen la misma clase de lenguajes.
Se dice que dos autmatas son equivalentes si ellos reconocen el mismo lenguaje.
TEOREMA
Cualquier autmata finito no determinista tiene un autmata finito determinista equivalente.
QU IDEAS PUEDEN AYUDARNOS A PROBAR EL ANTERIOR TEOREMA?
La estrategia de prueba adecuada sera la de construccin. Debemos encontrar un procedimiento
general que nos permita obtener un AFD desde cualquier AFN, este AFD encontrado simular el
AFN.
Con respecto a la funcin de transicin, recuerde que un AFN podra encontrarse en varios estados
en un instante determinado. Pues bien, todos esos estados paralelos pueden ser un nico estado
del AFD. Adicionalmente, cuando el AFN encuentra una transicin c en su camino, l se mueve
automticamente al estado que lo lleva esa transicin nula. Eso es algo que debe considerarse al
momento de hacer la conversin.
Para considerar todas las posibilidades de conjunto que el AFD debe recordar, el conjunto de
estados del AFD debe ser 2
k
donde k es el nmero de estados del AFN.
PRUEBA
Supongamos que N=(Q, , o, q
0
, F) es el AFN que reconoce al lenguaje A. Construimos un DFA
M=(Q, , o, q
0
, F) que reconoce A mediante el siguiente procedimiento:
1. Q = P(Q)=2
k

Cualquier estado de M, es un subconjunto de estados de Q.
2. Para todo R e Q y para todo a e , hagamos o(R, a) = o
e
para algn r e R.
NOTA
Al igual que en el caso de AFD, la aceptacin de una palabra por parte de un AFN exige la
extensin de la definicin de la funcin de transicin:
o:Q x (
*
c) 2
Q

1. o(q, c) = {q}
2. o(q, wa) = o
eo


En realidad, se puede extender ms el dominio de la funcin de transicin:
o:2
Q
x (
*
c) 2
Q
y redefinirla de la siguiente forma
o(X, w) = o
e


El lenguaje formal reconocido por un AFN A es entonces
L(A)={w e
*
| o(q
0
, w) F = C}
Si R es un estado de M, tambin es un subconjunto de estados de N. Cuando M lee un smbolo
a desde un estado R, el puede alcanzar un subconjunto de estados de N, entonces tomamos la
unin de todos estos estados.
3. q
0
= {q
0
}.
M inicia en el estado correspondiente a la coleccin que contiene slo el estado inicial de N.
4. F = {R e Q | R contiene un estado de aceptacin de N}
La mquina M acepta si uno de los posibles estados en los que N podra estar en este punto es
un estado de aceptacin.
Note usted, que la anterior construccin no consider el hecho que los AFN pueden incluir
transiciones c. Vamos ahora a incluir en esta construccin este hecho, lo cual implica hacer una
definicin adicional.
DEFINICIN. Para cualquier estado q de N, se define la funcin cerradura de q, simbolizada como
C(q), como el conjunto de estados alcanzables desde q solamente por transiciones c, incluyendo al
mismo q. De una manera ms formal,
- Para todo q e Q se tiene que q es un elemento de C(q).
- Si p e C(q) entonces o(p, c) c C(q).
Este concepto tambin es aplicable al conjunto potencia de Q, de la siguiente forma:
_
e

Ahora, modificamos la funcin de transicin de M para que tome en consideracin todos los
estados que pueden ser alcanzados a travs del smbolo c despus de cualquier paso.
o(R, a) = o
e
para algn r e R
Adicional a lo anterior, necesitamos modificar el estado inicial de M para que incluya a todos los
posibles estados que pueden ser alcanzados desde el estado inicial de N con el smbolo c. Por tanto
q
0
= C(q
0
).
De esta manera, se completa la construccin del AFD M que simula el AFN N y, por tanto, la prueba
completa.
El anterior teorema establece que cualquier AFN puede ser convertido en un AFD equivalente, lo
que a su vez se traduce en que los AFN son una forma alterna de caracterizar los lenguajes
regulares. Esto, formalmente se describe en el siguiente corolario
COROLARIO
1

Un lenguaje es regular si y slo si algn autmata finito no determinista lo reconoce
EJEMPLO
Ilustraremos el procedimiento dado en la prueba del teorema anterior, convirtiendo un AFN a AFD
usando la mquina N que aparece en la siguiente figura.



1
Este corolario se deja como demostracin a los alumnos.



CERRADURA BAJO LAS OPERACIONES REGULARES
En el numeral 1.2 se definieron las operaciones regulares, las cuales resultan muy tiles al estudiar
ciertas propiedades de los lenguajes regulares. Intentaremos de mostrar enseguida que la coleccin
de lenguajes regulares es cerrado bajo las tres operaciones regulares

TEOREMA
La clase de lenguajes regulares es cerrado bajo la operacin de unin.

Esto quiere decir que si A y B son lenguajes regulares, entonces AB tambin es regular

PRUEBA
El tipo de prueba que vamos a realizar es por construccin.

Supongamos que M
1
reconoce A, donde M
1
= (Q
1
, , o
1
, q
1
, F
1
), y que M
2
reconoce B, donde
M
2
=(Q
2
, , o
2
, q
2
, F
2
).

Vamos a construir M que reconozca AB, donde M=(Q, , o, q
0
, F) donde:
1. Q={(r
1
,r
2
) | r
1
eQ
1
y r
2
eQ
2
}
En este caso, el conjunto de estados del nuevo autmata es el producto cartesiano de los
conjuntos Q
1
y Q
2
, donde la primera componente pertenece a Q
1
y la segunda componente
pertenece a Q
2
.
2. El alfabeto de M, para esta demostracin, es el mismo de M
1
y M
2
. Si fueran diferentes,
entonces =
1

2
.
3. La funcin de transicin o se define de la siguiente manera. Para cada par (r
1
, r
2
) e Q y para
cada smbolo a e , hacemos
o((r
1
, r
2
), a) = ( o
1
(r
1
, a) , o
2
(r
2
, a) ).

De aqu, que o con un estado de M y con un smbolo de entrada, retorna el siguiente estado de
M.
4. El estado inicial de M, q
0
= (q
1
, q
2
).
5. El conjunto de estados de aceptacin F = {(r
1
, r
2
) | r
1
e F
1
y r
2
e F
2
}.

Esto concluye la demostracin por construccin del autmata finito M que reconoce la unin de A y
B. Como puede verse del procedimiento, la construccin es simple y no requiere de una prueba
formal exacta.

PRUEBA ALTERNATIVA USANDO UNA CONSTRUCCIN CON AFN
La idea es tomar dos AFN N
1
y N
2
que reconocen a los lenguajes A y B respectivamente y
combinarlos en un nuevo AFN N.

El autmata N acepta su entrada si N
1
o N
2
acepta esa misma entrada. La nueva mquina tiene un
nuevo estado de inicio que transiciona a los estados iniciales de las mquinas N
1
y N
2
con transicin
c. De esta forma, la mquina no determinstica adivina cul de las dos mquinas acepta la entrada.
Si una de ellas la acepta, la mquina N la acepta tambin.

PRUEBA REAL
Supongamos que N
1
= (Q
1
, , o
1
, q
1
, F
1
) reconoce el lenguaje A, y que N
2
=(Q
2
, , o
2
, q
2
, F
2
) reconoce
el lenguaje B.

Construimos N = (Q, , o, q
0
, F) que reconoce a A B de la siguiente forma:
1. Q = Q
1
Q
2
{q
0
}
Los estados de N son los estados de las N
1
y N
2
ms el nuevo estado inicial q
0
.
2. El estado q
0
es el estado inicial de N.
3. El conjunto de estados de aceptacin F = F
1
F
2
.
4. Definimos o de tal forma que para cualquier q e Q y cualquier a e se tiene:

o {
o



Cuando q=q
0
y a=c entonces o(q, a) = C.


TEOREMA
La clase de lenguajes regulares es cerrado bajo la operacin de concatenacin.

PRUEBA
La idea consiste en tomar dos AFN N
1
y N
2
para los lenguajes A y B y combinarlos en un nuevo AFN
N, en donde el estado inicial de N sea el mismo de N
1
y se agregue una transicin c desde el estado
final de N
1
al estado inicial de N
2
. Los estados de aceptacin de N son los mismos estados de
aceptacin de N
2
. La entrada de acepta siempre que pueda dividirse en dos partes, la primera
aceptada por N
1
y la segunda por N
2
. Enseguida se presenta el procedimiento de construccin que
constituye la prueba.

Supongamos que N
1
=(Q
1
, , o
1
, q
1
, F
1
) es el autmata que reconoce el lenguaje A y que
N
2
=(Q
2
,,o
2
,q
2
,F
2
) es el autmata que reconoce el lenguaje B.

Construyamos N=(Q, , o, q
1
, F
2
) el autmata que reconoce AB mediante el siguiente
procedimiento:
1. Q = Q
1
Q
2

2. El estado inicial del autmata es el mismo estado inicial de N
1
, es decir q
1
.
3. El conjunto de estados de aceptacin del autmata es el mismo conjunto de estados de
aceptacin de N
2
, es decir F
2
.
4. Se define o, la funcin de transicin, para cualquier q e Q y cualquier a e de la siguiente
forma:
o(q, a) = o
1
(q, a) para todo q e Q
1
y q e F
1
o(q, a) = o
1
(q, a) para todo q e F
1
y a = c
o(q, a) = o
1
(q, a) {q
2
} para todo q e F
1
y a = c
o(q, a) = o
2
(q, a) para todo q e Q
2
.

TEOREMA
La clase de lenguajes regulares es cerrada bajo la operacin de cerradura.

PRUEBA
Tenemos un lenguaje regular A y deseamos probar que A
*
es tambin regular.
Tenemos entonces un AFN N
1
que reconoce a A y lo modificaremos para que reconozca A
*
,
simplemente agregando un nuevo estado de inicio que transicione al estado de inicio de N
1
con el
smbolo c. Debemos hacer este estado inicial un estado de aceptacin, para que se acepte entonces
la palabra nula. Despus, hacemos transicionar los estados de aceptacin de N
1
al estado inicial de
N
1
con la palabra nula, dando la posibilidad de que se repite la aceptacin de un nuevo elemento de
N
1
. Enseguida formalizamos el procedimiento.

Supongamos que N
1
=(Q
1
, , o
1
, q
1
, F
1
) es el autmata que reconoce el lenguaje.

Construyamos N=(Q, , o, q
0
, F) el autmata que reconoce A
*
mediante el siguiente procedimiento:

1. Q = q
0
Q
1
.
2. El estado inicial del autmata es el nuevo estado q
0
.
3. F = {q
0
} F
1
.
4. Se define o, la funcin de transicin, para cualquier q e Q y cualquier a e ( c) de la
siguiente forma:
o(q, a) = o
1
(q, a) para todo q e Q
1
y q e F
1
o(q, a) = o
1
(q, a) para todo q e F
1
y a = c.
o(q, a) = o
1
(q, a) {q
1
} para todo q e F
1
y a = c.
o(q, a) = {q
1
} siempre que q=q
0
y a = c.
o(q, a) = C si q=q
0
y a = c.

1.4 EXPRESIONES REGULARES
Podemos usar las operaciones regulares para construir expresiones que describen, o definen,
lenguajes que son llamados lenguajes regulares. Por ejemplo:

(0 | 1)0
*

El valor de una expresin regular es un lenguaje.

Las expresiones regulares son un mecanismo poderoso en las aplicaciones que involucran textos
que los usuarios desean buscar cadenas que concuerdan con un patrn determinado. Tales
patrones son expresados mediante las expresiones regulares.

Veamos otro ejemplo de una expresin regular

(0 | 1)
*

As como en la aritmtica nosotros decimos que el operador x tiene mayor precedencia que +, para
significar que cuando se presente el momento nosotros debemos escoger realizar la operacin x
antes que la suma, de la misma manera las operaciones regulares tienen unas reglas de
precedencia. La operacin cerradura se hace primero, seguida por la operacin de concatenacin y,
por ultimo, la unin, a no ser que se utilicen parntesis para indicar el orden en que deben
realizarse las operaciones.

DEFINICIN FORMAL DE UNA EXPRESIN REGULAR
Se dice que R es una expresin regular si R es
1. a para cualquier smbolo a en .
2. c
3. C
4. (R
1
R
2
), donde R
1
y R
2
son expresiones regulares,
5. (R
1
R
2
), donde R
1
y R
2
son expresiones regulares o
6. (R
1
*), donde R
1
es una expresin regular.
En los tems 1 y 2, la expresin regular a y c representan los lenguajes {a} y {c},
respectivamente. En el literal 3, la expresin regular C representa el lenguaje vaco. En los
tems 4, 5 y 6, la expresin representa el lenguaje obtenido tomando la unin o concatenacin
de los lenguajes R
1
y R
2
, o la cerradura del lenguaje R
1
.

Cuando deseemos distinguir entre una expresin regular R y el lenguaje que el describe, se escribe
L(R) para simbolizar el lenguaje que representa la expresin R.

EJEMPLOS
1. 0*10*
2. *1*
3. *001*
4. 1*(01
+
)*
5. ()*
6. 01 | 10
7. 0*0 | 1*1 | 0 | 1
8. 0*10*(0*10*10*)*

Las expresiones regulares son herramientas tiles en el diseo de compiladores para los lenguajes
de programacin. Los elementos elementales en un lenguaje de programacin que son llamados
token, tales como nombres de variables, constantes, se expresan o describen a travs de las
expresiones regulares. Enseguida presentamos un ejemplo de expresin regular que define una
constante numrica.

(+ | - | c) (D
+
| D
+
.D
*
)
L (L|D|_)*
(+|-|*|/|<|>|..)
si

EQUIVALENCIA CON LOS AUTMATAS FINITOS
Los AF y las expresiones regulares son equivalentes en su poder de descripcin.

Cualquier expresin regular puede ser convertida a un AF que reconoce el lenguaje que ella
describa y viceversa. Recuerde que un lenguaje regular es aqul que puede ser reconocido por
algn autmata finito.

TEOREMA
Un lenguaje es regular si y slo si alguna expresin regular lo describe.

Este teorema tiene dos direcciones y se probar cada parte separada como un lema.

LEMA
Si un lenguaje es descrito por una expresin regular, entonces l es regular.

PRUEBA
Convertiremos R en un AFN N. Se consideran los seis casos en la definicin formal de una expresin
regular.
1. R = a para cualquier a en . Entonces L(R) = {a} y el siguiente AFN reconoce L(R).

2. R = c. Entonces L(R) = { c } y el siguiente AFN reconoce L(R).

3. R = C. Entonces L(R) = C y el siguiente AFN reconoce L(R).


4. R = R
1
R
2
.
5. R = R
1
R
2

6. R = R*

Para estos ltimos tres casos, usamos las construcciones dadas en las pruebas que las clases de
lenguajes regulares es cerrado bajo las operaciones regulares.

Esto finaliza la prueba del lema (primera parte de la demostracin del teorema precedente)

Vamos a utilizar este procedimiento para convertir expresiones regulares a AFN.

EJEMPLO
Convertir la expresin (a | ab)* a un AFN en una secuencia de pasos.

EJEMPLO
Convertir la expresin (a | ab)*aba a un AFN en una secuencia de pasos.

LEMA
Si un lenguaje es regular, entonces l se describe por una expresin regular.

PRUEBA
Necesitamos mostrar que si un lenguaje A es regular, entonces una expresin regular lo describe.
Como A es regular, l es aceptado por un AFD. Debemos encontrar un procedimiento para convertir
un AFD en una expresin regular equivalente.

Para realizar la demostracin, es necesario definir un nuevo tipo de autmata denominado
autmata finito no determinista generalizado (AFNG). La primera parte de la prueba consiste en
mostrar cmo convertir un AFD en un AFNG. La segunda parte de la prueba consiste en obtener una
expresin regular a partir de un AFNG.

Los AFNG son AFN en donde las transiciones pueden estar etiquetadas con expresiones regulares en
lugar de smbolos del alfabeto o c. Los AFNG pueden leer bloques de smbolos desde la cadena de
entrada, no necesariamente un solo smbolo, como ocurre con los AFN

El AFNG se mueve a lo largo de una transicin, conectando dos estados por la lectura de un bloque
de smbolos desde la entrada, el cual constituye una cadena descrita por la expresin regular de esa
transicin.

Un AFNG es un AFN y, por tanto, puede tener varias formas de procesar la misma cadena de
entrada.

El AFNG acepta su entrada si despus del procesamiento de la cadena el AFNG se encuentra en un
estado de aceptacin. Veamos un ejemplo.


Por conveniencia, se requiere que los AFNG tengan una forma especial que satisface las siguientes
tres condiciones:
1. El estado inicial tiene transiciones salientes a cualquier otro estado del autmata, pero ninguna
que le llegue desde cualquier otro estado del autmata.
2. Hay un solo estado de aceptacin, al cual pueden llegar transiciones desde cualquier otro
estado, pero no salen de estas transiciones hacia los otros estados del autmata.
Adicionalmente, el estado de aceptacin es distinto del estado inicial.
3. Excepto para los estados de inicio y aceptacin, las transiciones van de cualquier estado del
autmata a cualquier otro estado del autmata y desde cada estados a l mismo.

Se puede convertir cualquier AFD a un AFNG:
- Se adiciona un nuevo estado de inicio con una transicin nula hacia el estado de inicio del
AFD.
- Se adiciona un nuevo estado de aceptacin al que le llega una transicin nula desde el
estado de aceptacin del AFD.
- Si algunas transiciones tienen varias etiquetas, o si hay varias transiciones entre dos
estados cualquieras en el mismo sentido, se reemplaza cada una de estas con una sola
transicin cuya etiqueta es la unin de las etiquetas previas.
- Por ltimo se adicionan transiciones etiquetadas con C entre aquellos estados del
autmata original que no tiene transiciones.

Ahora se ilustra el procedimiento para convertir un AFNG en una expresin regular.

Decimos que el AFNG tiene k estados, con k > 2 (tiene un estado inicial y uno final que son
distintos). Si k > 2, podemos construir un AFNG equivalente con k-1 estados. Este paso puede
repetirse en el nuevo autmata hasta que el autmata queda reducido a dos estados: el inicial y el
final. Si k=2, la transicin que va del estado inicial al final representa la expresin regular que
describe al lenguaje del autmata.

Note que el paso crucial en el proceso de transformar el AFNG en otro de menos estados, cuando
k>2, consiste en tomar un estado cualquiera, distinto al inicial y al final, eliminarlo del AFNG y
reparar el autmata resultante de tal manera que el autmata resultante contine reconociendo el
lenguaje original. Como esto se aplica a AFNG con k>2, tal estado siempre va a existir. A tal estado
lo llamaremos q
rip
.

Despus de eliminar el estado q
rip
, reparamos el AFNG modificando las expresiones regulares que
etiquetan las transiciones restantes. Las nuevas etiquetas compensan la ausencia de q
rip
,
adicionndole la prdida de computacin. La nueva etiqueta que va de un estado i a un estado j es
una expresin regular que describe todas las cadenas que tomara el autmata desde q
i
a q
j

directamente o va q
rip
. Veamos este enfoque en la siguiente figura:


PRUEBA
Primero, con la intencin de facilitar la prueba, definiremos formalmente un AFNG. Un AFNG es un
AFN excepto por la funcin de transicin, la cual tiene la siguiente forma:



Donde R es la coleccin de todas las expresiones regulares sobre el alfabeto . Si o(q
i
, q
j
) = R, la
transicin que va del estado q
i
al estado q
j
tiene la expresin regular R como su etiqueta. El dominio
de o se define de esta manera porque no pueden haber transiciones saliendo del estado de
aceptacin ni llegando al estado inicial.

DEFINICIN
Un AFNG es una quntupla (Q, , o, q
start
, q
accept
), donde
1. Q es el conjunto finito de estados.
2. es el alfabeto de entrada.
3. La funcin de transicin es


4. El estado inicial es q
start
y
5. Q
accept
es el estado de aceptacin.

COMPUTACIN DE UN AFNG
Un AFNG acepta una cadena w e * donde w = w
1
w
2
w
k
, donde cada w
i
est en * y una
secuencia de estados q
0
q
1
...q
k
existe tal que:
1. q
0
= q
start
.
2. q
k
= q
accept
.
3. Para cada i, tenemos que w
i
e L(R
i
) y R
i
= o(q
i-1
, q
i
). Es decir, R
i
es la expresin que etiqueta la
transicin que va del estado q
i-1
al estado q
i
.

Continuando con la prueba, presentamos enseguida un procedimiento que toma como entrada un
AFNG y retorna la expresin regular R, equivalente a dicho autmata.

CONVERTIR(G)
1. Determinamos k, el nmero de estados de G.
2. Si k=2, entonces retornar la expresin regular que etiqueta la transicin del estado inicial al
estado final.
3. Si k > 2, entonces seleccionamos cualquier estado q
rip
e Q distinto de q
start
y de q
accept
y
obtengamos un nuevo AFNG G=(Q, , o, q
start
, q
accept
), donde
Q = Q {q
rip
}.
Para cualquier q
i
e Q- {q
accept
} y cualquier q
j
e Q {q
start
} hagamos
o(q
i
, q
j
) = R
1
R
2
*R
3
R
4

Donde R
1
=o(q
i
, q
rip
), R
2
=o(q
rip
, q
rip
), R
3
=o(q
rip
, q
j
) y R
4
=o(q
i
, q
j
)
4. Calcule CONVERTIR(G) y retorne su valor.
Para concluir la prueba, hay que demostrar que CONVERTIR(G) es equivalente a G. Este
procedimiento se hace por induccin.


1.5 LENGUAJES NO REGULARES

Вам также может понравиться