Está en la página 1de 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

TP02:
Lenguajes Regulares - Expresiones Regulares - AFD - AFND - Mealy – Moore

SECCIÓN 2: Lenguajes Regulares y Expresiones Regulares

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.

2.5 Probar que: (aplicar teorema 2.2.2)

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?

i. (a ∪ b)* a* y ((a ∪ b) a)*


ii. ∅** y 𝜀.
iii. ((a ∪ b) c)* y (ac ∪ bc)*
iv. iv. b(ab ∪ ac) y (ba ∪ ba) (b ∪ c)

2.7 Simplificar:

i. ∅* ∪ a* ∪ b* ∪ (a ∪ b)*
ii. ((a*b*)* ∙ (b*a*)*)*
iii. (a*b)* ∪ (b*a)*
iv. (a ∪ b)* a(a ∪ b)*

2.8 Clase: Probar que (aa)*a = a(aa)*

2.9 Simplificar las siguientes expresiones regulares:

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

viii. Describa por comprensión (en palabras) el L(ER) donde ER = (1 + 0)1*

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:

i. Sea L = {w sobre  = {a, b}, con exactamente 2 “aes”}. Encuentre la ER.


ii. Sea L = {w sobre  = {a, b} / w comienza con una a seguida de dos a tres b´s}
iii. Sea L = {w sobre  = {a, b} / w es la palabra vacía y todas las de longitud 5 que comienzan con
aa o con bb y que terminan con aa o bb}
iv. Sea L = {w sobre  = {0,1,2} / w contiene la subcadena 11}
v. Sea L = {w sobre  = {0,1} / w es una cadena binaria con el 0 como penúltimo símbolo}

Ver al final del trabajo práctico ejercicios complementarios de la Sección 2.

SECCIÓN 3: Autómata Finito Determinista – AFD y Lenguajes

3.1 Sea M = ( 𝒬, Σ, s, F, 𝛿 ) dado por


𝒬 = { q0, q1, q2, q3 }, Σ = { 0, 1 }, s = q0, F = { q0 } y 𝛿 dada por la tabla

a) Construir el diagrama de transición.


b) Obtener la secuencia de estados por los que se pasa para aceptar la cadena 110101 (el carácter del
extremo izquierdo es el primero en ser analizado).

3.2 ¿La figura siguiente es un diagrama de transición correspondiente a un AFD?. ¿Por qué o por qué no?.

3.3 Sea M un AFD. ¿Cuándo pertenecerá 𝜀 a L(M)?.

3.4 Construir los AFD que aceptan cada uno de los lenguajes sobre { a, b }:

i. { w | toda a de w está entre dos bes }


ii. { w | w contiene la subcadena abab }
iii. { w | w tiene un número impar de aes y un número par de bes }
iv. { w | w tiene ab y ba como subcadenas }=
v. { w | w no contiene ninguna de las subcadenas aa o bb }

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:

i. Que contengan la subcadena “mama”.


Considere:  = m, a, x; donde x es un símbolo distinto de m y a.

ii. Ídem a i) pero que la cadena termine en “mama”.

iii. Idem a i) pero que la cadena comience con “mama”.

3.6 Sobre Σ = { 0, 1 }, construir AFDs que acepten números binarios:


i. Cuyos 3 últimos dígitos o menos, representen un número primo.
ii. Que acepte números binarios que sean múltiplos de 3.

3.7 Programe en el lenguaje C, el funcionamiento de un AFD, que acepta o rechaza una cadena w dada.
Considere:

• Función de transición almacenada en una matriz Transiciones[Estados][Simbolos];


• Estado inicial = q0;
• Estados de aceptación almacenados en un vector qf[Estados]
• La cadena w almacenada en un vector w[tam]
• Para verificar si w es aceptada por el AFD, recorra la cadena w, según la función de transición
almacenada y detectando que haya finalizado la cadena en un estado de aceptación.

Ver al final del trabajo práctico ejercicios complementarios de la Sección 3.

SECCIÓN 4: Autómata Finito NO Determinista

4.1 Sea el AFN A=( {q0, q1, q2}, {a, b, c}, , q0, {q0, q1, q2} ) donde:

(q0, a) = { q0, q1, q2 } (q1, b) = { q1, q2}


