Está en la página 1de 141

Lenguajes Formales y

Autómatas
Contenido

* Alfabetos, palabras y lenguajes

* Operadores sobre palabras y lenguajes

* Lenguajes regulares

* Expresiones regulares

2
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

3
Lenguajes regulares

Un símbolo es una representación distinguible de cualquier


información. como: w, 9, #, etc.,
Un símbolo es una entidad indivisible

4
Lenguajes regulares

5
Lenguajes regulares

El alfabeto es el conjunto de símbolos que podrán


aparecer en la entrada de la máquina

6
Lenguajes regulares

Alfabeto
• Un alfabeto es cualquier conjunto de símbolos no vacío
={0,1,2,3,4,5,6,7,8,9}
={a,b}

7
Lenguajes regulares

Alfabeto
• Un alfabeto es cualquier conjunto de símbolos no vacío
={0,1,2,3,4,5,6,7,8,9}
={a,b}
• Alfabeto latino:
={a,b,c,d,e,f,g,h,i,j,k,l,m,n,ñ,o,p,q,r,s,t,u,v,w,x,y,z}
• Alfabeto griego:
={,,,,,. . .,Ψ,Ω}

8
Lenguajes regulares

Las palabras o cadenas son secuencias finitas de símbolos

9
Lenguajes regulares

• Dado el alfabeto usado en español:


={a,b,c,d,e,f,g,h,i,j,k,l,m,n,ñ,o,p,q,r,s,t,u,v,w,x,y,z}

se pueden crear palabras:


colina
puente
dardo
fdkfjk

La noción de palabra no tiene asociada semántica

10
Lenguajes regulares

Cadena o palabra
•Una palabra es una secuencia finita de símbolos de un
determinado alfabeto
- Si ={0,1,2,3,4,5,6,7,8,9}, entonces 431, 021, , son palabras de 
- Si ={a,b}, entonces ab, ba, aaab, , son palabras de 

11
Lenguajes regulares

12
Lenguajes regulares

La cadena vacía  representa una palabra que tiene 0


símbolos, esto es, una cinta vacía

13
Lenguajes regulares

Una máquina acepta un conjunto de palabras específico


que se puede generar a partir de un alfabeto

14
Lenguajes regulares

Lenguaje
• Un lenguaje es un conjunto de palabras particular

15
Lenguajes regulares

Lenguaje
• Un lenguaje es un conjunto de palabras particular
• Muestre los siguientes lenguajes definidos sobre ={a,b}
- L1: conjunto de palabras que tienen exactamente 3
símbolos

16
Lenguajes regulares

Lenguaje
• Un lenguaje es un conjunto de palabras particular
• Muestre los siguientes lenguajes definidos sobre ={a,b}
-L1: conjunto de palabras que tienen exactamente 3
símbolos
- L2: conjunto de palabras que tienen al menos una a

17
Lenguajes regulares

Lenguaje
• Un lenguaje es un conjunto de palabras particular
• Muestre los siguientes lenguajes definidos sobre ={a,b}
-L1: conjunto de palabras que tienen exactamente 3
símbolos
- L2: conjunto de palabras que tienen al menos una a
-L3: conjunto de palabras que tienen un número par de
símbolos

18
Lenguajes regulares

Lenguaje
• Un lenguaje es un conjunto de palabras particular
• Muestre los siguientes lenguajes definidos sobre ={a,b}
-L1: conjunto de palabras que tienen exactamente 3
símbolos
- L2: conjunto de palabras que tienen al menos una a
-L3: conjunto de palabras que tienen un número par de
símbolos
- L4: conjunto de todas las posibles palabras

19
Lenguajes regulares

Lenguaje universal sobre 


•Se denota como * y se conoce también como cerradura
•* es el lenguaje formado por todas las cadenas sobre el
alfabeto 

20
Lenguajes regulares

Lenguaje universal sobre 


•Se denota como * y se conoce también como cerradura
•* es el lenguaje formado por todas las cadenas sobre el
alfabeto 
• Muestre el lenguaje universal * para los siguientes
alfabetos:
•  = {a,b,c}
•  = {1}

21
Lenguajes regulares

Lenguaje universal sobre 


•* es el lenguaje formado por todas las cadenas sobre el
alfabeto 
- Para ={a,b,c}, *={, a, b, c, aa, ab, ac, ba, bb, bc, …}
- Para ={1}, *={, 1, 11, 111, 1111,…}

22
Lenguajes regulares

Lenguaje universal sobre 


•* es el lenguaje formado por todas las cadenas sobre el
alfabeto 
- Para ={a,b,c}, *={, a, b, c, aa, ab, ac, ba, bb, bc, …}
- Para ={1}, *={, 1, 11, 111, 1111,…}

 siempre está en * porque la cadena vacía


se puede obtener de cualquier alfabeto

Para cualquier alfabeto , se tiene que * es


infinito ya que  no puede ser vacío

23
Lenguajes regulares

Lenguaje
• Un lenguaje L sobre un alfabeto  es un subconjunto de
*, es decir, L*

24
Lenguajes regulares

Potencia de una cadena


• Sea x una cadena, se define la potencia de x como:

, si n=0
xn=
xxn-1, si n1

25
Lenguajes regulares

Potencia de una cadena


• Sea x una cadena, se define la potencia de x como:

, si n=0 •es el operador


xn=
xxn-1, si n1 concatenación

26
Lenguajes regulares

Potencia de una cadena


• Sea x una cadena, se define la potencia de x como:

, si n=0
xn=
xxn-1, si n1

• (aab)3

27
Lenguajes regulares

Potencia de una cadena


