Está en la página 1de 38

Teoría de la computación

José A. Rodríguez Melquiades

Clase TeoComp 5
Lenguaje de un AFD

El lenguaje de un AFD M es el conjunto de todas las palabras sobre 


que, empiezan desde q0 y sigue una sucesión de transiciones cuando
la palabra es leída de izquierda a derecha, hasta alcanzar un estado
final.

Definición:

Sea M = (Q, , , q0 , F) un AF. El lenguaje L(M) aceptado por M se


define como el conjunto de todas las palabras que son aceptados por
M, es decir,

L(M) = {w/ w es una palabra sobre  y M acepta w}

Definición: Un lenguaje es llamado regular, si existe algún autómata


finito que reconoce sus palabras.
Ejemplos:

a a a a, b

q0 b q1 b q2 b q32
M:

L(M) = (a*ba*ba*)  (a*ba*)  a*

q1 b, c
a
a q32 L(M) = a(b  c)
M: q0

b, c a, b, c
q2
Ejemplo:
L(M) = (a  ba  bba)* (  b  bb)

= {w  {a,b}*/ w no tiene tres b´s consecutivos}

Solución

a
a a, b

q0 b b b
M: q1 q2 q32
a
Ejercicio: Diseñar un AFD para el lenguaje siguiente

L(M) = {w  {a,b}*/ w tiene al menos un b y una cantidad par de a´s }

Solución

b b b

q0 b a a
q1 q2 q3
a
Ejercicio: Diseñar un AFD y determinar su respectivo lenguaje

Entrada
Alfabeto :  = {a, b} a b
Estados : Q = {q0, q1, q2} q0 q0 q1

Estados
E. Inicial : q0 q1 q2 q2
E. aceptación: F = {q2}
q2 q2 q2

Solución

L(M) = a*b(a + b)(a + b)*


Ejercicio: Diseñar un AFD para el lenguaje siguiente

L(M) = {w/ w  {a,b,c}* y w tiene el patrón abac}

Solución

b, c

b, c a, b, c
b
a

q0 a q1 b q2 a q32 c q4
c
a
Ejercicio: Dado el AFD siguiente, determinar el L(M)

0 q2 0
1

q0 1

1 0
q1

Solución

L(M) = {w  {0,1}* / w tiene 1´s que forman palabras divisibles por 3}


Ejercicio: Diseñar un AFD para el lenguaje siguiente

L(M) = {w  {a,b}* / w tiene la subpalabra bbb}

Solución

a
a a, b

q0 b b q2 b q32
q1
a
Ejercicio: Diseñar un AFD para el lenguaje siguiente

L(M) = [1-9][1-9]*

Solución

1-9

q0 1-9 q1
Ejercicio: Diseñar un AFD para el lenguaje siguiente

L(M) = [1-9][0-9]*

Solución

0-9

q0 +, - q1 1-9 q2
Ejercicio: Diseñar un AFD para el lenguaje que tenga palabras
con la subpalabra 101.

Solución

0 1
0,1
1
q0 q1

0 q3
1
0
q2
Ejercicio: Dado el  = {0,1}. Diseñar un AFD para el lenguaje
donde las palabras tiene 1 en la tercera posición (desde la
derecha a la izquierda).
w = 011010 w = 10110

Solución

0
0

0 0
q000 q100 q010 q110

1 0 1
1 1
0 0 0
q001 q101 1
1
q011 1
q111
1
Ejercicio: Dado el  = {0,1}. Diseñar un AFD para el lenguaje
L = (00  001)*1

Solución

q1 1
q2

1 0,1 0,1
0
q0 q3
1

1
0 0

q4 q5
0
Ejercicio: Dado el  = {0,1}. Diseñar un AFD para el lenguaje
cuyas palabras tienen una cantidad impar de 0’s.

Solución

1 1

q0 q2
0
Función de transición extendida

Este tipo de función hace posible decir, que significa para un AF aceptar
una palabra o un lenguaje.

Sea M = (Q, , , q0, F) un AFD. La función de transición extendida para


M dado por ^ : Q x  → Q, se define recursivamente por:

^(q, ) = q

^(q, ay) = ^((q, a), y), a  , y  *.

NOTA
 ^(q, a) = ^((q, a), ) = (q, a).
Ejemplo:
Determinar si las palabras w = bbaba y w = bbb estan en L(M).

a
a a, b

q0 b b q2 b q32
M: q1
a

^(q0, bbaba) = ^((q0, b), baba) = ^(q1, baba)