(q0, b) = { q1, q2} (q1, c) = {q2}
(q0, c) = {q2} (q2, c) = {q2}

Muestre el grafo de transición asociado.

4.2 Sea L = {w  * |  = {0, 1} donde w termina en “01”}


a) Muestre el AFN que acepta este lenguaje.
b) Muestre gráficamente el procesamiento de la cadena de entrada w = 00101.
c) Obtener (q0, 00101).

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.5 Sea el AFN dado por la siguiente tabla:

i) Obtenga el diagrama de transición.


ii) Obtenga el lenguaje aceptado por el AFN

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.

4.8 Defina el AFN que acepte los siguientes lenguajes:


a) L = {w|w  { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 }*, tal que el dígito final haya aparecido antes en la misma
entrada}

b) L = {w|w  { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 }*, tal que el dígito final no haya aparecido antes en la


misma entrada}

4.9 Obtener un AFN que acepte el conjunto de cadenas:

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’.

SECCIÓN 5: Equivalencia entre AFD y AFN

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.3 Encontrar un AFN para (a ∪ b)* aabab. Convertirlo en un AFD.

5.4 Supongamos que M es un AFN que ya es determinista. ¿Qué se obtendría si aplicamos a M la


construcción dada en el teorema de existencia de un AFD para un AFN dado?.

5.5 Convierta en AFD los siguientes AFN:

5.6 Sea el AFN dado por la siguiente tabla:

i) Obtenga el diagrama de transición.


ii) Obtenga el lenguaje aceptado por el AFN
iii) Obtenga un AFD equivalente.

5.7 Para cada uno de los siguientes lenguajes sobre {0,1}*, obtener el AFN y su AFD equivalente:

a) L = { palabras que finalizan en el sufijo 00 }


b) L = { palabras que contienen la subcadena 000 }
c) L = { palabras que finalizan en 011, 101, 0101}

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}

6.2 Calcular ∆(q0, abb) y ∆(q0, aba2b) para el AFN siguiente:

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

6.3 Dado el AFN:

Obtener:
i. 𝜀-c ({ q1, q4 }).
ii. 𝜀-c ( d ( q3, b))
iii. Calcular ∆(q3, b)

6.4 Para el AFN de la figura:

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 }

c) L = {w|w  { 0,1 }*, tal que w = 0m 1n 0p, con m  0, n  0 y p  1 }

SECCIÓN 8: Autómatas Finitos y Expresiones Regulares

8.1 Obtener un AFN que acepte 𝜀 y un AFN que acepte el lenguaje vacío.

8.2 Obtener un AFN que acepte { a }.


Obtener otro AFN que acepte { b }.
Usar las técnicas vistas en teoría para unir estos AFN en uno que acepte el lenguaje { a, b }.

8.3 Obtener un AFN que acepte (a ∪ b)* ∪ (aba)+.

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.5 Sea M1 dado por la figura “a” y M2 dado en la figura “b”.

i. Obtener un AFN que acepte L(M1) ⋅ L(M2).

ii. Obtener un AFN que acepte L(M2) ⋅ L(M1).

8.6 Sean M1 = ( { q1, q2, q3 }, { a, b }, { q1 }, { q1 }, ∆1 ) y M2 = ( { p1, p2, p3, p4 }, { 0, 1 }, { p1 }, { p1, p2 }, ∆2 ),


donde ∆1 y ∆2 vienen dados en las tablas de la figura.

i. Obtener un AFN que acepte L(M1) ⋅ L(M2).

ii. Obtener un AFN que acepte L(M2) ⋅ L(M1) ⋅ L(M1).

iii. Obtener finalmente, un AFN que acepte (L(M1))2 ∪ L(M1).

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.9 Si M = ( 𝒬, ∑, s, F, δ ) es un autómata finito determinista, entonces el complemento de L(M) [es decir,


∑* - L(M)] es aceptado por el autómata M’ = ( 𝒬, ∑, s, 𝒬 - F, 𝛿 ).

i. ¿M’ es un AFD o un AFN?.


ii. Obtener un AFD que acepte ab*ab.
iii. Obtener un autómata finito que acepte { a, b }* - ab*ab.

8.10 Sea L1 = {w/ w finalizan en “aa”} y L2 = {w/ w comienzan con “bb”}.