• Sea x una cadena, se define la potencia de x como:

, si n=0
xn=
xxn-1, si n1

• (aab)3=aab(aab)2
=aabaab aab1
=aabaabaabaab0
=aabaabaab=aabaabaab

28
Lenguajes regulares

Potencia de una cadena


• Sea x una cadena, se define la potencia de x como:

, si n=0
xn=
xxn-1, si n1

• Muestre
- a3(aba)2 = aaaabaaba
- (ab)2(ba)3

29
Lenguajes regulares

• ={a},
L={a, aa, aaa, aaaa,…}

30
Lenguajes regulares

• ={a},
L={a, aa, aaa, aaaa,…}

a1 a2 a3 a4

31
Lenguajes regulares

• ={a},
L={a, aa, aaa, aaaa,…}={an | n1}

32
Lenguajes regulares

• ={a},
L={a, aa, aaa, aaaa,…}={an | n1}, cadenas de una ó más a’s

33
Lenguajes regulares

• ={a},
L={a, aa, aaa, aaaa,…}={an | n1}, cadenas de una ó más a’s
• ={a,b},
L={ab, aabb, aaabbb,…}

34
Lenguajes regulares

• ={a},
L={a, aa, aaa, aaaa,…}={an | n1}, cadenas de una ó más a’s
• ={a,b},
L={ab, aabb, aaabbb,…}={anbn | n1}

35
Lenguajes regulares

• ={a},
L={a, aa, aaa, aaaa,…}={an | n1}, cadenas de una ó más a’s
• ={a,b},
L={ab, aabb, aaabbb,…}={anbn | n1}, cadenas con igual
cantidad de a’s que b’s, donde las a’s están a la izquierda
de las b’s

36
Lenguajes regulares

• ={a},
L={a, aa, aaa, aaaa,…}={an | n1}, cadenas de una ó más a’s
• ={a,b},
L={ab, aabb, aaabbb,…}={anbn | n1}, cadenas con igual
cantidad de a’s que b’s, donde las a’s están a la izquierda
de las b’s
• ={0,1},
L={, 01, 10, 0011, 0101, 1100, 1001,…}

37
Lenguajes regulares

• ={a},
L={a, aa, aaa, aaaa,…}={an | n1}, cadenas de una ó más a’s
• ={a,b},
L={ab, aabb, aaabbb,…}={anbn | n1}, cadenas con igual
cantidad de a’s que b’s, donde las a’s están a la izquierda
de las b’s
• ={0,1},
L={, 01, 10, 0011, 0101, 1100, 1001,…}={w{0,1}*|tienen la
misma cantidad de 0’s que 1’s}, cadenas con igual cantidad
de 0’s que 1’s

38
Lenguajes regulares

Longitud de una cadena


•Sea x una cadena que pertenece a un lenguaje L, su
longitud se denota por |x| y se define como:

0, si x=
|x|= n, si x=a1a2…an

39
Lenguajes regulares

Longitud de una cadena


•Sea x una cadena que pertenece a un lenguaje L, su
longitud se denota por |x| y se define como:

0, si x=
|x|= n, si x=a1a2…an

• ||=0
• |ababaa|=6

40
Lenguajes regulares

Concatenación entre lenguajes


•Sean A y B dos lenguajes definidos sobre , la
concatenación AB se define como:
AB={uv | uA  vB}

• A={a,ab,ac}, B={b,b2}
• AB

41
Lenguajes regulares

Concatenación entre lenguajes


•Sean A y B dos lenguajes definidos sobre , la
concatenación AB se define como:
AB={uv | uA  vB}

• A={a,ab,ac},

• B={b,b2}
• AB={ab,abb,acb,ab2,abb2,acb2}=
• A.B={ab,ab2,acb,ab2,ab3,acb2}

42
Lenguajes regulares

Concatenación entre lenguajes


•Sean A y B dos lenguajes definidos sobre , la
concatenación AB se define como:
AB={uv | uA  vB}

• A={a,ab,ac}, B={b,b2}
• AB={ab,abb,acb,ab2,abb2,acb2}={ab,ab2,acb,ab2,ab3,acb2}
={ab,ab2,acb,ab3,acb2}

43
Lenguajes regulares

Concatenación entre lenguajes


•Sean A y B dos lenguajes definidos sobre , la
concatenación AB se define como:
AB={uv | uA  vB}

• A={a,ab,ac}, B={b,b2}
• AB={ab,abb,acb,ab2,abb2,acb2}={ab,ab2,acb,ab2,ab3,acb2}
• BA=?

44
Lenguajes regulares

Concatenación entre lenguajes


•Sean A y B dos lenguajes definidos sobre , la
concatenación AB se define como:
AB={uv | uA  vB}

• A={a,ab,ac}, B={b,b2}
• AB={ab,abb,acb,ab2,abb2,acb2}={ab,ab2,acb,ab2,ab3,acb2}
• BA={ba,bab,bac,b2a,b2ab,b2ac}

45
Lenguajes regulares

Concatenación entre lenguajes


•Sean A y B dos lenguajes definidos sobre , la
concatenación AB se define como:
AB={uv | uA  vB}

• B={b,b2}

• A={a,ab,ac},

• BA={ba,b2a, bab, b2ab, bac, b2ac}

46
Lenguajes regulares

Concatenación entre lenguajes


•Sean A y B dos lenguajes definidos sobre , la
concatenación AB se define como:
AB={uv | uA  vB}

• A={a,ab,ac}, B={b,b2}
• AB={ab,abb,acb,ab2,abb2,acb2}={ab,ab2,acb,ab2,ab3,acb2}
• BA={ba,b2a, bab, b2ab, bac, b2ac}

