Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Grama Tic As
Grama Tic As
2007
CIENCIAS DE LA COMPUTACION I
2007
Ejemplo 1:
Derivacin de la gramtica correspondiente al lenguaje del ej. 4 del apunte de autmatas finitos
L4 = { x / x {0, 1}* y x contiene la subcadena 00 x contiene la subcadena 11}
L4 = L(M4Dmin), M4Dmin = < {p0, p1, p2, p3}, {0, 1}, , p0, {p3}>
est definida por el siguiente diagrama de transicin de estados
A
S
p1
0
1
p0
0, 1
p3 C
1
p2
B
Como al estado inicial no entran arcos, se asocia nicamente el smbolo distinguido S.
La gramtica correspondiente a este lenguaje es
G = ({A, B, C}, {0, 1}, P, S), siendo P el siguiente conjunto:
S 0A ya que (po, 0) = p1 y S y A estn asociado a p0 y p1 respectivamente.
S 1B ya que (po, 1) = p2 y S y B estn asociado a p0 y p2 respectivamente.
A 0C
A0
A 1B
B 0A
B 1C
B1
C 0C
C0
C 1C
C1
CIENCIAS DE LA COMPUTACION I
2007
Ejemplo 2:
Derivacin de la gramtica correspondiente al lenguaje del ej. 3 del apunte de autmatas finitos.
L3 = {xc3m/ x {a, b}* y la cantidad de bs es par y m 0}, siendo L3 = L(M3D)
M3D = < {e0, e1, e2, e3, e4}, {a, b, c}, 3D, e0, {e0, e4}>
3D est definida por el siguiente diagrama de transicin de estados
a
B
b
e1
E
D
a
C
b
c
c
c e
e0
e4
e3
2
S
A
c
Como al estado inicial entran arcos, se asocia el smbolo distinguido S y adems un smbolo no
terminal A.
La gramtica correspondiente a este lenguaje es
G = ({A, B, C, D, E}, {a, b, c}, P, S), siendo P el siguiente conjunto:
S
S aA
Sa
S bB
S cC
A aA
Aa
A bB
A cC
B aB
B bA
Bb
C cD
D cE
Dc
E cC
Ejemplo 3:
Derivacin de la gramtica correspondiente al lenguaje del ej. 7 del apunte de autmatas finitos.
L7 = { a2nb2k+1 / n 1 y k 0} {ax / x {a, b}* y x contiene la subcadena ba}
siendo L7 = L(M7Dmin), M7Dmin = < {p0, p1, p2, p3, p4, p5, p6}, {a, b}, , p0, {p3, p6}>
est definida por el siguiente diagrama de transicin de estados
D
B
C
A
S
b
a
b
a
p4
p3
p2
p1
p0
b
a
a
a
b
a, b
p6
b
p5
a
F
E
La gramtica correspondiente a este lenguaje es
G = ({A, B, C, D, E, F}, {a, b}, P, S), siendo P el siguiente conjunto:
S aA
A aB
A bE
B aA
B bC
Bb
C bD
C aF
Ca
D bC
Db
D aF
Da
E bE
E aF
Ea
F aF
Fa
F bF
Fb
CIENCIAS DE LA COMPUTACION I
2007
Expresiones regulares
Se denominan expresiones regulares sobre un alfabeto A, a las expresiones que se pueden construir
a partir de las siguientes reglas:
- es una expresin regular que describe el lenguaje vaco;
- es una expresin regular que describe el lenguaje {}, esto es el lenguaje que contiene
nicamente la cadena vaca;
- Para cada smbolo a A, a es una expresin regular que describe el lenguaje {a}, esto es el
lenguaje que contiene nicamente la cadena a;
- Si r y s son expresiones regulares que describen los lenguajes L(r) y L(s) respectivamente:
i) r + s es una expresin regular que describe el lenguaje L(r) L(s)
ii) r . s es una expresin regular que describe el lenguaje L(r) . L(s)
iii) r* es una expresin regular que describe el lenguaje L(r)*.
El operador de clausura es el que tiene mayor precedencia, seguido por el operador de
concatenacin y por ltimo el operador de unin.
Las expresiones regulares describen los lenguajes regulares (aquellos reconocidos por autmatas
finitos).
Por ejemplo las siguientes son expresiones regulares vlidas:
- a* . b
que describe el lenguaje L = {anb / n 0}
- (a + b)* que describe el lenguaje L = { x / x {a, b}* }
Leyes algebraicas para expresiones regulares
Dos expresiones regulares r y s son equivalentes (r s) si L(r) = L(s)
Sean r, s y t expresiones regulares:
1) r + + r r
2) r . . r r
3) r . . r
4) r + s s + r
5) (r + s) + t r + (s + t)
6) (r . s) . t r . (s . t)
7) r . (s + t) r . s + r . t
8) (s + t) . r s . r + t . r
9) r + r r
10) *
11) r . r* r* . r
12) r . r* + r*
13) (r* . s*)* (r + s)*
14) (r*)* r*
Construccin de autmatas finitos a partir de expresiones regulares
Los lenguajes descriptos por expresiones regulares son los lenguajes reconocidos por los autmatas
finitos. Existe un algoritmo para convertir una expresin regular en el autmata finito no
determinstico correspondiente. El algoritmo construye a partir de la expresin regular un autmata
con transiciones vacas, es decir un autmata que contiene arcos rotulados con . Luego este
CIENCIAS DE LA COMPUTACION I
2007
autmata con transiciones vacas se puede convertir en un autmata finito sin transiciones vacas
que reconoce el mismo lenguaje.
Construccin del autmata finito con transiciones
Si r es una expresin regular con n operadores y sin variables como operandos atmicos, existe un
autmata finito no determinstico M con transiciones (AFND-) que acepta solamente aquellas
cadenas que estn en L(r). M tiene un estado final, no entran arcos al estado inicial y no salen arcos
del estado final.
r puede ser una expresin sin operadores (, o un smbolo) o con operadores (+, ., *).
Si r no tiene operadores, entonces:
Para r =
el AFND- es
Para r =
el AFND- es
e1
e0
e0
Para r = a (a A) el AFND- es
e1
e0
e1
ef1
.....
M1
ef0
e0
e02
ef2
.....
M2
2) r = r1 . r2
Sean M1 = <E1, A, 1, e01, {ef1}> y M2 = <E2, A, 2, e02, {ef2}>, los autmatas correspondientes a r1
y r2.
Se construye un nuevo autmata M, M = < E1 E2, A, , e01, {ef2}> que tiene como estado inicial al
estado inicial de M1 y como estado final al estado final de M2; tiene adems un arco rotulado
desde el estado final de M1 al estado inicial de M2.
e01
.....
M1
ef1
e02
.....
M2
ef2
CIENCIAS DE LA COMPUTACION I
2007
3) r = r1*
Sea M1 = <E1, A, 1, e01, {ef1}> el autmata correspondiente a r1. Se construye un nuevo autmata
M, M = < E1 {e0, ef0}, A, , e0, {ef0}>; y se agregan arcos rotulados desde e0 al estado inicial de
M1 y al estado final de M, y desde el estado final de M1 al estado inicial de M1 y a ef0.
e0
e01
ef1
.....
M1
ef0
Ejemplo 4:
Construir el AFND- correspondiente a la siguiente expresin regular r = 0 . 0 + 0*. 1
r es de la forma r1 + r2, donde r1 = 0 . 0 y r2 = 0* . 1
r1 se puede expresar como r3 . r4, donde
r3 = 0
e1
r4 = 0
e3
e2
El autmata para r1 es
e1
e4
0
e2
e3
e4
siendo
r7 = 0
e6
El autmata para r5 es
r6 = 1
e9
El autmata para r2 es
e6
e7
e5
e5
e7
El autmata correspondiente a r es
e6
e7
e8
e10
e8
e9
e10
CIENCIAS DE LA COMPUTACION I
2007
AFND- =<{e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11}, {0, 1}, , e0, {e11}>, con definida por el
siguiente diagrama de transicin de estados
e1
e0
e2
e3
e4
e5
e6
e11
e7
e8
e9
e10
CIENCIAS DE LA COMPUTACION I
2007
Transiciones para el estado e10: desde el estado e10 se pueden alcanzar con transiciones los estados
e10 y e11. Como en el AFND- no existen transiciones sobre smbolos reales desde el estado e11,
entonces no se agregan transiciones desde el estado e10 en el nuevo autmata.
El autmata correspondiente sin transiciones se define
AFND = <{e0, e2, e4, e7, e10}, {0, 1}, , e0, {e4, e10}>, con definida por el siguiente diagrama de
transicin de estados
0
e4
e
2
0
e0
1
e7
e10
0
Se puede observar que este autmata es no determinstico. Como ya se ha visto, es posible construir
a partir del mismo el autmata finito determinstico equivalente que reconoce el mismo lenguaje.
Ejemplo 6
Construir el AFND- correspondiente a la siguiente expresin regular r = (0 + 0*) . 1
r es de la forma r1 . r2, donde r1 = 0 + 0* y r2 = 1
r1 se puede expresar como r3 + r4, donde
r3 = 0
r4 = r5*
e1
e2
0
e4
siendo r5 = 0
e5
El autmata para r4 es
e3
e4
e5
e6
El autmata para r1 es
e1
e0
e2
e3
e7
e4
e5
El autmata para r2 es
e8
e9
e6
CIENCIAS DE LA COMPUTACION I
2007
El autmata correspondiente a r es
AFND- =<{e0, e1, e2, e3, e4, e5, e6, e7, e8, e9}, {0, 1}, , e0, {e9}>, con definida por el siguiente
diagrama de transicin de estados
e1
e2
e0
e3
e4
e7
e5
e8
e9
e6
e2
e9
e0
1
0
e5
0
Se puede observar que este autmata es no determinstico. Como ya se ha visto, es posible construir
a partir del mismo el autmata finito determinstico equivalente que reconoce el mismo lenguaje,
que podra ser luego minimizado.
Otra posibilidad es simplificar la expresin regular primero para obtener directamente el AFD
mnimo.
r = (0 + 0*) . 1
(0 + 0*) . 1 ( 0 . + 0 . 0* + ) . 1
(0 . ( + 0* ) + ) . 1
(0 . ( + 0 . 0* + ) + ) . 1
(0 . (0 . 0* + ) + ) . 1
(0 . 0* + ) . 1
0* . 1
CIENCIAS DE LA COMPUTACION I
2007
s2
.
.
.
S2
Sn
u
T2
Tm
sn
t2
.
.
.
tm
Si el estado final es tambin inicial, eliminar todos los estados excepto el estado inicial.
S
s
*
CIENCIAS DE LA COMPUTACION I
2007
Sino, eliminar los estados del autmata hasta que queden nicamente el estado inicial y el estado
final en consideracin.
T
S
U
s
V
Ejemplo 7:
Obtener la expresin regular correspondiente al lenguaje del ejemplo 1
p1
0
1
p0
0, 1
0
0
p3
1
p2
Paso 1) El nico estado final es p3. Como no es inicial se deben eliminar los estados p1 y p2 para que
queden nicamente p0 (el estado inicial) y p3 (el estado final en consideracin).
- Eliminacin del estado p1:
0+1
00
p3
p0
01
1 + 01
p2
1 + 00
0+1
00
p3
p0
*
(1 + 01)(01) (1 + 00)
0+1
p0
p3
(1 + 01)(01)*(1 + 00) + 00
CIENCIAS DE LA COMPUTACION I
2007
Paso 2) La expresin regular correspondiente es: ((1 + 01)(01)*(1 + 00) + 00)(0 + 1)*
Ejemplo 8:
Obtener la expresin regular correspondiente al lenguaje del ejemplo 2
a
b
a
e0
e1
b
e2
e3
e4
c
Paso 1) Como el autmata tiene dos estados finales, se calcular una expresin regular para cada
uno de ellos.
El estado final e0 es tambin inicial. Por lo tanto se debern eliminar todos los estados que estn en
el camino de e0 a e0. El nico estado a eliminar es e1.
- Eliminacin del estado e1:
a + ba*b
e0
e0
e2
e3
c
- Eliminacin de e2
a + ba*b
e0
cc
e3
c
cc
Eliminacin de e3
ccc
a + ba*b
e0
ccc
e4
e4
e4
CIENCIAS DE LA COMPUTACION I
2007
AFD = <{e0, e1, e2, e3}, {a, b, c}, , e0, {e0, e1}>
b
c
b
e1
e0
c
b
e3
e2
c
c
a
Paso 1) Como el autmata tiene dos estados finales, se calcular una expresin regular para cada
uno de ellos.
Estado final e1
Como no es inicial se deben eliminar los estados e2 y e3 para que queden nicamente e0 (el estado
inicial) y e1 (el estado final en consideracin).
- Eliminacin de e2
c
e1
e2
e3
c
b
e3
b + cc*b
c
b
ac*b
e1
e0
e3
c
a
- Eliminacin de e3
b+cc*b
ac*b
e1
e3
c
e0
CIENCIAS DE LA COMPUTACION I
2007
c
b
e1
e0
*
c+ac b(b+cc b) a
Estado final e0
El estado final e0 es tambin inicial. Por lo tanto se debern eliminar todos los estados que estn en
el camino de e0 a e0, es decir e1, e2 y e3. Retomando el autmata obtenido en el paso anterior, slo
quedara por eliminar el estado e1
- Eliminacin de e1
b
c+ac*b(b+cc*b)*a
b
e1
e0
e0
c+bb*(c+ac*b(b+cc*b)* a)
e0
ER0 = (c+bb*(c+ac*b(b+cc*b)*a))*