Está en la página 1de 94

Lenguajes Formales y

Autómatas

Material base tomado del curso: Fundamentos de Algoritmos y


Computabilidad.
Elaborado por el profesor: Oscar Bedoya
Contenido

* Lema de Arden

* Gramáticas regulares

2
Lenguajes regulares

Problema. Dado un autómata encontrar la expresión regular


del lenguaje que acepta

a
q0
a b (a(b+a)+a)*
b q2
q1
b
a

3
Lema de Arden

Lema de Arden. Una ecuación de la forma X=AXB, donde


A, B, X son lenguajes y A (A no contiene la cadena vacía),
tiene una solución única X=A*B

4
Lema de Arden

El lema permite expresar de forma no recursiva un lenguaje


X=AXB es equivalente a X=A*B

5
Lema de Arden

Dado un diagrama de transición se puede obtener


una expresión regular de la siguiente forma:
1. Escriba una ecuación por cada estado del diagrama
que represente el lenguaje generado a partir de ese
nodo
2. Resuelva las ecuaciones recursivas por medio del
lema de Arden
3. Reemplace las expresiones calculadas

6
Lema de Arden

Dado un diagrama de transición se puede obtener


una expresión regular de la siguiente forma:
1. Escriba una ecuación por cada estado del diagrama
que represente el lenguaje generado a partir de ese
nodo
2. Resuelva las ecuaciones recursivas por medio del
lema de Arden
3. Reemplace las expresiones calculadas

•La expresión asociada a q0 será la expresión regular del


autómata
7
Lema de Arden

a a
b q1
q0

8
Lema de Arden

a a
b q1
q0

A0 = aA0  bA1, indica las cadenas generadas en q0


A1 = aA1  bA0  , indica las cadenas generadas en q1

9
Lema de Arden

• Se aplica el lema de Arden para simplificar las ecuaciones:

A0 = aA0  bA1
A1 = aA1  bA0  

10
Lema de Arden

• Se aplica el lema de Arden para simplificar las ecuaciones:

A0 = aA0  bA1
A1 = aA1  bA0   = a*(bA0)
= a*bA0  a*

11
Lema de Arden

• Se aplica el lema de Arden para simplificar las ecuaciones:

A0 = aA0  bA1
A1 = aA1  bA0   = a*(bA0)
= a*bA0  a*
• Se reemplaza A1 en A0 y se obtiene:

A0 = aA0  b(a*bA0  a*) La expresión asociada a


= aA0  ba*bA0  ba* A0 es la expresión que
= (aba*b)A0  ba* representa el autómata
= (aba*b)*ba*

12
Lema de Arden

a a
b q1
q0

Autómata que representa (a  ba*b)*ba*

13
Lema de Arden

Encuentre la expresión regular asociada al siguiente


autómata

a b
a a a b
q0 q1 q2 q3 q4
b
b

14
Lema de Arden

a b
a a a b
q0 q1 q2 q3 q4
b
b

A0 = aA1
A1 = aA2  bA4
A2 = aA3  bA4
A3 = aA3  bA4
A4 = bA4  

15
Lema de Arden

a b
a a a b
q0 q1 q2 q3 q4
b
b

A0 = aA1
A1 = aA2  bA4
A2 = aA3  bA4
A3 = aA3  bA4
A4 = bA4   = b*

16
Lema de Arden

a b
a a a b
q0 q1 q2 q3 q4
b
b

A0 = aA1
A1 = aA2  bA4
A2 = aA3  bA4
A3 = aA3  bA4 = aA3bb*
= aA3b+ = a*(b+) = a*b*
A4 = bA4   = b*

17
Lema de Arden

a b
a a a b
q0 q1 q2 q3 q4
b
b

A0 = aA1=a(aa+b*ab+b+) = aaa+b*  aab+  ab+


A1 = aA2bA4 = a(a+b*b+)  b+
= aa+b*  ab+  b+
A2 = aA3bA4 = aa*b* bb*
= a+b* b+
A3 = aA3bA4 = a*b*
A4 = bA4 = b*
18
Lema de Arden

Encuentre la expresión regular asociada al siguiente


autómata

a b
q2
q0 q1
a

19
Lema de Arden

Encuentre la expresión regular asociada al siguiente


autómata

a b
q2
q0 q1
a

A0 = aA1 = a(ba)*b
A1 = bA2 = b(aA1  )
= baA1  b = (ba)*b
A2 = aA1