= ^((q1, b), aba) = ^(q2, aba)
= ^((q2, a), ba) = ^(q0, ba)
= ^((q0, b), a) = ^(q1, a)
= ^((q1, a), ) = ^(q0, ) = q0  F

^(q0, bbb) = ^((q0, b), bb) = ^(q1, bb)


= ^((q1, b), b) = ^(q2, b)
= ^((q2, b), ) = ^(q3, ) = q3  F
Aceptación de una palabra en términos de ^

Sean M un AF y w  * una palabra. La palabra w es aceptada por M si


se cumple:

^(q0 , w)  F}

Caso contrario es rechazada.

El lenguaje L es aceptado por un AFD M, si se cumple:

L(M) ={w * / ^(q0 , w)  F}


Ejemplo:
L = a(b  c)

^(q0, ab) = ^((q0, a), b) = ^(q1, b)


q1 b, c = ^((q1, b), ) = ^(q3, )
= q3  F
a
q0 a q32
^(q0, bc) = ^((q0, b), c) = ^(q2, c)
b, c a, b, c = ^((q2, c), ) = q2  F
q2
Ejercicio: Aplicar la función de transición extendida en los
siguientes autómatas

L(M) = {w/ w  {a,b,c}* y w tiene el patrón abac}

b, c
b, c a, b, c
a b

q0 a q1 b q2 a q32 c q4
c
a
◼ NOTA
 Un AFD es aquel donde en cada estado y para cada símbolo del
alfabeto que es leído, existe uno y solamente un estado en el cual
el autómata puede estar. Esto es

: Q ×  → Q
(qi , a) → qj

◼ Equivalencia de autómatas
 Dos AFD M1 y M2 son equivalentes, sii L(M1) = L(M2).
Propiedades

Lema: Sean q1  Q1 y q2  Q2 estados de un AFD M3 . Entonces

^3 ([q1 , q2], w) = [^1 (q1 , w ), ^2 (q2 , w )], w *

Prueba

Por inducción sobre la longitud de la palabra.


En efecto
(1) w  = 0
^3 ([q1 , q2], ) = [q1 , q2] = (^1 [q1 , ] , ^2 [q2 , ] )
(2) ^3 ([q1 , q2], w) = [^1 (q1 , w) , ^2 (q2 , w )]
Siendo que w  *, la prueba se reduce a demostrar que:
^3 ([q1 , q2], aw) = [^1 (q1 , aw) , ^2 (q2 , aw )]
En efecto

^3 ([q1 , q2], aw) = ^3 (3 ([q1 , q2], a), w)


= ^3 ([1 (q1 , a) , 2 (q2 , a)], w )
= [^1 (1 (q1 , a), w) , ^2(2 (q2 , a), w) ]
= [^1 (q1 , aw) , ^2(q2 , aw) ]
Teorema: Sean los AFDs M1 y M2. Entonces existen AFDs para los
lenguaje siguientes:
1) Lc(M1)
2) L(M1)  L(M2)

Prueba
Sean los AFDs M1 = (Q1, , 1, q01, F1) y M2 = (Q2, , 2, q02, F2)

1) Si M1 = (Q1, , 1, q01, F1), donde L(M1) es el lenguaje aceptado por M1,
entonces Mc1 = (Q1, , 1, q01, Q1 – F1) es el complemento de M1 y por
tanto acepta Lc(M1).

q1 b, c q1 b, c

a a

q0 a q32 q0 a q32

b, c a, b, c b, c a, b, c
q2 q2
2) Sea M3 = (Q1 x Q2 , , 3, [q01 , q02], F3) un AFD,

donde F3 = F1 x F2
3([q1 , q2], a) = [1(q1 , a), 2(q2 , a)].

Entonces probar L(M1)  L(M2) equivale a probar

w  L(M3)  w  L(M1)  L(M2) , w  *.


En efecto:

w  L(M3)  ^3([q01 , q02], w)  F1 x F2

 [^1(q01 , w), ^2(q02 , w)]  F1 x F2

 ^1(q01 , w)  F1 y ^2(q02 , w)  F2

 w  L(M1) y w  L(M2)

 w  L(M1)  w  L(M2)
Ejemplo (analizar): Sean los lenguajes

L1 = {w  {a,b}* / aa no es una subpalabra de w}

L2 = {w  {a,b}* / w termina con ab}

Los AF para estos lenguajes son:

b a,b
a

q01 q11 a q21


M1:
b

b a
b

q02' a q12 q22


