Está en la página 1de 3

Introducción a la Teorı́a de la Computación

Taller 2
Angela Marı́a Cárdenas Orjuela,
David Julian Bustos Cortes,
Gabriela Marı́a Garcı́a Romero
Marzo 2021

Problema 1. Expresiones Regulares

1. Encontrar las expresiones regulares para los siguientes lenguajes definidos sobre el alfabeto
Σ = {a, b}.

(iii) Lenguaje de todas las cadenas que tienen un número impar de aes.
L = ((b∗ ab∗ ab∗ )∗ ∪ b∗ )(ab∗ )
(v) Lenguaje de todas las cadenas que no comienzan con la subcadena ba ni terminan en b.
L = ((a ∪ bb)(a ∪ b)∗ a) ∪ a

2. Encontrar las expresiones regulares para los siguientes lenguajes definidos sobre el alfabeto
Σ = {0, 1, 2}.

(ii) Lenguaje de todas las cadenas que no comienzan con 2 ni terminan en 1.


L = ((1 ∪ 0)(0 ∪ 1 ∪ 2)∗ (2 ∪ 0)) ∪ 0
(vi) Lenguaje de todas las cadenas que no contienen dos unos consecutivos.
L = (0 ∪ 2)∗ (1(0 ∪ 2)+ )∗ (1 ∪ λ)

3. Encontrar las expresiones regulares para los siguientes lenguajes definidos sobre el alfabeto
Σ = {0, 1}.

(iv) Lenguaje de todas las cadenas cuya longitud es ≥ 5 y cuyo quinto sı́mbolo, de izquierda
a derecha, es un 1.
L = (0 ∪ 1)4 1(0 ∪ 1)∗
(xii) Lenguaje de todas las cadenas que no comienzan con 00 ni terminan en 11.
L = ((1 ∪ 01)(0 ∪ 1)∗ (0 ∪ 01)) ∪ (01 ∪ 0 ∪ 1)

Problema 2. Expresiones Regulares


Considere el alfabeto
       
 0 0 0 1 
Σ3 =  0  ,  0  ,  1  , . . . ,  1 
 
0 1 0 1

Demuestre que el lenguaje

B = {w ∈ Σ3 ∗ : la última fila de w es igual a la diferencia de las dos primeras filas}

1
es un lenguaje regular.

Se tiene que:
               
 0 0 0 0 1 1 1 1 
Σ3 =  0  ,  0  ,  1  ,  1  ,  0  ,  0  ,  1  ,  1 
 
0 1 0 1 0 1 0 1

Se define N ⊆ Σ3 como el conjunto de restas individuales que no necesitan pedir un 1 prestado y


que tampoco tienen como prestar un 1.
     
 0 1 1 
N =  0 , 0 , 1 
 
0 1 0

Se define A ⊆ Σ3 como el conjunto de restas individuales que necesitan que les preste un 1.
 
 0 
A=  1 
 
1

Se define B ⊆ Σ3 como el conjunto de restas individuales que pueden prestar, pero tambien necesita
que alguien le preste.
     
 0 0 1 
B=  0  ,  1  ,  1 
 
1 0 1

Se define C ⊆ Σ3 como el conjunto de restas individuales que necesitan prestarle a alguien.


  
 1 
C=  0 
 
0

Análisis: En caso de presentarse un elemento del conjunto A, este necesitará que algún elemento
le preste un 1 por derecha. Ese elemento puede ser un elemento del conjunto B o C. Si el elemento
que le presta es del conjunto C, la palabra puede terminar, puesto que todas las columnas pueden
operarse. Sin embargo, si el que le presta es un elemento del conjunto B, este va a necesitar que
algún elemento le preste por derecha, volviendo a repetir el proceso hasta que el que preste sea un
elemento del conjunto C. Por lo anterior, se tiene que cuando hay prestamos dentro de la operación
de resta, el primer elemento (del subcadena de prestamos) debe ser un elemento del conjunto C,
seguida de la concatenación de cero o más elementos del conjunto B, y terminando con la conca-
tenación de un elemento del conjunto A.

Ademas, se tiene que los elementos neutros, no pueden prestar, ni pedir prestado. Pues para todos
ellos, la operación perderı́a sentido.

Finalmente, se tienen que si dos palabras pertenecen al lenguaje B, su concatenación tambien


pertenecerá al lenguaje B. Por esta razón, se tiene una clausura positiva de la expresión.

     ∗        ∗  ∗ +


0 1 1 1 0 0 1 0
B=   0  ∪  0  ∪  1    0   0  ∪  1  ∪  1   1  
0 1 0 0 1 0 1 1

Por lo tanto, B es un lenguaje regular.

2
Problema 3. Password
Escriba una función CadenaPassword["texto "] en el software Mathematica (su función debe
utilizar expresiones regulares) cuya entrada sea una cadena y cuya salida sea True o False de-
pendiendo si la cadena de entrada es un Password admisible. Una cadena es un Password admisible
si cumple alguna de las siguientes condiciones:

Es una cadena u formada por sólo letras minı́sculas sin espacios, tal que 8 ≤ |u| ≤ 10.

Es una cadena u de la forma (0 ∪ 1 ∪ 2 ∪ 3 ∪ 4 ∪ 5 ∪ 6 ∪ 7 ∪ 8 ∪ 9)∗ @(0 ∪ 1)2

Por ejemplo:

CadenaPassword["Colombia "] = False

CadenaPassword["colombia "] = True

CadenaPassword["colom bia "] = False

CadenaPassword["unal@10 "] = False

CadenaPassword["666@01 "] = True

CadenaPassword["66601@ "] = False

CadenaPassword["662348723842@01 "] = True

CadenaPassword["66@2348723842@01 "] = False

CadenaPassword["@1 "] = False

También podría gustarte