47
Lenguajes regulares

Potencia de un lenguaje
• Dado un lenguaje A sobre  se define la potencia como:

{}, si n=0
A n=
AAn-1, si n1

48
Lenguajes regulares

Potencia de un lenguaje
• Dado un lenguaje A sobre  se define la potencia como:

{}, si n=0
A n=
AAn-1, si n1

Calcule A3 para A={ab,b}

49
Lenguajes regulares

Potencia de un lenguaje
• Dado un lenguaje A sobre  se define la potencia como:

{}, si n=0
A n=
AAn-1, si n1

Calcule A3 para A={ab,b}


A3=AAA={ab,b}{ab,b}{ab,b}
={ab,b}{abab,bab,abb,bb}
={ababab,babab, abab, bab, abab, babb, abbb, bbb}
={(ab)3, (ba)2b, (ab)2, bab, bab2, ab3, b3} 50
Lenguajes regulares

Potencia de un lenguaje
• Dado un lenguaje A sobre  se define la potencia como:

{}, si n=0
A n=
AAn-1, si n1

Calcule A3 para A={ab,b}


A3=AAA={ab,b}{ab,b}{ab,b}
={ab,b}{abab,bab,abb,bb}
={ababab,abbab,ababb,abbb,babab,bbab,babb,bbb}

51
Lenguajes regulares

Potencia de un lenguaje
• Dado un lenguaje A sobre  se define la potencia como:

{}, si n=0
A n=
AAn-1, si n1

Calcule A3 para A={ab,b}


A3=AAA={ab,b}{ab,b}{ab,b}
={ab,b}{abab,bab,abb,bb}
={ababab,abbab,ababb,abbb,babab,bbab,babb,bbb}

52
Lenguajes regulares

Potencia de un lenguaje
• Dado un lenguaje A sobre  se define la potencia como:

{}, si n=0
A n=
AAn-1, si n1 Cadenas formadas usando
3 concatenaciones sobre A
Calcule A3 para A={ab,b}
A3=AAA={ab,b}{ab,b}{ab,b}
={ab,b}{abab,bab,abb,bb}
={ababab,abbab,ababb,abbb,babab,bbab,babb,bbb}
={(ab)3, ab2ab,abab2, ab3, (ba)2b, b2ab , bab2, b53
3}
Lenguajes regulares