M2:
a
b
Teorema: La clase de lenguajes regulares es cerrado bajo la operación
unión.

Prueba

Sean los AFDs M1 = (Q1, , 1, q01, F1) y M2 = (Q2, , 2, q02, F2)
que reconocen L1 y L2 , respectivamente.

Construir un AFD M = (Q, , , q0, F) que reconozca L1  L2 .

En efecto

(a) Q = Q1 x Q2 = {(qi, qj) / qi  Q1 y qi  Q2 }

(b) 

(c) : (Q1 x Q2 ) x  → (Q1 x Q2 )


((qi, qj) , a) → (1 (qi , a), 1 (qi , a))

 recibe un estado de M, (qi, qj) y un símbolo a, para luego


retornar el siguiente estado (qi+1, qj+1).
(d) q0 = (q01, q02).

(e) F = (F1 x Q2)  (Q1 x F2) = {(qi, qj)/ qi  F1 o qj  F2}


Teorema: La clase de lenguajes regulares es cerrado bajo la operación
concatenación.

Prueba

Sean los AFDs M1 = (Q1, , 1, q01, F1) y M2 = (Q2, , 2, q02, F2)
que reconocen L1 y L2 , respectivamente.

Empezar con M1 y M2 que reconocen L1 y L2 , respectivamente.


M acepta la palabra de entrada w, si ella se divide en dos partes
w1 y w2 , es decir w = w1w2 , donde M1 acepta w1 y M2 acepta w2.

w1 w2

M1 M2

Sin embargo el problema es: M no conoce cuando se divide w.


Este problema es solucionado con el no determinismo.
Ejemplo:

Sea el alfabeto  = {0, 1}, donde los lenguajes son los


siguientes:
L1 = {0, 1} y L2 = {11, 1}.

Entonces:

L1 c = * = L1 .

L1  L2 = {1}.

L1  L2 = {0, 1, 11}.
◼ NOTA
 Para todo lenguaje finito existe un AFD que la reconoce.

 De los AFDs que reconocen un lenguaje finito, existen aquellos


cuyo autómata no tiene ciclos.

Ejemplo:

v e l a
1 2 3 6 7 8 13
r y e d
o p
s #
0 5 12 16 17
w k i g
r e o r
4 9 10 14 n 15
11

#
o 0 r
1 33
v e

2 34
e p w
3 35 49
r l o
4 36 50
p w a r
5 19 37 51
l o y k

6 20 38 52
# s # e s
a r e i i
7 21 39 40 43 47 53 54 57 61
y k d n # d n #
8 22 41 44 48 55 58 62
# e i s s
# e # g # g
i
9 10 13 17 23 24 27 31 42 45 56 59
d n # d n # # #
11 14 18 25 28 32 46 60
# g # g
12 15 26 29
# #
16 30
◼ NOTA
 Un lenguaje L es finito si y solamente, existe un AFD que la
reconoce, cuyo grafo no tiene ciclos.

 Un lenguaje L es infinito si y solamente si:


◼ No existe AFD que reconoce al lenguaje L.

◼ El grafo simplificado de cualquier AFD que la reconoce tiene ciclo.

 Sea L un lenguaje infinito:


◼ ¿Cómo saber si existe o no existe un AFD que la reconoce?.

◼ Específicamente:
 ¿Cómo mostrar que no existe un AFD que reconoce un lenguaje, cuando
ya se hicieron todos los intentos por construir un AFD? .

Ejemplo:
L = {am bm am / m  0}.
El siguiente teorema muestra que existen problemas decidibles
en el contexto de los AFDs. Estos problemas pueden ser no
decidibles para otros tipos de autómatas.

◼ Teorema
 Existen procedimientos de decisión para determinar, para
cualquier AFD M, si:
1) L(M) = .
2) L(M) es finito.

Prueba
Sea M’ un AFD equivalente a M. Entonces:
1) L(M) =  sii M’ no tiene estados finales, es decir M’ tiene un solo
estado y este estado no es de aceptación

2) L(M) es finito sii su grafo de M’ no tiene ciclos.


Algoritmo de decisión para AFD

Entrada: AFD dado por q0, F, D[q, a] = (q, a), w.


Salida : Acepta, rechaza w

q := q0;
s:= w();
MIENTRAS (s  fs) // fs fin de la sucesión de símbolos que forman w
q := D[q, s];
s:= w();
FIN MIENTRAS
SI (q  F )
Retornar: w aceptado
SI NO
Retornar: w rechazado
FIN SI
Ejercicios

También podría gustarte