i. Obtener el AFN- que acepte: L1  L2.


ii. Obtener el AF que acepte L1c
iii. Obtener el AF que acepte L2c
iv. Obtener el AF que acepte: L1  L2 como Producto Cartesiano.

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.12 Obtener una expresión regular para el AFD de la figura

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

SECCIÓN 9: Propiedades de los Lenguajes Regulares

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.2 Probar que { ap | p es primo } no es un lenguaje regular.

9.3 Probar que { anbambam+n | n, m ≥ 1 } no es un lenguaje regular.

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 }.

iii. {w | w = wR para w 𝜖 {a, b}*}. Donde wR es la cadena reversa o inversa

SECCIÓN 10: Aplicaciones de las Expresiones Regulares y los Autómatas Finitos

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.

SECCIÓN 11: Gramáticas Regulares

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

11.3 Obtener una gramática regular para los siguientes lenguajes:


i. a*b ∪ a
ii. a*b ∪ b*a
iii. (a*b ∪ b*a)*

11.4 La gramática regular dada por: S ⟶ bA|aB|𝜀 ; A ⟶ abaS ; B ⟶ babS


genera un lenguaje regular.
Obtener una expresión regular para ese lenguaje.

SECCIÓN 12: Gramáticas Regulares y Lenguajes Regulares


12.1 Construir una gramática regular para el lenguaje regular aceptado por el autómata finito de la figura

12.2 Construir un AFN para la gramática regular

S ⟶ aS|bB|b
B ⟶ cC
C ⟶ aS

12.3 Construir un autómata finito para la gramática regular

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 }

12.5 Obtener un AF a partir de la GR:

S ⟶ aA| bA
A ⟶aB|bB|a
B ⟶ aA|bA

Y obtener una derivación de w=bababa

12.6 Obtener un ER a partir de la GR:

S ⟶ 𝑎| 𝑏| aA| bB
A ⟶ 𝑏| aA
B ⟶ 𝑎| bB

12.7 Obtener una GR que genere el L = { w 𝜖 { a, b }*| |w| es par }

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

12.8 Obtenga la ER y describa con palabras el L que genera la siguiente GR:

S ⟶ 0A | 0S
A ⟶ 1𝐴| 1

Ver al final del trabajo práctico ejercicios complementarios de la Sección 11 y 12

EJERCICIOS COMPLEMENTARIOS DE LA SECCION 2: ER – APLICACIONES

(Investigar del Libro Teoría De Autómatas, Lenguajes Y Computacion de Hopcroft, Cap 3, pag 92)

Las expresiones regulares en el lenguaje UNIX utilizan en su sintáxis:

• [a1 a2 · · ·ak] para representar la ER = a1 + a2 + · · · + ak


Por ejemplo, podríamos expresar los cuatro caracteres utilizados en los operadores de comparación C
mediante la ER = [ < > = ! ]

• 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.

Sugerencia consulte https://es.wikipedia.org/wiki/N%C3%BAmeros_telef%C3%B3nicos_en_Argentina.

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.

Tenga en cuenta cómo es una dirección de calle:

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”.

v) Refinar la ER de iv) teniendo en cuenta los siguientes casos:

1. Las calles que se llaman de formas diferentes a calle, avenida o plaza. Por ejemplo, nos falta
‘Bulevar”, “Paseo”, “Vía”.

2. Los nombres de calles que contienen números, como “Plaza 2 de mayo”.

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”.

c) Proponga una ER en UNIX para describir correos electrónicos válidos:

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:

La coincidencia de una contraseña es muy similar a la coincidencia de un nombre de usuario. La única


diferencia es que en vez de 3 a 16 letras, números, guiones bajos o guiones, queremos 6 a 18 de ellos .

EJERCICIOS COMPLEMENTARIOS PARA LA SECCION 3 (AF):

g) Modelar el funcionamiento de:

i. un semáforo

ii. una máquina expendedora de bebidas,

EJERCICIOS COMPLEMENTARIOS PARA LA SECCION 11 y 12 (GRAMÁTICAS REGULARES):

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)? =

j) Sea G = ({a, b}, {S, T, Q}, S, {S -> aT | bQ, T-> a | b , Q-> a | } )

i. La palabra w=”bab”  L(G)?


ii. Describa 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

También podría gustarte