Documentos de Académico
Documentos de Profesional
Documentos de Cultura
TP02:
Lenguajes Regulares - Expresiones Regulares - AFD - AFND - Mealy – Moore
2.1 Verificar, aplicando la definición de lenguaje regular, que los siguientes son lenguajes regulares sobre
Σ = { a, b }:
i. { ai | i > 0 }
ii. { ai | i > n } para un n ≥ 0 fijado.
iii. {w ∈ Σ* | w termina con a }
2.2 Verificar que el lenguaje de todas las cadenas de unos y ceros que tienen al menos dos ceros
consecutivos, es un lenguaje regular.
2.3 Los identificadores del lenguaje Pascal son cadenas de longitud arbitraria compuestas por caracteres
alfabéticos y por dígitos. Los identificadores de Pascal deben empezar por un carácter alfabético. ¿Es
este lenguaje un lenguaje regular?
2.4 Obtener una expresión regular que represente el lenguaje de los identificadores de Pascal.
i. (r ∪ 𝜀)* = r*
ii. (b ∪ aa*b) ∪ (b ∪ aa*b) (a ∪ ba*b)* (a ∪ ba*b) y a*b(a ∪ ba*b)* son equivalentes.
2.6 Sobre Σ = { a, b, c }
¿son equivalentes las parejas de expresiones regulares?
2.7 Simplificar:
i. ∅* ∪ a* ∪ b* ∪ (a ∪ b)*
ii. ((a*b*)* ∙ (b*a*)*)*
iii. (a*b)* ∪ (b*a)*
iv. (a ∪ b)* a(a ∪ b)*
i. (𝜀 ∪ aa)*
ii. (𝜀 ∪ aa)(𝜀 ∪ aa)*
iii. a(𝜀 ∪ aa)*𝑎 ∪ 𝜀
iv. a(𝜀 ∪ aa)* (𝜀 ∪ aa) ∪ a
v. (a ∪ 𝜀) a*b
vi. Compruebe que las ER son equivalentes:
ER1 = 1(0+1)(0+1)1 y ER2 = 1001 + 1011 + 1101 + 1111
vii. Las ER1 = a(a + b) + b(a + b) y ER2 = (a + b) (a + b) son equivalentes?
Página 1 de 14
Universidad Nacional de Salta – Sede Regional Orán
Carrera: Licenciatura en Análisis de Sistemas (LAS)
Cátedra: Teoría de la Computación I (uno) 2do.año – 1er. cuatrimestre Año: 2023
ix. Construya la ER que representa el LR: “todas las palabras que comienzan con una secuencia
de dos o más 1’s seguida de un 0 como último carácter, o, que comienzan con una secuencia
de dos o más 0’s seguida de un 1 como último carácter.
2.10 Encuentre la ER para que describe a cada uno de los siguientes lenguajes:
3.2 ¿La figura siguiente es un diagrama de transición correspondiente a un AFD?. ¿Por qué o por qué no?.
3.4 Construir los AFD que aceptan cada uno de los lenguajes sobre { a, b }:
Página 2 de 14
Universidad Nacional de Salta – Sede Regional Orán
Carrera: Licenciatura en Análisis de Sistemas (LAS)
Cátedra: Teoría de la Computación I (uno) 2do.año – 1er. cuatrimestre Año: 2023
3.5 Sobre el alfabeto español, construir los AFDs que acepten cadenas:
3.7 Programe en el lenguaje C, el funcionamiento de un AFD, que acepta o rechaza una cadena w dada.
Considere:
4.1 Sea el AFN A=( {q0, q1, q2}, {a, b, c}, , q0, {q0, q1, q2} ) donde:
4.3 Sea M el AFN dado por 𝓠: { q0, q1 }, 𝜮: { a, b }, s: q0, F: { q1 } y ∆: Dada por la tabla de la figura.
Determinar si a2b, ba, b2a están en L(M). Dibujar el diagrama de transición para M.
Página 3 de 14
Universidad Nacional de Salta – Sede Regional Orán
Carrera: Licenciatura en Análisis de Sistemas (LAS)
Cátedra: Teoría de la Computación I (uno) 2do.año – 1er. cuatrimestre Año: 2023
4.4 Obtener un AFN (que no sea AFD) que acepte el lenguaje ab* ∪ ab*a.
4.6 Construya un AFN para reconocer las cadenas que finalizan en 0101, 101, 011
4.7 Construya el diagrama de transición y la tabla correspondiente a un AFN que acepta el lenguaje:
(a*b*)* (aa ∪ bb) (a*b*)*. Usar la técnica recursiva para determinar si las cadenas babba y aabaaba son
aceptadas.
i. Formadas por 0 y 1 tales que contengan al menos dos ceros separados por subcadenas cuya
longitud sea múltiplo de 3.
ii. Formadas por a’s y b’s tales que tienen una ‘a’ en la penúltima posición.
Obtener (q0, ab3ab) y (q0, abab2)
iii. Formadas por a’s, b’s y c’s que contienen las subcadenas ‘ab’ o ‘bc’ o ‘ca’.
iv. Formadas por a’s, b’s y c’s que contienen las subcadenas ‘ab’ y ‘bc’ y ‘ca’.
5.1 Construir el AFD correspondiente al AFN dado en la figura. ¿Qué lenguaje es aceptado por dicho
autómata?.
5.2 Encontrar un AFN que acepte (ab ∪ aab ∪ aba)*. Convertir este AFN en un AFD.
Página 4 de 14
Universidad Nacional de Salta – Sede Regional Orán
Carrera: Licenciatura en Análisis de Sistemas (LAS)
Cátedra: Teoría de la Computación I (uno) 2do.año – 1er. cuatrimestre Año: 2023
5.7 Para cada uno de los siguientes lenguajes sobre {0,1}*, obtener el AFN y su AFD equivalente:
SECCIÓN 6: AFN-𝜺
6.1 Dado el siguiente AFN sobre = {0,1} , calcular ∆(q0, 01), ∆(q0, 101) y ∆(q0, 100).
∆ 0 1 𝜀
*q0 {q1}
q1 {q3} {q2}
q2 {q1} {q2}
q3 {q3} {q0}
Página 5 de 14
Universidad Nacional de Salta – Sede Regional Orán
Carrera: Licenciatura en Análisis de Sistemas (LAS)
Cátedra: Teoría de la Computación I (uno) 2do.año – 1er. cuatrimestre Año: 2023
Obtener:
i. 𝜀-c ({ q1, q4 }).
ii. 𝜀-c ( d ( q3, b))
iii. Calcular ∆(q3, b)
Obtener:
i. Tabla de transición para ∆.
ii. 𝜀-cerradura (qi) para i = 0, 1, 2
iii. Calcular ∆(q0, a), ∆(q0, b) y ∆(q0, c).
iv. Obtener el AFN sin 𝜀-transiciones. Generar la tabla ∆’.
6.5 Obtener el AFN sin 𝜀-transiciones correspondiente a cada uno de los AFN- ε de los ejercicios 6.1, 6.2 y 6.3.
6.6. Diseñe un AFN- 𝜀 para cada uno de los siguientes lenguajes. Encuentre también la ER si fuera posible y los
AFN sin 𝜀-transiciones.
a) L = {w|w { a,b,c }*, tal que w es una cadena formada por cero o más letras a, seguidas de cero o más
letras b, seguidas de cero o más letras c}
b) L = {w|w { 0, 1 }*, tal que w consta de la subcadena 01 repetida 1 o más veces ó de la subcadena 010
repetida 1 o más veces }
8.1 Obtener un AFN que acepte 𝜀 y un AFN que acepte el lenguaje vacío.
Página 6 de 14
Universidad Nacional de Salta – Sede Regional Orán
Carrera: Licenciatura en Análisis de Sistemas (LAS)
Cátedra: Teoría de la Computación I (uno) 2do.año – 1er. cuatrimestre Año: 2023
8.4 Obtener un AFN que acepte todas las cadenas de la forma bowwow, bowwowwow,
bowwowwowwowwow = bow.(wow)4, … = bow.(wow)+
Téngase en cuenta que los símbolos de un alfabeto no tiene por qué ser caracteres de
longitud uno.
Conseguir un AFN que acepte todas las cadenas de la forma ohmy, ohmyohmy,
ohmyohmyohmy, ... = (ohmy)+
Unir los dos AFN para que se acepte la unión de los dos lenguajes.
8.7 Obtener un AFN para (ab)* a partir de los AFN que aceptan { a } y { b }.
8.8 Obtener un AFN para (aa ∪ b)* . (bb ∪ a)* a partir de los AFN que aceptan { a } y { b }.
Página 7 de 14
Universidad Nacional de Salta – Sede Regional Orán
Carrera: Licenciatura en Análisis de Sistemas (LAS)
Cátedra: Teoría de la Computación I (uno) 2do.año – 1er. cuatrimestre Año: 2023
8.11 Obtener una expresión regular (intuitivamente, recorriendo el autómata) para el lenguaje aceptado
por el autómata finito de la figura (Sin ecuaciones y con ecuaciones)
8.13 Obtener una expresión regular para los lenguajes aceptados por cada uno de los autómatas de la
figura
Página 8 de 14
Universidad Nacional de Salta – Sede Regional Orán
Carrera: Licenciatura en Análisis de Sistemas (LAS)
Cátedra: Teoría de la Computación I (uno) 2do.año – 1er. cuatrimestre Año: 2023
9.1 Sea Σ = { a, b }.
i. Construir los AFD que acepten los lenguajes: a*b y ab*. (un AFD por cada lenguaje)
ii. A partir de los AFD de la parte i), construir los AFD que acepten 𝛴* - a*b y 𝛴* - ab*.
iii. A partir de los AFD de la parte ii), construir un AFD que acepte:
(𝛴* - a*b) ∪ (𝛴* - ab*).
iv. Usar el resultado de la parte iii) para construir un AFD que acepte el lenguaje a*b ∩ ab*.
v. Sea L = a*b. Construir el AFD que acepte Lenguaje de las palabras reversas de L. AR = (Q U
{s’}, 𝛴, s’, q’f = qi , 𝛿’(q, a) = p 𝛿(𝑝, 𝑎) = 𝑞 𝑦 𝛿′(𝑠′, ) = qf q final)
9.4 Determinar si los siguientes lenguajes son regulares y decir o probar por qué si o por qué no.
i. { aib2i | i ≥ 1 }.
ii. { (ab)i | i ≥ 1 }.
10.1 Aplique el algoritmo de Moore para determinar si los siguientes AFD son equivalentes.
Página 9 de 14
Universidad Nacional de Salta – Sede Regional Orán
Carrera: Licenciatura en Análisis de Sistemas (LAS)
Cátedra: Teoría de la Computación I (uno) 2do.año – 1er. cuatrimestre Año: 2023
10.2 Obtener los AFD mínimos que corresponden a los AFD de la figura.
10.3 Diseñe una máquina de estado finito con las propiedades dadas. La entrada siempre es una cadena de
bits.
i. Produce la salida 1 si la entrada es un número par de bits; produce la salida 0 en caso contrario.
ii. Produce la salida 1 si la entrada son k unos, donde k es un múltiplo de 3; produce la salida 0 en
caso contrario.
iii. Produce la salida 1 si la entrada son dos o más unos; produce la salida 0 en caso contrario.
iv. Produce la salida 1 siempre que vea 101; produce la salida 0 en caso contrario.
v. Produce la salida 1 a partir de que vea 101; produce la salida 0 en caso contrario.
vi. Produce la salida 1 cuando ve el primer 0 y hasta ver otro 0; a partir de ese momento, produce
0; en los demás casos, produce la salida 0.
11.1 Dado el autómata finito por el diagrama de transición de abajo, usar las siguientes reglas de
producción para derivar las cadenas ab, ab3, aa3b. ¿Es posible derivar abab?.
11.2 Supongamos que tenemos las reglas S ⟶ aS|bT y T ⟶ aa. Dar una derivación para abaa, aabaa y
aaabaa. Probar como se deriva akba2 para k ≥ 1. ¿Es posible derivar las cadenas baa, b o aa?
Página 10 de 14
Universidad Nacional de Salta – Sede Regional Orán
Carrera: Licenciatura en Análisis de Sistemas (LAS)
Cátedra: Teoría de la Computación I (uno) 2do.año – 1er. cuatrimestre Año: 2023
S ⟶ aS|bB|b
B ⟶ cC
C ⟶ aS
S ⟶ abA|B|baB|𝜀
A ⟶ bS|b
B ⟶ aS
12.4 Obtener una gramática regular para el lenguaje L = { w 𝜖 { a, b }*|w no contiene la subcadena aa }
S ⟶ aA| bA
A ⟶aB|bB|a
B ⟶ aA|bA
S ⟶ 𝑎| 𝑏| aA| bB
A ⟶ 𝑏| aA
B ⟶ 𝑎| bB
Página 11 de 14
Universidad Nacional de Salta – Sede Regional Orán
Carrera: Licenciatura en Análisis de Sistemas (LAS)
Cátedra: Teoría de la Computación I (uno) 2do.año – 1er. cuatrimestre Año: 2023
S ⟶ 0A | 0S
A ⟶ 1𝐴| 1
(Investigar del Libro Teoría De Autómatas, Lenguajes Y Computacion de Hopcroft, Cap 3, pag 92)
• Entre los corchetes podemos escribir un “rango” de la forma x - y , para especificar todos los caracteres de
x hasta y en la secuencia ASCII.
Dado que los dígitos tienen códigos sucesivos, así como las letras mayúsculas y las letras minúsculas,
entonces:
− los dígitos se pueden expresar como [ 0 - 9 ],
− las letras mayúsculas como [ A - Z ]
− el conjunto de todas las letras y dígitos como [ A – Z a – z 0 - 9].
• el conjunto de dígitos, más el punto y los signos más y menos que se utilizan para formar los números
decimales con signo puede expresarse como [ - + . 0 – 9 ].
• Signo de pregunta ? indica que el elemento que lo precede es opcional.
• La barra \ indica que el símbolo que le sigue a la barra es un elemento del alfabeto.
a) Teniendo en cuenta la sintáxis UNIX, obtenga una expresión regular que describa números de télefono en
todas las variantes que pueda imaginar. Tenga en cuenta los números internacionales así como el hecho de
que los distintos países emplean una cantidad diferente de dígitos para los códigos de área de los números de
teléfono locales.
b) Teniendo en cuenta el apartado “3.3.3. Búsqueda de patrones en textos del libro: Teoría De Autómatas,
Lenguajes Y Computacion de Hopcroft, Cap 3, Págs 95-96”, proponga una expresión completa para describir
las direcciones de calles.
i) Una dirección de calle que probablemente comenzará por la palabra “Calle” o por su abreviatura,
“C/”. También existen “Avenidas” o “Plazas”, que también pueden abreviarse (las abreviaturas
Página 12 de 14
Universidad Nacional de Salta – Sede Regional Orán
Carrera: Licenciatura en Análisis de Sistemas (LAS)
Cátedra: Teoría de la Computación I (uno) 2do.año – 1er. cuatrimestre Año: 2023
finalizan con un punto). Por tanto, podemos emplear como principio de nuestra expresión regular
algo parecido a lo siguiente:
Calle|C/|Avenida|Av\.|Plaza|Pz\.
ii) Agregue a la ER de i) el nombre de la calle, considerando que las denominaciones tales como Calle
van seguidas del nombre de la calle. Normalmente, el nombre se escribe con la primera letra en
mayúscula seguida de una serie de letras en minúscula.
iii) Revise la ER de ii) para considerar que algunas calles tienen nombres que constan de más de una
palabra, como por ejemplo Avenida “de las Islas Filipinas” en Madrid. Cada palabra consta de una letra
mayúscula y cero o más letras minúsculas, seguido de cero o más grupos formados por un carácter en
blanco, una letra mayúscula y cero o más letras minúsculas.
iv) Incluya en la ER de iii) el número de la calle como parte de la dirección, que normalmente será una
cadena de dígitos. Sin embargo, algunos números de casa pueden incluir una letra (opcional), como en
“C/Princesa, 123A”.
1. Las calles que se llaman de formas diferentes a calle, avenida o plaza. Por ejemplo, nos falta
‘Bulevar”, “Paseo”, “Vía”.
3. Los nombres de calles que no comienzan por nada parecido a “Calle”. Por ejemplo, la Gran Vía
de Madrid. En este tipo de nombres sería redundante decir algo como “Calle Gran Vía”, por lo
que una dirección completa podría ser “Gran Vía 24”.
Una dirección de correo electrónico válida es una expresión compuesta por dos partes, un nombre de
usuario y un nombre de dominio, que se presentan así: nombreDeUsuario@nombreDeDominio.extensión
Donde:
a. nombreDeUsuario: una o más letras minúsculas, números, subrayados, puntos o guiones.
b. Después de identificador debe haber una arroba (@).
c. nombreDeDominio: una o más letras minúsculas, números, puntos o guiones.
d. Luego punto.
e. extensión: de dos a seis letras como “com”, “org”, “ar” (código de país), ó “gov”
d) Proponga una ER en UNIX para validar un valor hexadecimal con las siguientes reglas:
Podemos tener dos situaciones: Cualquier letra minúscula entre a y f ó un número, seis veces; ó podemos
tener tres letras minúsculas entre a y f o números en su lugar.
e) Proponga una ER en UNIX para validar un nombre de usuario con las siguientes reglas:
Página 13 de 14
Universidad Nacional de Salta – Sede Regional Orán
Carrera: Licenciatura en Análisis de Sistemas (LAS)
Cátedra: Teoría de la Computación I (uno) 2do.año – 1er. cuatrimestre Año: 2023
Letra minúscula (a-z), número (0-9), un carácter de subrayado o un guión, con al menos 3 de esos
caracteres, pero no más de 16.
f) Proponga una ER en UNIX para validar una contraseña teniendo en cuenta que:
i. un semáforo
h) Sea L = {aa, aab} y la G dada según las sig. producciones: S->aaT, T-> | b
i. Describa el orden en que se aplican estas producciones para generar las palabras del lenguaje L.
ii. La producción T-> genera la palabra vacia de L?
i) Dada G = ({a, b}, {S, T}, S, {S -> aT, T-> a, T-> } ) , qué lenguaje genera G ó sea defina L(G)? =
k) Sea G = ({a, b}, {S, X}, S, {S -> Xa | bX, X-> b } ), por qué G no es una gramática regular? Analice sus
producciones.
l) Escriba una Gramática Regular que genere cualquier secuencia de 1 o más dígitos decimales.
m) Escriba una GR que genere un LR infinito cuyas palabras son secuencia de 3 o más dígitos octales (en base
8)
n) En una gramática irrestricta, sus producciones tienen la forma gral →, donde y pueden ser
secuencias de No terminales y/o terminales con ≠, por ejemplo: G = ({a}, {S, A, B, C, D, E} , S, P) donde P:
P1: S →AcaB
P2: Ca → aaC
P3: CB → DB | E
P4: aD → Da
P5: AD → AC
P6: aE → Ea
P7: AE →
Compruebe, mediante derivación, que la palabra “aaaa” L(G) justificando qué producción aplica y por
qué utiliza dicha producción.
Página 14 de 14