20
Lema de Arden

Encuentre la expresión regular asociada al siguiente


autómata
a,b
a a
q0 q1 q2
b

21
Lema de Arden

Encuentre la expresión regular asociada al siguiente


autómata
a,b
a a
q0 q1 q2
b

A0 = aA1 = a(a(ab)*  bA0)


= aa(ab)*abA0
= (ab)*aa(ab)*
A1= aA2  bA0 = a(ab)*bA0
A2 = aA2bA2 = (ab)A2  
= (ab)*

22
Lema de Arden

Encuentre la expresión regular asociada al siguiente


autómata
a
a
q0 q1
b b
q2
a,b

23
Lema de Arden

Encuentre la expresión regular asociada al siguiente


autómata
a
a
q0 q1
b b
q2
a,b

A0 = aA1  bA2
A1 = aA0  bA2  
A2 = aA2  bA2

24
Lema de Arden

Encuentre la expresión regular asociada al siguiente


autómata
a
a
q0 q1
b b
q2
a,b

A0 = aA1  bA2
A1 = aA0  bA2  
A2 = aA2  bA2 = (ab)A2   A=
= (ab) = 

25
Lema de Arden

Encuentre la expresión regular asociada al siguiente


autómata
a
a
q0 q1
b b
q2
a,b

A0 = aA1  bA2
A1 = aA0  bA2   = aA0  
A2 = aA2  bA2 = (ab)A2   A=
= (ab)

26
Lema de Arden

Encuentre la expresión regular asociada al siguiente


autómata
a
a
q0 q1
b b
q2
a,b

A0 = aA1  bA2 = a(aA0  ) = aaA0  a = (aa)*a


A1 = aA0  bA2   = aA0  
A2 = aA2  bA2 = (ab)A2   A=
= (ab)

27
Lema de Arden

Encuentre la expresión regular asociada al siguiente


autómata
a
q0
a b
b q2
q1
b
a

28
Lema de Arden

Encuentre la expresión regular asociada al siguiente


autómata
a
q0
a b
b q2
q1
b
a
A0 = aA0bA2 = aA0bb*aA1 = aA0b+a((b+a)*aA0)
A1 = aA0bA2 = aA0bb*aA1 = (bb*a)*aA0 = (b+a)*aA0

A2 = aA1bA2 = bA2aA1 = b*aA1


29
Lema de Arden

Encuentre la expresión regular asociada al siguiente


autómata
a
q0
a b
b q2
q1
b
a
A0 = aA0bA2 = aA0bb*aA1 = aA0b+a((b+a)*aA0)
=aA0  b+a(b+a)*aA0  
=aA0  (b+a)+aA0  
=(a(b+a)+a)A0  
=(a  (b+a)+a)*
30
Lenguajes regulares

Tipo Lenguajes Tipo de Normas para


máquina la gramática
0 Recursivamente Máquina de No restringida
enumerables Turing
1 Sensibles al Autómata , ||||
contexto lineal acotado
2 Independientes Autómata de A
del contexto pila
3 Regulares Autómata AaB
finito Aa

31
Lenguajes regulares

Tipo Lenguajes Tipo de Normas para


máquina la gramática
0 Recursivamente Máquina de No restringida
enumerables Turing
1 Sensibles al Autómata , ||||
contexto lineal acotado
2 Independientes Autómata de A
del contexto pila
3 Regulares Autómata AaB
finito Aa

Gramática regular

32
Gramáticas regulares

Una gramática regular se define como un conjunto de 4


elementos, G=(,N,S,P) donde:
• es el alfabeto
• N son los símbolos no terminales
• S es el símbolo inicial
• P es la colección de reglas de sustitución o producciones
de la forma Aw, donde AN y w(N)* que satisface:
1. w contiene un no terminal como máximo
2. Si w contiene un no terminal, entonces es el
símbolo que está en el extremo derecho de w
33
Gramáticas regulares

Una gramática regular se define como un conjunto de 4


elementos, G=(,N,S,P) donde:
• es el alfabeto
• N son los símbolos no terminales
• S es el símbolo inicial
• P es la colección de reglas de sustitución o producciones

SaE
EA|B
AaA|b
BbB|b
34
Gramáticas regulares

Gramática Regular
• S, A y B son símbolos no terminales,
SaA | bB
e indican que deben ser sustituidos
AaA | a según las producciones
BbB | b • a y b son símbolos terminales que
pertenecen a un alfabeto 