Dado A={ab,ca,ad},
¿abcaabA3? si
A3 = A.A.A = {ab,ca,ad}. {ab,ca,ad}. {ab,ca,ad}
= {ab,ca,ad}. {abab, caab, adab, abca, caca, adca, abad,
caad, adad}
= {ababab, caabab, abcaab,

54
Lenguajes regulares

Dado A={ab,ca,ad},
¿abcaabA3?
A3 = A.A.A = {ab,ca,ad}. {ab,ca,ad}. {ab,ca,ad},
¿adcaA2? si
A3 = A.A.A = {ab,ca,ad}. {ab,ca,ad}. {ab,ca,ad}
= {ab,ca,ad}. {abab, caab, adab, abca, caca, adca, abad,
caad, adad}
= {ababab, caabab, abcaab,

55
Lenguajes regulares

Dado A={ab,ca,ad},
¿abcaabA3?
A3 = A.A.A = {ab,ca,ad}. {ab,ca,ad}. {ab,ca,ad},
¿adcaA2?

¿cabaA2?
¿abcaaaA3?
¿adcaabA3?

56
Lenguajes regulares

Dado A={ab,ca,ad},
¿abcaabA3?si
A3 = A.A.A = {ab,ca,ad}. {ab,ca,ad}. {ab,ca,ad},
¿adcaA2?si
¿cabaA2? no
A3 = A.A.A = {ab,ca,ad}. {ab,ca,ad}. {ab,ca,ad}
= {ab,ca,ad}. {abab, caab, adab, abca, caca, adca, abad,
caad, adad}
= {ababab, caabab, abcaab,

57
Lenguajes regulares

Dado A={ab,ca,ad},
¿abcaabA3?
A3 = A.A.A = {ab,ca,ad}. {ab,ca,ad}. {ab,ca,ad},
¿adcaA2?
¿cabaA2?
¿abcaaaA3? no

58
Lenguajes regulares

Dado A={ab,ca,ad},
¿abcaabA3? si
A3 = A.A.A = {ab,ca,ad}. {ab,ca,ad}. {ab,ca,ad},
¿adcaA2? si
¿cabaA2? no
¿abcaaaA3?no
¿adcaabA3?si
A3 = A.A.A = {ab,ca,ad}. {ab,ca,ad}. {ab,ca,ad}
= {ab,ca,ad}. {abab, caab, adab, abca, caca, adca, abad,
caad, adad}
59
= {ababab, caabab, abcaab, cacaab, adcaab,
Lenguajes regulares

Dado A={a,b,ab} calcule


• A0A1A2

60
Lenguajes regulares

Dado A={a,b,ab} calcule


• A0A1A2
- A0={}
- A1=A={a,b,ab}
- A2=AA={aa,ab,aab,ba,bb,bab,aba,abb,abab}
Por lo tanto A0A1A2={,a,b,ab,aa,aab,ba,bb,bab,aba,abb,abab}

61
Lenguajes regulares

Cerradura de Kleene
•La cerradura de Kleene de un lenguaje A es la unión de
las potencias, se denota por A*
A* = A0  A1  A2  . . .

62
Lenguajes regulares

Cerradura de Kleene
•La cerradura de Kleene de un lenguaje A es la unión de
las potencias, se denota por A*
A* = A0  A1  A2  . . .

• También se conoce como cerradura estrella


• A* es el conjunto de posibles concatenaciones sobre A

63
Lenguajes regulares

Stephen Kleene
•Creador de las expresiones
regulares
•Enunció la cerradura de
Kleene, A*

(1909 - 1994)

64
Lenguajes regulares
Cerradura de Kleene
• Calcule A* para A={a, ab}

65
Lenguajes regulares
Cerradura de Kleene
• A={a, ab}
A0={}
A1={a,ab}
A2={a,ab} . {a,ab}={aa,aba,aab,abab}
...
A*={,a,ab,aa,aba, aab, abab,…}

66
Lenguajes regulares
Cerradura de Kleene
• A={a, ab}
A0={}
A1={a,ab}
A2={aa,aab, aba,abab}
...
A*={,a,aa,ab,aab,aba,abab,…}
¿abababA*?
¿abbbbbA*?
¿abaaaaaaaA*?
67
Lenguajes regulares
Cerradura de Kleene
• A={a, ab}
A0={}
A1={a,ab}
A2={aa,aab, aba,abab}
A3={a,ab} .{aa,aab, aba,abab}
= {aaa, abaa, aaab, abaab, aaba, ababa, aabab, ababab}
...
A*={,a,aa,ab,aab,aba,abab,…}
¿abababA*? Si pertenece y sale en A3
68
Lenguajes regulares

Cerradura de Kleene
• A={a, ab} • ¿Qué relación tiene A* con *?
• Calcule * sobre ={a,b}
A0={}
A1={a,ab}
A2={aa,aab, aba,abab}
...
A*={,a,aa,ab,aab,aba,abab,…}

69
Lenguajes regulares

Cerradura de Kleene
• A={a, ab}
A0={}
A1={a,ab}
A2={aa,aab, aba,abab}
...
A*={,a,aa,ab,aab,aba,abab,…}
*={,a,b,aa,ab,ba,bb,aaa,aab,…}

70
Lenguajes regulares

Cerradura de Kleene A* y Cerradura *


•* se define sobre el alfabeto y corresponde a todas las
cadenas que se pueden crear sobre un alfabeto 
•A* se define sobre un lenguaje A y consiste en todas las
concatenaciones posibles

71
Lenguajes regulares

Cerradura de Kleene A* y Cerradura *


•* se define sobre el alfabeto y corresponde a todas las
cadenas que se pueden crear sobre un alfabeto 
•A* se define sobre un lenguaje A y consiste en todas las
concatenaciones posibles
A={a, ab} está definido sobre ={a,b}
A* = {,a,ab,aa,aba,aab,abab,… }
* = {,a,b,aa,bb,ab,ba, aaa,aab,aba, …}
• En general se cumple que A**

72
Lenguajes regulares

Cerradura positiva de Kleene A+


•La cerradura positiva de Kleene de un lenguaje A es la
unión de las potencias sin incluir A0={},
A+ = A1  A2  A3 . . .

73
Lenguajes regulares

Cerradura positiva +
• Es el conjunto de palabras que se pueden formar sobre 
sin incluir la cadena vacía

74
Lenguajes regulares

• Sea A={a,b,ab}, muestre A* y A+. Indique si abbaA*, bbaaA*


A0 ={з}
A1 = {a, b, ab}
A2 = {a, b, ab}. {a, b, ab} = {aa, ba,aba, ab,bb,abb, aab,bab,abab}
A3 = {a, b, ab}. {a, b, ab}. {a, b, ab}
= {a, b, ab}. {aa, ba,aba, ab,bb,abb, aab,bab,abab} =
= {aaa, baa, abaa, aba, bba, abba, aaba, baba, ababa, aab, bab,
abab, abb, bbb, abbb, aabb, babb, ababb, aaab, baab, abaab,
abab, bbab, abab, aabab, babab, ababab}

• Sea A={a,aa,ac} y B={b,ba}, muestre AB, BA y B*

75
Lenguajes regulares

• Sea A={a,b,ab}, muestre A* y A+. Indique si abbaA*, bbaaA*


A0 ={з}
A1 = {a, b, ab}
A2 = {a, b, ab}. {a, b, ab} = {aa, ba,aba, ab,bb,abb, aab,bab,abab}
A3 = {a, b, ab}. {a, b, ab}. {a, b, ab}
= {a, b, ab}. {aa, ba,aba, ab,bb,abb, aab,bab,abab} =
= {aaa, baa, abaa, aba, bba, abba, aaba, baba, ababa, aab, bab, abab,
abb, bbb, abbb, aabb, babb, ababb, aaab, baab, abaab, abab, bbab, abab,
aabab, babab, ababab}
A4 = {a, b, ab}. {a, b, ab}. {a, b, ab} . {a, b, ab}
= {a, b, ab}. {aaa, baa, abaa, aba, bba, abba, aaba, baba, ababa, aab,
bab, abab, abb, bbb, abbb, aabb, babb, ababb, aaab, baab, abaab, abab,
bbab, abab, aabab, babab, ababab}
= {aaaa, baaa, abaaa, abaa, bbaa 76
Lenguajes regulares

• Sea A={a,b,ab}, muestre A* y A+. Indique si abbaA*, bbaaA*


A4 = {a, b, ab}. {a, b, ab}. {a, b, ab} . {a, b, ab}
= {a, b, ab}. {aaa, baa, abaa, aba, bba, abba, aaba, baba, ababa,
aab, bab, abab, abb, bbb, abbb, aabb, babb, ababb, aaab, baab,
abaab, abab, bbab, abab, aabab, babab, ababab}

= {aaaa, baaa, abaaa, abaa, bbaa, abbaa, aabaa, babaa, ababaa,


aaba, baba, ababa, abba

77
Lenguajes regulares

• Sea A={a,b,ab}, muestre A* y A+. Indique si abbaA*, bbaaA*


• Sea A={a,aa,ac} y B={b,ba}, muestre AB, BA y B*

78
•Sea A={a,b,ab}, muestre A* y A+
A* = A0A1A2 …
= {}{a,b,ab}{aa,ab,aab,ba,bb,bab,aba,abb,abab}…
= {,a,b,ab,aa,aab,ba,bb,bab,aba,abb,abab,…}
A+ = A1A2 …
= {a,b,ab,aa,aab,ba,bb,bab,aba,abb,abab,…}

•Sea A={a,aa,ac} y B={b,ba}, muestre AB, BA y B*


AB={ab,aba,aab,aaba,acb,acba}
BA={ba,baa,bac,baa,baaa,baac}
B*={,b,ba,bb,bba,bab,baba …}

79
Lenguajes regulares

•Muestre cadenas que pertenezcan a los siguientes lenguajes. Indique


si la cadena vacía c pertenece a los lenguajes y exprese de forma
general (en palabras) el tipo de cadenas que pertenecen a cada uno.
- L1={w1cw2||w1|=|w2| donde w1,w2* con ={a,b}}
aca
bcb
abababcababab
c
- L2={anbm| nm, n,m0}
- L3={anb2ncn| n1}

80
• L1={w1cw2||w1|=|w2| donde w1,w2* con ={a,b}}
aca, acb,bca,abbbabcaaaaaa
En general, cadenas que tienen una c en el medio, tal que las
subcadenas a sus lados tienen la misma longitud. L1

• L2={anbm| nm, n,m0}


abb,aab,aabbb,aaabb, b, a
En general, cadenas que tienen distinta cantidad de a’s que b’s donde
están a la izquierda las a’s de las b’s. L2

• L3={anb2ncn| n1}
abbc, aabbbbcc, aaabbbbbbccc
En general, cadenas que tienen el doble de b’s que a’s y que c’s donde
aparecen de izquierda a derecha las a’s, b’s y luego c’s. L3
81
Lenguajes regulares

• Exprese de manera formal los siguientes lenguajes:


-L1 es el conjunto de cadenas del lenguaje universal de ={a,b,c}
que empiezan por a y terminan en a
-L2 es el conjunto de cadenas que tienen longitud par definidas
sobre el lenguaje universal de ={a,b}

82
•L1 es el conjunto de cadenas del lenguaje universal de ={a,b,c}
que empiezan por a y terminan en a
L1={aw1a| w1* con ={a,b,c}}
a (aUbUc)* a
a  a = aa

• L2 es el conjunto de cadenas que tienen longitud par definidas


sobre el lenguaje universal de ={a,b}
L2={wi| |wi|=2k, donde existe k1, wi* con ={a,b}}
ab
aa
bb
aaaaaaaabb

83
Lenguajes regulares

84
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 Lenguajes Autómata A→aB
Regulares finito A→a

85
Lenguajes regulares

Jerarquía de Chomsky

Regulares

Independientes del contexto

Sensibles al contexto

Recursivamente enumerables

86
Lenguajes regulares

Noam Chomsky
• Definió las gramáticas
independientes del contexto
• Creador de la jerarquía de
Chomsky. 1956
• Definió la forma normal de
Chomsky. 1979

(1928 - )

87
Lenguajes regulares

Lenguajes regulares
Dado un alfabeto , los lenguajes regulares sobre tal
alfabeto se definen recursivamente como:
•  es un lenguaje regular
• {} es un lenguaje regular
• Para todo símbolo a, {a} es un lenguaje regular
• Si A y B son lenguajes regulares, entonces
AB, AB y A* son lenguajes regulares
• Ningún otro lenguaje es regular

88
Lenguajes regulares

Dado ={a,b}, las siguientes afirmaciones son correctas:


•  y {} son lenguajes regulares
• {a} y {b} son lenguajes regulares
• {a,b} es regular porque es la unión de {a} y {b}
• {ab} es regular porque es la concatenación de {a} y {b}
• {a,ab,b} es regular porque es la unión de dos lenguajes regulares
• {an|n0} es regular
• {ambn|m0  n0} es regular
• {(ab)n|n0} es regular

89
Lenguajes regulares
Dado ={a,b,c}, indique si los siguientes lenguajes son
regulares:
• {a}* = {з, a, aa, aaa, aaaa…}
• {a}*{b}* = {з, a, aa, aaa, aaaa, …, b, bb, bbb, bbbb…}
• {a}*{b}* = {з, a, aa, aaa, aaaa,…}.{з, b,bb,bbb,bbbb,…}
={з, a, aa,aaa,aaaa, …, b, ab, aab, aaab, aaaab,…}
• {a,bc}* = {a}*  {bc}* = {з, a, aa, aaa,aaaa,…}  {bc,
bcbc,bcbcbc, bcbcbcbc,…}
= {з, a, aa, aaa, aaaa,…, bc, bcbc, bcbcbc, bcbcbcbc,….}
• {a}{b,c,ab} = {ab, ac, aab}

90
Lenguajes regulares
Dado ={a,b,c}, indique si los siguientes lenguajes son
regulares:
• {anbn|n0} = no es regular
• {albmcn|l0,m0,n0} = l, m, n están representando valores
o números diferentes
• {anb2n|n0} : no es regular

91
Lenguajes regulares
Dado ={a,b,c}, indique si los siguientes lenguajes son
regulares:
• {a}*
• {a}*{b}*
• {a}*{b}*
• {a,bc}*
• {a}{b,c,ab}
• {anbn|n0}, no es regular
• {albmcn|l0,m0,n0}
• {anb2n|n0}, no es regular

92
Lenguajes regulares
Dado ={a,b,c}, indique si los siguientes lenguajes son
regulares:
• {a}*
•{an|n0}={,a,aa,aaa,…}
• {a}*{b}*
•{bn|n0}={,b,bb,bbb,…}
• {a}*{b}* aab{,a,aa,aaa,…}{,b,bb,bb,…}
• {a,bc}* pero no cumple anbn
• {a}{b,c,ab}
• {anbn|n0}, no es regular
• {albmcn|l0,m0,n0}
• {anb2n|n0}, no es regular

93
Lenguajes regulares

• Desarrolle el lenguaje L={abc,ab,a}+

94
Lenguajes regulares

• Desarrolle el lenguaje L={abc,ab,a}+


L1 = {abc, ab, a}
L2 = {abc, ab, a}.{abc,ab,a} = {abcabc, ababc, aabc, abcab,
abab, aab, abca, aba, aa}

L = L1 U L2 U ….
L={abc,ab,a,abcabc,abcab,aaba,…}

95
Lenguajes regulares

• Desarrolle el lenguaje L={abc,ab,a}+


L={abc,ab,a,abcabc,abcab,abca,…}

• Compárelo con {abc,ab,a}*

96
Lenguajes regulares

• Desarrolle el lenguaje L={abc,ab,a}+


L={abc,ab,a,abcabc,abcab,abca,…}

• Compárelo con {abc,ab,a}*


{abc,ab,a}*={,abc,ab,a,abcabc,abcab,abca,…}
{abc,ab,a}+={abc,ab,a,abcabc,abcab,abca,…}

97
Lenguajes regulares

• Desarrolle el lenguaje L={abc,ab,a}+


L={abc,ab,a,abcabc,abcab,abca,…}

• Compárelo con {abc,ab,a}*


{abc,ab,a}*={,abc,ab,a,abcabc,abcab,abca,…}
{abc,ab,a}+={abc,ab,a,abcabc,abcab,abca,…}
{abc,ab,a}+={abc,ab,a}*{abc,ab,a}

• En general se cumple que A+=A*A

98
Lenguajes regulares

Indique si los siguientes lenguajes son regulares:


• {abna|n0}
• {anbmcn+m|n,m0}
• {wcw|w{a,b}*}
• {w{a,b}*| |w|=2k, para k0}

99
Lenguajes regulares

Indique si los siguientes lenguajes son regulares:


• {abna|n0} = las cadenas que empiezan con a y terminan con a y que
en el intermedio pueden o no tener una o muchas b
• {anbmcn+m|n,m0} = no es regular
• {wcw|w{a,b}*} = no es regular
(aUb)* c (aUb)*
• {w{a,b}*| |w|=2k, para k0}
{aa, bb, ab, ba, aaaa, aabb, aaab,…}
{aa, ab, ba, bb}*

100
Lenguajes regulares

Desarrolle cada uno de estos lenguajes regulares:


• {a}* ={з, a, aa, aaa, aaaa, aaaaa,…}
• {a}*{b}*= {з, a, aa, aaa, aaaa,…} {з ,b,
bb,bbb,bbbb…}
{a}*{b}*= {з, a, aa, aaa, aaaa,…, ,b, bb,bbb,bbbb…}
• {a}*{b}*
• {a,bc}*
• {abc,ab,a}+
• {a}{b,c,ab}
• {(ab)i|i0}
• {anbm|n0, m0}
• {albmcn|l0,m0,n0} 101
Lenguajes regulares

Desarrolle cada uno de estos lenguajes regulares:


• {a}*={,a,aa,aaa,aaaa,…}
• {a}*{b}*={,a,aa,aaa,…}{,b,bb,bbb,…}={,a,b,aa,bb,aaa,bbb,…}
• {a}*{b}*={,a,aa,aaa,…,ab,aab,aaab,…,b,bb,bbb,…}
• {a,bc}*= {a,bc}0U {a,bc}1….={,a,bc,aa,abc,bca,bcba,aaa,…}
• {abc,ab,a}+={abc,ab,a,abcabc,abcab,abca,…}
• {a}{b,c,ab}={ab,ac,aab}
• {(ab)i|i0}={,ab,abab,ababab,…}
• {anbm|n0, m0}={,a,b,ab,aab,abb,aaab,…}
• {albmcn|l0,m0,n0}={,a,b,c,ab,bc,abc,aa,aab,aac,…}

102
Lenguajes regulares

Desarrolle cada uno de estos lenguajes regulares:


• {a}*
• {a}*{b}* ¿ab{a}*{b}*? NO
• {a}*{b}* ¿bbb{a}*{b}*? SI, ¿baa{a}*{b}*? NO
• {a,bc}* ¿bcbca{a,bc}*? SI, ¿baaa{a,bc}*? NO
• {abc,ab,a}+
• {a}{b,c,ab}
• {(ab)i|i0}
• {anbm|n0, m0}
• {albmcn|l0,m0,n0}

103
Lenguajes regulares

Desarrolle cada uno de estos lenguajes regulares:


• {a}*={,a,aa,aaa,aaaa,…}
• {a}*{b}*={,a,aa,aaa,…}{,b,bb,bbb,…}={,a,b,aa,bb,aaa,bbb,…}
• {a}*{b}*={,a,aa,aaa,…,ab,aab,aaab,…,b,b,bbb,…}
• {a,bc}*={,a,bc,aa,abc,bca,bcba,aaa,…}
• {abc,ab,a}+={abc,ab,a,abcabc,abcab,abca,…} Note que el
orden importa y
• {a}{b,c,ab}={ab,ac,aab} que pueden
haber cualquier
• {(ab)i|i0}={,ab,abab,ababab,…}
cantidad de a’s
• {anbm|n0, m0}={,a,b,ab,aab,abb,aaab,…} o de b’s
• {albmcn|l0,m0,n0}={,a,b,c,ab,bc,abc,aa,aab,aac,…}

104
Lenguajes regulares

Discuta la pertenencia de las siguientes cadenas dado


L={a,bc}*{ad,d}* = {з, a, bc, aa, bca, abc, bcbc, aaa,
bcaa, abca, bcbca, aabc, bcabc, abcbc, bcbcbc,
ad, d, adad,dad,add,dd,…}

{a,bc}*
={a,bc}0 = з
={a,bc}1 = {a, bc}
={a,bc}2 = {a, bc}.{a,bc}= {aa, bca, abc, bcbc}…
={a,bc}3 = {a, bc}. {aa, bca, abc, bcbc}= {aaa, bcaa,
abca, bcbca, aabc, bcabc, abcbc, bcbcbc}
{ad,d}*
={ad,d}0 = з
={ad,d}1 = {ad,d}
={ad,d}2 ={ad, d}.{ad,d}= {adad,dad,add,dd}… 105
Lenguajes regulares

Discuta la pertenencia de las siguientes cadenas dado


L={a,bc}*{ad,d}* = {з, a, bc, aa, bca, abc, bcbc, aaa,
bcaa, abca, bcbca, aabc, bcabc, abcbc, bcbcbc,
ad, d, adad,dad,add,dd,…}
• ¿bcabcL? si
• ¿aabcadL? no por tiene d
• ¿adbcL? no
• ¿adadL? si
• ¿addddL? si

106
Lenguajes regulares

Discuta la pertenencia de las siguientes cadenas dado


L={a,bc}*{ad,d}*
• ¿bcabcL? Si
• ¿aabcadL? No
• ¿adbcL? No
• ¿adadL? Si
• ¿addddL? Si

107
Lenguajes regulares

Discuta la pertenencia de las siguientes cadenas dado


L={a,bc}*.{ad,d}*
• ¿bcabcL?

• ¿aabcadL?
• ¿adbcL?
• ¿adadL?
• ¿addddL?

108
Lenguajes regulares

Lenguajes regulares
Interprete el tipo de palabras que pertenecen al siguiente
lenguaje
L = {a}*{b}*

L= {з, a, aa, aaa, aaaa,…, b, bb, bbb, bbbb,….}

109
Lenguajes regulares

Lenguajes regulares
Interprete el tipo de palabras que pertenecen al siguiente
lenguaje
L = {a}*{b}*
Cadenas que tienen a’s o b’s. Estos símbolos no aparecen
mezclados

110
Lenguajes regulares

Lenguajes regulares
Interprete el tipo de palabras que pertenecen al siguiente
lenguaje
L = {a}*{b}*

{a}* = {з, a, aa, aaa, aaaa,…}


{b}* = {з, b, bb, bbb, bbbb,…}
{a}*.{b}* = {з, a, aa, aaa, aaaa,…., b, ab, aab…

111
Lenguajes regulares

Lenguajes regulares
Interprete el tipo de palabras que pertenecen al siguiente
lenguaje
L = {a}*{b}*
Cadenas que tienen cero o más a’s seguidas de cero o más
b’s

112
Lenguajes regulares

Lenguajes regulares
Dado ={a,b}, defina el lenguaje A de todas las palabras
que tienen exactamente una a

113
Lenguajes regulares

Lenguajes regulares
Dado ={a,b}, defina el lenguaje A de todas las palabras
que tienen exactamente una a
A = {b}*{a}{b}*
{b}* = {з, b, bb, bbb, bbbb,….}
{a} = {a}
{b}* = {з, b, bb, bbb, bbbb,….}
A = {a, ba, bba, bbba, bbbba,…, ab, bab…}

114
Lenguajes regulares

Lenguajes regulares
Dado ={a,b}, defina el lenguaje A de todas las palabras
que tienen exactamente una a
A = {b}*{a}{b}*

• Desarrolle el lenguaje

115
Lenguajes regulares

Lenguajes regulares
Dado ={a,b}, defina el lenguaje B de todas las palabras
que comienzan con b

116
Lenguajes regulares

Lenguajes regulares
Dado ={a,b}, defina el lenguaje C de todas las palabras
que contienen la cadena ba

117
Lenguajes regulares

Expresión regular
Una expresión regular es una forma simplificada de
representar un lenguaje regular

Lenguaje regular Expresión regular


{ab} ab
{a}* a*
{a}+ a+
{a}  {b} ab

118
Lenguajes regulares

Expresión regular
Algunas expresiones regulares:
• b*
• b.(ab)*
• (ab)*.ba.(ab)*

119
Lenguajes regulares

•Indique la expresión regular que denota el lenguaje de


todas las palabras sobre ={a,b} que comienzan con b y
terminan con a

120
Lenguajes regulares

•Indique la expresión regular que denota el lenguaje de


todas las palabras sobre ={a,b} que comienzan con b y
terminan con a
b(ab)*a
ba
bbbbba
baaaaaaa
bbbbbaaaaaa

121
Lenguajes regulares

•Indique la expresión regular que denota el lenguaje de


todas las palabras sobre ={a,b} que comienzan con b y
terminan con a
b(ab)*a
b
(ab)* = (a)* (b)*
(a)* = {з, a,aa,aaa,aaaa,…}
(b)* = {з, b, bb,bbb,bbbb,…}
(a*b*)*= {з, a, aa, aaa, aaaa,…, b, bb, bbb, bbbb,
… ab, aab, aaab, abb, aabb, aaabb, aaaabb}
122
Lenguajes regulares

•Indique la expresión regular que denota el lenguaje de


todas las palabras sobre ={a,b} que comienzan con b y
terminan con a
b(ab)*a
(a b)*=(a* b *)*=
(a)* = {з, a,aa,aaa,aaaa,…}
(b)* = {з, b, bb,bbb,bbbb,…}
(a*b*)*= {з, a, aa,aaa,aaaa,…, b, ab, aab, aaab,
aaaab,…, bb, abb, aabb, aaabb, aaaabb,….

123
Lenguajes regulares

•Indique la expresión regular que denota el lenguaje de


todas las palabras sobre ={a,b} que tienen exactamente
dos a’s

aa
abbbbba
bbbbbbabbbbbbbabbbbbbb

124
Lenguajes regulares

•Indique la expresión regular que denota el lenguaje de


todas las palabras sobre ={a,b} que tienen exactamente
dos a’s
b*ab*ab*

125
Lenguajes regulares

•Indique la expresión regular que denota el lenguaje de


todas las palabras sobre ={a,b} que tienen un número par
de a’s

aa
babab
aaaa
bbbbbaaababbbbabba

126
Lenguajes regulares

•Indique la expresión regular que denota el lenguaje de


todas las palabras sobre ={a,b} que tienen un número par
de a’s
b*(ab*ab*)*
ababaaaba

127
Lenguajes regulares

• Indique la expresión regular que denota el lenguaje de


todas las palabras sobre ={a,b} que tienen longitud par

ab
bbba
aaaaaa
bbbbb

aa
bb
ab
ba
128
Lenguajes regulares

• Indique la expresión regular que denota el lenguaje de


todas las palabras sobre ={a,b} que tienen longitud par
(aaabbabb)*

129
Lenguajes regulares

• Indique la expresión regular que denota el lenguaje de


todas las palabras sobre ={a,b} que tienen longitud par
(aaabbabb)*

¿Están todas las cadenas de longitud par??


¿El lenguaje debería permitir las siguientes cadenas?:
•abbb ?
•aabb?

130
Lenguajes regulares

• Indique la expresión regular que denota el lenguaje de


todas las palabras sobre ={a,b} que tienen longitud impar

131
Lenguajes regulares

• Indique la expresión regular que denota el lenguaje de


todas las palabras sobre ={a,b} que tienen longitud impar
a(aaabbabb)*  b(aaabbabb)*

132
Lenguajes regulares

• Indique la expresión regular que denota el lenguaje de


todas las cadenas sobre ={a,b} que tienen al menos una b

b
ab
bbbbb
ba
bbbaaaabbbb
aaaabbbbbbbaaaaabbbbb

133
Lenguajes regulares

• Indique la expresión regular que denota el lenguaje de


todas las cadenas sobre ={a,b} que tienen al menos una b
a*b(ab)*

134
Lenguajes regulares

•Indique la expresión regular que denota el lenguaje de


todas las cadenas sobre ={a,b,c} que no contienen la
subcadena ac

135
Lenguajes regulares

•Indique la expresión regular que denota el lenguaje de


todas las cadenas sobre ={a,b} donde el penúltimo símbolo
es una a

136
Lenguajes regulares

•Indique la expresión regular que denota el lenguaje de


todas las cadenas sobre ={a,b} donde el antepenúltimo
símbolo es una a

137
Lenguajes regulares

Expresiones regulares equivalentes


1. rs=sr 9. r*=(r*)*=r*r*=(r)*
2. r=r=r 10. (rs)*=(r*s*)*=(r*s*)*
3. rr=r 11. r(sr)*=(rs)*r
4, (rs)t=r(st) 12. (r*s)*=(rs)*s
5. r=r=r 13. (rs*)*=r(rs)*
6. r=r= 14. s(r)*(r)s=sr*
7. (rs)t=r(st) 15. rr*=r*r
8. r(st)=rsrt 16. (r)*=r*

138
Lenguajes regulares

Expresiones regulares equivalentes


1. rs=sr 9. r*=(r*)*=r*r*=(r)*
2. r=r=r 10. (rs)*=(r*s*)*=(r*s*)*
3. rr=r 11. r(sr)*=(rs)*r
4, (rs)t=r(st) 12. (r*s)*=(rs)*s
5. r=r=r 13. (rs*)*=r(rs)*
6. r=r= 14. s(r)*(r)s=sr*
7. (rs)t=r(st) 15. rr*=r*r
8. r(st)=rsrt 16. (r)*=r*
{a}{bc}={bc}{a}={a,bc}
139
Lenguajes regulares

Expresiones regulares equivalentes


1. rs=sr 9. r*=(r*)*=r*r*=(r)*
2. r=r=r 10. (rs)*=(r*s*)*=(r*s*)*
3. rr=r 11. r(sr)*=(rs)*r
4, (rs)t=r(st) 12. (r*s)*=(rs)*s
5. r=r=r 13. (rs*)*=r(rs)*
6. r=r= 14. s(r)*(r)s=sr*
7. (rs)t=r(st) 15. rr*=r*r
8. r(st)=rsrt 16. (r)*=r*

140
Material base tomado del curso: Fundamentos
de Algoritmos y
Computabilidad.
Elaborado por el profesor: Oscar Bedoya

También podría gustarte