35
Gramáticas regulares

Gramáticas Regulares
Las gramáticas generan cadenas
SaA | bB
AaA | a
BbB | b

36
Gramáticas regulares

Gramáticas Regulares
Las gramáticas generan cadenas
SaA | bB
SaAaaAaaa
AaA | a
La cadena aaa es generada por la
BbB | b
gramática

37
Gramáticas regulares

Gramáticas Regulares
SaA | bB SaAaa
AaA | a
SaAaaAaaaAaaaa
BbB | b
SbBbb

38
Gramáticas regulares

Gramáticas Regulares
¿La cadena ab se puede
SaA | bB
generar por la gramática?
AaA | a
BbB | b

39
Gramáticas regulares

Gramáticas
Indique cuáles de las siguientes
SabS |  cadenas se pueden generar por la
gramática:
•
• abab
•aaab
•abb

40
Gramáticas regulares

Gramáticas
Indique cuáles de las siguientes
SabS |  cadenas se pueden generar por la
gramática:
• 
• abab
•aaab
•abb

41
Gramáticas regulares

Gramáticas
SaE La cadena aaab se puede generar así:
SaEaAaaAaaaAaaab
EA|B
AaA|b Se utiliza la notación S * w para
indicar que la cadena w se puede
BaB|b
generar a partir de S en 0 o más
etapas

42
Gramáticas regulares

Gramáticas regulares
• Considere el lenguaje regular a(a*b*)b. Una forma de
expresar las cadenas aceptadas por el lenguaje, es por
medio de las producciones

43
Gramáticas regulares

Gramáticas regulares
• Considere el lenguaje regular a(a*b*)b. Una forma de
expresar las cadenas aceptadas por el lenguaje, es por
medio de las producciones
SaE
EA|B
AaA|b
BbB|b

44
Gramáticas regulares

Considere la siguiente gramática regular:


• ={a,b}

• N={S,A}
• S es el símbolo inicial
• P: SbA
AaaA|b

45
Gramáticas regulares

Considere la siguiente gramática regular:


• ={a,b}

• N={S,A}
• S es el símbolo inicial
• P: SbA
AaaA|b
bb,baab,baaaab, baaaaaab,…

46
Gramáticas regulares

Considere la siguiente gramática regular:


• ={a,b}

• N={S,A}
• S es el símbolo inicial
• P: SbA
AaaA|b
El lenguaje aceptado por la gramática, L(G),
contiene las cadenas de la forma b(aa)*b

47
Gramáticas regulares

Indique la expresión regular asociada a la siguiente


gramática:
• ={a,b}
• N={S}
• S es el símbolo inicial
• P: SaS|b

48
Gramáticas regulares

Indique la expresión regular asociada a la siguiente


gramática:
• ={a,b}

• N={S}
• S es el símbolo inicial
• P: SaS|b

El lenguaje aceptado por la gramática, L(G),


contiene las cadenas de la forma a*b

49
Gramáticas regulares

Indique la expresión regular asociada a la siguiente


gramática:
• ={a,b}

• N={S,B}
• S es el símbolo inicial
• P: SaS|B
BbB|

50
Gramáticas regulares

Indique la expresión regular asociada a la siguiente


gramática:
• ={a,b}

• N={S,B}
• S es el símbolo inicial
• P: SaS|B
BbB|
El lenguaje aceptado por la gramática, L(G),
contiene las cadenas de la forma a*b*

51
Gramáticas regulares

Indique la expresión regular asociada a la siguiente


gramática:
• ={a,b}

• N={S,A}
• S es el símbolo inicial
• P: SabS|A
Aa|b

52
Gramáticas regulares

Indique la expresión regular asociada a la siguiente


gramática:
• ={a,b}

• N={S,A}
• S es el símbolo inicial
• P: SabS|A
Aa|b
El lenguaje aceptado por la gramática, L(G),
contiene las cadenas de la forma (ab)*(ab)

53
Gramáticas regulares

Diseñe una gramática regular que reconozca (ab)+

54
Gramáticas regulares

Diseñe una gramática regular que reconozca (ab)+


• ={a,b}

• N={S}
• S es el símbolo inicial
• P: SabS|ab

55
Gramáticas regulares

Diseñe una gramática regular que reconozca el lenguaje


dado por (ab)a*(ab)

56
Gramáticas regulares

Diseñe una gramática regular que reconozca el lenguaje


dado por (ab)a*(ab)
• ={a,b}

• N={S,A,B}
• S es el símbolo inicial
• P: SaA|bA
AaA|a|b

57
Gramáticas regulares

Diseñe una gramática regular que reconozca el lenguaje


dado por (ab)*a(ab)*

58
Gramáticas regulares

Diseñe una gramática regular que reconozca el lenguaje


dado por (ab)*a(ab)*
• ={a,b}

• N={S,A,B}
• S es el símbolo inicial
• P: SaS|bS|aA
AaA|bA|

59
Gramáticas regulares

Diseñe una gramática regular que reconozca el lenguaje


dado por (ab)+(ab)*

60
Gramáticas regulares

Diseñe una gramática regular que reconozca el lenguaje


dado por (ab)+(ab)*
• ={a,b}

• N={S,A}
• S es el símbolo inicial
• P: SabS|abA
AaA|bA|

61
Gramáticas regulares

Diseñe una gramática regular que reconozca el lenguaje


dado por a*b*c*

62
Gramáticas regulares

Diseñe una gramática regular que reconozca el lenguaje


dado por a*b*c*
• ={a,b,c}

• N={S,B,C}
• S es el símbolo inicial
• P: SaS|bB|cC|
BbB|cC|
CcC|

63
Gramáticas NO regulares

Gramáticas
Indique cuáles de las siguientes
SaAb | bBa cadenas se pueden generar por la
AaAb |  gramática:
• ab
BbBa |  •aabb
•bbaa
•abb
•bbba

64
Gramáticas NO regulares

Gramáticas
Indique cuáles de las siguientes
SaAb | bBa cadenas se pueden generar por la
AaAb |  gramática:
• ab
BbBa |  •aabb
•bbaa
•abb
•bbba

Gramática Independiente de contexto

65
Gramáticas NO regulares

Las siguientes gramáticas no son regulares:


SAB SaAb aSbaaA
AaA|a AcA|c bAab|c
BbB|b

66
Gramáticas NO regulares

Las siguientes gramáticas no son regulares:


SAB SaAb aSbaaA
AaA|a AcA|c bAab|c
BbB|b

Gramática Independiente del Gramática


contexto dependiente
del contexto

67
Gramáticas regulares

Teorema. Dado un autómata M, existe una gramática G tal


que L(M)=L(G)

a a,b SaS|bA
b b AaS|bB
q0 q1 q2
a BaB|bB|

Autómata M Gramática G

68
Gramáticas regulares

Teorema. Dado un autómata M, existe una gramática G tal


que L(M)=L(G)
Las producciones se obtienen tomando a los estados del
autómata como no terminales y los símbolos del alfabeto
como terminales

69
Gramáticas regulares

Teorema. Dado un autómata M, existe una gramática G tal


que L(M)=L(G)
Las producciones se obtienen tomando a los estados del
autómata como no terminales y los símbolos del alfabeto
como terminales

a a,b
b b
q0 q1 q2
a

70
Gramáticas regulares

Teorema. Dado un autómata M, existe una gramática G tal


que L(M)=L(G)

a a,b
b b
q0 q1 q2
a

71
Gramáticas regulares

Teorema. Dado un autómata M, existe una gramática G tal


que L(M)=L(G)

a a,b
b b
q0 q1 q2
a

El autómata M induce la gramática regular:


q0aq0|bq1 SaS|bA
q1aq0|bq2 AaS|bB
q2aq2|bq2| BaB|bB|
72
Gramáticas regulares

• Autómata que reconoce (ab)*


a,b

q0

73
Gramáticas regulares

• Autómata que reconoce (ab)*


a,b

q0

• El autómata M induce la gramática regular:


q0aq0|bq0| SaS|bS|

74
Gramáticas regulares

• Autómata que reconoce (ab)+


a,b
a,b
q0 q1

75
Gramáticas regulares

• Autómata que reconoce (ab)+


a,b
a,b
q0 q1

• El autómata M induce la gramática regular:


q0aq1|bq1 SaA|bA
q1aq1|bq1| AaA|bA|

76
Gramáticas regulares

• Muestre la gramática regular para el siguiente autómata


que reconoce (abba)* b
q0
q1
a
a b a
b
q2 q3 a,b

77
Gramáticas regulares

• Muestre la gramática regular para el siguiente autómata


que reconoce (abba)* b
q0
q1
a
a b a
b
q2 q3 a,b

• El autómata M induce la gramática regular:


q0aq1|bq2| SaA|bB|
q1bq0|aq3 AbS|aC
q2aq0|bq3 BaS|bC
q3aq3|bq3 CaC|bC

78
Gramáticas regulares

• Muestre la gramática regular para el siguiente autómata


que reconoce (abba)* b
q0
q1 Evalúe la cadena aab
a
a b a
b
q2 q3 a,b

• El autómata M induce la gramática regular:


q0aq1|bq2| SaA|bB|
q1bq0|aq3 AbS|aC
q2aq0|bq3 BaS|bC
q3aq3|bq3 CaC|bC

79
Gramáticas regulares

• Muestre la gramática regular para el siguiente autómata


que reconoce (abba)* b
q0
a
q1 La cadena aab
a b a no se genera por
b la gramática
q2 q3 a,b

• El autómata M induce la gramática regular:


q0aq1|bq2| SaA|bB|
q1bq0|aq3 AbS|aC
q2aq0|bq3 BaS|bC
q3aq3|bq3 CaC|bC

80
Gramáticas regulares

• Muestre la gramática regular para el siguiente autómata


que reconoce a+b+ a b
a
q0 q1 b q2
b a

a,b q3

81
Gramáticas regulares

• Muestre la gramática regular para el siguiente autómata


que reconoce a+b+ a b
a
q0 q1 b q2
b a

a,b q3

• El autómata M induce la gramática regular:


q0aq1|bq3 SaA|bC
q1aq1|bq2 AaA|bB
q2bq2||aq3 BbB||aC
q3aq3|bq3 CaC|bC
82
Gramáticas regulares

Teorema. Dada una gramática regular G, existe un


autómata M, tal que L(M)=L(G)

SaS|bA a a,b
b b
AaS|bB q0 q1 q2
BaB|bB| a

Gramática G Autómata M

83
Gramáticas regulares

Teorema. Dada una gramática regular G, existe un


autómata M, tal que L(M)=L(G)
La construcción del autómata se realiza utilizando las
producciones teniendo en cuenta que los símbolos no
terminales corresponden con estados y los terminales con
transiciones

84
Gramáticas regulares

Teorema. Dada una gramática regular G, existe un


autómata M, tal que L(M)=L(G)
La construcción del autómata se realiza utilizando las
producciones teniendo en cuenta que los símbolos no
terminales corresponden con estados y los terminales con
transiciones

SaS|bA
AaB|bB|
BaB|bB

85
Gramáticas regulares

Diseñar el autómata para la siguiente gramática:


SaS|bA
AaB|bB|
BaB|bB

86
Gramáticas regulares

Diseñar el autómata para la siguiente gramática:


SaS|bA
AaB|bB|
BaB|bB

a a,b
b a,b
q0 q1 q2

87
Gramáticas regulares

Diseñar el autómata para la siguiente gramática:


SaB|bA|
AabaS
BbabS

88
Gramáticas regulares

Diseñar el autómata para la siguiente gramática:


SaB|bA|
b
AabaS
BbabS q0 a b a
q1 q2 q3
b

q4
a a

q5
b

q6
89
Gramáticas regulares

Diseñar el autómata para la siguiente gramática:


SaA|
AabA|baB|
BaB|bA

90
Ejemplo de expresiones regulares
Expresión regular que reconoce una cadena de dígitos con
carácter de separación ,

91
Encontrar cadenas en archivos de texto

Encuentra las líneas que contienen la palabra tal en la


carpeta actual:

Encuentra las líneas que no contienen la palabra tal en la


carpeta actual:

92
Ejemplo de expresiones regulares
Expresión regular que reconoce una cadena que tenga la
forma de correo electrónico

1. /[A-Za-z]+@[a-z]+\.[a-z]+/
2. ^[_a-z0-9-]+(\.[_a-z0-9-]+)*@[a-z0-9-]+(\.[a-z0-9-]+)*(\.[a-z]{2,3})$

93
Ejemplo de expresiones regulares
En lenguajes de programación: Se usan para el análisis
léxico, que es el proceso en el que un analizador sintáctico
toma una secuencia de entrada y la transforma en
componentes léxicos (Tokens)

Ejemplo:
If valorIngresado > maxValor entonces retorna 1
•Tokens
•If * entonces
•valorIngresado * retorna
•> * maxValor *1
94

También podría gustarte